Communitygithub.com

comic-story-video

Verwandelt jedes Thema in ein vertikales Kurzvideo, bei dem „Bilder die Geschichte erzählen“ – generative Strichzeichnungen werden Strich für Strich gezeichnet, Sprechblasen per Code eingeblendet, Single-Voice-Erzählung mit großen Untertiteln. Die Stimme führt: Die Erzählung allein muss eine verständliche Geschichte sein. Ideal für Comic-Erklärungen, Geschichts- und Wissens-Shorts, freche Pop-Science oder wenn Nutzer nach „im Stil von Hunzi Ge“ oder „Bilder erzählen Geschichten“ fragen.

Was ist comic-story-video?

Diese Fähigkeit (Skill) erstellt aus beliebigen Themen vertikale Kurzvideos (110–135 Sekunden, 1080×1920) im Comic-Stil. Der Kern liegt in der Erzählung: Die Audiospur muss für sich allein eine verständliche Geschichte erzählen; die Bilder verstärken die Geschichte, sind aber nicht für das Verständnis erforderlich. Der Erstellungsprozess umfasst fünf Phasen: 1) Story-Definition (story.json mit Erzählung, Fragen, Antworten), 2) Bilderzeugung mit einem generativen Modell (Strichzeichnungen, Text wird später per Code hinzugefügt), 3) Produktion (Sprachaufnahme, Sprechblasen, Rendern, Untertitel), 4) Überprüfung (Bild- und Audioqualität) und 5) Auslieferung. Zehn strenge Regeln gewährleisten Qualität, z. B.: Die Geschichte muss eine klare Struktur haben (Protagonist vs. Hindernis), der Text muss 440–540 Zeichen umfassen, das Modell zeichnet nur Linien (Schrift wird per Code hinzugefügt), und es gelten spezifische Farb- und Untertitel-Einstellungen. Referenzdokumente helfen bei der Story-Entwicklung, Prompt-Erstellung und Fehlerbehebung. Plattform: CLI-basiert (Python, ffmpeg).

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liangdabiao/comic-story-video/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Comic-Geschichtenvideo

Aus jedem Thema ein 110–135 Sekunden langes vertikales Kurzvideo machen: Strichzeichnungen werden Strich für Strich gezeichnet, Sprechblasen erscheinen nacheinander, Single-Voice-Erzählung mit großen Untertiteln. Ergebnis: <Projekt>/out/final.mp4 (1080×1920).

Die Stimme führt. Wenn man die Tonspur allein hört, muss sie eine verständliche Geschichte erzählen; die Bilder fügen etwas hinzu, sind aber nicht Voraussetzung für das Verständnis.


Fünf Schritte

① Geschichte festlegen → <Projekt>/story.json

Verzeichnis erstellen, Vorlage kopieren:

mkdir -p <Projekt>/raw && cp templates/comic/story.example.json <Projekt>/story.json

Zuerst die ersten drei Zeilen der Datei ausfüllen. Wenn du sie nicht ausfüllen kannst, schreibe keine Panels:

"story_line": "Wer / will was / woran scheitert es / Ergebnis, in einem Satz",
"question":   "Die zu Beginn gestellte Frage",
"answer":     "Die Antwort, die im letzten Panel gegeben wird und die Frage beantwortet"

Die question sollte auf einen Punkt abzielen, der „nicht logisch erscheint“, nicht auf eine reine Beschreibung. Die Antwort sollte keine Zeitleiste sein.

Dann für jedes Panel narration (Erzähltext) und bubbles[].text (Sprechblasentext) schreiben. Der Erzähltext sollte 440–540 Zeichen umfassen (Satzzeichen zählen mit), umgerechnet mit 4,0 Zeichen/Sekunde.

python scripts/pipeline.py <Projekt> --stage script     # Aber nicht weitermachen

Prüfung für ①: Die drei Zeilen sind vollständig → Zeichenanzahl im Bereich → jedes Panel hat Erzähltext → Sprechblasen ragen nicht aus dem Bild → Die Funktion in charts.py existiert.

② Bilder erzeugen → <Projekt>/raw/<id>.png

Schreibe zuerst alle Prompts fertig, dann erzeuge alle Bilder auf einmal. Wenn du ein Bild nach dem anderen erzeugst, dauert es ein bis zwei Stunden, und das Ändern der Prompts zwischendurch führt zu Stilbrüchen.

python scripts/comic_gen.py <Projekt> --list     # Zeigt nicht erzeugte Prompts an; bereits erzeugte werden übersprungen

Generiere die Bilder nacheinander gemäß der angezeigten Prompts und speichere sie in raw/. Verwende unbedingt Bild-zu-Bild-Generierung mit dem Referenzbild assets/reference/01-style-anchor.png bei niedriger Ähnlichkeit.

python scripts/contact_sheet.py <Projekt>        # Erstellt eine Übersicht, einmal ansehen
python scripts/pipeline.py <Projekt> --stage image

Prüfung für ②: In der Übersicht auf nur zwei Dinge achten – ob die richtigen Personen da sind und ob es großflächige Schwärzungen oder leere Flächen gibt. Alles andere (vereinzelter Text im Bild, halber Kopf Größenunterschied, verschmierte Linien, um einige Pixel verschobener Schwanz) wird ignoriert, mach einfach weiter.

③ Produktion → final.mp4

python scripts/comic_run.py <Projekt>

Nacheinander ausführen: Sprachaufnahme → Sprechblasenebene / Infografik → bereinigte Schlussgrafik → Strich-für-Strich-Rendering → vertikales Video zusammensetzen → Untertitel einbrennen. Einzelne Schritte erneut ausführen mit den entsprechenden comic_*.py-Skripten.

④ Überprüfung

python scripts/verify_media.py --file <Projekt>/out/final.mp4 --expect <Sekunden>
ffmpeg -y -ss 3 -i <Projekt>/out/final.mp4 -vframes 1 <Projekt>/check/03.png

Zwei Frames prüfen (Sekunde 3 und bei 0,75 der Gesamtlänge des Panels): Bewegt sich das Bild? Stimmt die Hintergrundfarbe? Ragen Untertitel aus dem Bild?

Dann die Tonspur extrahieren und mit geschlossenen Augen anhören: Kannst du sagen „Wer will was, welche Ereignisse passieren, wie endet es?“ – dann ist es bestanden.

⑤ Auslieferung

<Projekt>/out/final.mp4. Wenn eine flache Version benötigt wird, verwende out/story_flat.mp4.


Zehn strenge Regeln

Die ersten drei Regeln betreffen die Geschichte; ein Verstoß bedeutet „Ich weiß nach dem Hören nicht, worum es ging“. Die letzten sieben betreffen die Produktion; ein Verstoß bedeutet, dass Bild oder Ton falsch sind.

1. Fülle zuerst story_line / question / answer aus. Wenn du sie nicht ausfüllen kannst, schreibe keine Panels. Fehlen diese drei Zeilen, stellst du nach dem Schreiben von acht Panels fest, dass die Geschichte auseinanderfällt – die teuerste Art der Nacharbeit.

2. Wähle das Gerüst basierend auf der Beziehung zwischen Protagonist und Hindernis; verwende nicht für jedes Thema dieselbe Panel-Tabelle.

Protagonist vs. HindernisGerüst
Ein konkreter Gegner, Hin und HerAngriff → Abwehr → Eskalation → Abwehr → Schlimmster Angriff → Abwehr
Der eigene Weg ist versperrtDas alte Geschäft stirbt → Einige Versuche schlagen fehl → Eine unerwartete Sache taucht auf → Alles auf eine Karte setzen → Erfolg → Endlich verstehen, was wirklich verkauft wird
Ein unerklärliches Phänomen, rückwärts ermittelnSeltsame Sache → Die Person finden → Ihre damalige Notlage → Wie sie es gelöst hat
Auf dem Gipfel, durch eine Kleinigkeit gestürztHöhepunkt → Ein Riss → Niemand nahm es ernst → Falsch gesetzt → Zusammenbruch

Die Anzahl der Panels richtet sich nach der Geschichte; 5–9 Panels sind in Ordnung.

3. Nummeriere keine nebeneinander stehenden Ereignisse als „Runden“. Wenn du „erste Runde“ durch „erstes Mal“ ersetzen kannst, ohne dass die Geschichte leidet, dann war es keine Runde, sondern ein aufgeklebtes Etikett – streiche es. Ebenso: Verwende keine Kommentator-Floskeln wie „eskaliert“, „am Ziel“, „die Karten aufdecken“, „die wahren Absichten zeigen“. Das Publikum hört nur Codes, keine Geschichte.

4. Der Erzähltext muss eine verständliche, vollständige Geschichte sein; der Sprechblasentext muss ausgesprochen werden. „Er antwortete etwas“, „Er schrieb zwei Zeichen“, „Ein Satz brachte ihn zur Besinnung“ – der Zuhörer weiß nur, dass jemand etwas gesagt hat, aber nicht, was. Es ist kein Fehler, wenn der Sprechblasentext den Erzähltext wiederholt; die Untertitel sind ohnehin eine Wiederholung des Tons.

5. Das generative Modell zeichnet nur Strichzeichnungen; Text wird per Code hinzugefügt. Füge in den Prompt „zeichne keine Schriftzeichen“ ein – das dient der Vorsorge, nicht als Prüfkriterium für die Bilder.

6. Sprechblasen gehen nicht in die Engine. Die Engine wandelt Farben in schwarze Flächen um. Sprechblasen werden beim Compositing zeitgesteuert eingeblendet, was eine bessere Kontrolle des Rhythmus ermöglicht.

7. Übergib kein element_plan. Wenn du es übergibst, zeichnet jedes Objekt maximal 1,6 Sekunden lang und stoppt dann; das gesamte Panel ist in zwei Sekunden fertig. Ohne element_plan wird das Budget proportional zur Quadratwurzel der Fläche verteilt, bei konstanter Gesamtdauer.

8. Verwende unbedingt Bild-zu-Bild-Generierung mit niedriger Referenz-Ähnlichkeit (0,3–0,5). Bei hoher Ähnlichkeit kopiert das Modell die Pose des Referenzbildes und ignoriert die von dir beschriebene Aktion.

9. Schreibe die Charaktere in characters und referenziere sie im Prompt mit {Name}; zwischen zwei beliebigen Charakteren müssen mindestens drei Unterschiede bestehen. Kopfschmuck, Bart, Kleidung, Körperbau – alles genau beschreiben. Der Protagonist trägt einen auffälligen Kopfschmuck (weiches Tuch / ohne Krone); eckige Kronen, Helme und Kopfbedeckungen sind Gegnern und Soldaten vorbehalten.

10. Verwende colorkey + overlay für die Hintergrundfarbe; brenne Untertitel als ASS-Datei ein und deklariere PlayResX/Y. Bei Verwendung von blend=all_mode=multiply wird die Hintergrundfarbe zu Neon-Grün; SRT-Untertitel, die von libass verarbeitet werden, landen im 384×288-Koordinatensystem, wodurch Schrift aus dem Bild ragt.


Bei Problemen: Welches Dokument lesen?

SituationLies
Du weißt nicht, wie du ein Thema in eine Geschichte verwandelst, was in jedes Panel kommt, wie du endestreferences/story.md
Prompt schreiben, Charaktere festlegen, Sprechblasen-Layout, TTS, Rendering- und Compositing-Parameterreferences/production.md
Bild / Ton / Dauer sind fehlerhaftreferences/troubleshooting.md
Konkrete Prompt-Vorlagen und negative Constraintsreferences/prompt-recipes.md
Sprechsilben / Stimmfarbereferences/voice-design.md
edge-tts gibt 403 zurückreferences/apiz-tts-fallback.md

Verzeichnisstruktur

<Projekt>/
├── story.json      Einzige Konfiguration: Titel, drei Geschichtszeilen, Erzähltext/Sprechblasen/Prompt pro Panel
├── charts.py       Zeichenfunktionen für Infografik-Panels (nur benötigt, wenn es Chart-Panels gibt)
├── raw/            Originalbilder vom generativen Modell ← Du legst sie hier ab
├── boards/ bubbles/ charts/ audio/ out/    ← Skript-Ausgaben
└── subs.ass

Erstmalige Nutzung

bash scripts/setup.sh                                          # macOS / Linux / Git Bash
powershell -ExecutionPolicy Bypass -File scripts/setup.ps1      # Windows
python scripts/self_test.py                                    # 6 Selbsttests, einmal ausführen

Verwandte Skills