Communitygithub.com

Amartileyton/autovideo

Erstellen Sie professionelle Voiceovers mit ElevenLabs-KI. Verwenden Sie diese Fähigkeit, wenn der Benutzer Sprachaufnahmen für Videos, Audio-Narration oder Text-to-Speech-Inhalte benötigt. Unterstützt mehrere Stimmen mit Charakter-Presets (Erzähler, Verkäufer, Experte) für natürliche Lieferung. Enthält Einzelszene-Regeneration für Feinanpassung.

Was ist autovideo?

Diese KI-Fähigkeit integriert die ElevenLabs-API zur Erstellung hochwertiger, KI-generierter Voiceovers speziell für Remotion-Videoprojekte. Sie bietet eine Vielzahl von Funktionen, darunter die Generierung von Voiceovers aus Text, szenenbasierte Erstellung mit Request-Stitching für konsistente Prosodie, sowie die Möglichkeit, einzelne Szenen gezielt zu regenerieren, ohne alle Audio-Dateien neu erstellen zu müssen. Entwickler und Agent-Benutzer können aus verschiedenen Charakter-Presets wie Erzähler, Verkäufer, Experte oder dramatisch wählen, um die Sprachausgabe an den Kontext anzupassen – von Erklärvideos bis hin zu Marketingmaterial. Die Fähigkeit unterstützt die Plattformen ElevenLabs und Remotion und erfordert lediglich einen gültigen `ELEVENLABS_API_KEY` in der `.env.local` Datei. Nach der Generierung kann die Audio-Ausgabe direkt in Remotion-Kompositionen eingebunden werden. Außerdem bietet das Tool eine automatische Timing-Validierung mit `ffprobe`, um Abweichungen zwischen erwarteten und tatsächlichen Audiolängen zu erkennen. Optional können Miniaturbilder in MP4-Dateien eingebettet werden, damit Plattformen wie Twitter und YouTube das benutzerdefinierte Thumbnail anzeigen. Die Fähigkeit verwendet ffmpeg für die endgültige Zusammenstellung und ist ideal für Workflows, bei denen präzise Synchronisation von Bild und Ton erforderlich ist.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Amartileyton/autovideo/tree/HEAD/.agent/skills/elevenlabs-remotion

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

ElevenLabs Voiceover-Generierung

Erstellen Sie professionelle KI-Voiceovers für Remotion-Videos mit der ElevenLabs-API.

Voraussetzungen

  • ELEVENLABS_API_KEY in .env.local

Schnellstart

# Voiceover aus Text generieren
node .claude/skills/elevenlabs-remotion-skill/generate.js --text "Ihr Text hier" --output public/audio/voiceover.mp3

# Mit Erzähler-Stil generieren (natürlicher)
node .claude/skills/elevenlabs-remotion-skill/generate.js --text "Ihr Text" --character narrator --output voiceover.mp3

# Szenen mit Request Stitching generieren
node .claude/skills/elevenlabs-remotion-skill/generate.js --scenes remotion/scenes.json --output-dir public/audio/projekt/

# Einzelne Szene regenerieren
node .claude/skills/elevenlabs-remotion-skill/generate.js --scenes scenes.json --scene scene2 --new-text "Aktualisierter Text"

# Verfügbare Stimmen und Charakter-Presets auflisten
node .claude/skills/elevenlabs-remotion-skill/generate.js --list-voices
node .claude/skills/elevenlabs-remotion-skill/generate.js --list-characters

Charakter-Presets

Verwenden Sie Charakter-Presets für natürlichere Voiceovers anstatt wörtlicher Bildschirmtext-Wiedergabe:

CharakterBeschreibungAm besten geeignet für
literalLiest Text genau wie geschriebenBildschirmtext, Zitate
narratorProfessioneller Geschichtenerzähler, flüssig, fesselndErklärvideos, Dokumentationen
salespersonBegeistert, überzeugend, energiegeladenMarketing, Werbung
expertAutoritär, selbstbewusst, kenntnisreichRechtliche Inhalte, Tutorials
conversationalLässig, freundlich, natürlichSoziale Medien, lockere Inhalte
dramaticIntensiv, emotional, wirkungsvollHooks, Problemdarstellungen
calmBeruhigend, beruhigend, sanftVertrauensaufbau, Schlussfolgerungen
# Erzähler-Stil global verwenden
node .claude/skills/elevenlabs-remotion-skill/generate.js --scenes scenes.json --character narrator --output-dir public/audio/

# Oder pro Szene in scenes.json festlegen
{
  "scenes": [
    { "id": "scene1", "text": "Problemdarstellung", "character": "dramatic" },
    { "id": "scene2", "text": "Lösung", "character": "calm" }
  ]
}

Szenenbasierte Generierung mit Request Stitching

Generieren Sie mehrere Szenen mit konsistenter Prosodie durch ElevenLabs Request Stitching:

scenes.json Format

{
  "name": "produkt-demo",
  "voice": "George",
  "character": "narrator",
  "scenes": [
    {
      "id": "scene1",
      "text": "Generische Text-to-Speech klingt roboterhaft. Ihre Marke verdient Besseres.",
      "duration": 4.5,
      "character": "dramatic"
    },
    {
      "id": "scene2",
      "text": "Mit Sprachklonen können Sie Ihre eigene Stimme für unbegrenzte Inhalte nutzen.",
      "duration": 5.5
    },
    {
      "id": "scene3",
      "text": "Nehmen Sie eine kurze Probe auf. Klonen Sie sie. Erstellen Sie in Minuten professionelle Voiceovers.",
      "duration": 6,
      "delay": 0.3
    }
  ]
}

Alle Szenen generieren

node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/produkt-demo-szenen.json \
  --output-dir public/audio/produkt-demo/

Dies erstellt:

  • produkt-demo-szene1.mp3 bis szeneN.mp3
  • produkt-demo-kombiniert.mp3 (alle Szenen zusammengefügt)
  • produkt-demo-info.json (Metadaten mit Dauern)

Einzelszene-Regeneration

Wenn eine Szene zu früh beginnt, falsches Timing hat oder einen anderen Text benötigt:

# Szene2 mit neuem Text regenerieren
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/scenes.json \
  --scene scene2 \
  --new-text "Aktualisierter Szenentext 2" \
  --output-dir public/audio/projekt/

# Szene3 mit anderem Charakter regenerieren
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/scenes.json \
  --scene scene3 \
  --character salesperson \
  --output-dir public/audio/projekt/

# Einfach regenerieren (gleicher Text, gleicher Charakter)
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/scenes.json \
  --scene scene1 \
  --output-dir public/audio/projekt/

# Ein Thumbnail in ein MP4-Video einbetten
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --embed-thumbnail public/videos/mein-video.mp4 \
  --thumbnail public/videos/mein-thumbnail.png \
  --output public/videos/mein-video-mit-thumb.mp4

Das Tool führt automatisch Folgendes aus:

  • Verwendet Request Stitching von vorherigen Szenen für konsistente Prosodie
  • Aktualisiert die info.json-Datei mit neuen Metadaten
  • Aktualisiert scenes.json, wenn --new-text angegeben wurde

Thumbnail-Einbettung

Betten Sie ein Thumbnail-Bild in MP4-Videos ein, damit Plattformen wie Twitter, YouTube und Videoplayer Ihr benutzerdefiniertes Thumbnail anstelle des ersten Frames anzeigen.

Thumbnail in Video einbetten

# Grundlegende Verwendung – Ausgabe nach video-thumb.mp4
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --embed-thumbnail public/videos/promo.mp4 \
  --thumbnail public/videos/thumbnail.png

# Benutzerdefinierter Ausgabepfad
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --embed-thumbnail public/videos/promo.mp4 \
  --thumbnail public/videos/thumbnail.png \
  --output public/videos/promo-final.mp4

Workflow mit Remotion

# 1. Video rendern
npx remotion render MyVideo public/videos/mein-video.mp4

# 2. Thumbnail rendern (Still-Komposition verwenden)
npx remotion still MyVideoThumbnail public/videos/mein-thumbnail.png

# 3. Thumbnail einbetten
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --embed-thumbnail public/videos/mein-video.mp4 \
  --thumbnail public/videos/mein-thumbnail.png \
  --output public/videos/mein-video-final.mp4

Unterstützte Formate

  • Video: MP4 (H.264/H.265)
  • Thumbnail: PNG, JPG, JPEG

Die Einbettung verwendet ffmpegs -disposition:v:1 attached_pic-Flag, um das Thumbnail als angehängtes Bild zu setzen, was von den meisten Videoplayern und Plattformen erkannt wird.

Timing-Validierung

Die Fähigkeit validiert automatisch das Timing nach der Generierung mit ffprobe:

Was geprüft wird

PrüfungSchwelleBeschreibung
Dauerabweichung>15%Warnt, wenn die tatsächliche von der erwarteten Dauer abweicht
Anfangsstille>200msAudio beginnt spät (Voiceover verzögert)
Endstille>500msUnnötige Stille am Ende
Sprechgeschwindigkeit2-4,5 wpsOptimal ~3 Wörter/Sekunde

Vorhandenes Audio validieren

# Alle Szenen in einem Projekt validieren
node .claude/skills/elevenlabs-remotion-skill/generate.js --validate public/audio/produkt-demo/

Ausgabebeispiel:

🔍 Validiere produkt-demo (6 Szenen)

❌ szene1: 3,00s (erwartet: 4,5s)
   ❌ Audio 1,50s kürzer als erwartet
   👍 8 Wörter @ 3,1 Wörter/s
⚠️ szene2: 6,35s (erwartet: 5,5s)
   ⚠️ Anfangsstille: 235ms (kann spät beginnen)
   🐢 10 Wörter @ 1,8 Wörter/s
✅ szene4: 4,36s (erwartet: 4s)
   👍 9 Wörter @ 2,3 Wörter/s

📊 Gesamtdauer: 30,80s (erwartet: 30,00s)

Aktualisierte info.json

Nach der Validierung enthält die info.json tatsächliche Messungen:

{
  "scenes": [
    {
      "id": "scene1",
      "duration": 4.5,
      "actualDuration": 3.0,
      "leadingSilence": 0.05,
      "wordsPerSecond": 3.1
    }
  ]
}

Verwenden Sie actualDuration in Ihrer Remotion-Komposition für präzise Synchronisation.

Optionen

OptionBeschreibungStandard
--text, -tUmzuwandelnder TextErforderlich (oder --file/--scenes)
--file, -fText aus Datei lesen-
--output, -oAusgabedateipfadoutput.mp3
--output-dirAusgabeverzeichnis für Szenenpublic/audio
--voice, -vStimmenname oder IDGeorge
--model, -mModell-IDeleven_multilingual_v2
--character, -cCharakter-Presetliteral
--scenesJSON-Datei mit Szenen-
--sceneEinzelne Szenen-ID zur Regeneration-
--new-textNeuer Text für Szenenregeneration-
--validateVorhandenes Audio-Verzeichnis validieren-
--skip-validationAutomatische Validierung überspringenfalse
--embed-thumbnailVideodatei, in die Thumbnail eingebettet werden soll-
--thumbnailThumbnail-Bilddatei (PNG/JPG)-
--stabilityStimmstabilität (0-1)variiert je nach Charakter
--similarityStimmähnlichkeit (0-1)variiert je nach Charakter
--styleStil-Übertreibung (0-1)variiert je nach Charakter
--no-combinedKombinierte Datei überspringenfalse

Empfohlene Stimmen

StimmeStilAm besten geeignet für
GeorgeWarme, fesselnde britische StimmeErzählung, Erklärvideos
AntoniProfessionell, warmRechtliche Inhalte, Tutorials
ArnoldAutoritär, tiefUnternehmensinhalte, ernste Themen
JoshFreundlich, gesprächigMarketing, lockere Inhalte

Integration mit Remotion

Nachdem Sie Szenen-Voiceovers generiert haben, verwenden Sie sie in Ihrer Komposition:

import { Audio, Sequence, staticFile } from "remotion";

// Verwenden Sie einzelne Szenen-Audiodateien für präzise Synchronisation
const SCENE_DURATIONS = {
  scene1: 4.5,  // Aus info.json
  scene2: 5.5,
  scene3: 8.0,
};

export const VideoWithVoiceover: React.FC = () => {
  const { fps } = useVideoConfig();

  const scene1Frames = Math.round(SCENE_DURATIONS.scene1 * fps);
  const scene2Frames = Math.round(SCENE_DURATIONS.scene2 * fps);

  return (
    <>
      <Sequence from={0} durationInFrames={scene1Frames}>
        <Audio src={staticFile("audio/projekt/projekt-szene1.mp3")} />
        <Scene1Visual />
      </Sequence>

      <Sequence from={scene1Frames} durationInFrames={scene2Frames}>
        <Audio src={staticFile("audio/projekt/projekt-szene2.mp3")} />
        <Scene2Visual />
      </Sequence>
    </>
  );
};

Tipps für beste Ergebnisse

  1. Charakter-Presets verwenden: Lesen Sie Bildschirmtext nicht wörtlich vor – verwenden Sie narrator oder expert für einen natürlichen Fluss
  2. Interpunktion ist wichtig: Verwenden Sie Punkte für Pausen, Kommas für kurze Unterbrechungen
  3. Zahlen: Schreiben Sie Zahlen aus ("fünfhundert" nicht "500") für natürliche Sprache
  4. Abkürzungen: Schreiben Sie ganze Wörter ("vierundzwanzig Stunden" nicht "24h")
  5. Szene für Szene: Unterschiedliche Szenen können verschiedene Charaktere haben (dramatischer Einstieg, ruhiger CTA)
  6. Feinabstimmung: Verwenden Sie --scene, um einzelne Szenen zu regenerieren, ohne alles neu zu machen
  7. Request Stitching: Hält die Stimme über alle Szenen hinweg konsistent

Workflow-Beispiel

# 1. scenes.json mit Ihrem Skript erstellen
# 2. Alle Szenen mit Erzähler-Stil generieren
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/mein-video-szenen.json \
  --character narrator \
  --output-dir public/audio/mein-video/

# 3. In Remotion Vorschau anzeigen, feststellen dass Szene2 zu früh beginnt
# 4. Nur Szene2 mit aktualisiertem Text regenerieren
node .claude/skills/elevenlabs-remotion-skill/generate.js \
  --scenes remotion/mein-video-szenen.json \
  --scene scene2 \
  --new-text "Etwas längerer Text, um das visuelle Timing zu füllen" \
  --output-dir public/audio/mein-video/

# 5. Videokomposition mit neuer Dauer aus info.json aktualisieren
# 6. Wiederholen, bis das Timing perfekt ist

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills