Communitygithub.com

skill-motion

Créez des films et vidéos animés avec du code, de 15 secondes à 4 minutes, et exportez-les en MP4. Deux modes : Histoire (personnages, bande dessinée ou style doux, narration, musique et effets) pour émouvoir, saluer ou inviter ; Commercial (produit réel ou site filmé, rythme, promesse) pour démos, annonces, Reels et vidéos qui vendent. Utilise ElevenLabs pour la voix et la musique, Deepgram pour écouter le résultat et des planches pour visualiser les images.

Qu'est-ce que skill-motion ?

skill-motion est une compétence d'agent IA qui permet de produire des vidéos animées de qualité professionnelle, de 15 secondes à 4 minutes, en écrivant du code JavaScript. Elle fonctionne en deux modes distincts : le mode Histoire (personnages, bande dessinée ou style doux, narration, musique et effets) pour des vidéos émouvantes, des salutations ou des invitations ; et le mode Commercial (produit réel ou site filmé, rythme, promesse) pour des démos, annonces, Reels et vidéos qui vendent. La compétence s'appuie sur ElevenLabs pour la génération de voix et de musique, Deepgram pour la vérification auditive du résultat, et des planches d'images pour le contrôle visuel avant le rendu. Tout le processus est conçu pour être itératif et vérifiable : chaque affirmation dans la vidéo doit être vraie et sourcée, l'audio est vérifié avec Deepgram, et les images sont contrôlées avec des planches de 9 vignettes avant le rendu final. La compétence est idéale pour les développeurs, les marketeurs et les créateurs de contenu qui souhaitent produire rapidement des vidéos animées, des bandes-annonces, des explications, des publicités ou des démos de produits, avec un contrôle précis et un coût réduit (quelques centimes pour les voix ElevenLabs). Elle est compatible avec Claude Code, Cursor, Codex et d'autres agents, et s'exécute dans un environnement Node 18+, Python 3, ffmpeg et Chrome.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/juanpablomatterisopatron/skill-motion/tree/HEAD/skill-motion

Demander à votre IA préférée

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

Documentation

skill-motion : films animés avec du code

Un film de ce type est un fichier JavaScript qui dessine chaque seconde sur un <canvas> (seek(t)), une bande sonore (banda.mp3 : voix + musique + effets) et un MP4 rendu des deux. Il sort en environ deux heures de travail, coûte quelques centimes d'ElevenLabs, peut être corrigé image par image et s'exécute en direct dans une présentation sans internet.

Deux modes. Histoires (personnages, bande dessinée ou doux, pour émouvoir) et Commercial (produit réel, rythme, promesse, pour donner envie d'acheter). Avant tout, décidez lequel : s'ils disent « marketeur », « commercial », « pro », « démo » ou « à montrer au client », lisez references/promo.md et utilisez assets/motor-promo.js.

DemandeMoteurLecture
Anniversaire, famille, invitation, histoire avec personnagesmotor-base.js (bande dessinée) ou motor-suave.jsguion.md, chispa.md
Commercial, démo de site web ou d'app, vidéo pour un acheteur, Reelsmotor-promo.js + filmar_web.pypromo.md
Marque ou lancement avec look technique, caméra documentairemotor-tech.jsmotor-visual.md section 9
Cartes inclinées, caméra volante sans site réelmotor-3d.jschispa.md
Expliquer des chiffres ou mécanismes : cotes, étiquettes, lectures, plan techniquemotor-acotaciones.js (avec n'importe quel moteur)motor-visual.md section 12
Prise de vue orbitant ou parcourant une scène 3DOrbita3D à la fin de motor-3d.jsmotor-visual.md section 13

Ce qui le fait fonctionner n'est pas la technique mais trois habitudes : tout ce qu'il dit est vrai, on l'écoute avec Deepgram au lieu de supposer et on le regarde avec des planches d'images avant de rendre. Claude ne voit pas la vidéo ni ne l'entend pendant son exécution ; ces deux contrôles sont ses yeux et ses oreilles.

Ce dont il a besoin

Node 18 ou plus, Python 3, ffmpeg et Chrome. Pour la voix et la musique, un compte ElevenLabs (ELEVENLABS_API_KEY). Pour « écouter » le résultat, un compte Deepgram (DEEPGRAM_API_KEY, facultatif). Voir INSTALAR.md.

Où se trouve chaque chose

J'ai besoin deFichier
L'étincelle : liste de contrôle pour que ça sorte « waouh » et pas seulement « bien » (à lire avant le scénario)references/chispa.md
Concept, styles testés, phrases, distribution des voix, feuille de tempsreferences/guion.md
Voix, musique, effets, mixage, écouter avec Deepgramreferences/sonido.md
Le moteur de dessin, personnages et poses, style bande dessinée, règles de compositionreferences/motor-visual.md
Rendu, version légère, présentation, publication, gitreferences/entrega.md
Point de départ du .js : style bande dessinée ou style douxassets/motor-base.js (bande dessinée), assets/motor-suave.js (doux, avec personnages qui vieillissent)
Page pour la voir et planche d'imagesassets/pelicula.html, assets/hoja.html
Film dans une présentation (diapo + contrôleur) et constructeurassets/pelicula-en-presentacion.html, assets/construir.py
Scriptsscripts/ (clés, voix, musique, narration, effets, mixage, Deepgram, rendu, léger)
Effets sonores CC0 inclussfx/ (crédits dans sfx/LICENSES.md)
3D faux sur canvas (cartes inclinées, caméra volante, sol néon)assets/motor-3d.js
Style « tech et pro » pour marques et lancements : caméra documentaire (HUD), cadre de mise au point, alertes, scan, cartes d'interface, tableau de bord, sol en grilleassets/motor-tech.js et references/motor-visual.md section 9
Commercial pro, démo produit, formats 16:9, 9:16 et 1:1references/promo.md, assets/motor-promo.js
Filmer un site réel image par image avec GPUassets/filmar_web.py
Brief client et storyboard fixe avec plages d'images (avant de dessiner un commercial)assets/brief-cliente.md, assets/storyboard-plantilla.md, references/promo.md
Curseur en arc avec clic, frappe, entrées avec rebond, décalage, dérive et poussée de caméra. Tout trajet du pointeur dans un commercial va en arc avec une pause avant le clic (cursorPro) ; le mouvement rectiligne est interditmotor-promo.js (cursorPro, cursor, tecleo, entra, escalonar, deriva, empuje), references/motor-visual.md section 11
Zones de sécurité, interface vectorielle, liste « À vérifier avant de rendre » et banque de retouchesreferences/promo.md
Chiffres du scénario dans un bloc DATOS pour révisions d'une ligne ; rendu sans audioreferences/entrega.md section 11
Annotations du scénario ([VISUAL], pauses), chaque nombre à l'écran avec son motreferences/guion.md section 8
Vocabulaire des prises avec proportions et le gel du tempsreferences/chispa.md
Mesurer le BPM et réorganiser la musique par mesuresscripts/pulso.py, scripts/cortar_musica.py, references/sonido.md section 13
Tronçon test, montage par parties et nouvel audio sans re-rendrereferences/entrega.md section 8
Corriger un film déjà livré parce que le produit a changéreferences/entrega.md section 10
Salutation avec la voix de la personne et invitation avec flyerreferences/sonido.md section 9, references/entrega.md section 7

Le processus

Suivez les étapes dans l'ordre ; chacune a son contrôle avant de passer à la suivante.

0. Est-ce qu'une vidéo est appropriée maintenant ? Si le film va donner des chiffres d'une affaire (bénéfice, prix, clients, délais), avant d'écrire le scénario, il doit exister une source déclarée officielle de ces chiffres. S'il y a deux modèles qui donnent des chiffres différents, ou si le nombre est en discussion, la vidéo n'est pas faite : on le dit à la personne et on propose de montrer le tableau ouvert et de discuter. Une vidéo coûte deux heures et fige un nombre dans la tête de celui qui la voit. Détails dans references/guion.md section 9.

1. Concept (avec la personne). Décidez du mode (ci-dessus). D'abord references/chispa.md : format avec des règles qui se brisent, un rebondissement, les personnes par leur nom, un personnage qui revient et un moment « waouh ». Pour qui, ce qu'il doit ressentir, combien de temps ça dure, où ça va être montré. Proposez trois concepts, chacun en deux ou trois phrases et avec un aperçu en texte, et le ton (les styles testés sont dans references/guion.md). Si la personne a donné une idée, suivez-la à la lettre : chaque élément de sa demande est une scène.

2. Vérifier ce qu'on va affirmer. Chaque chose que le film dit du produit est recherchée dans son code. Ce qui n'est pas là, on ne le dit pas ; ce qui est là mais désactivé, on le dit et on en avertit la personne. C'est valable aussi pour une entreprise ou un projet qui n'existe pas encore : chaque chiffre est noté dans GUION.md avec sa source et comme fait, hypothèse ou proposition, et les mots qui engagent (« garantie », « existe déjà », « en secondes », « respecte la loi », un prix) ne vont que s'ils sont décidés et écrits quelque part (references/guion.md section 9).

3. Scénario. GUION.md dans le dossier du film : demande textuelle de la personne, voix, musique, un tableau avec seconde, qui parle, la phrase et ce qu'on voit. Phrases courtes, une par piste, français neutre, sans tiret long.

4. Voix. source scripts/llaves.sh et scripts/voces.py frases.json. Écoutez-les avec Deepgram ; refaites celles qui sont ratées avec --solo. Si la narration est une note vocale de la personne, il n'y a pas de phrases : references/sonido.md sections 9 et 10.

5. Temps. scripts/armar_narracion.py <inicios> --total <s> : laissez de l'air entre les phrases et des blancs où l'image raconte seule. Avec Deepgram, sortez palabras.json (seconde de chaque mot) pour synchroniser.

6. Musique. Plan par sections qui suivent les scènes (scripts/musica.py) ; mesurez le pouls et le volume avec scripts/pulso.py. Si les sections sont tombées ailleurs, réorganisez-la avec scripts/cortar_musica.py.

7. Mixage. Effets de la bibliothèque CC0 incluse (sfx/) et synthétisés (scripts/efectos_sinteticos.py), scripts/mezclar.py efectos.json à -16 LUFS. Contrôle : oir_con_deepgram.py --comparar entre la narration seule et la bande : aucun mot n'est perdu. Si un mot se perd, baissez l'effet qui sonne à cette seconde ou ouvrez un blanc dans la musique.

8. Dessin. En commercial, d'abord brief et storyboard fixe (assets/brief-cliente.md), et filmez le produit (references/promo.md). Copiez le moteur du style (assets/motor-base.js bande dessinée, assets/motor-suave.js doux ou assets/motor-promo.js commercial) comme mi-pelicula/pelicula.js, changez le nom global, écrivez une fonction par scène en suivant la feuille de temps. Page pelicula.html et hoja.html depuis assets/ (changez le nom du .js et du global ; ajoutez des polices si vous en utilisez d'autres). Personnages génériques, jamais la personne réelle.

9. Planches d'images. source scripts/preparar_render.sh et node $R/render.mjs pelicula.html fotos.png --stills ... avec 9 instants par planche, tout le film. Regardez-les, corrigez ce qui est masqué, coupé, petit, mal assemblé ou illisible (liste des erreurs typiques dans references/motor-visual.md) et regardez à nouveau. En commercial, SEGURAS=1 dessine les zones de sécurité et promo.md apporte la liste « À vérifier avant de rendre ».

10. Rendu. node $R/render.mjs pelicula.html <ruta>.mp4 30 1 6 en arrière-plan ; copiez le MP4 dans le dossier du film ; scripts/liviano.sh pour l'envoyer par messagerie. Regardez une image de la version légère. Si le changement de style est important, refaites d'abord un tronçon et ne rendez que ce tronçon pour que la personne le voie en mouvement (references/entrega.md section 8). Si seul l'audio a changé, ne rendez pas : assemblez la nouvelle bande à la vidéo muette.

10.b Lire la vidéo. scripts/revisar_texto.sh <ruta>.mp4 "mot1|mot2" : OCR à 1 image par seconde sur le MP4 final, chaque mot retiré du produit (nécessite tesseract). Le texte d'un bouton est sauvegardé dans les fichiers du film : si le vocabulaire du produit a changé, on redemande et on refilme (references/entrega.md section 10).

11. Livrer. MP4 avec résumé scène par scène, ce qui a été vérifié et ce que la personne décide. Un flyer sort du même film (references/entrega.md sections 6 et 7). S'il va dans une présentation : diapo data-peli, contrôleur, polices, construir.py et test dans le navigateur.

12. Sauvegarder. GUION, .js, pages, audio mp3 et json dans git (wav et mp4 dehors) ; section dans le LISEZMOI du dossier.

Règles qui ne se négocient pas

  • Vérité : rien d'inventé sur le produit ni sur les personnes réelles. Ce qui est délicat (chutes, santé) est sobre et avec des petits caractères honnêtes.
  • Clés : elles sont lues depuis des variables d'environnement avec llaves.sh et jamais imprimées ni écrites dans des fichiers.
  • Ne pas copier d'œuvres : on peut demander le ton d'un film célèbre (« comme Up », « bande-annonce de super-héros »), jamais ses personnages, scènes, musique ou noms.
  • Pur temporel : seek(t) sans état, sans Math.random() (utilisez rng), sans setTimeout. Si une image dépend de la précédente, le rendu sortira différent de ce qu'on voit en direct.
  • Une vidéo fige un nombre : sans source officielle des chiffres, pas de vidéo. Chaque film porte son état (brouillon, approuvé, qui l'a vu et quelle version) dans le LISEZMOI du dossier, et s'il est refait après qu'un tiers l'a vu, on avertit la personne du chiffre qui a changé (references/entrega.md section 12).
  • Mesurer, ne pas supposer : « ça sonne bien » et « ça a l'air bien » seulement après Deepgram et après les planches d'images.

Temps de référence (film d'une minute)

Scénario et voix 20 min ; temps, musique et mixage 20 min ; dessin 40 à 60 min ; planches d'images et corrections 20 min ; rendu et version légère 5 min ; présentation et publication 15 min. Les corrections visuelles sont normales : chaque film en comporte entre 5 et 10. Un commercial de 97 s filmé du site web : 48 s de rendu, 3 min avec flou de mouvement. Si une correction arrive après le rendu, refaites le rendu.

Si l'application se ferme en cours de route

Ce qui importe est déjà dans le dossier du film (audio, .js, GUION) et le rendeur se reconstruit seul avec preparar_render.sh dans ~/.cache/skill-motion-render. Notez à quelle étape vous en étiez avant chaque tâche longue.

Skills associés