Communitygithub.com

novel-storyboard

Erstellt Storyboards für KI-Kurzserien: Drei-Schichten-Struktur – Segment (eine Videogenerierung, ≤15 Sek.) → Cut (2–5 Sek. im Segment, übernimmt Script-Beats) → Frame (ein Keyframe pro Cut: Hauptframe bei 0.00s, Unterframes an ihren Schnittpunkten). Jedes Segment enthält einen MiniMax H3-Video-Prompt. Liefert storyboard.json + Markdown + einseitigen Prüfbericht.

Was ist novel-storyboard?

novel-storyboard ist ein KI-Agenten-Skill, das speziell für die Erstellung von Storyboards für KI-generierte Kurzserien entwickelt wurde. Es ist die erste Schicht in der Pipeline, die direkt mit Videomodellen interagiert. Das Skill basiert auf dem Prinzip, dass Schnitte generiert werden und die Kosten für zusätzliche Schnitte nahezu null sind, daher ist die Anzahl der Schnitte nicht begrenzt. Das einzige Limit ist die maximale Generierungsdauer eines einzelnen Videomodellsegments (standardmäßig 15 Sekunden). Der Kernmechanismus besteht darin, dass jeder Cut explizit die aufeinanderfolgenden Beats einer Szene im Drehbuch übernimmt (sceneIndex + beats: [start, end]). Dadurch wird eine mechanisch überprüfbare Beziehung zwischen Storyboard und Drehbuch hergestellt. Jeder Beat wird genau von einem Cut übernommen, in der richtigen Reihenfolge. Das Skill unterstützt die Videomodell-Protokolle MiniMax H3 (mit I2VA-Struktur und Dialog in `<d>`-Blöcken) und Seedance (programmatisch zusammengesetzt). Es produziert keine Bilder, sondern liefert Frame-Prompts, Shot-Beschreibungen, Quantisierungsfelder für die Komposition und Batch-Informationen für die Generierung. 18 Qualitätstore werden durch Skripte deterministisch geprüft, inklusive der Validierung der H3-Prompt-Struktur, der Dialogabdeckung, der Shot-Recipe-Validierung (optional) und mehr. Das Skill ist vollständig eigenständig, benötigt keine API-Keys und arbeitet mit den Kontingenten der aktuellen Sitzung. Es wird auf Anfrage („分镜“, „Storyboard“) aktiviert und liefert strukturierte JSON- und Markdown-Ausgaben.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/chulegexiaojiu/2dhuman-get-skill/tree/HEAD/skills/novel-storyboard

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht novel-storyboard?

Erstellt Storyboards für KI-Kurzserien – die erste Schicht in der Pipeline, die direkt mit Videomodellen interagiert. Das Grundprinzip ist fest verankert: Schnitte werden generiert, die Kosten für einen zusätzlichen Schnitt sind nahezu null. Daher wird hier nicht an der Anzahl der Schnitte gespart. Die einzige Grenze ist die maximale Generierungsdauer eines einzelnen Videomodellsegments (standardmäßig 15 Sekunden).

Kernmechanismus: Schnitte übernehmen Beats. Jeder Schnitt erklärt, welche aufeinanderfolgenden Beats einer Szene des Drehbuchs er abdeckt (sceneIndex + beats: [start, ende]). Ein Schnitt darf nicht szenenübergreifend sein – ein Szenenwechsel erfordert einen neuen Schnitt. Dies macht die Beziehung zwischen Storyboard und Drehbuch mechanisch überprüfbar:

LieferungWas wird gelöst
Beat-ÜbernahmeJeder Beat wird genau von einem Schnitt in der richtigen Reihenfolge übernommen – bei Änderungen am Drehbuch wird die Validierung erneut ausgeführt, fehlerhafte Schnitte werden sofort benannt
Einzelschnitt ≤ 15 Sek.Obergrenze für die Generierung eines KI-Videosegments; lange Dialoge werden hier zwangsweise aufgeteilt (params.maxShotSeconds je nach Modell anpassbar)
Dialog passendDie Dialogsekunden der übernommenen Beats müssen ≤ die Schnittsekunden sein – wird sekundengenau geprüft, nicht geschätzt
Frame-Prompt + Shot-TextFrame-Prompt (frame, Chinesisch, direkte Charakternamen) für Bildmodelle mit Charakter-Referenzbildern; Shot-Text (shot, Chinesisch, allgemeine Identität) beschreibt, was in diesen Sekunden passiert. Einstellungsgrößen sind als enum definiert, chinesische Begriffe müssen im Frame-Prompt enthalten sein
H3-Video-Prompt (einer pro Segment)MiniMax H3 I2VA-Struktur: Feste Ausrichtungsanweisung + integrated_multimodal_description + overall_soundscape + non_diegetic_music. Die Dialoge der übernommenen Beats werden Zeichen für Zeichen in <d>[Chinese] …</d>-Blöcke eingefügt – Dialog, Soundscape und Musik in einem Prompt
Seedance-Video-Prompt (einer pro Segment, programmatisch)Parallel zu H3. Wird vom Skript gemäß der offiziellen Struktur zusammengesetzt: Referenzbild-Deklaration, Segment-Level-Blocking, quantisierte Kameraführungsfelder pro Schnitt, Dialog {}, Soundeffekte <>, Musik (), Nummerierungsbeschränkungen. Das Modell schreibt nur den shot-Text pro Schnitt, keine Sekundenangaben, Nummern oder Bildreferenzen
Quantisierte KompositionsfelderPro Segment blocking (wer links/rechts, Abstand), pro Schnitt Brennweite/Kameraposition/Komposition/Blickrichtung/Fokus/Stabilität – wenn keine Storyboard-Bilder vorliegen, sind sie die einzige Quelle für die Komposition
Generierungs-Batch-ListeSchnitte mit gleicher Szene + gleicher Beleuchtung werden in einem Batch zusammengefasst und teilen sich ein Umgebungsreferenzbild – KI-gestützte Klappenliste, automatisch vom Skript erstellt
SynchronisationslisteJede Dialogzeile wird einer Schnittnummer zugeordnet – wo die TTS-Audio auf das Video geklebt wird, automatisch vom Skript erstellt

{baseDir} = Verzeichnis dieser Datei. Skript {baseDir}/scripts/novel-storyboard.mjs, keine Abhängigkeiten, mit node direkt ausführbar.

Grenzen (was nicht gemacht wird): Keine Szenenbeschreibungen oder Dialogänderungen (Aufgabe von novel-script), keine Erstellung von Szenen-/Charakter-/Prop-Referenzbildern (Aufgabe von novel-art / novel-characters), keine Videogenerierung und kein Schnitt/Compositing. Lippen-/Mundsync wird vorerst nicht behandelt – das liegt in der Generierungspipeline.


Schritt 0 – Eingabe und Umfang festlegen

script.json ist die harte Voraussetzung – ein Storyboard ohne Drehbuch ist sinnlos. validate/render benötigen daher zwingend --script. Andere Upstream-Daten werden verwendet, falls vorhanden:

  • --outline / --cast: Prüfung auf fehlende Personennamen in Prompts + Anzeige als C01 im Bericht
  • --art: Anzeige als S01 im Bericht + Einbettung von Szenen-Referenzbildern in der Batch-Liste
  • --shots <Kartenverzeichnis>: Optional Einbindung einer Shot-Recipe-Karte (zeigt auf shot-recipes/references/cards, akzeptiert nur Verzeichnisse, keine exportierten JSONs), öffnet das 18. Qualitätstor shot-recipe. Wenn shot-recipes nicht installiert ist, nicht angeben – dieses Skill ist in sich geschlossen und benötigt es nicht

Wie viele Episoden auf einmal: Entspricht der Batch-Größe des Drehbuchs (bis wohin das Drehbuch geschrieben ist), standardmäßig ≤ 3 Episoden pro Batch.

Schritt 1 – seed-Arbeitsblatt erstellen

node {baseDir}/scripts/novel-storyboard.mjs seed <script.json> --eps 1-3 > <workdir>/storyboard.json

Deterministische Expansion: Die Beat-Liste jeder Szene (Nummer, Aktion/Dialog, Sekunden pro Beat, Sprecher) wird in seedScenes abgelegt – das ist das Arbeitsblatt für die Schnitterstellung. Die Sekunden pro Beat werden berechnet, nicht vom Modell neu geschätzt. shots bleiben leer; das Schneiden ist die Aufgabe des Modells.

Schritt 2 – Episodenweise segmentieren und schneiden

Jede Episode erhält eine eigene Aufgabe, parallelisierbar. Jede Aufgabe erhält:

  • {baseDir}/references/storyboard-pass.md und {baseDir}/references/schema.md (lesen und befolgen)
  • Die seedScenes-Arbeitsblätter der Episode + Szenenkarten (art.json mit Ankerpunkten und Beleuchtungsprompts) + Charakterkarten (cast.json mit Schlüsselattributen)

Ablauf: Zuerst nach Handlungseinheiten segmentieren (jedes Segment 9–15 Sekunden, szenenrein), dann innerhalb des Segments in 2–5 Sekunden lange Schnitte unterteilen (Schuss-Gegenschuss bei Dialogen, Close-ups für Schlüsselaktionen, Three-Shot-Einstieg – Schnittgrammatik in storyboard-pass.md). Pro Schnitt: ein Frame-Prompt (Chinesisch, direkte Charakternamen), ein Shot-Text shot (Chinesisch, allgemeine Identität) und sechs Kompositionsfelder; pro Segment: blocking, soundscape, bei Musik auch music.

Die Shot-Texte jedes Segments folgen {baseDir}/references/shot-writing.md (protokollunabhängig: ein Schnitt = eine Kamerabewegung, Aktion muss abschließbar sein, Dialog Zeichen für Zeichen, Sound geschichtet, kein Stil-Jargon). Je nach Videodienst wird die entsprechende Protokollsyntax angewendet: MiniMax H3 siehe {baseDir}/references/h3-prompt.md, Seedance siehe {baseDir}/references/seedance-prompt.md.

Pro Segment wird ein h3Prompt geschrieben, gemäß {baseDir}/references/h3-prompt.md (internalisierte Version der offiziellen Methodik, benötigt kein externes Skill). Offiziell standardmäßig auf Englisch (promptLang kann auf Chinesisch umgestellt werden), jeder Schnitt in einer eigenen Zeile. Wichtig: Die erste Zeile mit der Ausrichtungsanweisung und dem [Shot k]-Schnittzeitpunkt wird aus den Storyboard-Sekunden abgeleitet, kein Zeichen darf abweichen (validate prüft Zeichen für Zeichen); übernommene Dialoge Zeichen für Zeichen in <d>[Chinese] …</d>-Blöcke; Kamerabewegungsbegriffe jedes Schnitts in seiner Zeile; Soundscape und Musik in die letzten beiden Felder – Soundscape ist auch eine Aktionsanweisung, ändert sich das Bild, ändert sich auch die Soundscape.

Seedance-Prompts müssen nicht geschrieben werden: Das Prompt-Panel im render-Bericht und export --protocol seedance setzen sie aus den obigen Feldern zusammen. Der visuelle Stil wird vom Aufrufer beim Absenden hinzugefügt, globale Einschränkungen per --constraints <Datei>.

Nach dem Schneiden seedScenes löschen.

Schritt 3 – Validierung ⛔ Nicht überspringbar

node {baseDir}/scripts/novel-storyboard.mjs validate <storyboard.json> \
  --script <script.json> --outline <outline.json> --cast <cast.json> \
  [--shots </path/to/cards>]

18 Qualitätstore sind reiner Code: vollständige Beat-Abdeckung (auf Schnittebene, genau einmal, in Reihenfolge, kontinuierlich), Segment 0 < Gesamtsekunden ≤ 15, jeder Schnitt 2–5 Sekunden, Dialog in Schnitt passend, Gesamtdauer jeder Episode innerhalb ±15% des Drehbuchziels, ≤ 3 Personen im Frame (bei Überschreitung muss eine Erklärung zur Aufteilung beiliegen), Segmentnummernformat E01-01 fortlaufend, chinesische Einstellungsgrößen im Frame-Prompt, Kamerabewegungen aus H3-Vokabular und in eigenem [Shot k]-Absatz, H3-Ausrichtungsanweisung aus Storyboard-Struktur abgeleitet Zeichen für Zeichen + Schnittzeitpunkte einzeln geprüft, übernommene Dialoge Zeichen für Zeichen in <d>-Blöcken, Promptsprache stimmt mit promptLang überein (beidseitige Prüfung: Chinesisch als Englisch geschrieben, Englisch in Chinesisch gemischt beides abgelehnt), Frame-Prompt nicht leer und auf Chinesisch, Video-Prompt enthält keine Charakternamen (H3-Text sprachunabhängig, Seedance-Shot-Text geprüft; Frame-Prompt mit direkten Namen ist erlaubt), Quantisierte Kompositionsfelder vollständig, Seedance-Shot-Text konform (Chinesisch nicht leer, keine Zeit-, Schnittnummern-, Bildreferenzen und Protokollsymbole), Szenen/Personen/Props mit Drehbuch abgeglichen, Shot-Recipe-Abgleich (optionales Tor, siehe unten).

Bei Verstößen einzeln korrigieren, dann erneut validieren, bis bestanden.

Das 18. Tor shot-recipe (optional eingehängt): Wird nur geprüft, wenn --shots angegeben ist; falls nicht, wird explizit darauf hingewiesen, dass es übersprungen wurde. Auf einem Cut kann eine optionale recipe (Rezeptkarten-ID, auf Cut-Ebene, nicht Segment-Ebene, mehrteilige Rezepte werden durch aufeinanderfolgende Cuts mit gleicher ID ausgedrückt, nicht als Array) notiert werden. Das Tor prüft drei Dinge: ID existiert in der Kartenbibliothek, jede must_phrases der Karte erscheint im frame des Cuts (beidseitig kleingeschrieben dann includes), wenn die Karte cuts untere Grenze ≥ 2 hat, darf die Anzahl der aufeinanderfolgenden Cuts mit gleicher ID nicht unter dieser Grenze liegen. Empfohlene Einstellungsgrößen und Kamerabewegungen der Karte werden nicht als Tor behandelt – sie werden nur in der „Rezept“-Spalte des Berichts und am Ende von checkup als Abweichung vermerkt: Rezepte sind Vokabular, keine Gesetze; etwas optional Einhängbares wird bei Verschärfung niemand mehr verwenden.

Schritt 4 – Ausgabe und Bericht

cd <Ausgabeverzeichnis>
node {baseDir}/scripts/novel-storyboard.mjs render <Serienname>-storyboard.json --md \
  --script <script.json> --outline <outline.json> --art <art.json> > <Serienname>-storyboard.md
node {baseDir}/scripts/novel-storyboard.mjs render <Serienname>-storyboard.json --html \
  --script <script.json> --outline <outline.json> --art <art.json> > storyboard-report.html

Die Berichtssprache wird mit --lang zh|en eingestellt (Priorität --lang > JSON-Top-Level-Feld lang > Standard Chinesisch) – betrifft nur die UI-Texte, unabhängig von promptLang (H3-Promptsprache). render sucht mit --frames <Verzeichnis> nach Storyboard-Bildern (<Verzeichnis>/<Segmentnummer>/f<Schnittnummer>.png, Standard aktuelles Verzeichnis) und mit --images <Verzeichnis> nach Szenen-Referenzbildern für die Batch-Liste (<Verzeichnis>/<Szenen-Slug>-sheet.png, Standard ./images); beide können auf beliebige Pfade verweisen – dieses Skill erzeugt diese Dateien nicht, downstream kann nach der Bildgenerierung ein erneutes render ausgeführt werden, um sie in den Bericht einzubetten. export --frames <Verzeichnis> kopiert gefundene Storyboard-Bilder in das Produktionspaket, ohne sie manuell hineinzulegen. Der Bericht enthält: KPI-Leiste, Storyboard-Rhythmusleiste (grobe Trennlinien = Segmentgrenzen, Breite = Schnittdauer-Anteil, Farbtiefe = Einstellungsgröße, Klick springt zur Segmentkarte), epochenspezifische Storyboard-Tabelle (Hauptframe + Unterframe-Balken + zeilenweise Cut-Informationen + Frame/H3-Prompt-Kopierbuttons), Generierungs-Batch-Liste, Synchronisationsliste, Qualitätstore, JSON-Export. Die Markdown-Version enthält pro Segment den vollständigen H3-Prompt, direkt kopierbar.

Zusammenfassung: Anzahl Episoden/Schnitte, Gesamtdauer vs. Ziel, Anzahl Generierungs-Batches, Berichtspfad; nicht bestandene Tore werden genannt.

Nicht sagen „Bilder erstellt“ – dieser Schritt existiert nicht mehr; geliefert werden Prompts und eine Liste der zu referenzierenden Bilder.

Endgültige Ablage:

<Ausgabeverzeichnis>/
├── <Serienname>-storyboard.json
├── <Serienname>-storyboard.md
├── storyboard-report.html         ← Doppelklick zum Öffnen
├── manifest.json                  ← von export erzeugt
└── E01-01/                        ← Ein Ordner pro Segment = gesamtes Material für eine H3-Generierung
    ├── f1.png                     ← Hauptframe (vom downstream nach Erzeugung hier abgelegt)
    ├── f2.png …                   ← Unterframes
    └── prompt.md                  ← H3-Prompt (von export erzeugt)

Staffelstabübergabe der fünf Skills (Pipeline schließt sich)

novel-outline    → outline.json    (Was: Struktur und Episoden)
novel-characters → cast.json       (Wer: Charakter-Referenzbilder)
novel-art        → art.json        (Wo: Szenen-/Prop-Referenzbilder)
novel-script     → script.json     (Handlung: Szenen, Beats, Dialog)
novel-storyboard → storyboard.json (Wie gedreht wird: Schnitte, Startframe, Batches)

Storyboard ist die konsumierende Seite: seed frisst script.json, Storyboard-Bilder (downstream) fressen die Referenzbilder aus art und characters, H3-Prompts ordern direkt beim Videomodell, die Synchronisationsliste verbindet die TTS-Ergebnisse des Drehbuch-Dialogs. Alle fünf JSONs haben Export-Buttons in ihren jeweiligen Berichten; nach Änderungen können sie wieder in ihre jeweiligen render/validate gefüttert werden.

Grenzen

  • Berichts-UI eingebaut zweisprachig (--lang, Standard Chinesisch); Promptsprache separat über promptLang steuerbar (Standard Englisch)
  • Sekunden sind Generierungsdauer für das Videomodell, nicht geschätzt – Segmentobergrenze anpassbar über params.maxSegmentSeconds, Schnittrhythmus über min/maxCutSeconds
  • Lippen-/Mundsync wird vorerst nicht behandelt – das liegt in der Generierungspipeline
  • Storyboard-Bilder müssen nicht perfekt sein – sie sind Kompositionsanker für das Videomodell; solange Komposition und Assets stimmen, reicht es; Feinjustierung erfolgt durch erneute Generierung

Tor-Fehler kumulieren sich

validate und checkup hängen die Torergebnisse jedes Mal an .gates.jsonl im aktuellen Verzeichnis an; mit stats zusammenfassen:

node {baseDir}/scripts/novel-storyboard.mjs stats

Beantwortet drei Fragen: Welches Tor schlägt am häufigsten an (welche Regel das Modell am häufigsten ignoriert, Formulierung anpassen), Welches Tor hat noch nie angeschlagen (möglicherweise tot, oder Regel wurde bereits verinnerlicht), Wie sehen die Fehlerdetails aus (wiederkehrende Probleme ohne entsprechendes Tor können nur manuell erkannt werden).

Wenn nicht protokolliert werden soll, --no-log anhängen; bei Schreibfehlern wird stillschweigend übersprungen, die Validierung läuft normal weiter.

Selbsttest

node {baseDir}/scripts/selftest.mjs

323 Assertions, kein Modell, kein Kontingentverbrauch. Jedes der 18 Qualitätstore hat Durchschlags-Testfälle. Nach Skriptänderungen zuerst diesen Test ausführen.

Mitgeliefertes Beispiel

{baseDir}/examples/渡口-storyboard.json: Vollständiges Storyboard für Episode 1 von „渡口“ – 10 Segmente, 34 Schnitte, übernehmen alle 35 Beats des Drehbuchs, durchschnittlich 3,5 Sekunden pro Schnitt, insgesamt 119 Sekunden / Ziel 120 Sekunden, 2 Generierungs-Batches, jedes Segment mit vollständigem H3-Video-Prompt (Multi-Bild-Ausrichtung + Schnittzeitpunkte alle validiert). Dient als Qualitätsreferenz und Testvorlage.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills