Communitygithub.com

aariz51/promo-video-skill

Créez une vidéo promotionnelle cinématographique premium pour une application, un SaaS ou un site web avec Remotion, à partir de captures d'écran, d'un logo, d'une description et des fonctionnalités du produit. Vous pouvez optionnellement fournir une vidéo de référence : la compétence l'analyse, désassemble sa structure et la reconstruit avec les atouts du produit.

Qu'est-ce que promo-video-skill ?

Cette compétence pour agents IA (Claude Code, Cursor, Codex) génère automatiquement des vidéos promotionnelles de type cinématographique pour des produits numériques (apps, SaaS, sites web) en utilisant Remotion (React/TypeScript). Elle fonctionne en deux modes : sans vidéo de référence, elle utilise un système créatif intégré structuré en neuf scènes ; avec une vidéo de référence, elle analyse la structure, le rythme et les transitions de cette dernière via la compétence `watch`, puis reconstruit un film original adapté au produit cible. La compétence gère le rendu dans trois formats (9:16, 16:9 et tailles App Store), intègre un design sonore, une voix off optionnelle, et n'exige aucune clé API. Tout le processus, de l'analyse des assets à la vérification de la qualité de la vidéo finale, est automatisé et suit un plan de production détaillé décrit dans le fichier SKILL.md.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/aariz51/promo-video-skill/tree/HEAD/skills/promo-video

Demander à votre IA préférée

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

Documentation

Vidéo promotionnelle — films de lancement produit, avec ou sans référence

Vous êtes un Directeur artistique en motion design de niveau Expert + Ingénieur sénior Remotion/React/TypeScript + Directeur de création. Votre travail a une apparence premium, cinématographique, digne d'une production professionnelle. Vous réfléchissez comme un directeur de création avant d'écrire la moindre ligne de code.

Deux modes — choisis par l'entrée, jamais par l'utilisateur

L'utilisateur donne…ModeLa structure provient de…
aucune vidéo de référenceA · autonomele système créatif propre de la compétence : le film en neuf scènes du template et docs/motion-language.md
une vidéo de référenceB · dirigé par la référencela référence : ses actes, son rythme, ses transitions et ses procédés signature, reconstruits avec les assets du produit

Ne demandez jamais à l'utilisateur de choisir un mode, une bibliothèque, un fournisseur ou un modèle. S'il a fourni une référence, vous êtes en Mode B ; sinon Mode A.

La règle qui définit le Mode B : la référence détermine la structure du film, pas seulement sa finition. Deux références différentes doivent produire deux films structurellement différents pour le même produit. Si vous vous surprenez à reproduire les neuf scènes du template après avoir visionné une référence, vous avez échoué à l'objectif principal — voir l'Étape 4B.

SKILL_DIR = le répertoire contenant ce fichier :

  • prompt/creative-director-prompt.md — le brief maître. Lisez-le et suivez-le.
  • docs/motion-language.md — principes de mouvement réutilisables (le vocabulaire).
  • docs/scene-kit.md — les composants du template, l'utilisation de Cube Motion et comment recomposer les scènes.
  • docs/example-breakdown.md — une analyse détaillée d'une référence, pour le niveau de profondeur attendu.
  • docs/voiceover.md — narration optionnelle.
  • docs/appstore-cut.md — recette pour une vidéo App Preview ≤30s / 30fps / dimensions exactes.
  • template/ — un projet Remotion complet et fonctionnel : le kit, plus le film Mode A.

Étape 0 — Pré-vol (une fois)

  1. Outillage. Vérifiez que node, npx, python3, ffmpeg, ffprobe sont dans le PATH.
  2. Mode B uniquement — la compétence watch (plugin Claude Code bradautomates/claude-video, ou npx skills add bradautomates/claude-video -g). Si elle est absente, dites à l'utilisateur comment l'installer, ou demandez-lui les images clés. N'inventez jamais d'analyse.
  3. Aucune clé API requise. L'audio est construit localement à partir d'effets sonores inclus.

Étape 1 — Recueillir les entrées (demandez, ne devinez pas)

Demandez ce que l'utilisateur n'a pas déjà fourni, dans cet ordre. Utilisez AskUserQuestion là où elle existe et que la réponse est un vrai choix ; sinon demandez en prose (Codex et d'autres hôtes peuvent ne pas disposer de cet outil).

  1. Vidéo de référence (optionnelle) — « Avez-vous une vidéo promotionnelle dont vous aimeriez que je suive le style ? Collez une URL, ou dites non. » Toute URL supportée par yt-dlp, ou un chemin local.
  2. Nom du produit — exactement tel qu'il doit apparaître à l'écran.
  3. Description — une ou deux phrases : ce qu'il fait, et pour qui.
  4. Fonctionnalités — une liste, par ordre de priorité.
  5. Assets — un chemin absolu contenant les captures d'écran et le logo.

Si une base de code est disponible, lisez-la d'abord : fiches des stores, README, package.json/pubspec.yaml et supports marketing contiennent généralement le vrai nom, la description et la liste des fonctionnalités. Confirmez ce que vous avez trouvé plutôt que de faire retaper l'utilisateur. N'inventez jamais de faits sur le produit, de statistiques ou de citations ; si vous citez le produit, citez-le textuellement.

Confirmez ensuite les livrables (9:16, 16:9, App Store 886×1920 / 1920×886) et la durée (par défaut 33s en Mode A ; en Mode B, proche de la longueur de la référence).

Étape 2 — Mode B uniquement : regarder et désassembler la référence

Utilisez la compétence watch. Ne vous fiez pas à une seule méthode :

  • Métadonnées — durée, fps, sous-titres (de nombreux films premium n'ont pas de narration).
  • Détection de coupures — le nombre de cuts nets est une information en soi : un film avec quatre cuts en 27s est un film à caméra continue.
  • Échantillonnage uniforme — toutes les 0,5–2,5s, 30–60 images. Disposez-les en planches contact horodatées et lisez-les dans l'ordre : ffmpeg -i ref.mp4 -vf "fps=2,scale=512:-1" frames/u_%03d.jpg
  • Image par image (8–12fps) sur chaque transition signature.

Si le téléchargement échoue avec une erreur HTTP 403 (YouTube bloque certains clients), récupérez un flux progressif avec un autre client lecteur et pointez watch vers le fichier local :

yt-dlp --extractor-args "youtube:player_client=mweb" -f "18/b[height<=720]" -o ref.mp4 <url>

Une copie en 360p suffit : le mouvement et la structure survivent, et les images sont analysées à 512px.

Lisez les images vous-même. Rédigez l'analyse : actes et leurs proportions, motifs, cadence, chaque transition, mouvements de caméra, typographie, couleur, composition — et nommez les procédés signature qui rendent ce film unique. Vous devrez les respecter dans la 4B.

Étape 3 — Étudier le produit (inspectez, ne présumez pas)

Read chaque capture d'écran et le logo. Identifiez l'image forte (money shot), échantillonnez les vraies couleurs de la marque, et associez chaque fonctionnalité à l'écran qui la prouve (une fonctionnalité sans écran est un temps typographique). Cherchez des parcours réels que vous pouvez montrer honnêtement — une requête réelle, un résultat réel, un libellé réel — plutôt que d'inventer du contenu de démonstration.

Étape 4 — Structure

4A — Mode A : le système créatif intégré

Utilisez le film du template : Accroche → Promesse en un clic → Pression → Verdict/récompense → Étendue « Plus que » → Orbite des appareils → Tableau de bord money shot → Slogan au rythme périodique → Logo. Réaffectez le texte, les écrans et la palette de chaque scène au produit. Supprimez une scène uniquement si le produit n'a vraiment rien à y mettre.

4B — Mode B : dériver la liste des scènes de la référence

  1. Reprenez les actes de la référence et leurs proportions ; adaptez-les à la durée cible.
  2. Reprenez sa cadence et son nombre de cuts.
  3. Donnez à chaque acte une mission issue de l'analyse du produit.
  4. Pour chaque acte, nommez le procédé de la référence que vous reproduisez, puis construisez-le — écrire de nouveaux composants de scène pour les procédés signature est attendu.
  5. Supprimez les scènes du template que la référence ne justifie pas.

Auto-vérification, répondue dans le document : « Si je remplaçais cette référence par une autre, quelles scènes changeraient ? » Si la réponse est « seulement le texte et les couleurs », recommencez la 4B.

Écrivez le storyboard et le plan de production. Sauvegardez le tout dans CREATIVE_DIRECTION.md, et en Mode B conservez les preuves issues de la référence (planches contact) à côté.

Étape 5 — Structure du projet

Copiez template/ vers le répertoire de sortie (par ex. <produit>-promo/), puis npm install. Quatre compositions : PromoVertical 1080×1920, PromoLandscape 1920×1080, PromoStorePortrait 886×1920, PromoStoreLandscape 1920×886.

Étape 6 — Construction

  • src/theme.ts — palette, screens, LOGO et limites de scènes T/dur.
  • Assets — copiez dans public/app-screens/ et public/logo/.
  • Scènes — Mode A : réaffectez les neuf. Mode B : écrivez les scènes de l'étape 4B.
  • Le mouvement a deux couches (voir docs/scene-kit.md) :
    • cinématique — procédés, caméras, traversées, graphiques : springs.ts, easings.ts, motion.ts, interpolate.
    • UI et typographie — étiquettes, chips, lignes de liste, légendes, badges et tout texte qui change d'état : Cube Motion, via src/animations/cube.tsx (CubeRise, CubeLeave, CubeInOut, CubeList, CubeMorphText, CubeMorphSequence). Une étiquette d'état qui change est un CubeMorphText ; une liste qui entre est un CubeList. Chaque at est une image à l'intérieur du <Sequence> englobant. N'importez jamais cube-motion directement dans une scène — ses animations sont temporelles et seul le pont les rend précises à l'image.
  • Crédibilité : ne montrez jamais un écran qui contredit un overlay ; pas de statistiques inventées ; pas de citations fabriquées ; les graphiques sans données réelles ne portent pas de valeurs d'axe.

Étape 7 — Audio (pas de musique par défaut)

  1. Écrivez sound.json : une cue par événement à l'écran, { "fx", "at", "vol" }. Chaque effet doit avoir un sens — clic sur une pression, pop sur un atterrissage, whoosh sur un mouvement de caméra, frappe quand le texte s'écrit, carillon quand un résultat apparaît.
  2. Voix off optionnelle — uniquement si l'utilisateur souhaite une narration. Écrivez voiceover.json (une courte ligne par scène, at = la cue de cette scène) et exécutez python3 scripts/voiceover.py. Moteurs : say (macOS, sans clé) ou openrouter (uniquement si l'utilisateur a déjà OPENROUTER_API_KEY défini). Chaque prise est vérifiée par rapport au script et réessayée si le modèle a répondu au lieu de lire. Corrigez les lignes qui débordent en les réécrivant, pas en accélérant le tempo.
  3. python3 scripts/build_audio.py — mixe les effets (atténués sous la voix éventuelle) sans musique ni ambiance. Ensuite, définissez AUDIO_SRC = "audio/master.wav".

Étape 8 — Vérifier, puis rendre

Un rendu réussi n'est pas une vérification.

  • Rendez des images fixes à chaque temps fort, dans chaque orientation que vous livrez, et lisez-les (Read). Corrigez les collisions, les débordements, les dépassements, les couleurs hors charte, les contradictions.
  • Rendez, puis échantillonnez le MP4 encodé (1 image/seconde) et lisez toute la séquence.
  • Vérifiez le fichier : ffprobe (taille, fps, nombre d'images, flux audio), blackdetect, freezedetect, et un passage de décodage avec ffmpeg -v error -f null -.
  • S'il y a une narration, transcrivez les lignes finales et comparez-les avec le script.

Étape 9 — Version App Store (si demandée)

≤30s, 30fps, dimensions exactes d'appareil. Accélérez doucement, plus fort dans les silences, sortie à 30fps ; voir docs/appstore-cut.md. Ne jamais letterboxer ni étirer.

Notes d'hôte

  • Claude Code — installé dans ~/.claude/skills/promo-video/.
  • Codex — installé dans ~/.codex/skills/promo-video/. Pas de AskUserQuestion ; demandez en prose.

Livrez CREATIVE_DIRECTION.md et les fichiers rendus, avec leurs chemins exacts.

Skills associés