Que fait faceless-video ?
Vous êtes toute l'équipe : chercheur, rédacteur, département artistique, narrateur, animateur, monteur et QA. L'utilisateur donne un sujet ; vous rendez un MP4 rendu. Travaillez dans un dossier de projet créé à partir de template/ et conservez tous les fichiers intermédiaires, afin que l'utilisateur puisse demander des modifications et que vous puissiez re-rendre en quelques minutes.
Lisez references/pipeline.md pour les détails des étapes, references/scenes.md pour le format du film, references/style.md pour le rendu visuel, references/qa.md pour la relecture. Tout ce qui suit est l'ordre de travail.
0. Configuration (première exécution seulement, ~2 min)
Vérifiez et rapportez dans une courte liste, avec la correction exacte pour tout ce qui manque :
- Node 22+ (
node -v), ffmpeg (ffmpeg -version), Claude Code (vous y êtes). - Voix :
ELEVENLABS_API_KEYdéfini → voix premium ; sinon la voix locale gratuite :pip install kokoro-onnx soundfile(etHYPERFRAMES_PYTHON=<ce python>s'il y en a plusieurs). - Sous-titres :
npx --yes [email protected] models install parakeet(une seule fois, ~640 Mo). - Images : CLI
codexconnecté → les images sont générées pour l'utilisateur ; sinon vous écrivez les prompts et l'utilisateur place les images. Chemins :$SKILLci-dessous désigne le dossier de cette compétence (celui où se trouve ce SKILL.md ; Claude Code l'affiche comme le répertoire de base de la compétence lorsqu'elle se charge). Créez le projet : copiez$SKILL/template/versvideos/<slug>/dans le dossier de travail de l'utilisateur (slug à partir du sujet). Toutes les commandes ci-dessous s'exécutent dans ce dossier de projet ; sur Windows, exécutez-les dans Git Bash, ou remplacez$SKILLpar le chemin complet entre guillemets.
1. Brief (demander au plus une fois)
Sujet. S'il n'est pas donné : public (qui regarde), durée (défaut 45 s), la couleur d'accentuation unique (défaut orange #ec5626), un appel à l'action optionnel (« Commentez MOT pour… »). Ensuite, arrêtez de demander et réalisez le film ; proposez des modifications à la fin.
2. Recherche et script → script.md
- 3–5 sources (recherche web) ; conservez les faits que vous utilisez avec leur source.
- Structure : accroche (les 3 premières secondes annoncent le bénéfice), 3–5 séquences, une conclusion en une ligne ou CTA. ≤ 2,6 mots/seconde de film (45 s ≈ 115 mots). Phrases courtes ; chaque phrase nomme quelque chose que l'on peut placer sur le bureau.
- Écrivez la voix off en texte brut dans
vo.txt(pas de titres, pas d'indications scéniques). Montrez le script à l'utilisateur ; en mode autonome, continuez.
3. Liste des plans → shots.md
Pour chaque séquence : une station sur le bureau — ce qui se pose (fiche, impression, découpage, page, note), ce qui se dessine (marqueur, écriture manuscrite), sur quel mot chaque chose bouge. Marquez la séquence de vue d'ensemble et le CTA (tampon). Ensuite, la liste des images : pour chaque découpage ou impression, un prompt (references/pipeline.md contient le modèle de prompt) → images.md.
4. Images → assets/img/
- Avec codex :
node "$SKILL/scripts/imagegen.mjs" assets/img/<nom>_raw.png "<prompt>"par image. - Sans codex : donnez
images.mdà l'utilisateur et attendez les fichiers. - Les découpages sont générés sur un fond magenta uni (#FF00FF) et incrustés :
node "$SKILL/scripts/cutout.mjs" assets/img/<nom>_raw.png assets/img/<nom>.png(incrustation chroma key ffmpeg ; les autres fonds utilisent le suppresseur d'arrière-plan AI local, conçu pour les personnes et pouvant manger des parties d'objets — examinez chaque découpage sur un fond coloré). Les impressions conservent leur fond : copiez<nom>_raw.pngvers<nom>.png.scenes.jsne référence que les fichiers sans_raw. - Regardez chaque image (lisez le fichier). Mauvais objet, texte dans l'image, forme étrange → régénérez ; ne livrez jamais une image défectueuse.
5. Voix et synchronisation des mots
node "$SKILL/scripts/tts.mjs" vo.txt . → assets/audio/voice.wav.
npx --yes [email protected] transcribe assets/audio/voice.wav --json > transcript.json puis node "$SKILL/scripts/words.mjs" transcript.json . → words.js. Lisez les mots imprimés : corrigez les noms de marque ou les chiffres mal interprétés dans words.fix.json ({"entendu": "correct"}) et relancez. Durée du film = fin du dernier mot + 1,5 s.
6. Le film → scenes.js
Écrivez window.FILM (format : references/scenes.md) à partir de la liste des plans, avec chaque at sur son mot issu de words.js. Règles qui donnent un aspect conçu, pas généré : une seule chose bouge à la fois (≥ 0,3 s d'écart), 2–5 s par station, stations disposées en 2D, une couleur d'accentuation, rien d'important dans les 220 px du haut / 150 px de droite / 420 px du bas du cadre, le vol de caméra commence ~0,9 s avant la phrase suivante, se termine sur le tampon CTA ou une vue large de tout le bureau.
7. Construction et inspection
node "$SKILL/scripts/apply.mjs" . → npx --yes [email protected] lint (0 erreurs) → npx --yes [email protected] snapshot --at <un moment par séquence> et LISEZ les images. Corrigez les chevauchements, le texte tronqué, les images vides, les éléments hors cadre. Répétez jusqu'à ce que chaque séquence soit lisible.
8. Son
Optionnel : assets/audio/music.mp3 (n'importe quelle piste libre de droits) et assets/sfx/{whoosh,thud,marker,stamp,pop,slide}.wav (les noms déterminent leur emplacement : whoosh sur chaque vol de caméra, thud quand une carte atterrit, marker sur un dessin, stamp sur le coup de tampon). Si les outils MCP Epidemic Sound sont disponibles dans cette session, utilisez-les : recherchez « airy whoosh short », « paper card drop thud », « marker pen stroke », « rubber stamp », « woody click », « paper slide », téléchargez un de chaque sous les noms de fichiers ci-dessus, et un tapis instrumental calme (lo-fi / beat doux, sans voix) comme music.wav ; coupez chaque SFX à son impact unique avec ffmpeg. Ensuite, node "$SKILL/scripts/mix.mjs" . → assets/audio/mix.wav (voix + musique réduite + bruitage, −14 LUFS). Exécutez-le même sans musique ni SFX — le moteur lit mix.wav.
La voix a été réenregistrée après le calage temporel du film ? node "$SKILL/scripts/retime.mjs" words_old.js words.js . déplace chaque moment dans scenes.js vers la nouvelle prise.
9. Rendu
npx --yes [email protected] render -o renders/<slug>_v1.mp4 (1080×1920, 30 ips). Ensuite, node "$SKILL/scripts/sheet.mjs" renders/<slug>_v1.mp4 et LISEZ la planche contact.
10. Révision (seconde passe) et livraison
Révisez la planche par rapport à references/qa.md comme si vous n'aviez pas réalisé le film — si des sous-agents sont disponibles, faites-en faire une révision en aveugle par l'un d'eux. Corrigez chaque constat, re-rendez en v2, ne livrez jamais avec un défaut connu. Remettez : le MP4, un résumé de 5 lignes (sujet, durée, sources, ce que l'utilisateur peut modifier), et la proposition « dites-moi ce que vous voulez changer et je re-rendrai » — chaque note est une édition de scenes.js/script et un rendu de 2 minutes.