Was macht chalk-roster?
Strich- und Kreide-Kurzfilme zerfallen, wenn die Mütze mitten in der Episode die Farbe wechselt, eine Requisite teleportiert oder der Hook mit zwölf Sekunden Verzögerung kommt. chalk-roster ist ein Pre-Render-Kontinuitäts-Gate: friere die Besetzung und den Stil einmal ein, schreibe getaktete Beats, führe den Checker aus und gib erst dann das Generierungsbudget frei.
Wann verwenden
- Gesichtslose / Strichfiguren / Line-Art / Kreide-Animationen mit wiederkehrender Besetzung
- Mehrszenige Erklärvideos, in denen dieselbe Silhouette erkennbar bleiben muss
- Serienarbeit, bei der der Stil über Episoden hinweg wiedererkennbar sein soll
- Jeder Plan, der sonst direkt in Einzel-Einstellungs-Prompts springen würde
Nicht verwenden für: Live-Action-Schnitt-Timing, musikgesperrte Cuts, Sound-Mix-Analyse, menschliche Foto-Posen-Blockung oder Chat-Sticker-Pakete – das sind andere Aufgaben.
Kernidee
- Roster-Karte (gefroren): Kanal + Stil-Lock + Besetzungsmitglieder mit festen Markern und Verbotsliste.
- Beat-Tabelle: geordnete Einstellungen mit Dauer, anwesender Besetzung, Aktion (kein Stillstand), Requisiten-Zuordnung, optionalen Übergaben, VO-Wortzahlen, Hook-Flag.
- Gate:
chalkroster.py check→ SHIP / FIX / HOLD.
Urteile
| Urteil | Bedeutung | Clips generieren? |
|---|---|---|
SHIP | Kontinuität sauber | Ja |
FIX | Weiche Probleme (VO-Dichte, Bewegungsrichtung, verbotene Formulierungen) | Beats patchen, dann erneut prüfen |
HOLD | Harte Brüche (unbekannte Besetzung, Requisitensprung, kein Hook, unvollständiger Stil) | Nicht generieren |
Schritte
- Kopiere
templates/roster.json→roster.json. Füllestyle(Seitenverhältnis, Linienstärke, Kopf-Füllung, Gliedmaßen-Regel, Hintergrund-Regel, Akzent-Begrenzung) undcast(id, Marker ≥1, forbid). - Kopiere
templates/beats.json→beats.json. Eine Einstellung pro Zeile; markiere den frühen Hook; liste Requisitenhalter auf; notiere jede Übergabe untertransfersmittransfer: true. - Lint:
python3 scripts/chalkroster.py lint roster.json beats.json - Gate:
python3 scripts/chalkroster.py check roster.json beats.json - Nur bei
SHIP: erweitere jede Einstellung zu deinen Generator-Prompts und wiederhole die gefrorenen Marker wörtlich für jedes anwesende Besetzungsmitglied. - Bei
FIX/HOLD: repariere die aufgeführten Probleme; nähere nie eine Marker-Änderung ohne Übergabeereignis an.
Roster-Form
{
"channel": {"name": "chalk-bytes", "lock_style_across_episodes": true},
"vo_lang": "en",
"style": {
"aspect_ratio": "9:16",
"line_weight": "medium",
"head_fill": "hollow",
"limb_rule": "two-arms-two-legs",
"bg_rule": "flat-black",
"max_accent_colors": 3,
"accent_colors": ["vivid red", "electric blue", "warm gold"],
"fingerprint": "hollow-head/medium-line/flat-black/3-accent"
},
"cast": [
{
"id": "guide",
"role": "narrator-avatar",
"silhouette": "tall-thin",
"markers": ["red beanie", "yellow shirt"],
"forbid": ["photoreal face", "extra arms"]
}
]
}
Beat-Form
Jede Einstellung benötigt duration_s, action und normalerweise cast. Requisiten sind eine Zuordnung prop → holder_id|null. Ein Wechsel des Halters oder eines Markers erfordert eine explizite Übergabe.
VO-Dichte-Bänder (Wörter/Sekunde): Englisch 1.8–2.9, Chinesisch 3.2–5.2. Der Hook muss bis hook_deadline_s (Standard 5) landen.
Beispiele
- Saubere 30-Sekunden-Episode:
examples/cache-lie-roster.json+examples/cache-lie-beats.json→SHIP. - Requisitenteleport:
examples/broken-prop-jump-beats.jsongegen denselben Roster →HOLD, bis eine Übergabe aufgezeichnet wird. - Integriert:
python3 scripts/chalkroster.py demo
Tipps
- Marker sind einfache Wörter ("red beanie"), keine Hex-Codes oder Anatomie-Rezepte.
- Eine Silhouetten-Änderung = neue Besetzungs-ID, keine stille Marker-Bearbeitung.
- Halte die Akzentfarben ≤
max_accent_colors; benenne sie in alltäglicher Sprache. - Serienmodus: setze
channel.lock_style_across_episodesund behaltestyle.fingerprintüber Episoden hinweg identisch. - Stille Kreidefiguren bestehen das Gate nicht – jede Einstellung braucht eine konkrete
action.