Que fait chalk-roster ?
Les courts-métrages en stick et à la craie se désagrègent quand le bonnet change de couleur en milieu d'épisode, qu'un accessoire se téléporte ou que l'accroche arrive à la douzième seconde. chalk-roster est une porte de continuité pré-rendu : verrouillez le casting et le style une fois, écrivez les temps minutés, exécutez le vérificateur, et seulement alors investissez le budget de génération.
Quand l'utiliser
- Courts-métrages animés sans visage / stick / line-art / style craie avec un casting récurrent
- Explicateurs multi-scènes où la même silhouette doit rester reconnaissable
- Travail en série où le style doit servir d'empreinte digitale entre les épisodes
- Tout plan qui autrement sauterait directement dans des prompts par plan
Ne pas utiliser pour le timing de montage en prise de vue réelle, les coupes verrouillées sur la musique, le démontage du mixage audio, le blocage de poses humaines avec photos, ou les packs d'autocollants de discussion — ce sont des tâches différentes.
Idée principale
- Fiche de registre (figée) : canal + verrouillage du style + membres du casting avec marqueurs fixes et listes d'interdiction.
- Feuille de rythme : plans ordonnés avec durée, cast présent, action (pas d'inactivité), carte des accessoires, transferts optionnels, nombre de mots VO, indicateur d'accroche.
- Porte :
chalkroster.py check→ EXPÉDIER / CORRIGER / SUSPENDRE.
Verdicts
| Verdict | Signification | Générer les clips ? |
|---|---|---|
EXPÉDIER | Continuité propre | Oui |
CORRIGER | Problèmes légers (densité VO, direction de déplacement, formulation d'interdiction) | Corriger les temps, puis revérifier |
SUSPENDRE | Problèmes graves (cast inconnu, saut d'accessoire, pas d'accroche, style incomplet) | Ne pas générer |
Étapes
- Copier
templates/roster.json→roster.json. Remplirstyle(rapport d'aspect, épaisseur de trait, remplissage de tête, règle des membres, règle d'arrière-plan, limite de couleurs d'accent) etcast(id, marqueurs ≥1, interdictions). - Copier
templates/beats.json→beats.json. Un plan par ligne ; marquer l'accroche précoce ; lister les porteurs d'accessoires ; enregistrer chaque transfert soustransfersavectransfer: true. - Vérification :
python3 scripts/chalkroster.py lint roster.json beats.json - Porte :
python3 scripts/chalkroster.py check roster.json beats.json - Seulement en cas de
EXPÉDIER: développer chaque plan en vos prompts de générateur, en répétant textuellement les marqueurs figés pour chaque membre du casting qui apparaît. - En cas de
CORRIGER/SUSPENDRE: réparer les problèmes listés ; ne jamais « approximer » un changement de marqueur sans un événement de transfert.
Format du registre
{
"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"]
}
]
}
Format des temps
Chaque plan nécessite duration_s, action, et généralement cast. Les accessoires sont une carte prop → holder_id|null. Changer un porteur ou un marqueur nécessite un transfert explicite.
Bandes de densité VO (mots/seconde) : Anglais 1.8–2.9, Chinois 3.2–5.2. L'accroche doit arriver avant hook_deadline_s (par défaut 5).
Exemples
- Épisode propre de 30s :
examples/cache-lie-roster.json+examples/cache-lie-beats.json→EXPÉDIER. - Téléportation d'accessoire :
examples/broken-prop-jump-beats.jsonface au même registre →SUSPENDREjusqu'à ce qu'un transfert soit enregistré. - Intégré :
python3 scripts/chalkroster.py demo
Conseils
- Les marqueurs sont des mots simples (« red beanie »), pas des codes hexadécimaux ou des recettes anatomiques.
- Un changement de silhouette = un nouvel id de cast, pas une modification discrète de marqueur.
- Gardez les couleurs d'accent ≤
max_accent_colors; nommez-les avec un langage ordinaire. - Mode série : définissez
channel.lock_style_across_episodeset conservezstyle.fingerprintidentique entre les épisodes. - Les figures à la craie inactives échouent à la porte — chaque plan nécessite une
actionconcrète.