Communitygithub.com

motion-video — réaliser un film entièrement rendu par code

Créez un film complet rendu par code (chaque image calculée par un programme) : publicités d'introduction, publicités dynamiques, visites de produits, showreels, vidéos explicatives narrées — public, ton, sections, transitions, mouvements de caméra, exportation.

Qu'est-ce que motion-video — réaliser un film entièrement rendu par code ?

Cette compétence est conçue pour les agents IA (tels que Claude Code, Cursor, Codex) qui doivent réaliser des films animés entièrement générés par code, où chaque image est calculée par un programme plutôt que par une animation d'interface utilisateur traditionnelle. Elle est utile pour créer divers types de films promotionnels, notamment des publicités d'introduction, des publicités dynamiques, des visites de produits, des showreels de données et des vidéos explicatives narrées. La compétence définit un processus de travail structuré, de la confirmation initiale du public et du ton jusqu'à l'exportation et la révision du fichier final. Elle prend en charge plusieurs plateformes et outils, en s'appuyant sur des documents de référence détaillés pour les règles de composition, de rythme, de transitions et de caméra. Le workflow inclut la création d'une table de storyboard, la construction d'une page HTML où le temps est une fonction pure, l'exportation via un outil dédié (filkit), et un processus de révision en plusieurs étapes avec des vérifications automatisées. La compétence intègre également des mécanismes de suivi des preuves pour valider les règles de conception (utilisateur, mesuré, vérifié, non validé) et garantit que tout élément réutilisé (assets, générateurs) est correctement référencé via un système de boîte à outils.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/WizerdBaChe/motion-video-kit/tree/HEAD/reference-impl/skills/motion-video

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait motion-video — réaliser un film entièrement rendu par code ?

Compétence de routage pour le travail au niveau FILM. Les mouvements au niveau des éléments (durée, assouplissement, ressorts, changements de couleur dans un même composant) relèvent de motion-design ; lisez le fichier ~/.claude/skills/motion-design/local/element-motion-params.md pour les valeurs de ressort mesurées. Les preuves se trouvent dans le laboratoire <lab> (fiches techniques/Tnn, documents, mesures) ; les outils y restent également (utilisateur 2026-09-30), cette compétence cite donc leurs chemins au lieu de les copier.

Chaque règle dans les références porte un niveau de preuve (references/evidence-and-instruments.md § Niveaux) : utilisateur (l'utilisateur l'a jugée en regardant des films), mesurée (un instrument calibré l'a lue sur des films sources), vérifiée (un test A/B en aveugle l'a déplacée, plages disjointes), non validée (mesurée sur des sources, jamais testée par imitation). Ne présentez pas une règle non validée comme prouvée.

Table de routage

Si la tâche concerne…Lire
Ce qu'il faut décider en premier ; public, ton, couleur de fond, quelle information appartient ; association appareil-ton ; matériaux et textereferences/whole-film-rules.md
Quel type de film ; squelettes de sections (publicité d'introduction, publicité dynamique, visite de produit, showreel de données, vidéo explicative narrée) ; storyboard vs un paragraphereferences/film-types.md
Changements de section sur la barre ou sur la ligne de narration ; alignement des battements ; transitions (forme-à-forme, fondu, volet) ; mouvements de camérareferences/rhythm-transitions-camera.md
Construction de la page, rendu basé sur le temps, exportation en MP4, fidélité du produit (fichier de revendications), tournage d'un composant interactif en direct (§4 point 9), couverture, boucle de révision, sourcing musical et licences (§5)references/build-and-export.md
Niveaux de preuve ; quel instrument de laboratoire mesure quoi ; d'où vient chaque nombrereferences/evidence-and-instruments.md
Images ou médias générés (images ComfyUI locales, clips), coupe sur les battements musicaux, une EDL échangeable — la voie du montage, pas une page basée sur le temps (décision de l'utilisateur 2026-10-18) ; chaque asset porte un fichier de provenance ou le rendu est refusélaboratoire tools/edit/README.md, laboratoire de conception docs/edit-route-design.md
Un processus physique ou algorithmique continu (une pousse, un champ qui s'étend, une vague) — un ASSET manim (séquence PNG + provenance) composé dans la page basée sur le temps, jamais un film manim entier. La production de film entier et le montage-et-composition (assets qui doivent être utilisés) sont des couches séparées (décision de l'utilisateur 2026-10-20) ; les règles de composition sont minces, première sonde en courslaboratoire experiments/probe-manim-insert-ow2010/README.md ; proposition ~/.claude/outputs/manim-explainer-route-20261020/
Paramètres de ressort / changement de couleur pour un élémentmotion-design/local/element-motion-params.md
Avant le storyboard, chaque film : la couche de conception partagée comme copie propre du film — la liste des échecs qu'elle contient est contraignante (travail rejeté par l'auteur ; ne le répétez jamais)<item>/inputs/design-axes.md, copié par works_contract.py open (étape 0) ; un bras de laboratoire obtient le même fichier depuis run_arm.py
Le même principe dans les publications, présentations ou pages web (forme multi-support, axes A–I, axes de génération J/K, écoles nommées) — théorie, lisez lors du choix~/.claude/references/design-axes/

Ordre de travail (chaque étape avant la suivante)

  1. Confirmer avant tout (whole-film-rules.md §0) : but / type de film (publicité d'introduction, publicité dynamique, visite de produit, vidéo explicative, profil), où il sera diffusé, ce que le spectateur devrait faire après le visionnage, le public, la SEULE chose à retenir, l'ÉNERGIE (calme / vivant / dynamique ; demandée, jamais déduite du produit seul) et le fond, les matériaux et limites, la voix du contenu (marketing vs technique léger) et la forme de présentation (paginée vs scène continue). Un utilisateur présent → demandez ces éléments et attendez. Sans surveillance → écrivez chaque élément ouvert dans build/questions.md et prenez l'interprétation la plus littérale de la demande, indiquée dans build/plan.md. « 產品介紹片 » seul ne tranche pas entre publicité et visite (utilisateur r14) ; « 廣告 » seul ne tranche pas entre introduction et dynamique (utilisateur r15). Un nom de genre ou de forme dans la demande (MAD, PV, showreel, …) est un type de film ET le nom du produit que le film sert comme sujet : résolvez-le par rapport à film-types.md §Nommage et confirmez cette définition avec l'utilisateur avant le storyboard ; un nom sans entrée là-bas est demandé, jamais déduit — un nom non confirmé est l'échec de cible erronée / attentes sous-estimées (utilisateur 2026-10-19 : demande MAD d'une ligne dont la première version est revenue en MV pur code). Élément formel ou tour de laboratoire ? (formel = quelque chose que l'auteur enverra ou remettra à quelqu'un ; la définition unique se trouve dans <works>/README.md). Formel → la PREMIÈRE écriture de la tâche est python -X utf8 ~/.claude/tools/design-axes-mount/works_contract.py open <works>/films/<film_id> --medium video --actor main-loop [--toolbox PATH:ROLE:FACET ...], quel que soit le dossier d'où vient la demande ; collez la ligne 創作輸入 qu'il imprime dans le contrat de périmètre, et construisez à l'intérieur de l'élément. Un générateur, composant ou page provenant d'UN AUTRE livrable (script d'illustration d'un livre, film précédent) est une entrée de boîte à outils avec son rôle et facette, jamais une valeur par défaut (un projet de livre 2026-10-11 : le générateur de traits du livre mis à l'échelle en 1080p a été rejeté, maintenant une référence négative). Tour de laboratoire → run_arm.py monte la même couche.
  2. Film entier en premier (whole-film-rules.md §1) : nommez l'UNIQUE public, ce que ce public doit savoir, le ton (l'énergie nommée à l'étape 0 ; seulement si aucun, du produit + du public), et l'UNIQUE couleur de fond (une publicité dynamique l'assouplit, whole-film-rules.md §6). Ces quatre sont fixés avant que tout appareil ne soit choisi. Si les documents du produit ne disent pas ce qu'une fonctionnalité résout, demandez au propriétaire (build-and-export.md §4 point 7) ; sans surveillance, écrivez build/questions.md au lieu d'inventer un point douloureux.
  3. Type de film (film-types.md) : publicité d'introduction, publicité dynamique, visite de produit, showreel de données, vidéo explicative narrée, ou bande de profil — à partir du but de l'étape 0, jamais à partir du squelette le plus proche. Choisissez le squelette ; décidez storyboard (contenu fixe) vs un paragraphe (lancez plusieurs exécutions).
  4. Source de rythme (rhythm-transitions-camera.md §1) : musique uniquement → changements de section sur les barres ; narration ou paroles présentes → changements de section sur les débuts de ligne, et la musique n'est pas non plus verrouillée. Si un film a une narration ou non suit le type de film et le ton (étape 1-2) ; un film calme peut encore utiliser de la musique avec des sections lentes.
  5. Table de storyboard avant le code : lisez d'abord inputs/design-axes.md (table de routage, ligne « Avant le storyboard »). Par section t, titre, visuel, données, mise en page, transition entrée/sortie, objectif de caméra, intention de mouvement (une ligne par élément mobile et par couche d'effet empilée : ce que le mouvement dit ; un élément sans ligne reste immobile ou disparaît, whole-film-rules.md §2a ; un effet nommé obtient cette ligne comme description, car un nom seul dont le catalogue et les significations industrielles s'entrechoquent est construit comme la signification industrielle — lab r28, 3/3 exécutions, lecteur en aveugle ; laboratoire docs/text-motion-vocabulary.md §3/§5), images clés (keys[] dans la timeline : au moins un role: key par section — le moment où un spectateur doit lire ou voir clairement, avec un hold optionnel ; role: breakdown pour une pose intra-section qui décide comment le mouvement se déplace ; les jonctions entre sections sont dérivées, jamais écrites ; laboratoire docs/agent-review-kbt-design.md §3), et référence rôle K/boîte à outils (none par défaut ; un générateur ou composant réutilisé nomme son rôle K et la facette empruntée, et doit correspondre à une entrée --toolbox de open). Montrez-la à l'utilisateur et attendez confirmation lorsqu'un utilisateur est présent. Enregistrez chaque décision de conception que vous prenez vous-même avec python ~/.claude/tools/process-ledger/ledger.py add au moment où vous la prenez. Le support de la table est régi (utilisateur 2026-10-08, laboratoire docs/production-order.md dernière section) : un JSON film.timeline.json plus une page de timeline en lecture seule générée ; requis à l'approbation = film_type, public, énergie, rhythm_source et par section at, dur, freedom (verrouillé / guidé / libre), motion_intent ; objectif de caméra / méthode prennent les vocabulaires fixes D1 / D2. L'outil (tools/timeline/, laboratoire docs/timeline-layer-design.md) n'est PAS construit avant son jalon TL-1 — jusqu'alors conservez le tableau markdown, en utilisant ces noms de champs (les noms d'enregistrement de plan qui ont changé sont mappés dans le tableau §6.1 du design).
  6. Appareils : chaque appareil a son propre ton ; un appareil en conflit avec le ton de l'étape 1 est abandonné, le ton n'est jamais changé pour s'adapter à l'appareil (utilisateur 2026-09-30). Un appareil standard (explosion de particules, tunnel, pile de cartes flottantes, glitch, grand-texte-comme-design, faux chiffres HUD) est utilisé uniquement avec une ligne d'intention de mouvement le liant au contenu (§2a).
  7. Construction (build-and-export.md §1) : une page HTML dont chaque image est une fonction pure du temps (window.__setTime(t)) ; pas de minuteurs, pas de transitions CSS.
  8. Exportation (build-and-export.md §2) : exportez avec filmkit, l'outil du laboratoire tools/filmkit/render.py (profil lab-round), jamais un script de capture écrit à la main. Il capture image par image, encode, vérifie, et seulement ensuite publie le nom de sortie ; son check.py décide si le FICHIER est livrable. Les films formels regroupent leurs polices avec @font-face (une famille sans empattement sous licence ouverte couvrant le CJK et le latin, par exemple Noto Sans TC ; ne comptez jamais sur les polices installées sur la machine d'exportation ou de visualisation, laboratoire D26). Un film formel exporte avec --profile delivery-web (champs de format, plus blocage FK-R-18 / FK-R-19 lorsque le film n'est pas un élément de travaux ouvert avec open ou que son montage est obsolète). La sonie et le pic vrai sont rapportés par check.py comme un fait (FK-R-17, info). Pour les juger par rapport à une plateforme, passez --rules <fichier de règles> --target <nom> ; une cible est une revendication dans le fichier de règles avec sa source et review_when, jamais supposée par la compétence.
  9. Révision (build-and-export.md §3) : feuille complète du film à 1 ips d'abord, puis détails ; retour comme « seconde / où / changement » ; un changement à la fois ; au plus 3 tours. Un film formel est ensuite révisé CÔTE À CÔTE : works_contract.py review <item> place la feuille du candidat à côté d'un film approuvé du même type choisi par balises (ou écrit reference: none), et le réviseur n'est pas le constructeur (§3 point 9) — dans une session unique, un sous-agent en contexte propre lit deliver/_review/side-by-side.png et la première ligne du verdict est reviewer: subagent-clean-context. works_contract.py deliver <item> refuse jusqu'à ce que deliver/_review/verdict.md soit plus récent que le candidat. Chemin de révision par agent (utilisateur 2026-10-19, laboratoire docs/agent-review-kbt-design.md ; l'utilisateur donne la direction et le contenu de conception uniquement) : un sous-agent constructeur construit, la session de boucle principale de répartition révise et ne modifie jamais le film ; ils communiquent via des fichiers (tools/review/review.py), portes G0 storyboard (le constructeur révise le réalisateur) → G1 images clés (objets durs uniquement) → G2 fenêtres K/T (ressenti = POLISH) → G3 film complet, au plus 3 tours chacun ; seule la liste des échecs, les lignes de blocage filmkit, la fidélité du produit et les défauts vus une fois peuvent BLOQUER ; après le tour 3, la meilleure version est livrée avec les éléments ouverts listés, et le verdict dit reviewer: dispatcher-main-loop, user_watched: no (build-and-export.md §3 point 10).
  10. Livraison avec la forme d'acceptation ci-dessous. Destination : un élément de travaux (<works>/films\<film_id>\, prédicat dans <works>/README.md) ; le projet nommé par l'utilisateur conserve un pointeur (_MOVED_<date>.txt) ou seulement son propre livre / données. Un film construit dans son propre projet et adopté (générateur étranger) entre à nouveau avec works_contract.py adopt <même racine> --id <id> --revise après chaque tour accepté. Où se trouve chaque élément : <works>/STATUS.md (lisez-le d'abord). Un tour de laboratoire va dans <lab>\experiments\<round>\.

Modèles (utilisateur 2026-10-10, laboratoire CLAUDE.md Décisions ; causes experiments/r22-haiku/REPORT.md) : Haiku ne fait jamais un film, ni comme chef d'orchestre ni comme travailleur sur aucune étape ci-dessus ; le contenu fixe d'un composant compte comme production (laboratoire D-T12).

Verdicts que cette compétence peut donner, et comment chacun est vérifié

  • « Les changements de section sont sur la barre / la ligne » → tools/measure_product.py ou tools/narrlock.py sur le MP4 rendu (chemins du laboratoire).
  • « Le mouvement est continu sous la narration » → tools/density.py part mobile et passages fixes.
  • « Chaque nombre / fonctionnalité est réel » → tools/fidelity.py + build/claims.json (T05).
  • « Il y a un mouvement de caméra » → tools/camflow.py ; les exécutions at_boundary nécessitent un regard sur l'image.
  • « Le fichier est livrable » (lisible, longueur, taille et codec attendus, son présent quand attendu, écrit par filmkit à partir des entrées maintenant sur disque) → tools/filmkit/check.py (render.py l'exécute lui-même). Code de sortie 0 signifie aucune ligne bloquante, rien sur l'image.
  • « Ça a l'air bon / correspond à la référence » → JAMAIS à partir de chiffres. Une feuille d'images lue par modèle ET le propre visionnage de l'utilisateur (laboratoire INV-6). Les chiffres prouvent le chemin des données, pas l'image. Sur le chemin de révision par agent, ce verdict n'est jamais donné : le film est « livré sous révision par agent, non visionné par l'utilisateur » (verdict user_watched: no).
  • « La sonie est sur la cible » → check.py --rules F --target NAME ; un INDÉTERMINÉ pour une cible sans tolérance est un écart dans le fichier de règles, pas un succès.

Forme de livraison (un humain doit regarder le film)

Collez les sections check.md 1 à 4 (bloquant / confirmé / nécessite un regard / indéterminé) textuellement (la section 5, les exemptions déclarées par l'auteur, reste dans le fichier) — pour un film formel à partir de la vérification --profile delivery-web, afin que les lignes FK-R-18 (montage design-axes) et FK-R-19 (timbre des travaux) soient parmi elles, plus la ligne reference: de deliver/_review/report.md, y compris les lignes rerun, avant la liste de vérification ; les propres questions de la session suivent séparément et ne sont jamais mélangées dans les sections collées. Toute opération transform.py (normalize existe depuis filmkit M3 : transform.py normalize <in> --out <new> --target-lufs X --true-peak Y ou --rules F --target NAME ; duck et convert ne sont pas construits) sur un film formel est d'abord demandée, nommant le nouveau fichier qu'elle produirait, puis exécutée avec l'accord de l'utilisateur ; un film formel transformé est revérifié avec check.py, et deliver/_review/ contient la nouvelle vérification ; aucun transform.py n'existe sur le chemin de révision par agent (le constructeur livre le fichier tel quel, la revue est sur le rendu). La livraison finit par le verdict du réviseur écrit explicitement (une phrase) dans le composant _review et, pour un film formel, la commande works_contract.py deliver <item>.

Cette compétence ne fait pas : animation d'un seul élément d'interface utilisateur (→ motion-design), étude de vidéos de référence (→ case-library).

Références

  • tools/filmkit/ — exportation, vérification, transformation.
  • tools/timeline/ — outil de construction de timeline ; JALON TL-1 requis avant utilisation.
  • tools/review/review.py — échange de révision par agent (portes G0–G3).
  • tools/measure_product.py — vérifier la fidélité du produit.
  • tools/narrlock.py — vérifier la synchronisation narration/image.
  • tools/density.py — mesurer la densité de mouvement.
  • tools/camflow.py — détecter les mouvements de caméra.
  • tools/fidelity.py — vérifier les revendications du produit.
  • Laboratoire docs/ — notes de conception détaillées pour chaque sous-système.

Skills associés