Communitygithub.com

ai-video

Créez des vidéos courtes verticales (TikTok, Reels, YouTube Shorts, 30 à 90 s) dans un style animé blanc et épuré à partir d'un seul fichier video.json, en utilisant très peu de tokens. Trois modes disponibles.

Qu'est-ce que ai-video ?

Ce skill permet de générer des vidéos verticales courtes et animées à partir d’un simple fichier JSON, sans aucune compétence en montage ou en animation. Il supporte trois modes : « Generated » pour une vidéo entièrement générée avec voix neuronale gratuite et motion design ; « Images » pour intégrer des captures d’écran, photos ou pages web dans un iPhone factice, un navigateur ou en plein écran ; « Filmed » pour ajouter des légendes et scènes animées par-dessus une séquence vidéo existante. Le skill rédige le script, synthétise la voix, synchronise les sous-titres mot à mot, anime chaque scène, ajoute une musique de fond et des effets sonores, vérifie qu’aucun texte ne dépasse de l'écran, et rend le fichier MP4 final. Il fonctionne en anglais, français et de nombreuses autres langues, et est conçu pour produire rapidement et à moindre coût des vidéos courtes, des explications animées, des vidéos sans visage, ou des lots de vidéos, même si l'utilisateur n'utilise pas le mot « skill ».

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/danbaruka/claude-code-ai-video/tree/main/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

Que fait ai-video ?

Une vidéo est un fichier video.json : les phrases que la voix prononce, et, pour chaque idée forte, une scène choisie dans un catalogue de 16 types. Le script scripts/make.mjs fait tout le reste. N'écrivez jamais de HTML, CSS ou code d'animation à la main. La seule exception est le moment unique qui mérite un visuel personnalisé (type html).

idée ─► script (phrases) ─► video.json ─► make.mjs ─► planche contact (relecture) ─► --rendu ─► MP4 + couverture + texte de publication

Les clés JSON sont en français (phrases, texte, scene, voix, marque…), tout comme les types de scènes (titre, chiffre, liste…). Écrivez-les exactement comme indiqué dans ce skill. Le texte que la voix dit peut être dans n'importe quelle langue.

Avant la première vidéo (une fois)

sh <skill>/scripts/install.sh      # vérifie node ≥ 18, ffmpeg, python3 ; installe edge-tts dans <skill>/.venv

<skill> est le dossier de ce fichier. Le premier lancement télécharge HyperFrames (via npx), GSAP et les logos. Ensuite, tout est mis en cache.

Le workflow

  1. Le sujet, en une phrase. Si l'utilisateur n'en donne pas, proposez-en 3 et laissez-le choisir.
  2. Le script. Lisez references/writing.md : accroches qui marchent, structure, longueur.
    • Visez 9 à 14 phrases et 110 à 170 mots.
    • Comptez environ 2,7 mots par seconde, plus 0,35 s entre les phrases : 130 mots font environ 50 s.
  3. Le fichier. Écrivez videos/<id>.json dans le projet de l'utilisateur. Le format est ci-dessous, et le catalogue complet est dans references/scenes.md. Placez les fichiers médias dans videos/medias/.
  4. Construction. node <skill>/scripts/make.mjs videos/<id>.json crée la voix, la page, la vérification et la planche contact, sans rendu (environ 1 min).
  5. Relecture. Ouvrez une seule image : videos/rendus/<id>-planche.jpg.
    • Elle montre l'image 1, puis chaque scène à sa fin (une fois que tous ses éléments sont arrivés), puis la carte de fin.
    • Corrigez le JSON et relancez la commande. La voix est mise en cache : seules les phrases modifiées sont refaites.
  6. Rendu. Ajoutez --rendu. Cela prend environ 1 min pour 45 s de vidéo. Vous obtenez :
    • videos/rendus/<id>.mp4 ;
    • -couverture.jpg, la cover, qui est l'image 1 ;
    • <id>.txt, avec le titre, la légende, les hashtags et le commentaire épinglé.
  7. Publication. Lisez references/publishing.md pour les heures de publication par pays du public, la cadence de publication et les légendes. Ne publiez jamais rien sans l'accord explicite de l'utilisateur.

Économiser les tokens : les règles importantes

Ce skill est économique car le modèle écrit 60 à 120 lignes de JSON par vidéo, au lieu de 250 à 400 lignes de HTML et de code d'animation. Lors d'un test en aveugle, un agent vierge a produit une vidéo de 60 s avec environ 65 000 tokens, en incluant la lecture de ce skill. Pour rester ainsi :

  • N'ouvrez pas make.mjs, lib/*.mjs, style.css ou le index.html généré. Le catalogue des scènes suffit. Ouvrez le code seulement si une commande échoue et que son message n'est pas suffisant.

  • Lisez une référence seulement pour son étape :

    ÉtapeRéférence
    écriturewriting.md
    choix d'une scènescenes.md
    voix, images ou séquencesmodes.md
    publicationpublishing.md

    Ne relisez jamais une référence déjà lue dans la conversation.

  • Une seule planche contact, pas de captures d'écran. Pour vérifier une vidéo, regardez <id>-planche.jpg une seule fois. Ne prenez jamais une image par seconde, et n'inspectez jamais le MP4 image par image.

  • Faites confiance à la vérification. La commande exécute la vérification HyperFrames (texte débordant, texte caché, erreurs d'exécution) et la résume en quelques lignes.

    • "aucun débordement, aucune erreur" signifie que c'est propre.
    • Une ligne ✗ doit toujours être corrigée.
    • Une ligne ⚠ vaut la peine d'être lue : corrigez-la si elle affecte le texte.
  • Les lots prennent une seule commande. Écrivez d'abord les N fichiers. Lancez ensuite node make.mjs videos/a.json videos/b.json … --rendu en arrière-plan, et attendez la fin sans surveiller sa sortie.

  • Modifiez sur place. Pour corriger quelque chose, changez uniquement la phrase ou la scène défectueuse dans le JSON. Ne réécrivez jamais tout le fichier.

  • Pas de recherche d'actifs. Les logos (logo:bitcoin, logo:metamask…) et 45 icônes (icone:cle…) sont intégrés. Recherchez une image sur le Web seulement si l'utilisateur le demande.

Le format video.json

{
  "id": "wallet-key",
  "titre": "Your crypto is not in your wallet",
  "langue": "en",
  "voix": { "nom": "en-US-AndrewMultilingualNeural", "debit": "+4%" },
  "marque": { "nom": "BDan", "visuel": "icone:etincelle" },
  "prononcer": { "USDT": "U S D T" },
  "phrases": [
    { "texte": "Your crypto is not in your *wallet*.",
      "scene": { "type": "titre", "lignes": ["Your crypto", "is not in", "your *wallet*"], "visuel": "icone:portefeuille" } },
    { "texte": "The key fits in *twelve words*.",
      "scene": { "type": "chiffre", "valeur": "12", "apres": "words", "au": "twelve", "couleur": "accent" } },
    { "texte": "It's called the recovery phrase." }
  ],
  "fin": { "texte": "I'm BDan.", "sous": "Let's talk new tech.", "audio": "medias/signature.wav" },
  "publication": { "titre": "…", "legende": "…", "hashtags": ["crypto"], "commentaire": "…" }
}
  • phrases[].texte : ce que la voix dit, mot pour mot.

    • *mot* marque le mot fort : il s'affiche en italique coloré, pulse lorsqu'il est prononcé, et la caméra fait un zoom avant dessus.
    • Utilisez-en un par phrase au maximum.
  • scene : démarre une nouvelle scène.

    • Une phrase sans scène prolonge la précédente, ce qui laisse le temps de lire.
    • En mode filmé, une phrase sans scène montre le visage à la place ; dans ce cas, "scene": "suite" prolonge la scène.
  • au : l'élément apparaît sur ce mot de la phrase, par exemple "au": "Ledger".

    • Sans au, les éléments se répartissent automatiquement : un par phrase lorsqu'il y a autant d'éléments que de phrases, sinon à intervalles réguliers.
  • Visuels, partout où une scène en prend un : "logo:binance", "icone:cadenas", "emoji:🔑", ou un chemin comme "medias/screenshot.png" (les fichiers .svg sont intégrés en ligne).

  • voix : la voix. nom est le nom de la voix, debit est la vitesse. fichier pointe vers votre propre enregistrement.

  • langue : "fr" par défaut. Mettez "en" pour l'anglais, avec une voix anglaise.

  • marque : la petite pastille de marque en bas à gauche. nom est le nom de la marque, visuel son logo.

  • prononcer : formes prononcées. Elles modifient la façon dont la voix dit un mot, jamais le texte affiché à l'écran.

  • fin : la carte de fin, avec le logo marque, texte et sous (un sous-titre).

    • audio joue une signature enregistrée sur la carte.
    • Sans audio, la carte reste 2 s, en silence.
  • titre : le nom de la vidéo dans les fichiers. Le titre YouTube va dans publication.

  • Optionnel :

    CléEffet
    musiqueun fichier musical, atténué sous la voix
    couleurscouleurs, par exemple {"accent": "#2f6bff", "accent2": "#5fa3ff"}
    sons: falsepas de "whoosh" sur les transitions
    blancsilence entre les phrases, 0,35 s par défaut
    pausesilence supplémentaire après une phrase
    sousTitres: falsepas de sous-titres
  • La phrase 1 a toujours une scène. L'image 1 est la couverture que les gens voient dans leurs fils d'actualité, utilisez donc un titre court et accrocheur.

Les 16 scènes (paramètres et exemples dans references/scenes.md) :

Pour montrer…type
l'accroche, une phrase percutantetitre
un chiffre (prix, record, pourcentage)chiffre
2 à 6 points, outils ou astucesliste
une méthode en 2 à 5 étapesetapes
A contre B, avant/après, mythe/réalitéduel
marques, pièces, applicationslogos
une capture d'écran ou un enregistrement d'écran d'applitelephone
un site web, une pagenavigateur
une photo, en carte ou plein écranimage
une conversation (IA, support, arnaque)chat
un danger, une arnaque, une bonne nouvellealerte
une tendance, une comparaison en chiffresgraphique
une commande, une installationterminal
la citation de quelqu'uncitation
un concept et son explicationcarte
le moment unique qui mérite un visuel inventéhtml

Variez les scènes.

  • Donnez à chaque idée forte sa propre scène : 6 à 10 scènes par vidéo.
  • N'utilisez jamais deux fois le même type de suite, et changez l'ordre des types d'une vidéo à l'autre.
  • Un style fixe ne doit pas devenir un modèle. Si trois vidéos d'affilée partagent la même séquence de scènes, les spectateurs décrochent.

Les trois modes (détails dans references/modes.md)

  • Generated : le JSON est tout ce dont vous avez besoin.
    • La voix est edge-tts : gratuite, sans clé, multilingue.
    • Définissez voix.nom pour changer la voix ou l'accent.
  • Images : vos captures d'écran et photos vont dans telephone, navigateur ou image, depuis videos/medias/.
    • Une voix enregistrée ou clonée va dans "voix": { "fichier": "medias/voice.wav" }.
    • Elle est transcrite localement (whisper) et synchronisée avec vos phrases.
  • Filmed : définissez "rush": "medias/clip.mp4". L'audio du clip est la voix.
    • Les phrases sans scène montrent le visage, avec des sous-titres en bas.
    • Une scène couvre l'écran pendant la durée de son idée.
    • Écrivez les phrases à partir de la transcription : le skill les synchronise mot à mot.

Avant le rendu : la liste de vérification

  • La phrase 1 énonce clairement le sujet, et son titre se lit en moins d'une seconde.
  • Chaque mot technique est expliqué dans la même phrase ou la suivante.
  • Il y a au plus un mot fort par phrase, et 6 à 10 scènes de types variés.
  • Les chiffres proviennent d'une source réelle et vérifiée. Une scène chiffre porte source lorsque le chiffre vient de quelqu'un d'autre.
  • La planche contact est relue, la vérification est propre, et aucun avertissement "mot introuvable" n'est laissé.
  • La fin donne une raison de rester (ce qui vient ensuite, une phrase à retenir), pas une question vague.
  • Les marques sont montrées pour en parler, jamais pour suggérer un partenariat.
  • Les conversations fictives portent "mention": "Exemple fictif", ou "Example" en anglais.

En cas de problème

MessageQue faire
voix : … edge_ttsexécutez sh <skill>/scripts/install.sh
mot « x » introuvableun au doit répéter un mot de sa phrase de scène, tel qu'écrit
logo « x » introuvabledonnez un fichier ("medias/x.svg"), ou essayez le nom de la marque sans espaces
le texte déborderaccourcissez le texte, ou passez à une scène plus large (carte ou liste plutôt que duel) ; ne touchez pas au CSS
un mot est mal prononcéajoutez-le à prononcer, par exemple {"Ledger": "Ledjer"}

Skills associés