Court métrage animé 3D (three.js + Remotion)
Les commandes sont exécutées depuis la racine du projet, en Bash (pas PowerShell). references/ et templates/ sont relatifs à ce skill ; SK = .claude/skills/cartoon-3d-short.
Les courts métrages terminés dans src/videos/ ne sont jamais modifiés. Ne les lisez pas pour apprendre le code : references/API.md est la carte.
references/STYLE_BIBLE.md et references/reports/ sont du matériel d'étude provenant d'un autre canal. Ne copiez jamais les scripts, personnages ou plans de ce canal, ne les nommez jamais dans une voix-off ou une description.
Règles
- Pas de sous-titres ni d'étiquettes. Anglais uniquement. Un seul ton de voix constant. Les blagues sont des faits réels documentés.
- Chaque plan cache l'horizon derrière des bâtiments, des arbres avec des buissons de 2-3 m dans les trous du tronc, ou une colline lointaine. Remplissez uniquement ce que la caméra voit. Les décors sont riches : foules denses, ornements, textures, drapeaux.
- L'export final est en 1080×1920 à 30 ips, jamais avec
--scale. - Mixage : voix, effets sonores CC0 gratuits environ 6 dB en dessous, indices musicaux par scène (jamais une seule piste continue) atténués sous la voix, l'ensemble à -15 LUFS.
- Approbation permanente pour les effets sonores et modèles 3D gratuits sans copyright : vérifiez la licence sur la page du fichier, ignorez les licences avec attribution / non-commercial / partage à l'identique, enregistrez-la dans
_sfx/LICENSES.md, indiquez ce que vous avez récupéré et sa taille. Demandez avant toute connexion, paiement, autre téléchargement, ou exécution d'un package non installé. - Liste de vérification des images clés (
references/QA.md) : agent Opus-medium sur le premier jeu complet et une fois de plus avant le rendu, vos propres revérifications entre les deux, puis l'utilisateur approuve les images clés. Aucun score absolu n'est un blocage. - Les corrections ne rendent à nouveau que les parties modifiées (
--redo), jamais la vidéo entière. - Enregistrez après chaque étape. Deux arrêts pour l'utilisateur : approbation du script, et approbation des images clés finales avant le rendu final. Sinon, travaillez jusqu'à la livraison sans demander.
Pipeline
- Sujet et faits. Une histoire vraie surprenante avec une cause et un effet visuels et physiques, plus une analogie tirée de la vie quotidienne. Les faits avec sources sont placés en haut de
src/videos/<nom>/SCRIPT.md. - Script. La longueur suit l'histoire. Le nombre de mots = secondes × mots/s, mesuré à partir d'un échantillon d'une phrase de la voix choisie (pas d'échantillon : supposer 3 et vérifier après la prise). Temps forts : accroche (fait absurde, une ligne), cadre (année, lieu, fierté), action (3-4 temps forts croissants), retournement, voix blague (« Heureusement... / Malheureusement... »), explication (une idée, analogie quotidienne), conséquence, coup de théâtre final. Ne décrivez jamais ce que le spectateur voit déjà. Disposition uniquement :
templates/SCRIPT_example.md. Arrêtez-vous ici jusqu'à ce que l'utilisateur approuve le script. - Voix. L'utilisateur génère la prise dans
_voiceover/<nom>/voice_raw.wav. Ensuitepython scripts/voice_trim.py _voiceover/<nom>/voice_raw.wav _voiceover/<nom>/voice.wavetpython scripts/words_whisper.py _voiceover/<nom>/voice.wav _voiceover/<nom>/words.json. Tout est synchronisé surwords.json: ne le lisez jamais, imprimez-le sous forme demot@imageet corrigez les mots erronés avec un petit script. Agissez sur la lignekept pauses(references/GOTCHAS.md« Voice »). - Dossier vidéo. Copiez les quatre fichiers de
templates/starter/danssrc/videos/<nom>/, renommezShort.tsxen<Nom>.tsxetStarterShort/STARTER_FRAMESà l'intérieur, enregistrez la composition danssrc/Root.tsx. Ils contiennent uniquement les données de l'histoire plus une démo de 2 plans marquéeEXAMPLE; le moteur est danssrc/shared/. Lisezreferences/API.mdavant de modifier. Sisrc/shared/ouscripts/est manquant ou ne contient pas de fichier, copiez-le depuistemplates/shared/outemplates/scripts/. - Recherche d'accessoires. Pour chaque temps fort, grep
public/kenney/INDEX.txtet mettez les sélections dans un tableau danssrc/videos/<nom>/PROPS.md. Accessoire manquant : récupérez un pack CC0 gratuit (references/GOTCHAS.md) danspublic/kenney/<pack>/, ajoutez-le àINDEX.txt, ajoutez<pack>/<model>àKENNEYdansworld.ts. - Plan de tournage dans
story.ts:TOTAL= ceil(secondes voix × 30), puisSHOTS,XFADE,FLASH_AT,CAMS,KICKS,DOF_V2. Les réactions visuelles se placent 0-3 images avant leur mot. Chaque plan fixe bouge imperceptiblement. Chaque mouvement en boucle a un temps de commutation explicite. - Construisez les plans en remplaçant les parties
EXAMPLE. L'apparence de la maison est intégrée dans le moteur (references/LOOK.md) ; ne modifiez jamaissrc/shared/pour une seule vidéo.- Monde (
world.ts) : décors, accessoires, matériaux, accessoires mobiles danspose(). Le ciel, les lumières, la ville, le port, le soleil et l'élimination des lignes de vue proviennent du moteur. Passezkeep = trueàprop()pour les accessoires principaux. - Personnages (
cast.ts) : tenues et un casstage()par mise en scène. Les cartes, les contours, les clignements et les ombres proviennent du moteur. - Composition (
<Nom>.tsx) : nom etpoolShotsuniquement. La chaîne de post-traitement (encre, flou d'objectif, bloom, mappage des tons, étalonnage) est dans le moteur.
- Monde (
- Vérification des images clés, avant tout rendu long (
references/QA.md) : image milieu de plan de chaque plan, vérifications scriptées, vérification agent, correction et auto-vérification, deuxième vérification agent, correction et auto-vérification. Arrêtez-vous ici jusqu'à ce que l'utilisateur approuve les images clés. - Préparation sonore (
references/SOUND.md) : événements SFX dans_sfx/<nom>_events.json, indices musicaux dans_sfx/<nom>_music_cues.json. - Rendu final (
references/RENDER.md) :REMOTION_TMP=C:/remotion-tmp node scripts/render_chunks.mjs <Comp> out/<nom>/video.mp4 <TOTAL>. - Mixage et QA. Assemblez la musique (
music_cues.py, voirreferences/SOUND.md), puispython SK/templates/audio/build_mix.py _voiceover/<nom>/voice.wav out/<nom>/video.mp4 out/<nom> _sfx/<nom>_events.json [_sfx/<nom>_music.wav]écritvideo_final.mp4. Ensuitepython scripts/bridge_shots.py src/videos/<nom>/story.ts out/<nom>/shots.jsonetpython scripts/short_qa.py out/<nom>/video_final.mp4 out/<nom>/qa out/<nom>/shots.json --voice _voiceover/<nom>/voice.wav, qui doit se terminer avec le code 0. Corrigez avecrender_chunks.mjs ... --redo A-B,C-D, puis mixez et QA à nouveau. Remarques de l'utilisateur sur la vidéo finale :references/QA.md« User review ». - Livrez. Envoyez
video_final.mp4(plus de 30 Mo : un aperçu plus petit plus le chemin), supprimez les dossiers groupés de ce court métrage dansC:/remotion-tmp, mettez à jour la mémoire.
Fichiers de référence
| Fichier | À lire quand |
|---|---|
references/QA.md | vérification des images clés, invite de checklist, short_qa |
references/SOUND.md | bibliothèques SFX, indices musicaux, mixage |
references/RENDER.md | paramètres de rendu, boucle de correction, reprise |
references/API.md | avant de modifier les fichiers de démarrage : quoi mettre où, signatures de fonctions |
references/GOTCHAS.md | voix, accessoires et décors, pièges de cadrage, ce PC |
references/LOOK.md | valeurs d'apparence de la maison, règles de caméra et de personnages |
references/LOOK_MATCH.md | uniquement pour l'apparence de référence d'origine ou un passage de correspondance d'apparence |
references/house/GRADER_PROMPT.md | comparaison A/B par paire, uniquement lors d'un changement d'apparence |
Pour modifier le skill lui-même (docs, starter, moteur, scripts) : lisez d'abord MAINTAINING.md.