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
- Das Thema in einem Satz. Wenn der Benutzer keins angibt, schlage 3 vor und lass ihn wählen.
- 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.
- Die Datei. Schreibe
videos/<id>.jsonim Projekt des Benutzers. Das Format ist unten, der vollständige Katalog inreferences/scenes.md. Lege Mediendateien invideos/medias/ab. - Erstellen.
node <skill>/scripts/make.mjs videos/<id>.jsonerzeugt die Stimme, die Seite, die Prüfung und den Kontaktbogen, ohne Rendering (ca. 1 Minute). - 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.
- Rendern. Füge
--renduhinzu. 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>.txtmit Titel, Beschreibung, Hashtags und angepinntem Kommentar.
- Veröffentlichen. Lese
references/publishing.mdfü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.cssoder das generierteindex.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:
Schritt Referenz Schreiben writing.mdSzenenauswahl scenes.mdStimme, Filmmaterial oder Screenshots modes.mdVeröffentlichen publishing.mdLese eine Referenz, die bereits im Gespräch gelesen wurde, nicht erneut.
-
Ein Kontaktbogen, keine Screenshots. Um ein Video zu prüfen, betrachte
<id>-planche.jpgeinmal. 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 … --renduim 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
auverteilen sich Elemente automatisch: eines pro Satz, wenn es so viele Elemente wie Sätze gibt, sonst in gleichmäßigen Abständen.
- Ohne
-
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.nomist der Stimmenname,debitdie Geschwindigkeit.fichierverweist 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.nomist der Markenname,visuelihr Logo. -
prononcer: gesprochene Formen. Sie ändern, wie die Stimme ein Wort ausspricht, niemals den auf dem Bildschirm angezeigten Text. -
fin: die Outro-Karte mit demmarque-Logo,texteundsous(einem Untertitel).audiospielt eine aufgezeichnete Signation auf der Karte ab.- Ohne
audiobleibt die Karte 2 Sekunden lang stumm.
-
titre: der Name des Videos in den Dateien. Der YouTube-Titel kommt inpublication. -
Optional:
Schlüssel Wirkung 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 Zeile | titre |
| eine Zahl (Preis, Rekord, Prozentsatz) | chiffre |
| 2 bis 6 Punkte, Werkzeuge oder Tipps | liste |
| eine Methode in 2 bis 5 Schritten | etapes |
| A versus B, vorher / nachher, Mythos / Fakt | duel |
| Marken, Coins, Apps | logos |
| einen App-Screenshot oder eine Bildschirmaufnahme | telephone |
| eine Website, eine Seite | navigateur |
| ein Foto, als Karte oder Vollbild | image |
| eine Unterhaltung (KI, Support, Betrug) | chat |
| eine Gefahr, einen Betrug, gute Nachrichten | alerte |
| einen Trend, einen Zahlenvergleich | graphique |
| einen Befehl, eine Installation | terminal |
| das Zitat von jemandem | citation |
| ein Konzept und seine Erklärung | carte |
| den einen Moment, der eine erfundene Darstellung verdient | html |
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,navigateuroderimage, ausvideos/medias/.- Eine aufgenommene oder geklonte Stimme kommt in
"voix": { "fichier": "medias/voice.wav" }. - Sie wird lokal transkribiert (whisper) und mit deinen Sätzen synchronisiert.
- Eine aufgenommene oder geklonte Stimme kommt in
- 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ältsource, 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
| Meldung | Was zu tun ist |
|---|---|
voix : … edge_tts | führe sh <skill>/scripts/install.sh aus |
mot « x » introuvable | ein au muss ein Wort aus den Sätzen seiner Szene wiederholen, wie geschrieben |
logo « x » introuvable | gib eine Datei an ("medias/x.svg") oder versuche den Markennamen ohne Leerzeichen |
| Textüberlauf | kürze den Text oder wechsle zu einer breiteren Szene (carte oder liste anstelle von duel); fasse das CSS nicht an |
| ein Wort wird falsch ausgesprochen | füge es zu prononcer hinzu, z. B. {"Ledger": "Ledjer"} |