Toonfacts : courts-métrages animés factuels, une seule compétence
Dites ce que vous voulez en mots simples. Cette compétence fait tout le travail : idée, faits, script, plan de plans, sous-titres, voix off ElevenLabs, construction, auto-révision, rendu, et mises à jour ultérieures. Ne demandez jamais à l'utilisateur d'expliquer le style : il est défini dans cette compétence.
Modes (choisir selon les mots de l'utilisateur)
| L'utilisateur dit | Mode | Lire |
|---|
| "new video", "new video about X", "surprise me", "make the next short" | Nouveau | docs/new-video.md |
| "update video ", "fix the video", "change X in ", "apply the latest rules" | Mise à jour | docs/update-video.md |
| "continue video " (après une étape manuelle comme la sauvegarde de l'audio) | Continuer | docs/new-video.md, reprendre à la première phase manquante |
| "review video", "check ", "check this mp4" | Révision | docs/review.md uniquement |
| "video ideas", "give me ideas" | Idées | docs/new-video.md Phase 1 uniquement : rechercher des histoires vraies et des faits intéressants, les noter sur la force de l'histoire et la force de l'accroche, les consigner dans videos/_ideas.md, afficher le top 5 avec un résumé d'une ligne, sa structure et une ébauche d'accroche, ne rien construire |
| "update the skill" | Mise à niveau | Étape préliminaire 2 uniquement, puis signaler le changement de version |
Si la demande n'est pas claire, choisir Nouveau quand aucune vidéo n'est nommée et Mise à jour quand une vidéo est nommée. La façon dont la vidéo est construite et son apparence sont décrites dans docs/engine.md ; Nouveau et Mise à jour l'utilisent. | | |
Règles de fonctionnement (tous les modes)
- Un plan doit signifier ce que dit la voix, et cela est vérifié mécaniquement. Chaque plan déclare ce qu'il représente (ce qui est lu, qui regarde quoi, ce qui vise quoi, ce qui est tenu) et appelle
assertScene ; chaque chaîne peinte sur un accessoire passe par fitText. tools/check_scene.py bloque le rendu tant que ces appels ne sont pas présents. Ne rendez jamais si un contrôle échoue, et ne corrigez jamais un panneau coupé en réduisant son texte ou en élargissant une tolérance : corrigez la géométrie.
- L'accroche est une barrière, pas un ornement. Aucun script n'est écrit tant qu'une première ligne ne passe pas la barrière de l'accroche dans
docs/new-video.md Phase 2, et aucune vidéo n'est livrée tant que le bloc d'accroche en haut de templates/review_checklist.md ne passe pas. Une première ligne faible est une raison de réécrire, jamais quelque chose à corriger plus tard.
- Ne posez pas de questions. Faites des choix raisonnables, écrivez-les dans le
NOTES.md de la vidéo, continuez. Arrêtez-vous uniquement lorsque la voix off ne peut pas être créée (voir docs/new-video.md Phase 3), qu'un outil nécessaire est manquant, ou qu'une décision ne peut pas être annulée.
- Un dossier par vidéo, tout à l'intérieur :
videos/<slug>/ (slug = titre en minuscules séparées par des traits d'union). MP4 final et publish.txt à la racine, fichiers de travail dans source/, anciens rendus dans versions/. Les fichiers temporaires (images, planches contact, rendus de test) vont uniquement dans work/<slug>/. Ne laissez jamais de travail uniquement dans la conversation.
- Utilisez les crédits ElevenLabs une fois par voix off (une prise). Régénérez uniquement lorsque les mots prononcés changent, que l'audio est inutilisable, ou que la prise échoue au contrôle de performance dans
docs/new-video.md Phase 3 étape 4 (rires ou surjeu) – alors une fois de plus, avec les balises réduites.
- Naturel plutôt qu'expressif. Le narrateur ne rit jamais : pas de
[laughs] ou [chuckles] nulle part, au maximum 3 balises dans tout le script, et pas de points d'exclamation dans le texte de la voix off. Les images portent l'humour ; un narrateur qui rit de sa propre blague est le signe le plus clair d'une prise IA.
- N'imprimez ni ne sauvegardez jamais de clés API. Le MCP ElevenLabs est ajouté par l'utilisateur dans Claude Code ; utilisez-le tel quel.
- Ne publiez ni ne téléchargez jamais de vidéo. La livraison est le MP4 final, sa vignette et un
publish.txt recherché (titre, description, hashtags, tags).
- Réponse finale : quelques lignes (ce qui a été fait ou modifié, où cela se trouve, les choix importants, une prochaine étape). Pas de récapitulatif étape par étape.
Pré-vol (silencieux, à chaque exécution, chaque mode)
- Projet et dossiers. Trouvez le projet Remotion (le dossier avec
package.json et src/). Créez videos/, videos/_ideas.md et work/ s'ils manquent.
- Gardez cette compétence à jour. Si ce dossier de compétence est un clone git, lancez un
git pull --ff-only silencieux et lisez CHANGELOG.md pour voir ce qui a changé ; mentionnez la nouvelle version dans la réponse finale uniquement si elle a changé. Si ce n'est pas un clone git, ignorez.
- Outils. Vérifiez
ffmpeg, Python 3 et @remotion/three (installez @remotion/three et three dans le projet s'ils manquent). Trouvez les outils MCP ElevenLabs (noms comme text_to_speech, generate_speech, creative_generate_speech, list_voices, speech_to_text, transcribe) ; chargez-les avec ToolSearch s'ils sont différés. S'il n'y en a pas, continuez jusqu'à la voix off, écrivez NEEDS_AUDIO.md expliquant que le MCP ElevenLabs doit être connecté (ou l'audio fourni), et arrêtez-vous là.
- Anciennes compétences séparées. Si
.claude/skills/cartoon-3d-short/ ou .claude/skills/new-video/ existent aussi, ne les utilisez pas. Dites-le à l'utilisateur une fois dans la réponse finale qu'il peut supprimer ces deux dossiers, car cette compétence les remplace tous les deux.
- Fichiers d'aide hérités. Supprimez
video-ideas/SKILL-UPDATE.md (première ligne commence par "# Instructions for Claude Code") et video-ideas/README.md (première ligne "# video-ideas") s'ils sont présents. Ne supprimez jamais rien d'autre.
- Renommer les anciens fichiers de publication (une fois). Le fichier de publication est maintenant en texte brut, pas en Markdown, car l'utilisateur le copie et ne veut pas le voir rendu. Pour chaque
videos/<slug>/publish.md, copiez-le vers videos/<slug>/publish.txt, supprimez le Markdown au fur et à mesure (supprimez #, **, les backticks, les pipes de tableau ; transformez les titres en majuscules et gardez le contenu identique), et dites à l'utilisateur dans la réponse finale quels fichiers publish.md il peut maintenant supprimer. Ne les supprimez jamais vous-même.
- Migrer l'ancienne structure (une fois, en déplaçant, jamais en supprimant). Si
video-ideas/ ou out/ existent d'une version antérieure :
video-ideas/_ideas.md devient videos/_ideas.md.
- Pour chaque
video-ideas/<slug>/ : publish.md (ou publish.txt) va dans videos/<slug>/publish.txt ; tous les autres fichiers (script.md, voiceover*.mp3, words.json, NOTES.md, REVIEW.md, CHANGES.md, NEEDS_AUDIO.md, feuilles de révision) vont dans videos/<slug>/source/.
- Associez chaque rendu final dans
out/ à son slug par nom de fichier ou titre (out/<slug>.mp4, ou un nom comme The_Man_Who_...) : le plus récent devient videos/<slug>/<slug>.mp4, les plus anciens videos/<slug>/versions/<slug>_v1.mp4, _v2.mp4 par date.
- Tout le reste dans
out/ (images, planches contact, QA, rendus de test, dossiers temporaires par vidéo) est déplacé vers work/legacy-out/, et les deux fichiers d'aide ci-dessus vers work/legacy/. Tout ce que vous ne pouvez pas associer reste là aussi.
- Une fois terminé, listez ce qui a été déplacé où dans la réponse finale (une courte liste) et dites à l'utilisateur que les dossiers vides
video-ideas/ et out/ peuvent être supprimés. Ne touchez pas à src/, public/, scripts/, audio/ ou backup/, et laissez les fichiers déjà dans work/ tels quels.
Structure des dossiers
videos/ # tout ce qui est terminé ou en cours, un dossier par vidéo
_ideas.md # chaque sujet utilisé ou rejeté (lire d'abord, ajouter à la fin)
<slug>/
<slug>.mp4 # Vidéo FINALE : le fichier à télécharger
thumbnail.jpg # couverture construite, 2160x3840 (pas une image brute)
publish.txt # titre, description, hashtags, tags, catégorie, commentaire épinglé + sources de recherche
source/ # script.md voiceover.mp3 words.json NOTES.md REVIEW.md CHANGES.md
versions/ # rendus antérieurs : <slug>_v1.mp4 ... (conservés par le mode Mise à jour)
work/ # fichiers temporaires, supprimables : images, planches contact, QA, rendus de test, REMOTION_TMP si aucun autre disque
<slug>/
Contenu de cette compétence
| Chemin | Description |
|---|
docs/new-video.md | Nouveau et Continuer : idée, recherche, script, voix off, construction, révision, livraison |
docs/update-video.md | Mise à jour : classer la modification, protéger les anciennes versions, appliquer, re-rendre, vérification de régression |
docs/review.md | La boucle de révision (planches contact, vérifications, scores, corrections) |
docs/engine.md | Comment la vidéo est construite et doit ressembler : pipeline, règles pour chaque vidéo, cadrage, éclairage, flux de caméra, sous-titres, réactions, barrière de qualité |
references/story_format.md | Le format d'histoire en six temps, boîte à outils comique, rythme |
references/ (autre) | Bible de style, rapports mesurés, images et feuilles de référence |
templates/ | Source du moteur de rendu (bridge/), synthèse audio, scripts, plan de plans, modèles de script et de révision |
docs/history/ | Archive des README, CHANGELOG et formulation originale des deux anciens dépôts. Pas des instructions |
tools/review_video.sh | Vérifications de durée, de coupe franche et de volume sonore ainsi que planches contact |
tools/make_thumbnail.py | Conçoit une vignette Shorts 2160x3840 : découpe le personnage, le place sur un fond créé, superpose le texte |
tools/check_scene.py | Bloque un rendu dont les plans n'ont jamais déclaré leur vérité physique, ou dont le texte d'accessoire n'est pas adapté |
tools/check_voice.py | Vérifie une prise de voix off : vitesse, pauses, volume sonore, et les secondes où le débit est trop rapide (rires, précipitation) |