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
- Le sujet, en une phrase. Si l'utilisateur n'en donne pas, proposez-en 3 et laissez-le choisir.
- 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.
- Le fichier. Écrivez
videos/<id>.jsondans le projet de l'utilisateur. Le format est ci-dessous, et le catalogue complet est dansreferences/scenes.md. Placez les fichiers médias dansvideos/medias/. - Construction.
node <skill>/scripts/make.mjs videos/<id>.jsoncrée la voix, la page, la vérification et la planche contact, sans rendu (environ 1 min). - 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.
- 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é.
- Publication. Lisez
references/publishing.mdpour 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.cssou leindex.htmlgé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 :
Étape Référence écriture writing.mdchoix d'une scène scenes.mdvoix, images ou séquences modes.mdpublication publishing.mdNe 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.jpgune 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 … --renduen 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.
- Sans
-
Visuels, partout où une scène en prend un :
"logo:binance","icone:cadenas","emoji:🔑", ou un chemin comme"medias/screenshot.png"(les fichiers.svgsont intégrés en ligne). -
voix: la voix.nomest le nom de la voix,debitest la vitesse.fichierpointe 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.nomest le nom de la marque,visuelson 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 logomarque,texteetsous(un sous-titre).audiojoue 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 danspublication. -
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
titrecourt et accrocheur.
Les 16 scènes (paramètres et exemples dans references/scenes.md) :
| Pour montrer… | type |
|---|---|
| l'accroche, une phrase percutante | titre |
| un chiffre (prix, record, pourcentage) | chiffre |
| 2 à 6 points, outils ou astuces | liste |
| une méthode en 2 à 5 étapes | etapes |
| A contre B, avant/après, mythe/réalité | duel |
| marques, pièces, applications | logos |
| une capture d'écran ou un enregistrement d'écran d'appli | telephone |
| un site web, une page | navigateur |
| une photo, en carte ou plein écran | image |
| une conversation (IA, support, arnaque) | chat |
| un danger, une arnaque, une bonne nouvelle | alerte |
| une tendance, une comparaison en chiffres | graphique |
| une commande, une installation | terminal |
| la citation de quelqu'un | citation |
| un concept et son explication | carte |
| 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.nompour changer la voix ou l'accent.
- Images : vos captures d'écran et photos vont dans
telephone,navigateurouimage, depuisvideos/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.
- Une voix enregistrée ou clonée va dans
- 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
chiffreportesourcelorsque 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
| Message | Que faire |
|---|---|
voix : … edge_tts | exécutez sh <skill>/scripts/install.sh |
mot « x » introuvable | un au doit répéter un mot de sa phrase de scène, tel qu'écrit |
logo « x » introuvable | donnez un fichier ("medias/x.svg"), ou essayez le nom de la marque sans espaces |
| le texte déborde | raccourcissez 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"} |