Buchvideo 1:1-Klon-Pipeline
Zerlege das Videoformat eines Referenzkontos in ein wiederverwendbares Rezept und produziere mit einer industriellen Pipeline (Storyboard-Gate → Szenenweise TTS-Zeitachse → Rendering-Overlays → Headless-Frame-Rendering) originelle Inhalte im gleichen Format. Geklont wird das Format (Struktur/Verpackung/Rhythmus/Bildstil), nicht der Inhalt – Skript, Bilder und Audio sind vollständig original.
Dieses Skill wurde vollständig mit dem Buch „Thinking, Fast and Slow“ (Referenz „向不惑“, 109 Szenen, 654,9 s) validiert.
Vor Beginn: Drei Dinge mit dem Nutzer klären
- Referenzvideo: Lokaler Dateipfad oder Link (Douyin/Bilibili etc.). Falls keine Videodatei verfügbar, den Nutzer bitten, es aufzunehmen oder herunterzuladen und ins Projekt zu legen.
- Buchtitel dieser Episode: Welches Buch wird behandelt? (Am besten Wirtschaft/Kognition/Psychologie/Business/Wachstum)
- Markenname + Pseudonym: z. B. „Wissenslabor / Mark“
Phase A · Projektinitialisierung
PROJ=Projektverzeichnis (vom Nutzer festgelegt oder neu)
mkdir -p $PROJ/{00_benchmark,01_script,02_storyboard,03_audio,04_subtitles,05_assets/images,07_hyperframes_production,08_publish,scripts}
cp <Skill-Verzeichnis>/templates/{pipeline.py,create_storyboard.py,gen_audio_minimax.py,build_hyperframes_html.py,render_html_video.py} $PROJ/scripts/
cp <Skill-Verzeichnis>/templates/.env.example $PROJ/.env # Nutzer trägt MINIMAX_API_KEY ein
Abhängigkeiten: python3 + playwright (mit chromium) + ffmpeg. Fehlende Komponenten zuerst installieren: pip install playwright && playwright install chromium.
Phase B · Benchmark-Analyse → Rezept erstellen
Analysiere das Referenzvideo gemäß references/benchmark-analysis.md und erstelle 00_benchmark/recipe.md (fünf Schichten: Spezifikation/Rhythmus/Struktur/Visuelles/Audio). Injiziere dann das Rezept in die Vorlagen:
| Rezept-Element | Injektionsort |
|---|---|
| Keyword für Bildstil Haupttext | STYLE_SUFFIX in create_storyboard.py |
| Beschreibung für Kapitelkarten-Hintergrund/Outro-Karte | CARD_BG_PROMPT / OUTRO_CARD_PROMPT in derselben Datei |
| Akzentfarbe/Titelfarbe CSS | #ffde59 (Akzentgelb) / #e8c66a (Titelgold) in build_hyperframes_html.py usw. |
Die Standardvorlage enthält bereits ein „Amerikanischer Retro-Comic + Schwarz-Gold-Hintergrund“-Rezept (Referenz „向不惑“). Falls die Referenz diesem Stil folgt, kann die Injektion übersprungen werden.
Phase C · Skripterstellung (6-Teile-Schema)
Schreibe 01_script/final.md gemäß references/copywriting-template.md.
Eiserne Regel: Jeder Satz muss ein konkretes Bild ergeben – das nächste Gate (Abdeckung) ist wortgenau abhängig vom Skript. Aktualisiere gleichzeitig die Episodenkonfiguration oben in create_storyboard.py (SCRIPT_MD zeigt standardmäßig auf final.md, BOOK_TITLE).
Phase D · Storyboard (Gate ①)
Trage jeden Satz des Skripts in die SHOTS-Vierergruppe in scripts/create_storyboard.py ein (Narration = exakter Wortlaut, Bild = wörtliche Übersetzung, card_id, overlay_text). Dann:
python3 scripts/create_storyboard.py
Wenn das Abdeckungsgate nicht bestanden wird, anhalten und korrigieren – niemals mit Fehlern weitermachen. Ergebnis: 02_storyboard/prompts.tsv + nano_banana_prompts.md.
Phase E · Batch-Bildgenerierung (manueller Schritt)
Übergebe das gesamte nano_banana_prompts.md an das Bildgenerierungstool des Nutzers (Gemini Antigravity / Nano Banana oder ein beliebiges Tool). Anweisungen: 16:9, Dateiname exakt wie in der Liste, ablegen in 05_assets/images/, vorhandene Dateien überspringen. Es sollten N Hauptbilder + chapter_card_bg.png + outro_card.png erzeugt werden. Diese Phase kann parallel zu Phase F laufen.
Phase F · Sprachausgabe + Frame-genaue Zeitleiste
python3 scripts/gen_audio_minimax.py --limit 3 # Zuerst 3 Szenen synthetisieren, damit Nutzer die Stimme testen kann
python3 scripts/gen_audio_minimax.py # Vollständig (18 RPM limitiert, ~110 Szenen ca. 7 Minuten)
Zeitleiste = Dauer basierend auf PCM-Byteanzahl, szenengenau, kein Whisper. Bei Textänderungen wird nur diese Szene neu synthetisiert (Cache-Hash).
Phase G · Rendern zum Video (Gate ② + Engine)
python3 scripts/build_hyperframes_html.py # Vollständigkeitsprüfung: Rendern nur, wenn „alle bereit“
python3 scripts/render_html_video.py --start 0 --duration 6 --out /tmp/smoke_hook.mp4
python3 scripts/render_html_video.py --start <Zeit einer Kapitelkarte> --duration 6 --out /tmp/smoke_card.mp4
python3 scripts/render_html_video.py --start <5 Sekunden vor Outro> --duration 6 --out /tmp/smoke_outro.mp4
# Nach visueller Prüfung der drei Rauchtests das gesamte Video rendern (~110 Szenen ≈ 11 Min Film, Rendering ca. 14 Min)
python3 scripts/render_html_video.py
Bei Unterbrechung einfach neu starten (unterstützt Checkpoint-Wiederaufnahme). Rendering-Ebene vorher im Browser prüfen: open 07_hyperframes_production/index.html (Leertaste abspielen, ←→ jeweils 5 Sekunden).
Phase H · Abnahme + Veröffentlichung
Abnahmebefehle, visuelle Stichprobenprüfung, Vorlagen für Veröffentlichungsmaterial (Titelformel/Tags/Cover/Pinned Comment) siehe references/pipeline-guide.md. Materialien in 08_publish/ ablegen.
Harte Regeln (niemals verletzen)
- Gate nicht bestanden → nicht zur nächsten Phase: Abdeckungsgate (Skript = Narration), Vollständigkeitsgate (Bilder vollständig vor Rendering)
- API-Key nur in
.env: Keine hartcodierten Keys in Skripten, Dokumenten oder Dialogen - Bilder ohne Text, Text nur in der Rendering-Ebene: Kapitelkarten/Datenkarten/Untertitel/Marke sind HTML-Overlays, bei Buchwechsel kein erneutes Zeichnen
- Vor Vollrendering drei Rauchtests (Hook/Kapitelkarte/Outro) visuell prüfen
- Bild-Prompts immer mit festem Stil-Suffix + 16:9 + Hintergrund ohne Text/Schriftzüge
Gemessene Leistungsbenchmarks (zur Erwartungskalibrierung)
Skript 3601 Zeichen → 109 Szenen → 654,9 s Film; TTS 7 Minuten; Rendering 24 fps (ganzer Film ca. 14 Min); Gesamte manuelle Arbeitszeit ≈ ein Arbeitstag (Skript nimmt mehr als die Hälfte ein).