Motion reel
Construisez un nouveau film dans le moteur de ce dépôt. Ne passez pas à Remotion ou HyperFrames à moins que l'utilisateur ne les nomme ; le contrat de rendu du dépôt se trouve dans CLAUDE.md et prévaut sur ce fichier.
Un film se déroule en deux sessions, séparées par l'approbation unique du propriétaire sur la liste de plans et le storyboard ensemble :
- Pré-production (ce fichier) : brief, histoire, assets, voix, grille de beats, liste de plans, storyboard.
- Construction (
/motion-reel build <film>) : lisez build.md et suivez-le ; ignorez ce fichier.
La séparation maintient la construction dans un contexte frais. La pré-production remplit la fenêtre de références, de prises et d'images du storyboard, et chaque tour ultérieur paie pour tout cela.
1. Établir le brief
Exécutez node tools/brief.mjs --in=<draft.md> sur le brouillon du propriétaire (--film=<film> une fois le projet créé : il écrit brief/original.md sans le base64 intégré). Il imprime l'en-tête, les mots du VO par rapport au budget et ce que le brouillon laisse ouvert. Sans brouillon, remplissez les champs d'en-tête de docs/brief-template.md à partir de la demande et proposez une valeur par défaut pour chaque lacune : le propriétaire répond par un « oke » ou une correction.
Demandez ce qui est encore ouvert en un seul message, avant de toucher au code et avant de citer des crédits ; les réponses déjà dans brief/decisions.md tiennent. Ajoutez ce que l'outil ne peut pas voir :
- Chevauchement : un film passé sur le même sujet ou pilier (
projects.json). Dites lequel, et ce que celui-ci apporte. Une reprise laisse l'ancien dossier intact et demande lesquelles de ses réponsesdecisions.mdtiennent encore. - Produit + URL (ou sujet). Pour les films OpenView, le pilier et la formule de
docs/content-map.md. - Marque : les films OpenView utilisent
lib/brand.js. Autres marques : couleurs, polices, un accent, un vrai logo. - Une référence : une image, une vidéo ou un dossier d'images. Ou « aucune » (dites-le alors ; pas d'apparence par défaut).
- Musique : un morceau fourni (mesurez-le) ou « synthétiser » (par défaut).
- Voix off : nécessite
ELEVENLABS_API_KEYdans.env. Si vide, arrêtez et nommez la variable.
Le brief est établi lorsque la langue, la voix, la durée, le ratio, le sujet (tickers inclus), la source de données (application, kit ou illustration) et l'énergie sont fixés. Chacun de ces éléments a été modifié après la première prise sur un film passé, et mi-demo-40 a payé son VO trois fois. Enregistrez les réponses dans <project>/brief/decisions.md.
Un package provenant d'un autre outil (storyboard, zip, transfert) : copiez-le inchangé dans <project>/references/<tool>-<date>/, qui reste hors du commit, et exécutez tools/brief.mjs sur son brief seul. Ouvrez un autre de ses fichiers uniquement lorsqu'une décision nécessite ce fichier. Sa liste de plans et son script sont du matériel, comme l'ordre d'un brouillon.
Limites : les mots, chiffres ou faits que le brief ou les règles juridiques interdisent à l'écran vont dans <src>/forbid.json (tools/forbid-lib.mjs) : tools/vo.mjs les refuse avant de dépenser des crédits, tools/check.mjs échoue s'ils sont à l'écran. Une limite qu'aucun motif ne peut voir (un nom qui ne porte jamais de pourcentage) va dans brief/decisions.md, lue à chaque board et feuille de révision.
Choisissez un slug de film ([a-z0-9-]+). Tout ce qui suit est nommé par lui : <film>.
Structure du projet. Un nouveau film reçoit son dossier de projet CONTENT (CLAUDE.md « Nouveaux dossiers de projet vidéo ») et une ligne "<film>": "CONTENT/<n>. <Titre> (<date>)" dans projects.json ; les outils le trouvent alors là (tools/paths.mjs) :
liste de plans et brief dans <project>/brief/ (shotlist.md), code dans <project>/src/ (film.js, timeline.js,
vo-lines.json, beats.json, sfx-<film>.mjs), prises et médias dans <project>/assets/, storyboards, feuilles et rendus
dans <project>/output/. Les films plus anciens conservent docs/<film>-shotlist.md, film/<film>/, assets/<film>/ et out/.
Ci-dessous, <shotlist>, <src>, <assets> et <output> désignent ce qui s'applique.
2. Pré-production
-
Assets. Dans
<assets>/, listés avant toute animation.- Logo et symbole OpenView : dessinés uniquement via
lib/brand.js; ne copiez jamais les SVG dans le film. - Mascotte OpenView : le rig de code dans
lib/mascot/(API dans l'en-tête et les exports delib/mascot/index.js). - Market Intel OpenView : chiffres et noms du dernier
origin/main, l'image dessinée en code avec le kit UI Market Intel. Capturez l'application en cours uniquement lorsque le brief demande la vraie application ; suivez alors « Source Market Intel » dansCLAUDE.md; choisissez les bandes viacapture_mi.mjs --reviewet dessinez aveclib/proof.js. - Un autre produit avec une URL : capturez des captures d'écran réelles, logo, couleurs, polices avec Playwright.
- Logo et symbole OpenView : dessinés uniquement via
-
Monde visuel. Lisez
REFERENCES/motion/visual-grammar-2026-10.md, puis écrivez## Mondeen haut de<shotlist>avant tout plan : un lieu, ses objets, qui s'y tient, ce que fait la lumière, et comment chaque figure et relation dans le brief devient une chose que l'on peut désigner. Dessinez-le aveclib/world.js. Le système de design reste sur les écrans propres du produit. Guide de style. Si une référence existe, mesurez-la d'abord :uv run --python 3.11 --with librosa --with numpy tools/ref_probe.py refs/<film>/ref.mp4 refs/<film>/analysis.jsonpuis écrivezdocs/<film>-style_guide.md: palette (hex), type, longueurs de plan, transitions, mouvements de caméra, texture, comment le texte entre et sort. Prenez la grammaire, jamais le contenu. Le look maison est dansCLAUDE.md« Look » plusdocs/motion-vocab.md; les guides de style d'autres films enregistrent ces films, pas la maison. -
Histoire. Lisez story.md, passez le sujet dans son échelle de sujets, et écrivez sa table de colonne vertébrale en haut de
<shotlist>, avant tout script. La colonne vertébrale est terminée lorsque chaque rangée est remplie et que les tests de script à la fin de ce fichier passent sur la première ligne et le plan ; l'ordre du brouillon est ici du matériel, pas un script, et unALUR CERITAetKANDIDAT HOOKdu brouillon (docs/brief-prompt.md) en sont la première version. Montrez la colonne vertébrale avec la citation du VO : c'est le moment le moins coûteux pour changer le film. À partir d'un brouillon, le même message nomme ce que le brouillon couvre et ce que le script abandonne, avec les deux comptes de mots :pandu-supra-80est revenu comme « ga selengkap draft » après son premier film, et l'extension a pris trois sessions supplémentaires. -
Voix off (si le brief a un VO) : suivez « Voix off » dans
CLAUDE.md. Écrivez le script depuis la colonne vertébrale dans la voix de l'enquêteur (story.md « Le spectateur »), jusqu'au budget de mots, en comptant les chiffres au fur et à mesure qu'ils sont prononcés : son 1,7 indonésien est ce que six films ont tourné à 1,12 (1,65–1,75 mots par seconde de film), donc un budget complet atterrit près des secondes du brief.characterpar défaut ànarrateur calme et juste, parlant à une seule personne. Ensuite<src>/vo-lines.jsonet la dernière section de story.md, jusqu'à ce quetools/script.mjsréussisse ; sa lignecreditsest la citation. Générez avectools/vo.mjs, passez--check. Les définitions et les termes juridiques nécessitent une source dansreferences/sources.mdcomme tout chiffre ; R-120 garde les noms de registre hors écran, pas hors du fichier de sources. Les prises définissent les longueurs des scènes :<src>/timeline.jsest la liste des scènes surlib/vo-clock.js(sceneTimeline; modèle : iata-55), etnode tools/prepare.mjs --film=<film>vérifie les prises et écrit l'horloge dansbeats.json. -
Grille de beats. Morceau fourni : mesurez BPM/beats/downbeats/hits (librosa) dans
<src>/beats.json. Synthétisé : choisissez BPM, écrivez<src>/sfx-<film>.mjs, une liste de signaux surlib/synth.mjs(modèle : iata-55src/sfx-iata-55.mjs), afin qu'il émettebeats.jsonet<output>/<film>-audio.wavà -14 LUFS. -
Liste de plans. Écrivez
<shotlist>sur la grille de beats : chaque plan avec images, caméra, texte à l'écran, SFX, son beat de colonne vertébrale, l'effet dedocs/motion-vocab.mdqu'il utilise, et la raison de sa coupe vers le plan suivant (étape suivante, même position, cause et effet, saut temporel, rappel, changement de taille). Un plan sans raison de couper rejoint le suivant comme un mouvement de caméra. Planifiez l'entrée dans le produit comme un seul mouvement, un objet du monde devenant l'écran, nommé dans les plans des deux côtés de la coupe : cela a attiré la seule révision créative du propriétaire lors de la construction surdelisting-18-80(45–50 s). Planifiez la densité ici, scène par scène : les mouvements que chaque plan portera, car la première construction de chaque film récent a obtenu un score de 4 à 5 sur la densité et a passé ses tours à les ajouter. Listez les décisions qui nécessitent l'approbation du propriétaire. Pas d'arrêt ici : la liste de plans va au propriétaire avec le storyboard. -
Storyboard. Dessinez d'abord les plans les plus larges et les plus rapprochés du film dans
<src>/film.js(exportboard: [{ t, shot, note }]) et regardez cette paire seule (node tools/board.mjs --film=<film> --only=<large>,<rapproché>, son-view.jpg) : ils montrent combien le monde doit contenir et si ses figures survivent en gros plan, tandis qu'un redessin coûte deux plans. Dessinez ensuite une image fixe par plan. Exécuteznode tools/board.mjs --film=<film>. Son texte est la révision mécanique : corrigez chaque lignewarn … mid-move(déplaceztvers l'image réglée) et chaque résultatlayout(texte en dehors de la zone de sécurité, dans la bande de légende, chevauchant, trop petit), puis exécutez-le une fois de plus pour confirmer que le texte est propre. Lisez uniquement l'aperçu-view.jpgdu storyboard, ou pour plus de 18 plans lespagesqu'il imprime, chacune une fois, pour l'apparence : corrigez ce qui se lit mal en un seul passage, pas de boucle regard-correction-re-rendu, pas de feuilles par scène (--scenesexiste pour le propriétaire, pas pour cette révision). Le test d'apparence, sur cet aperçu : coupez le son et suivez l'histoire à partir des seules images ; un étranger voit un lieu, des personnes et des choses, pas des diapositives. En dehors de la légende, un plan contient au maximum 6 mots, sur des objets ; les preuves et lignes que le brief exige en entier sont les seules exceptions. Échouer à cela signifie redessiner le plan, pas réduire le texte. -
Révision du propriétaire (la seule porte). Montrez la liste de plans et le storyboard (
<output>/<film>-board.png) ensemble, avec les décisions qui nécessitent une approbation, et attendez cette approbation unique. Pas de mouvement ni de son avant cela. -
Remise. Lorsque le propriétaire approuve la révision, écrivez une section
## Brief de constructionen haut de<shotlist>: ce qui est approuvé, ce qui est encore ouvert, et les fichiers dont la construction a besoin (module film, prises, beats, script SFX). Lancez ensuite la construction dans un contexte frais :- Application de bureau : démarrez une nouvelle session avec un contexte frais (pas un fork), invitez
/motion-reel build <film>. - Terminal : dites au propriétaire d'exécuter
/clear, puis/motion-reel build <film>.
La pré-production se termine ici : l'approbation du propriétaire sur la liste de plans et le storyboard est le critère d'achèvement, et la construction appartient à la nouvelle session.
- Application de bureau : démarrez une nouvelle session avec un contexte frais (pas un fork), invitez
3. Règles strictes
- Fonction pure du temps :
seek(t)uniquement. Pas deMath.random, pas de minuteries, pas de transitions CSS, pas derequestAnimationFrameen mode rendu, pas d'état entre les images. - Ouvrez les aperçus
-view.jpg; les images en pleine résolution uniquement comme--cropd'un détail. Les images sont pour l'apparence ; les vérifications mécaniques sont les nombres des outils (node tools/check.mjs --film=<film>: balayage seek, déterminisme, px de police, lint de mise en page). - Le contexte est le coût, et les tours le multiplient : un tour à 300k coûte ce que trois coûtent à 100k, et les deux tiers des messages récents transportaient un outil. Envoyez chaque lecture, recherche et modification indépendante d'une étape en un seul message. Les outils s'exécutent, ne se lisent pas (
--helpdonne l'utilisation) ; éditez avec Edit, ne réécrivez jamais un fichier entier ; les longues commandes s'exécutent en arrière-plan et vous attendez la notification, sans bouclesleepou d'interrogation. - Le code source d'un autre film n'est pas un modèle : les films partagent 3 à 16 % de leur code. Recherchez la fonction unique dont vous avez besoin (Grep, ou Lecture avec offset/limite) et laissez son
film.jsfermé. - L'état vit dans les fichiers :
brief/decisions.md,references/sources.md,<shotlist>,docs/review_log.md. Le projet s'auto-compacte à 250k, donc un fait détenu uniquement dans la conversation peut disparaître en plein film. - Secrets uniquement depuis
.env. N'imprimez, ne journalisez ni ne collez jamais une clé. - Une session par marque : le moteur, le synthétiseur et le pipeline d'exportation sont réutilisés, pas reconstruits.