Communitygithub.com

danbaruka/ai-video

Erstelle kurze vertikale Videos (TikTok, Reels, YouTube Shorts, 30 bis 90 Sekunden) in einem sauberen, animierten, weißen Stil aus einer einzigen video.json-Datei – mit sehr wenigen Tokens. Drei Modi: „Generated“ fügt eine freie neuronale Stimme und Motiondesign hinzu; „Images“ platziert Screenshots, Fotos und Webseiten in einem echten iPhone, Browser oder Vollbild; „Filmed“ fügt Untertitel und animierte Szenen über einen Talking-Head-Clip. Das Skill schreibt das Skript, erzeugt die Stimme, synchronisiert Untertitel Wort für Wort, animiert jede Szene, fügt Musik und Soundeffekte hinzu, prüft, dass kein Text überläuft, und rendert das MP4.

Was ist ai-video?

Dieses Skill ermöglicht es, kurze, vertikale Videos im Stil von TikTok, Reels oder YouTube Shorts (30–90 Sekunden) vollständig aus einer einzigen JSON-Datei zu generieren. Es unterstützt drei Modi: „Generated“ (komplett synthetisch mit freier Stimme und Animation), „Images“ (Einbindung von Screenshots und Bildern in iPhone-, Browser- oder Vollbildrahmen) und „Filmed“ (Untertitel und animierte Szenen über einem vorhandenen Videoclip). Das Skill erstellt automatisch das Skript, generiert die Sprachausgabe (edge-tts, kostenlos, viele Sprachen), synchronisiert Untertitel Wort für Wort, wählt aus 16 Szeneutypen aus, fügt Musik und Soundeffekte hinzu, prüft auf Textüberläufe und rendert das finale MP4 inklusive Cover und Social-Media-Text. Es ist extrem token-effizient: Ein 60-Sekunden-Video benötigt nur etwa 65.000 Tokens, da statt HTML/CSS nur kompaktes JSON geschrieben wird. Das Skill läuft lokal mit Node.js, FFmpeg und Python; es ist ideal für schnelle, kostengünstige Videoproduktion, Faceless-Videos, Erklärvideos oder Batch-Verarbeitung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/danbaruka/claude-code-ai-video/tree/main/skills/ai-video

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht ai-video?

Ein Video ist eine video.json-Datei: die Sätze, die die Stimme spricht, und für jede starke Idee eine Szene aus einem Katalog von 16 Typen. Das Skript scripts/make.mjs erledigt alles andere. Schreibe niemals HTML-, CSS- oder Animationscode von Hand. Die einzige Ausnahme ist der einzelne Moment, der eine individuelle Darstellung verdient (Typ html).

Idee ─► Skript (Sätze) ─► video.json ─► make.mjs ─► Kontaktbogen (Prüfung) ─► --rendu ─► MP4 + Cover + Post-Text

Die JSON-Schlüssel sind auf Französisch (phrases, texte, scene, voix, marque…), ebenso die Szenentypen (titre, chiffre, liste…). Schreibe sie genau so, wie sie in diesem Skill gezeigt werden. Der Text, den die Stimme spricht, kann in jeder Sprache sein.

Vor dem ersten Video (einmalig)

sh <skill>/scripts/install.sh      # prüft node ≥ 18, ffmpeg, python3; installiert edge-tts in <skill>/.venv

<skill> ist der Ordner dieser Datei. Der erste Durchlauf lädt HyperFrames (via npx), GSAP und die Logos herunter. Danach ist alles gecached.

Der Arbeitsablauf

  1. Das Thema in einem Satz. Wenn der Benutzer keins angibt, schlage 3 vor und lass ihn wählen.
  2. Das Skript. Lies references/writing.md: Hooks, die funktionieren, Struktur, Länge.
    • Ziel: 9 bis 14 Sätze und 110 bis 170 Wörter.
    • Rechne mit etwa 2,7 Wörtern pro Sekunde plus 0,35 s zwischen den Sätzen: 130 Wörter ergeben etwa 50 s.
  3. Die Datei. Schreibe videos/<id>.json im Projekt des Benutzers. Das Format ist unten, der vollständige Katalog in references/scenes.md. Lege Mediendateien in videos/medias/ ab.
  4. Erstellen. node <skill>/scripts/make.mjs videos/<id>.json erzeugt die Stimme, die Seite, die Prüfung und den Kontaktbogen, ohne Rendering (ca. 1 Minute).
  5. Prüfung. Öffne nur ein Bild: videos/rendus/<id>-planche.jpg.
    • Es zeigt Frame 1, dann jede Szene an ihrem Ende (sobald alle Elemente angekommen sind), dann die Outro-Karte.
    • Korrigiere das JSON und führe den Befehl erneut aus. Die Stimme ist gecached: nur geänderte Sätze werden neu erstellt.
  6. Rendern. Füge --rendu hinzu. Es dauert etwa 1 Minute für 45 s Video. Du erhältst:
    • videos/rendus/<id>.mp4;
    • -couverture.jpg, das Cover, das Frame 1 ist;
    • <id>.txt mit Titel, Beschreibung, Hashtags und angepinntem Kommentar.
  7. Veröffentlichen. Lese references/publishing.md für Posting-Zeiten nach Zielgruppenland, Posting-Rhythmus und Captions. Veröffentliche niemals etwas ohne die ausdrückliche Zustimmung des Benutzers.

Tokens sparen: die wichtigen Regeln

Dieses Skill ist günstig, weil das Modell 60 bis 120 Zeilen JSON pro Video schreibt, statt 250 bis 400 Zeilen HTML und Animationscode. In einem Blindtest erstellte ein frischer Agent ein fertiges 60-Sekunden-Video mit etwa 65.000 Tokens, einschließlich des Lesens dieses Skills. Um das so zu halten:

  • Öffne nicht make.mjs, lib/*.mjs, style.css oder das generierte index.html. Der Szenenkatalog ist genug. Öffne den Code nur, wenn ein Befehl fehlschlägt und seine Meldung nicht ausreicht.

  • Lies eine Referenz nur für ihren Schritt:

    SchrittReferenz
    Schreibenwriting.md
    Szenenauswahlscenes.md
    Stimme, Filmmaterial oder Screenshotsmodes.md
    Veröffentlichenpublishing.md

    Lese eine Referenz, die bereits im Gespräch gelesen wurde, nicht erneut.

  • Ein Kontaktbogen, keine Screenshots. Um ein Video zu prüfen, betrachte <id>-planche.jpg einmal. Greife nie einen Frame pro Sekunde heraus und inspiziere das MP4 nicht Frame für Frame.

  • Vertraue der Prüfung. Der Befehl führt die HyperFrames-Prüfung (überlaufender Text, versteckter Text, Laufzeitfehler) aus und fasst sie in wenigen Zeilen zusammen.

    • „aucun débordement, aucune erreur“ bedeutet, es ist sauber.
    • Eine ✗-Zeile muss immer korrigiert werden.
    • Eine ⚠-Zeile ist lesenswert: Korrigiere sie, wenn sie den Text betrifft.
  • Batches benötigen einen Befehl. Schreibe zuerst die N Dateien. Führe dann node make.mjs videos/a.json videos/b.json … --rendu im Hintergrund aus und warte, bis es fertig ist, ohne die Ausgabe zu beobachten.

  • Bearbeite direkt. Um etwas zu korrigieren, ändere nur den fehlerhaften Satz oder die Szene im JSON. Schreibe nie die gesamte Datei neu.

  • Keine Asset-Suche. Logos (logo:bitcoin, logo:metamask…) und 45 Icons (icone:cle…) sind integriert. Suche nur dann im Web nach einem Bild, wenn der Benutzer danach fragt.

Das Format der video.json

{
  "id": "wallet-key",
  "titre": "Your crypto is not in your wallet",
  "langue": "en",
  "voix": { "nom": "en-US-AndrewMultilingualNeural", "debit": "+4%" },
  "marque": { "nom": "BDan", "visuel": "icone:etincelle" },
  "prononcer": { "USDT": "U S D T" },
  "phrases": [
    { "texte": "Your crypto is not in your *wallet*.",
      "scene": { "type": "titre", "lignes": ["Your crypto", "is not in", "your *wallet*"], "visuel": "icone:portefeuille" } },
    { "texte": "The key fits in *twelve words*.",
      "scene": { "type": "chiffre", "valeur": "12", "apres": "words", "au": "twelve", "couleur": "accent" } },
    { "texte": "It's called the recovery phrase." }
  ],
  "fin": { "texte": "I'm BDan.", "sous": "Let's talk new tech.", "audio": "medias/signature.wav" },
  "publication": { "titre": "…", "legende": "…", "hashtags": ["crypto"], "commentaire": "…" }
}
  • phrases[].texte: was die Stimme sagt, Wort für Wort.

    • *Wort* markiert das starke Wort: Es wird farbig kursiv dargestellt, pulsiert beim Sprechen und die Kamera zoomt darauf.
    • Verwende maximal eines pro Satz.
  • scene: beginnt eine neue Szene.

    • Ein Satz ohne Szene verlängert die vorherige, was Zeit zum Lesen lässt.
    • Im „Filmed“-Modus zeigt ein Satz ohne Szene stattdessen das Gesicht; dort verlängert "scene": "suite" die Szene.
  • au („bei“): Das Element erscheint bei diesem Wort des Satzes, z. B. "au": "Ledger".

    • Ohne au verteilen sich Elemente automatisch: eines pro Satz, wenn es so viele Elemente wie Sätze gibt, sonst in gleichmäßigen Abständen.
  • Visuelle Elemente, wo immer eine Szene eines benötigt: "logo:binance", "icone:cadenas", "emoji:🔑" oder ein Pfad wie "medias/screenshot.png" (.svg-Dateien werden inline eingebunden).

  • voix: die Stimme. nom ist der Stimmenname, debit die Geschwindigkeit. fichier verweist auf eine eigene Aufnahme.

  • langue: Standardmäßig "fr". Setze "en" für Englisch, zusammen mit einer englischen Stimme.

  • marque: die kleine Marken-Pille unten links. nom ist der Markenname, visuel ihr Logo.

  • prononcer: gesprochene Formen. Sie ändern, wie die Stimme ein Wort ausspricht, niemals den auf dem Bildschirm angezeigten Text.

  • fin: die Outro-Karte mit dem marque-Logo, texte und sous (einem Untertitel).

    • audio spielt eine aufgezeichnete Signation auf der Karte ab.
    • Ohne audio bleibt die Karte 2 Sekunden lang stumm.
  • titre: der Name des Videos in den Dateien. Der YouTube-Titel kommt in publication.

  • Optional:

    SchlüsselWirkung
    musiqueeine Musikdatei, die unter der Stimme leiser wird
    couleursFarben, z. B. {"accent": "#2f6bff", "accent2": "#5fa3ff"}
    sons: falsekeine Whooshes bei Übergängen
    blancStille zwischen den Sätzen, standardmäßig 0,35 s
    pausezusätzliche Stille nach einem Satz
    sousTitres: falsekeine Untertitel
  • Satz 1 hat immer eine Szene. Frame 1 ist das Cover, das die Leute in ihren Feeds sehen, also verwende einen kurzen, einprägsamen titre.

Die 16 Szenen (Parameter und Beispiele in references/scenes.md):

Um zu zeigen…Typ
den Hook, eine knackige Zeiletitre
eine Zahl (Preis, Rekord, Prozentsatz)chiffre
2 bis 6 Punkte, Werkzeuge oder Tippsliste
eine Methode in 2 bis 5 Schrittenetapes
A versus B, vorher / nachher, Mythos / Faktduel
Marken, Coins, Appslogos
einen App-Screenshot oder eine Bildschirmaufnahmetelephone
eine Website, eine Seitenavigateur
ein Foto, als Karte oder Vollbildimage
eine Unterhaltung (KI, Support, Betrug)chat
eine Gefahr, einen Betrug, gute Nachrichtenalerte
einen Trend, einen Zahlenvergleichgraphique
einen Befehl, eine Installationterminal
das Zitat von jemandemcitation
ein Konzept und seine Erklärungcarte
den einen Moment, der eine erfundene Darstellung verdienthtml

Variiere die Szenen.

  • Gib jeder starken Idee ihre eigene Szene: 6 bis 10 Szenen pro Video.
  • Verwende niemals zweimal hintereinander denselben Typ und ändere die Reihenfolge der Typen von einem Video zum nächsten.
  • Ein fester Stil darf nicht zur Vorlage werden. Wenn drei aufeinanderfolgende Videos die gleiche Abfolge von Szenen haben, springen die Zuschauer ab.

Die drei Modi (Details in references/modes.md)

  • Generated: Das JSON ist alles, was du brauchst.
    • Die Stimme ist edge-tts: kostenlos, kein Schlüssel, viele Sprachen.
    • Setze voix.nom, um die Stimme oder den Akzent zu ändern.
  • Images: Deine Screenshots und Fotos kommen in telephone, navigateur oder image, aus videos/medias/.
    • Eine aufgenommene oder geklonte Stimme kommt in "voix": { "fichier": "medias/voice.wav" }.
    • Sie wird lokal transkribiert (whisper) und mit deinen Sätzen synchronisiert.
  • Filmed: Setze "rush": "medias/clip.mp4". Das Audio des Clips ist die Stimme.
    • Sätze ohne Szene zeigen das Gesicht mit Untertiteln unten.
    • Eine Szene bedeckt den Bildschirm für die Dauer ihrer Idee.
    • Schreibe die Sätze aus dem Transkript: das Skill synchronisiert sie Wort für Wort.

Vor dem Rendern: die Checkliste

  • Satz 1 gibt das Thema klar an, und sein Titel ist in unter einer Sekunde lesbar.
  • Jedes technische Wort wird im selben Satz oder im nächsten erklärt.
  • Es gibt maximal ein starkes Wort pro Satz und 6 bis 10 Szenen verschiedener Typen.
  • Zahlen stammen aus einer echten, geprüften Quelle. Eine chiffre-Szene enthält source, wenn die Zahl von jemand anderem stammt.
  • Der Kontaktbogen wurde geprüft, die Prüfung ist sauber, und es bleibt keine „mot introuvable“ (Wort nicht gefunden)-Warnung.
  • Der Abschluss gibt einen Grund zu bleiben (was als Nächstes kommt, eine einprägsame Zeile), keine vage Frage.
  • Marken werden gezeigt, um über sie zu sprechen, niemals um eine Partnerschaft vorzutäuschen.
  • Erfundene Gespräche enthalten "mention": "Exemple fictif" oder auf Englisch "Example".

Wenn etwas kaputt geht

MeldungWas zu tun ist
voix : … edge_ttsführe sh <skill>/scripts/install.sh aus
mot « x » introuvableein au muss ein Wort aus den Sätzen seiner Szene wiederholen, wie geschrieben
logo « x » introuvablegib eine Datei an ("medias/x.svg") oder versuche den Markennamen ohne Leerzeichen
Textüberlaufkürze den Text oder wechsle zu einer breiteren Szene (carte oder liste anstelle von duel); fasse das CSS nicht an
ein Wort wird falsch ausgesprochenfüge es zu prononcer hinzu, z. B. {"Ledger": "Ledjer"}

Verwandte Skills