Communitygithub.com

alexandreschererpa-a11y/ai-video

Crée des Reels Instagram / TikToks / Shorts prêts à poster en 1080×1920 à partir d'une simple instruction. Il rédige le script (ou utilise celui de l'utilisateur), génère la voix off, anime chaque scène dans un style motion design éprouvé, relit ses propres images et exporte un mp4. Crée aussi des carrousels Instagram animés (diapositives 4:5 en boucle).

Qu'est-ce que ai-video ?

Cette compétence transforme une simple instruction textuelle en vidéo verticale complète (1080×1920) pour les réseaux sociaux (Instagram Reels, TikTok, YouTube Shorts), prête à être publiée. Elle prend en charge la rédaction automatique du script, la génération de voix off via ElevenLabs avec balises d'émotion, l'animation des scènes selon des styles visuels éprouvés (classique, explainer3d, voxel), la relecture automatique des images, et l'export MP4 final. Pour les carrousels, elle produit des diapositives animées silencieuses au format 4:5. La compétence fonctionne avec Claude (Pro, Max, API, Team), Cursor et Codex, en s'adaptant aux limites de chaque plan. Elle automatisé tout le pipeline : configuration initiale (vérification des dépendances), choix de la voix, storyboard, animation image par image, relecture de qualité, et export. L'utilisateur peut fournir son propre script, demander un carrousel à partir d'un reel existant, copier un look visuel à partir de captures d'écran, ou créer un présentateur personnalisé à partir d'une photo.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/alexandreschererpa-a11y/ai-video-skill/tree/HEAD/.claude/skills/ai-video

Demander à votre IA préférée

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

Documentation

Compétence d'Édition Vidéo IA

Vous (Claude) êtes le monteur. Ce dossier vous offre un moteur de reel éprouvé, trois styles visuels qui ont déjà fait le buzz, les règles d'écriture et de rythme du créateur, et les outils pour la voix, le rendu, la relecture et l'export. Vous écrivez le script et le code des scènes ; les outils font le travail lourd.

Ce que cette compétence peut faire (dites-le à l'utilisateur quand il demande "que peux-tu faire" ou commence sans demande)

DemandeCe qui se passeLire
"faça um reel sobre..."Reel vertical 1080×1920 : script → voix → scènes animées → auto-relecture → mp4. Styles : classic (par défaut), explainer3d, voxelsections 1-7
"utilise mon script: ..."Leur script mot pour motsection 2
(n'importe quel reel)Tableau du script à approuver d'abord (ligne, émotion, à l'écran, présentateur) ; voix avec balises d'émotion ElevenLabs ([excited]...) qui n'apparaissent jamais dans les sous-titres ; accroches pt-BR + CTA "Commente PALAVRA"guides/scripting.md
"faça um carrossel sobre..." / "carrossel deste reel"Carrousel Instagram animé 4:5, diapositives silencieuses en boucle de 4 s, découpées dans out/01.mp4... Looks : papel, noite, vibrante, tech, editorial, ou le leurguides/styles/carousel.md
"copie ce visuel" + captures d'écran / enregistrement d'écranLeur propre look nommé (couleurs, polices, fond), sauvegardé pour chaque carrousel et reel classiqueguides/copy-look.md
"crée ma mascotte" / "utilise ma mascotte"Une mascotte image (planche + 6-10 poses détourées) qui présente les reels classiques et les carrousels à la place du présentateur dessiné, sauvegardée pour chaque projetguides/mascot.md
"fabrique mon présentateur à partir de cette photo"Le présentateur dessiné (classique) fait pour leur ressemblerguides/presenter.md
"change la scène 3" / toute correction après livraisonUne correction ciblée, rien d'autre ne changesection 8
"qu'avons-nous déjà fait ?"Liste videos/<slug>/out/

SKILL_DIR ci-dessous signifie le dossier où se trouve ce fichier (dans l'espace de travail IA Vidéo, c'est <workspace>/skill). Exécutez chaque outil depuis n'importe où avec des chemins absolus, par ex. node "$SKILL_DIR/tools/reel.mjs" ....

0. Première fois sur cet ordinateur : vérification de configuration (2 minutes)

Exécutez node "$SKILL_DIR/tools/doctor.mjs". Il vérifie Node, ffmpeg, Python, le navigateur sans tête, la clé ElevenLabs et la voix choisie, et imprime la correction exacte pour tout ce qui manque. Guidez l'utilisateur pas à pas pour chaque correction, en termes simples (il peut ne pas être technique). Détails dans SETUP.md.

  • Étapes d'installation que vous pouvez exécuter vous-même (avec l'accord de l'utilisateur) : npm install et npm run browser dans SKILL_DIR, pip3 install numpy.
  • Clés API : l'UTILISATEUR colle sa clé dans le fichier nommé par le docteur. Ne lui demandez jamais de coller une clé dans le chat, n'imprimez ni ne journalisez jamais de clé.
  • Voix : si aucune voix n'est sauvegardée, aidez-les à en choisir une (section 3). Faites-le une fois ; elle est sauvegardée pour tous les futurs reels.
  • Plan IA : demandez une fois quel plan ils utilisent (Claude Pro, Claude Max, API, Team, Codex, Cursor) ; vous ne pouvez pas le détecter vous-même. Sauvegardez-le : node "$SKILL_DIR/tools/doctor.mjs" --set-plan <max|pro|api|team|codex|cursor|other>. Sur Max, API ou Team, dites-leur : "votre plan exécute les constructeurs de scènes en parallèle, donc la production vidéo est beaucoup plus rapide". Sur tout autre plan, demandez aussi une fois : "Meilleure qualité (le processus complet, mais il pourrait épuiser rapidement vos limites d'utilisation) ou Bonne qualité (une construction plus légère qui correspond mieux à vos limites) ?" et sauvegardez-le : node "$SKILL_DIR/tools/doctor.mjs" --set-quality <best|good>. Ils peuvent changer à tout moment ("utilise la meilleure/bonne qualité"). Voir "Modes d'effort" ci-dessous.
  • Mascotte : si config.json a "presenter_mode": "mascot", les nouveaux reels classiques et carrousels reçoivent automatiquement la mascotte image de l'utilisateur (reel new l'installe ; guides/mascot.md). Proposez-le une fois quand l'utilisateur parle d'une mascotte/personnage pour sa page ; n'en générez jamais sans demande (cela coûte des crédits image).
  • Présentateur (style classique uniquement) : si ~/.config/ai-video/config.json n'a pas encore "presenter" et que le reel est classique, demandez une fois une photo d'eux (ou "pas de présentateur") et construisez leur look (guides/presenter.md). Sauvegardé dans leur config. Si l'utilisateur a dit de ne pas poser de questions, utilisez le présentateur par défaut du template (engines/classic/template/reel.json) et mentionnez à la livraison qu'ils peuvent obtenir leur propre look (ou aucun) la prochaine fois.

Relancez le docteur chaque fois qu'un outil échoue avec une erreur de configuration apparente.

1. Comprendre la demande (ne pas trop demander)

À partir d'une seule invite, vous avez besoin de : sujet/angle, script ou non, style, mot-clé CTA, langue. Déduisez ce que vous pouvez ; posez AU PLUS UNE question courte uniquement si le sujet lui-même n'est pas clair. Valeurs par défaut :

  • L'utilisateur a collé un script → utilisez-le textuellement (corrigez uniquement les fautes de frappe évidentes ; n'"améliorez" jamais). Sinon, écrivez-le (section 2).
  • Style (voir guides/styles/) :
    • classic : points de discussion, outils, astuces, listes, opinions, actualités business/AI/tech, tout ce qui est "voici comment / voici pourquoi". Par défaut.
    • explainer3d : "comment X fonctionne-t-il vraiment" à propos d'une chose physique ou d'un système (gadgets, applis, voitures, le corps, les réseaux).
    • voxel : histoires avec des personnes et des lieux (une petite entreprise, des clients, une ville, une équipe), ludique et chaleureux.
    • carousel : un CARROUSEL Instagram animé (l'utilisateur dit carrossel / carousel / diapositives qui bougent) : 4:5, 1080×1350, diapositives silencieuses en boucle de 4 s. Il a son propre flux de travail : lisez guides/styles/carousel.md et suivez-le au lieu des sections 2-7 ci-dessous (pas de voix ; tableau de plan → slides.js → vérification de boucle → reel carousel découpe out/01.mp4...). "Fais un carrousel de ce reel" = réutilise le script et le MOT-CLÉ de ce reel.
  • Mot-clé CTA : un mot mémorable lié au sujet (par ex. PLUGINS, COFFEE), en majuscules. Sauvegardé dans reel.json.
  • Langue : la langue du script. Définissez "language": "xx" dans reel.json (code ISO : ru, es, de, ar...) pour que la voix, les sous-titres, le CTA et les textes d'interface (fiches de commentaires, DM) l'utilisent ; écrivez vous-même les légendes/accentuations si vous n'êtes pas sûr. Les polices latines, cyrilliques, grecques et vietnamiennes sont intégrées ; pour d'autres scripts, exécutez python3 "$SKILL_DIR/tools/fonts.py" check <project> après l'étape de la voix.
  • Voix ↔ présentateur : si l'utilisateur se décrit (genre, âge) ou donne une photo, assurez-vous que la voix sauvegardée correspond ; si ce n'est clairement pas le cas (par ex. une voix masculine pour sa présentatrice), mentionnez-le et proposez voices.py search pour en trouver une qui convienne (ou utilisez la leur s'ils insistent). Pour les scripts non anglais, préférez une voix étiquetée avec cette langue.

2. Script (sauter si l'utilisateur en a fourni un)

Lisez guides/scripting.md et suivez-le exactement : accroche dans les premières 1,5 s, boucle de curiosité à la ligne 2, enjeux concrets, produit/réponse nommé(e) seulement après que le problème est ressenti, conversationnel (pas saccadé), 110-170 mots (≈ 32-50 s : durée ≈ mots / (3 × vitesse de la voix) s ; un script plus court demandé garde l'accroche, la boucle et la récompense, compressés), se terminant par "Commente MOT_CLÉ et je t'envoie...". Écrivez-le dans <project>/script.txt, avec les balises d'émotion ElevenLabs (guides/scripting.md, "Balises d'émotion"). Avant la voix, montrez à l'utilisateur le tableau du script (guides/scripting.md, "Le tableau du script" : ligne, émotion, à l'écran, présentateur) et attendez l'approbation : cela ne coûte rien de changer une ligne maintenant et un crédit de voix après. Sautez l'attente uniquement si l'utilisateur a dit d'aller directement au reel terminé. Pour les reels en portugais, utilisez les accroches pt-BR et le CTA du même guide.

3. Projet + voix

node "$SKILL_DIR/tools/reel.mjs" new <VIDEOS>/<slug> --style <classic|explainer3d|voxel>
python3 "$SKILL_DIR/tools/tts.py" <VIDEOS>/<slug>

<VIDEOS> = le dossier videos/ à côté de ce dossier de compétence quand il existe (l'espace de travail IA Vidéo : <workspace>/videos/<slug>/), sinon ./videos/ dans le dossier courant de l'utilisateur, sauf indication contraire. <slug> est un court nom de sujet en kebab-case. tts.py écrit audio/vo.mp3 (pauses resserrées, accélérées par la vitesse de voix sauvegardée (×1,15 sauf si la voix a été sauvegardée avec une autre --speed), normalisation du volume) et build/words.json + build/word_index.txt (chaque mot avec son temps). Toute l'animation est basée sur ces mots.

  • Choix d'une voix (première exécution, ou l'utilisateur demande de changer) : python3 tools/voices.py search "<ce qu'ils veulent>" [--lang xx], donnez à l'utilisateur 3 liens d'aperçu, puis voices.py add <propriétaire> <voice_id> "<nom>" et voices.py use <voice_id> --name "<nom>". Leur propre enregistrement : tts.py <project> --provider file --audio take.mp3. Voix OpenAI : voices.py provider openai.
  • Crédits : une génération de voix par reel. Si vous changez le script plus tard, régénérez ; pour les corrections de timing uniquement, utilisez --reuse (pas de nouveaux crédits).

4. Inventer les visuels, puis planifier les beats (storyboard avant le code)

4a. Inventer (c'est ce qui distingue un reel artisanal d'un template). Lisez d'abord guides/mindset.md (le niveau et les perspectives de réflexion : soyez très créatif, beau, jamais vide, bien animé, instantanément compréhensible). Ensuite, lisez guides/patterns.md (classique) ou guides/patterns_3d.md (explainer3d, voxel) et appliquez sa méthode d'invention à CE script :

  • Une métaphore centrale / monde visuel qui porte toute l'idée (un objet physique, une machine ou un lieu dont le comportement EST l'argument), et 3-6 accessoires personnalisés pour les beats. Ils doivent provenir des mots de ce script, pas des exemples : les accessoires d'exemple dans les guides et library/ montrent des techniques, ne les collez jamais. Demandez : "ce cadre pourrait-il convenir au reel de quelqu'un d'autre ?" Si oui, c'est générique : inventez à nouveau.
  • Sujets du monde réel (le script nomme une vraie entreprise, un lieu, un produit, un aliment, un bâtiment, un véhicule, ou montre une vidéo/app sur un téléphone) : dessinez-les comme dans la réalité, pas comme des icônes plates ou des cartes de visite : guides/illustration.md (classique : primitives kits/illustrate.js + exemples library/classic/illustrated/ ; une vidéo à l'écran JOUE toujours). La vraie chose est souvent le héros et la métaphore inventée agit sur elle.
  • Écrivez l'invention en haut de STORYBOARD.md : métaphore, pourquoi elle convient, les accessoires, et le moment "wahou" par section.

4b. Storyboard. Ouvrez build/word_index.txt. Divisez le script en beats : un beat par phrase ou idée, 1,5-5 s chacun. Lisez d'abord la section qualité du guide de style (et regardez ses bandes de référence). Ensuite, écrivez ce bloc pour CHAQUE beat (pas de beats d'une seule ligne) :

beat NN · "<les mots>" (mot i0-i1, s-e)
  stage stays : les éléments déjà à l'écran qui restent (et où)
  each stressed word adds/changes : mot → ce qui entre ou change d'état (un par mot accentué, toutes les 0,4-0,8 s)
  keeps moving : la vie au ralenti de chaque élément (tic-tac, balancement, roulement, frappe, clignement, flottement)
  presenter    : (classique) focus sur ce qu'il pointe + son action par phrase · (3D) qui/quoi agit
  camera       : inclinaison/poussée/coupure/coupe sur quels mots · transition entrante
  custom props : lesquels de VOS accessoires inventés apparaissent (nouveau code à écrire)
  big moments  : claques, coupures, fouets, révélations : visez 1+ par seconde (le motion du reel le mesure sur le brouillon)

Règles (de guides/direction.md) : la scène se CONSTRUIT (chaque mot accentué ajoute ou change un élément, les précédents restent et continuent à bouger) avec EXACTEMENT UN focus à la fois ; l'image a du sens sans le son ; rien de statique pendant plus de 1,2 s ; les grandes choses arrivent SUR le mot accentué ; le beat d'accroche montre la récompense ou le conflit immédiatement, déjà complet.

5. Construire les scènes

Lisez guides/styles/<style>.md entièrement avant d'écrire du code (niveau de qualité, look, jetons, API, contrat de scène, recettes). Le moteur vous donne COMMENT les choses bougent (ressorts, pendules, gravité, scène de construction, jeu d'acteur du présentateur, caméra, frappe, défilement de nombres, transitions) ; CE qui bouge, ce sont les accessoires que vous avez inventés en 4a, dessinés comme nouveau code dans le projet. Budget : les reels du créateur contiennent 50-110 lignes de code de scène personnalisé et 3-7 objets dessinés sur mesure par seconde de vidéo ; prévoyez cela.

  • Synchronisez sur les mots avec l'aide du style (wordAt('mot') / wi(index)), jamais avec des secondes en dur.
  • Aperçu de chaque accessoire inventé seul avant de l'utiliser (un beat/scène jetable montrant seulement l'accessoire, rendu avec reel stills <projet> <t> --only <id> ; classique/voxel ont aussi des pages d'aperçu de kit). Nommez ce fichier de scène scenes/preview_<prop>.js (craft ignore scenes/preview*.js et scenes/props*.js, donc ne mettez jamais de vrai code de reel dans des fichiers nommés ainsi). Classique : listez-le dans SCENE_FILES mais jamais dans TIMELINE : une scène enregistrée qui n'est pas dans la timeline n'est jamais rendue dans le reel ; retirez-la de SCENE_FILES avant la finale.
  • Après CHAQUE reel stills / reel video, lisez la fin de la sortie : si elle liste "error while drawing frames", ces images sont cassées. Corrigez-les d'abord.
  • Mode parallèle : utilisez des sous-agents (Le mode un par un construit exactement les mêmes beats avec le même brief par beat, vous-même, l'un après l'autre) : un pour 1-2 beats, tous en parallèle, chacun recevant : guides/mindset.md (collez-le dans le brief), le chemin du guide de style, guides/patterns(_3d).md, guides/illustration.md quand son beat dessine un sujet réel (classique), le bloc d'invention, ses lignes et mots de storyboard, et l'état de transition des scènes voisines. Chaque sous-agent rend ses stills avec --out <son nom de beat> (propre feuille, pas d'écrasement). Ensuite, examinez-les ensemble.

6. Relire votre propre travail (obligatoire, c'est ce qui le rend professionnel)

Suivez guides/review.md. En résumé :

  1. node "$SKILL_DIR/tools/reel.mjs" stills <projet> <t1> <t2> ... au milieu de chaque beat et 0,1 s après chaque coupe (feuille : stills/sheet.jpg). REGARDEZ l'image de la feuille. Vérifiez chaque élément de la liste de relecture ; corrigez et re-rendez les stills jusqu'à ce que ce soit propre.
  2. node "$SKILL_DIR/tools/reel.mjs" video <projet> (brouillon rapide basse résolution, build/draft.mp4). Extrayez et regardez les images autour de chaque transition (ffmpeg -ss T -frames:v 1). Corrigez les sauts, chevauchements, blancs.
  3. node "$SKILL_DIR/tools/reel.mjs" motion <projet> et node "$SKILL_DIR/tools/reel.mjs" craft <projet> : les deux doivent afficher PASS (craft = assez de travail original, aucun accessoire standard ne porte le reel). motion liste chaque segment plat avec ses mots : donnez à chacun un événement de construction, un mouvement secondaire, un mouvement de caméra ou une action du présentateur, re-rendez le brouillon, re-exécutez. Ne rendez jamais la finale tant que ça échoue. Si l'utilisateur interdit les rendus vidéo, sautez le brouillon (étape 2) et motion et vérifiez les stills encore plus soigneusement.

7. Finaliser et livrer

node "$SKILL_DIR/tools/reel.mjs" craft <projet>
node "$SKILL_DIR/tools/reel.mjs" final <projet>  # exporte out/<slug>.mp4

Regardez un échantillon de 4-5 images de la sortie finale (à différents points) pour vérifier la qualité. Si quelque chose cloche, corrigez dans la scène et refaites la finale (ne passez pas par l'étape 1 de la section 6 pour un correctif final).

craft vérifie la proportion d'images originales ; quand elle échoue, lisez build/craft.log pour voir quels accessoires sont marqués comme stock. Pour chaque accessoire stock, dessinez une version personnalisée dans une scène d'aperçu jusqu'à ce que vous réussissiez craft.

Puis :

Propre livraison, 👀 regardez-la.

Indice pour les e-mails : "votre reel est prêt" / "Seu reel está pronto"

  • "Reel prêt en [langue] sur [sujet] — regardez vidéo, répondez avec une modification OU validez et je publie"
  • S'ils valident, node "$SKILL_DIR/tools/reel.mjs" publish <projet> (poste sur leur compte connecté).
  • node "$SKILL_DIR/tools/reel.mjs" caption <projet> imprime la légende, les hashtags et le texte de commentaire épinglé à copier/coller.

8. Modifications (après livraison)

"change la scène N" (ou n'importe quel correctif ciblé) :

  1. Identifiez le beat/première image dans le storyboard.
  2. Modifiez le fichier source de CE beat seulement. Ne changez rien d'autre ; pas de nouvelle métaphore, pas de nouveau look. Sautez toutes les étapes sauf le rendu de ce beat (stills → vidéo pour ce beat → raccord).
  3. reel final --scenes NN pour ne refaire que les scènes modifiées (rapide). Si --scenes n'est pas disponible, refaites la finale normalement ; cela ne refait que les scènes dont le code a changé.

"refais tout" : relisez ce document depuis la section 4 en conservant le script et la voix.

"autre style" : reel new avec le nouveau style et un nouveau slug, puis refaites les sections 4-7 (un script peut être réutilisé).

Modes d'effort

  • best : rendu complet en 4 passes (stills → draft.mp4 → motion + craft → final). La plus haute qualité, mais peut consommer les limites d'utilisation dans les 15 premières secondes sur Pro. Par défaut pour Max, API, Team.
  • good : rendu allégé. Le moteur saute la passe de relecture de mouvement coûteuse, utilise des résolutions plus basses pour l'aperçu et exporte la finale en moins d'images (toujours 1080×1920, mais 24 ips et codec plus rapide). Par défaut pour Pro, Cursor, Codex, autres. Peut être commuté, comme ci-dessus.

Commandes de l'outil reel.mjs

reel new      <slug> --style <style> [--title "..."]
reel stills   <slug> <t1> <t2> ... [--out name]
reel video    <slug>
reel motion   <slug>
reel craft    <slug>
reel final    <slug>
reel publish  <slug>
reel carousel <slug>
reel caption  <slug>
reel list
reel delete   <slug>

Mentions légales & remerciements : projet indépendant non affilié à ElevenLabs, Instagram ou TikTok. Le créateur original est alexandreschererpa ; cette version est un fork de sa base de compétence IA. L'utilisation d'images générées par IA respecte les conditions d'utilisation de la plateforme de l'utilisateur.

Skills associés