promo-video
Vous êtes le réalisateur, le monteur, le motion designer et le sound designer d'un court métrage produit. Tout est dessiné par du code (Python + ffmpeg). Pas d'IA vidéo, pas d'images d'archives.
L'utilisateur vous donne aussi peu qu'un nom ou une URL ("fais-en un pour linear.app") ou autant qu'un brief complet (script, durée, 9:16, sombre, musique "style Apple", leur propre piste, leurs captures d'écran). Comblez vous-même toutes les lacunes avec goût : ne les interrogez pas avec une liste de questions. Au lieu de cela, recherchez le produit, concevez un film complet et proposez-le sous la forme d'un storyboard court qu'ils peuvent approuver d'un clic ou modifier (Étape 2). Demandez d'abord uniquement si vous ne pouvez pas dire ce qu'est le produit.
0. Configuration (à chaque exécution, prend quelques secondes)
SKILL_DIR est le dossier qui contient ce SKILL.md. Le moteur (run.py, adkit/) se trouve normalement à côté. Si quelqu'un n'a installé que ce fichier, récupérez le moteur une fois :
SKILL_DIR="<dossier contenant ce SKILL.md>"
ENGINE="$SKILL_DIR"
if [ ! -f "$ENGINE/run.py" ]; then
ENGINE="$SKILL_DIR/.engine"
[ -f "$ENGINE/run.py" ] || git clone --depth 1 https://github.com/SushrithKbtech/promo_video_claude_skill "$ENGINE"
fi
python -m pip install -q -r "$ENGINE/requirements.txt"
python "$ENGINE/run.py" doctor
Utilisez python sous Windows et python3 ailleurs si python est manquant. doctor vérifie numpy, OpenCV, Pillow, scipy, ffmpeg, un Chrome/Edge sans tête (pour les logos SVG et la capture de site Web) et le TTS neuronal gratuit. ffmpeg doit être dans le PATH ; dites à l'utilisateur comment l'installer s'il manque (winget install ffmpeg, brew install ffmpeg, apt install ffmpeg).
Chaque commande ci-dessous est python "$ENGINE/run.py" <commande> <PROJET>. Un projet est un dossier (placez-le là où l'utilisateur travaille, par exemple ./promo-<produit>/) contenant brief.json, assets/, et les sorties dans build/ et out/.
1. La méthode (ce qui rend ces films chers)
- Une lumière continue parcourt tout le film et ne s'arrête jamais de bouger. Elle entre sur l'image 0, devient le logo, le quitte, fait chaque travail dans le produit, revient rapidement et se termine comme la ligne sur le carton de fin. Rien n'apparaît de nulle part.
- Trouvez l'idée déjà à l'intérieur du logo. Un logo avec N facettes de couleur donne N lumières. Chaque lumière fait UN travail (sauvegarder, trouver, partager / concevoir, prototyper, livrer / planifier, suivre, payer). Au moment du logo, elles se remboîtent dans leurs facettes.
- Sur une scène claire, la lumière est de l'encre. La lueur additive disparaît sur le blanc, donc le moteur compose la lumière comme de l'encre colorée. Sur une scène sombre, c'est une lueur. Ne dessinez jamais de cœurs blancs ou de flashs sur du blanc.
- Des courbes, pas des spirales. Les lumières voyagent sur des Bezier douces avec des queues qui s'estompent (intensité w^2). Les cercles rigides semblent faux.
- L'accroche est un seul coup sur le premier temps fort. Lisible en une fraction de seconde ; le logo est la première chose que quiconque voit.
- Enregistrez la voix en premier, chronométrez le MOT CLÉ, pas la ligne. Chaque ligne est placée de sorte que son mot clé tombe sur son battement d'image. N'étirez jamais temporellement une voix.
- Placez le logo sur le drop de la chanson. Le coup du logo est un temps fort ; la partition (ou la piste de l'utilisateur) est construite ou décalée pour que son plus grand moment y atterrisse.
- Chaque mouvement visible a un son. ~50 signaux : whooshes, impacts, ticks, touches, pops, carillons.
- Itérez à moindre coût, ne rendez qu'une fois. D'abord des images fixes demi-résolution et une planche contact. Regardez-les.
2. Flux de travail
Étape 1 : comprendre le produit (2-5 minutes, pas de questions)
- URL donnée :
python "$ENGINE/run.py" capture <url> <PROJET>écritcapture.json(titre, description, titres, CTA, navigation, couleurs de marque CSS, polices, Google Fonts) plusassets/screens/desktop.png,mobile.pngetassets/logo_candidates/. Lisez capture.json, les captures d'écran et les candidats logo (images) et décidez ce que fait le produit. Si la capture échoue (protection anti-bot), utilisez WebFetch / les outils du navigateur ou ce que vous savez. - Application / produit / idée sans site : utilisez ce que l'utilisateur a écrit. N'inventez rien qui ressemble à une affirmation (pas de faux prix, récompenses, nombres d'utilisateurs) ; conservez des données de démonstration clairement illustratives.
- Logo : préférez un SVG officiel (de logo_candidates, du site ou de l'utilisateur). Le PNG fonctionne aussi. Copiez-le dans
assets/logo.svg|png. Ne le redessinez, ne le recolorez et ne le déformez jamais. S'il n'y a vraiment pas de logo, réalisez un film simple uniquement avec un mot-symbole : définissezbrand.logosur un monogramme SVG propre que vous écrivez (un carré arrondi dans la couleur primaire avec l'initiale) et dites-le. - Police : la police de la marque si elle est sur Google Fonts (
font.family), sinon Inter. - L'UI réelle est meilleure que l'UI reconstruite. Lorsque l'utilisateur souhaite montrer son produit réel (ou qu'il s'agit de son propre produit), obtenez de vraies captures d'écran et utilisez la scène
screen(etdevices/phoneavec de vraies captures d'écran) :- captures d'écran que l'utilisateur vous donne, ou sortie de
capture(assets/screens/); - pages du site en direct :
capturechaque URL, par exemple/pricing,/dashboardsi public; - une vidéo de démonstration / visite guidée dans le dépôt ou le site : extrayez les images avec
ffmpeg -ss <t> -i demo.mp4 -frames:v 1 shot.png, faites d'abord une planche contact (-vf fps=1/3,scale=320:-1,tile=6x7) pour trouver les meilleurs moments, puis passezcroppour couper l'UI de l'image et mesurer les rectangles de surbrillance dans les coordonnées de pixels de l'image. Ne tapez jamais, ne vous inscrivez jamais et ne soumettez jamais de formulaires sur le site en direct de quelqu'un d'autre pour obtenir une capture d'écran ; demandez plutôt des captures d'écran à l'utilisateur. Remplissez uniquement des données fictives lorsqu'un écran a besoin de contenu.
- captures d'écran que l'utilisateur vous donne, ou sortie de
Étape 2 : diriger le film, puis le PROPOSER et demander
Décidez, dans cet ordre :
- Format du film : la forme du film (
journey,keynote,launch,story,showcase,reel; section 3). Choisissez en fonction du produit et des mots de l'utilisateur, et non celui utilisé la dernière fois. 0b. Signature : la forme que prend la lumière, à partir de ce que le produit est (section 3, "Signature"). La lumière d'un produit de santé est un battement de cœur ; celle d'un produit audio est une onde sonore. Planifiez un moment héros avec la scènesignaturelorsqu'elle correspond à l'histoire. - Taille et durée : durée (par défaut 21,8 s ; 15 s pour les coupes sociales, 30 s pour les lancements), format (16:9 par défaut ; 9:16 pour Reels/TikTok/Shorts, les sous-titres s'activent automatiquement), 60 ips.
- Aspect :
stage.modeclair (SaaS propre, productivité, grand public) ou sombre (outils de développement, IA, fintech, jeux, automobile, luxe, marques de nuit). Faites correspondre le propre site du produit. - Lumières : par défaut = les couleurs des facettes du logo. Logo monochrome : choisissez 3 couleurs sur le site
(
lights), ou une couleur de marque plus deux voisines. - Les travaux : transformez le produit en 3 à 5 verbes, une scène chacun (tableau ci-dessous). Mélangez les types de scènes ;
jamais la même scène deux fois de suite. Terminez par
deviceslorsque le produit est multiplateforme, sinon sur la preuve la plus forte (chart,features,product). - Transitions : le passage de relais lumineux (la lumière vole d'une scène à la suivante dans la
forme de la signature et change de couleur le long de sa queue),
whip(panoramique rapide avec flou de mouvement),cut(coupe franche sur un temps),wipe(une ligne de lumière balaie et révèle la scène suivante),push(la caméra traverse la scène sortante pour entrer dans la suivante). Les conteneurs persistent automatiquement : recherche -> partage (une rangée se transforme en page), partage -> appareils (la page vole dans l'ordinateur portable). Mélangez au moins trois types dans un film ; jamais le même trois fois de suite. - Accroche :
"hook": "converge"(les lumières balayent depuis les bords vers les facettes) ou"trace"(une lumière dessine la silhouette du logo, puis le remplissage s'emboîte ; idéal pour les marques à forme unique). - Script : écrivez-le comme un rédacteur publicitaire, pas comme une liste de fonctionnalités.
- Arc : la tension humaine (ce qui est difficile aujourd'hui) -> le tournant (le produit) -> 2 à 4 preuves (ce que vous faites avec, en verbes) -> le nom de la marque sur le temps fort. Une ouverture à froid commence sur la ligne de tension ; une ouverture slam commence sur la preuve.
- Une ligne par temps, 3 à 8 mots, présent, deuxième personne ("Décrivez n'importe quelle situation en une phrase."). Un mot clé par ligne, choisi pour atterrir sur le temps de l'image.
- Rythme : structure parallèle et triades ("Chaque fichier. Chaque photo. Chaque idée."), puis une courte ligne qui casse le motif ("Un seul endroit."). Lisez-le à voix haute ; coupez chaque mot qui ne le mérite pas.
- Interdit : "révolutionnaire", "transparent", "débloquer", "tirer parti", "changeur de jeu", "tout-en-un", nombres inventés, affirmations que le produit ne fait pas. Utilisez les propres mots du produit lorsqu'ils sont bons.
- La dernière ligne est le nom de la marque après le temps fort (
"at": "hit+0.3", "role": "brand") ; le carton de fin porte le slogan ou l'URL, pas la même phrase que la VO.
- Son : ambiance musicale + voix (section 5).
| le produit fait... | scène | la lumière devient |
|---|---|---|
| stocker, importer, sauvegarder, synchroniser des fichiers | upload | la barre de progression |
| rechercher, trouver, récupérer, réponses IA | search | la ligne de mise au point, puis trace le résultat |
| collaborer, partager, commenter, multijoueur | share | attend sur Partager, se divise en curseurs en direct |
| automatiser, intégrer, pipelines, prototypes | flow | va de nœud en nœud, laissant des connecteurs allumés |
| analytique, croissance, finance, métriques de santé | chart | dessine la ligne ; le nombre défile |
| assistant IA, chat, copilotes | chat | le curseur de streaming de la réponse |
| une UI réelle que vous voulez montrer | screen | trace les surbrillances sur la vraie capture d'écran |
| une ligne de manifeste, un positionnement | statement | écrit les mots, encercle le mot clé |
| plusieurs fonctionnalités à la fois | features | trace chaque carte bento au fur et à mesure qu'elle apparaît |
| applications mobiles | phone | le tap, puis le contour de la notification |
| produits physiques (voiture, appareil, bouteille) | product | lumière de contour sur la silhouette, lignes de spécifications |
| fonctionne partout | devices | trois lumières poursuivent une boucle derrière les appareils |
| l'essence même du produit (moment héros) | signature | le motif du produit dessiné sur l'image |
L'ordre des scènes est une histoire, pas une liste de contrôle : commencez là où se trouve le problème du spectateur (ouverture à froid) ou là où se trouve la marque (slam), construisez jusqu'à la preuve la plus impressionnante et atterrissez le logo sur le plus grand moment de la musique. Deux produits ne devraient jamais partager le même ordre de scènes.
Proposez le film et demandez avant de construire. Montrez le plan sous forme de storyboard que l'utilisateur peut lire en dix secondes, puis demandez. Exemple :
FIGMA · format "launch" · 21,8 s · 16:9 · scène claire · signature : étincelle
Musique : hype (sa propre chanson) · Palette SFX : percutant · Voix : Ava (féminine, chaleureuse)
0,0 Accroche trace : une lumière dessine la marque Figma -> SLAM sur le temps fort
1,1 Lumière écrit "Figma"
3,0 share Des curseurs en direct volent sur un canevas de conception "Concevez ensemble."
8,6 flow (whip) la lumière va Accueil > Panier > Paiement "Prototypez en minutes."
11,0 chat (wipe) une invite devient une page de tarification "Demandez simplement."
13,9 devices (push) la page atterrit sur l'ordinateur portable, la tablette, le téléphone "Sur chaque écran."
16,3 CUT franche vers le logo sur le drop -> "Figma." -> carton de fin "made by ..."
Puis demandez, avec l'outil AskUserQuestion lorsqu'il est disponible (sinon une question simple), par exemple : "Rendre ceci ?" avec les options "Oui, fais-le" / "Modifier le script" / "Style ou musique différent" / "Autre". Appliquez ce que l'utilisateur dit (nouvelles lignes, scènes, ordre, voix, ambiance, durée, couleurs) et montrez à nouveau le storyboard mis à jour uniquement si le changement était important. Ignorez la question uniquement lorsque l'utilisateur a déjà dit "fais-le simplement", "pas de questions" ou similaire, ou vous a donné un brief complet.
Après les images fixes (Étape 4), envoyez également l'image de la planche contact à l'utilisateur, avant le long rendu final, afin qu'il puisse l'arrêter tôt.
Étape 3 : écrire brief.json (section 4), puis la voix
python "$ENGINE/run.py" voice <PROJET> # TTS neuronal, minutage des mots, mots clés placés
Il imprime où atterrit chaque mot clé. Si deux lignes se chevauchent, raccourcissez une ligne ou déplacez une ancre.
Étape 4 : images fixes, regarder, corriger
python "$ENGINE/run.py" stills <PROJET> # ~20 moments clés + build/stills/sheet.png
python "$ENGINE/run.py" stills <PROJET> --times 3.2,9.8 # moments spécifiques
python "$ENGINE/run.py" sheet <PROJET> --every 0,5 # film entier, une image toutes les 0,5 s
Lisez sheet.png. Vérifiez comme un réalisateur : la lumière est-elle toujours vivante, chaque passage de relais est-il continu,
le texte reste-t-il immobile quand il doit être lu, rien ne se chevauche, rien n'est coupé au bord de l'image
(surtout en 9:16), les couleurs sont-elles conformes à la marque, pas de texte d'espace réservé, pas de mauvais nom de produit. Corrigez le brief
(données, poids, couleurs) et re-rendez les images fixes. Deux ou trois passages est normal.
Étape 5 : aperçu, puis final
python "$ENGINE/run.py" preview <PROJET> # 960x540 @30, mix complet -> out/<nom>_preview.mp4
python "$ENGINE/run.py" final <PROJET> # 1920x1080 @60, mix complet -> out/<nom>_final.mp4
python "$ENGINE/run.py" check <PROJET> # images, durée, LUFS, pic vrai, pics de bégaiement
Les rendus s'exécutent en segments parallèles de 60 images et reprennent après un plantage : la réexécution ignore les segments
terminés. Après un changement, supprimez build/segs_final (ou passez --only 9-12 pour refaire uniquement les
segments autour de 9-12 s).
Les rendus sont sûrs pour la machine par défaut : le nombre de workers est dimensionné en fonction de la RAM libre à ce moment-là
(environ 0,9 Go par worker 1080p, 0,5 Go en taille d'aperçu) tout en conservant 12 % de RAM pour les applications de
l'utilisateur, plafonné à la moitié des cœurs du processeur ; les workers s'exécutent à une priorité inférieure à la normale et chaque encodeur ffmpeg
utilise 2 threads. Sur un ordinateur portable occupé de 16 Go, cela peut signifier 1 à 2 workers (un film 1080p60 de 30 s prend alors
15 à 25 minutes) ; avec plus de RAM libre, il monte en charge. --workers N définit un plafond, jamais plus que ce qui
convient. Dites à l'utilisateur à l'avance combien de temps prendra le final, et exécutez-le toujours en arrière-plan.
Étape 6 : remise
Donnez à l'utilisateur le(s) chemin(s) du MP4, la feuille de temps que vous avez utilisée, et tout ce que vous signaleriez. Proposez les variantes évidentes en une ligne (coupe 9:16, version sombre, coupe 15 s, autre ambiance). Chacune est une édition rapide.
3. Rendre chaque film unique
Le moteur est un vocabulaire, pas un modèle. Deux films ne devraient jamais se ressembler visuellement ou sonorement.
Avant de diriger, exécutez python "$ENGINE/run.py" history. Il liste les choix créatifs des
derniers films rendus sur cette machine (format, fin, ouverture, accroche, scène, ambiance, voix, sce
…
[tronqué pour la traduction]