Communitygithub.com

lainshao/video-editor

Synthèse et montage vidéo courte double format 9:16 + 16:9 (point d'entrée unique pour la création vidéo). Trois sous-modules — **opener** (carte titre 4,5 s avec police sérif jaune), **animator** (avis HTML chyron / cutaway / listicle / spec_review, flux de travail en « trois portes ») et **subtitle** (transcription automatique Whisper + superposition PNG avec mots-clés surlignés). Déclenché en demandant « Que faire ? » : ① uniquement sous-titres ② uniquement titre incrusté ③ nouvelle animation cue / synthèse complète ④ flux complet (voice-over → cue → animation → synthèse → sous-titres). Résultats (trois types par défaut, dans le dossier de livraison Movies) : ① mp4 intégral / optionnellement mov calque broll avec alpha ② PNG couche titre transparente 3:4 ③ chronologie chapitre txt. Mots-clés déclencheurs : « monte cette vidéo », « monter / montage vidéo », « faire une vidéo », « produire la vidéo complète », « ajouter animation / effets », « ajouter sous-titres / chyron / texte pop‑up », « générique / carte titre / opener », « mixer voix‑off et B‑roll », « nouvel épisode série X ». Prend également en charge le voice‑over style Maria : captures d'écran réelles d'articles/actualités, réactions réelles et images locales – le contenu et le rythme sont choisis en fonction du script. Les images libres de droit sont déléguées par ce skill à footage‑finder (portrait ou paysage).

Qu'est-ce que video-editor ?

Le skill video-editor est le point d'entrée unique pour le montage vidéo courte au format 9:16 (portrait, 1080×1920) et 16:9 (paysage, 1920×1080). Il agit comme un orchestrateur central : il ne se contente pas de monter la vidéo, il délègue également la recherche de séquences libres de droit (via le skill footage‑finder), la création de cartes d'actualité (via news‑highlight) ou la génération de graphiques (via data‑viz). Après déclenchement, le skill demande d'abord le format, puis le résultat final souhaité : uniquement sous‑titres, uniquement carte titre, une animation complète, un flux de bout en bout (voice‑over → animations → sous‑titres), ou un tutoriel pratique 3:4 (slidecast). Pour les options d'animation (3 et 4), le flux suit un processus strict en trois portes : porte 1 – proposition du plan de cues sous forme de tableau Markdown dans le chat ; porte 2 – génération du HTML de chaque cue, passage obligatoire par un lint de mise en page, puis création d'un avis de spécification ; porte 3 – dernier appel avant rendu avec choix du format de sortie. Aucun rendu ni composition n'est effectué avant validation explicite de l'utilisateur. Le skill intègre également un sous‑module pour le voice‑over de type Maria (captures d'écran réelles d'articles, réactions réelles, images locales) et gère la composition finale en mp4 et/ou en calque broll ProRes avec canal alpha. La livraison standard comprend : la vidéo complète mp4 avec audio, le calque titre transparent 3:4 en PNG, et une chronologie au format txt.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lainshao/video-editor/tree/HEAD

Demander à votre IA préférée

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

Documentation

Video Editor · Vidéaste

Assemble des vidéos courtes 9:16 / 16:9 de type talking-head + superposition (titre / cutaway B-roll / chyron / sous-titres). La composition de base est autonome ; les séquences libres de droit / cartes d'actualité sont déléguées par ce skill à footage‑finder / news‑highlight.

Quand déclencher

L'utilisateur dit :

  • « Monte cette vidéo », « Monter une vidéo », « Montage » — point d'entrée le plus courant
  • « Faire une vidéo », « Produire la vidéo complète », « Mixer voix‑off et B‑roll »
  • « Nouvel épisode [série internationalisation / IA / X] »
  • « Ajouter sous‑titres / chyron / texte pop‑up / carte titre »
  • « Ajouter animation / effets / visuels »
  • « Ajouter des captures d'écran réelles d'articles / réactions réelles / images locales au style Maria » → reaction_overlay (1080×1920 portrait ; lire d'abord recipes/reaction_overlay.md)

Ne pas déclencher mais lié (délégué aux skills frères, video-editor comme orchestrateur) :

  • Séquence libre de droit / stock footage / plan B-roll → appeler skill footage-finder
  • Carte d'actualité (capture d'écran réelle + surlignage jaune) → appeler skill news-highlight
  • Pure voix‑off, court métrage <30s → ne pas déclencher

Délégation : type de cue de montage → quel skill

Phase de découpage (porte 1) : attribuer un type à chaque cue ; deux types non natifs sont délégués :

Type de cueQui le faitRésultat
real_footageSkill footage-findermp4 réel découpé au format + page d’avis
news_highlightSkill news-highlightmp4 carte d’actualité avec surlignage jaune (style Vox)
source_progressive_highlightCe skill animator/cutaway/scene_source_progressive_highlight.htmlSurlignage progressif sur capture d’écran réelle d’article/actualité, sans refaire la page média
tenure_bulletsCe skill animator/cutaway/scene_tenure_bullets.htmlListe numérotée avec personne à l’écran : élément courant en jaune, anciens en grisé
numbered_pillsCe skill animator/cutaway/scene_numbered_pills.htmlStyle YC – capsules blanches 01–04 avec bord arrondi orange, apparition groupe par groupe ; alternative au listicle pour le même contenu
company_siteCe skill recipes/compose_company_site.pyCapture vidéo plein écran du site réel + PIP circulaire continu de la personne ; PIP par défaut sur le site, éviter les zones de sous‑titres et zones clés
cutout_sticker_slideinCe skill animator/cutaway/scene_sticker_slidein.htmlStickers transparents de personnages/objets sourcés, glissement de différentes directions ; ne pas utiliser les anciennes cartes de réaction avec cadre blanc
source_quote / source_screenshotCe skill : trouver le texte original et capturer la page réelleCapture d’écran réelle avec lien de la page d’origine, paragraphe correspondant et surlignage ; ne pas remplacer la citation par une carte refaite
real_person_reactionCe skill : d’abord chercher le matériel utilisateur ou la vidéo publique originale, si nécessaire déléguer à footage-finderPhoto ou courte vidéo réelle sourcée ; ne pas remplacer automatiquement par des Emoji
opener / chyron / cutaway / listicle / spec_reviewCe skill animator/openerHTML → mov/mp4
reaction_overlay (personne visible en continu, éléments réels apparaissant localement)Ce skill recipes/reaction_overlay.py + composition vidéo existanteComposition d’images statiques superposées et de segments de personne réelle ; le JSON de cues, les liens sources et le matériel peuvent être réutilisés
Sous‑titresCe skill subtitleSous‑titres avec mots‑clés surlignés

Suggestions de matériel dans le script de voice‑over : à lire avant de créer les cues

S’applique aux vidéos complètes avec images, aux cues d’animation, à reaction_overlay et au slidecast 3:4. Lorsque l’utilisateur fournit un script de voice‑over (HTML / Markdown / document Feishu), lire d’abord le corps du script et la section distincte « Suggestions de matériel » ; si seul un enregistrement audio ou vidéo est donné, vérifier d’abord si un script correspondant existe dans le dossier du même sujet. Les tâches ponctuelles (sous‑titres ou titre uniquement) ne nécessitent pas cette étape.

  • Les « Suggestions de matériel » sont une intention éditoriale, pas un texte à réciter ; la transcription Whisper ne sert qu’à vérifier ce qui a été réellement dit et à déterminer les timecodes, ne pas perdre les suggestions d’images du script en refaisant la transcription.
  • Lire chaque suggestion avec « phrase d’ancrage / image à montrer / matériel source ou lien / alternative ». D’abord trouver la position dans la transcription réelle via la phrase d’ancrage ; si le script a changé de mots ou d’ordre, réaligner sémantiquement, ne pas appliquer mécaniquement les secondes estimées du script. Ne pas forcer des images sur des passages non prononcés.
  • Ajouter une colonne « Suggestion du script → adoptée / adaptée / sautée » dans le tableau de cues de la porte 1. Pour les suggestions adoptées, conserver le lien d’origine ; pour les adaptées ou sautées, écrire une raison et proposer une image alternative. Pour les passages sans suggestion dans le script, on peut toujours ajouter des cues basés sur le contenu du voice-over, mais les marquer comme « nouveaux ».
  • Si le lien original n’est plus actif, si les faits ont changé ou si l’image n’est pas adaptée au format, vérifier puis remplacer ; ne pas utiliser de captures d’écran inexactes, de pages contrefaites ou d’images décalées par rapport au voice‑over réel sous prétexte d’exécuter consciencieusement la liste.
  • Si un script existe mais qu’aucune section de suggestions n’est trouvée, terminer le montage normalement, ne pas demander à l’utilisateur de réécrire le script. Le plan final de cues est basé sur le voice‑over réel + les retours de l’utilisateur en porte 1.

Pour rédiger un nouveau script de voice‑over, le format correspondant se trouve dans la section « Suggestions de matériel pour le voice‑over » du skill html-report.

Pages réelles et animations dynamiques : règles de montage par défaut

  • Quand on parle d’une entreprise / d’un produit spécifique, montrer son site officiel réel ou son interface produit. Conserver l’identité du site, le nom de l’entreprise et un visuel réel prouvant l’identité ; privilégier l’enregistrement du défilement de la page, du positionnement de la souris, de la démo produit ou d’un zoom local. L’enregistrement du site se fait avec recipes/capture_company_site.js, la composition avec recipes/compose_company_site.py ; ne pas coller seulement un logo, et ne pas remplacer le site officiel par une carte de page contrefaite. Utiliser une capture d’écran officielle vérifiable uniquement si le site est inaccessible, et mentionner la raison dans le tableau de cues.
  • Les informations qui avancent avec le voice‑over doivent apparaître une par une. Par exemple, pour « 1, 2, 3, 4 » quatre points, les révéler dans l’ordre à mesure qu’ils sont cités, surligner l’élément courant, laisser brièvement la vue d’ensemble à la fin ; une liste complète de 11 éléments peut entrer par groupes/split‑screen, mais à la fin le public doit pouvoir voir les 11 éléments. Ne pas afficher les quatre points en page statique dès le premier, ni utiliser des animations flottantes sans information à la place d’une présentation séquentielle.
  • Les documents statiques plein écran peuvent superposer un PIP dynamique de la personne ; l’affichage du site officiel réel superpose par défaut un PIP, même si le site défile. Pour le site officiel, utiliser recipes/compose_company_site.py : enregistrement plein écran du site réel, et découper la vidéo continue du voice‑over en cercle de petite taille. Les séquences B‑roll libres de droit ne superposent pas de PIP par défaut. Pour chaque cue, d’abord indiquer la zone de sous‑titres et le visuel clé le plus important, puis choisir parmi quatre positions sûres : haut‑gauche, haut‑droite, milieu‑gauche, milieu‑droite ; si plusieurs cues adjacents ont des positions sûres, alterner pour que tous les sites d’entreprise ne soient pas fixés dans le même coin. Ne pas bouger à l’intérieur d’un même cue. S’il n’y a pas de position sûre, réduire ou modifier le recadrage de la page ; si toujours pas de solution, noter l’exception et annuler. Pour les documents statiques, utiliser recipes/compose_static_pip.py. Voir section 9 de CONVENTIONS.md.
  • Pour une liste ordonnée, proposer d’abord deux visuels réels au choix. Pour un même groupe de 3‑5 éléments, scene_numbered_pills.html fait des capsules numérotées plein écran, scene_listicle.html fait une liste numérotée avec cercle jaune et personne à l’écran ; en porte 2, les deux sont présentés côte à côte avec le même texte. Privilégier les capsules numérotées pour une vue d’ensemble par catégorie/direction, et le listicle pour une explication continue de chaque élément ; les puces de style Hunger sont une troisième variante plus légère avec personne à l’écran. Après validation, faire apparaître les éléments un par un selon le temps réel du voice‑over, ne pas montrer la vue d’ensemble dès le premier élément.
  • Les petits stickers et les images adaptées à l’entrée peuvent glisser depuis les quatre bords. Les stickers de personnes/objets réels, memes, photos, captures d’écran partielles peuvent entrer en rotation depuis le haut, la gauche, le bas ou la droite, ou avec une graine fixe aléatoire ; vérifier d’abord que le chemin ne traverse pas les sous‑titres, les visages, le texte original ou les données clés. Pour les enregistrements plein écran de site et les vidéos originales nécessitant une identification directe, décider selon le contenu si le glissement est approprié, ne pas forcer une transition juste pour de l’animation. L’entrée dure environ 0,25–0,35 seconde, laisser suffisamment de temps de lecture après stabilisation ; ne pas déplacer aléatoirement dans le même plan. Utiliser animator/cutaway/scene_sticker_slidein.html pour les stickers, ne pas activer les anciennes cartes de réaction Emoji avec cadre blanc.
  • Seuil de rythme visuel : un voice‑over explicatif avec portrait continu ne doit pas dépasser 8 secondes par défaut. Compter à partir de la sortie du dernier visuel utile jusqu’à l’entrée du suivant ; au‑delà de 8 secondes, marquer dans le tableau de cues et expliquer pourquoi ce blanc. Dans les 5 premières secondes, donner d’abord le titre ou la première preuve. C’est la ligne de contrôle du montage de ce compte, pas une fréquence fixe mesurée sur les vidéos de Maria ; ne pas insérer d’Emoji ni de cartes de texte répétant le voice‑over pour atteindre un nombre de secondes. Un visuel utile doit être une page source, une opération produit, une séquence réelle, un graphique, une liste séquentielle ou un nouvel état visuel informatif ; les sous‑titres ordinaires, les titres permanents et les simples changements de bouche ne comptent pas. Détails complets et QA dans CONVENTIONS.md.

Étape zéro · Format + point d’entrée (★ video-editor est le point d’entrée unique de tout le pipeline)

video-editor est l’orchestrateur — l’utilisateur entre ici pour faire une vidéo, pas besoin d’aller d’abord cliquer sur footage‑finder / news‑highlight / data‑viz. Une fois déclenché, la première chose à faire est de demander le format avec AskUserQuestion :

Cette vidéo est en portrait ou en paysage ?

  1. 9:16 portrait (Douyin / Xiaohongshu / Vidéo / Reels) → 1080×1920
  2. 16:9 paysage (YouTube / Bilibili) → 1920×1080
  3. 3:4 tutoriel pratique (démonstration enregistrée / « Comment je fais X avec l’IA ») → 1080×1440 · va dans le sous‑module slidecast/

Le format suit le type de contenu : tutoriel pratique / démonstration enregistrée → par défaut 3:4 (slidecast) ; les vidéos d’opinion / vlog / culture générale sont en 9:16. Ne pas forcer un voice‑over normal dans un format de fenêtre d’enregistrement 3:4, ni faire un tutoriel en 9:16.

Raccourci : si l’utilisateur a déjà dit le format (« fais un 16:9 » / « pour YouTube » / « pour Bilibili »), ne pas demander, fixer directement.

Le format détermine la suite :

9:1616:9
Toile du sous‑module1080×19201920×1080
Plans B‑roll libres de droitfootage-finder --verticalfootage-finder (paysage par défaut)
Carte d’actualiténews-highlight (version portrait)news-highlight (Root 1920×1080 par défaut)
Graphiquesdata-viz (1080×1920)data-viz (1920×1080)
Compositionrecipes/compose_dual.sh.templaterecipes/compose_16x9.sh.template
Zone de sécuritéSection 3 de CONVENTIONSSection 1, ligne 16:9 de CONVENTIONS

Tous ces sous‑skills supportent déjà le paysage ; video-editor s’occupe d’assigner le travail + la composition finale, l’utilisateur ne dialogue qu’avec video-editor. En 16:9, on dispose en plus d’une capacité person-pip (voice-over propre → si pas d’information, plein écran ; si information, réduire la personne en petite fenêtre en bas à droite, voir section 9 de CONVENTIONS + template compose_16x9).

Une fois le format déterminé, suivre le routage des formes finales ci‑dessous.


Première étape · Demande de routage (★ à exécuter immédiatement après déclenchement)

Ne pas présupposer que l’utilisateur veut le flux complet. Demander d’abord une fois avec AskUserQuestion. Diviser par « ce que ça doit donner à la fin » (forme finale), pas par « ce que tu veux faire » (action) — l’utilisateur pense au résultat, pas au processus.

Quel est le résultat final que tu veux obtenir ?

  1. Une vidéo finie avec sous‑titres : vidéo déjà montée, ajouter seulement les sous‑titres → sous‑module subtitle/ (pas de trois portes)
  2. Une carte titre / générique : superposition transparente alpha 4,5 s → sous‑module opener/ (pas de trois portes)
  3. Une vidéo complète avec animations : ajouter chyron / cutaway / listes animées → sous‑module animator/ (trois portes obligatoires)
  4. Partir de zéro pour faire une vidéo complète : voice‑over → titre → animations → sous‑titres, tout compris → opener → animator → subtitle en série
  5. Tutoriel pratique en voice‑over (3:4) : voice‑over → diapositives de démonstration case-step + sous‑titres, tu superposes l’enregistrement / le visage → sous‑module slidecast/ (trois portes obligatoires)

Format des options : utiliser uniquement les chiffres 1 / 2 / 3 / 4 comme préfixe des options de AskUserQuestion, interdire les caractères cerclés / katakana (①②③④, ㋐㋑㋒㋓) — la police de l’utilisateur ne les supporte souvent pas, ils s’affichent en charabia.

Raccourcis (cas où on n’a pas besoin de demander et on va directement) :

Parole de l’utilisateurAller directement à
« Aide‑moi à ajouter des sous‑titres / mettre des sous‑titres / incruster des sous‑titres »1 · subtitle/
« Fais un générique / une carte titre / un opener »2 · opener/
« Nouvel épisode série X » / « Faire une vidéo » / « Produire la vidéo complète »4 · Flux complet
Contexte : déjà en train de faire une vidéo complète, veut ajouter un chyron / cutaway3 · animator/
« Tutoriel pratique / démonstration enregistrée / Comment je fais X avec l’IA » / Série 100 cas pratiques IA5 · slidecast/ (3:4)
« Comme Maria, ajouter des articles réels, des réactions réelles et des images à un voice‑over portrait », et l’utilisateur a déjà fourni la vidéo originale3 · reaction_overlay ; d’abord confirmer que la source est 1080×1920, lire recipes/reaction_overlay.md

Principe clé : 1 et 2 sont des opérations ponctuelles, ne passent pas par les trois portes ; 3 et 4 doivent passer par les trois portes.

★ Flux de travail en trois portes (obligatoire pour les options 3 et 4, aucun saut autorisé)

⚠ Le choix de routage n’est pas un permis de rendu — le fait que l’utilisateur choisisse 3 ou 4 signifie seulement « je veux suivre le processus animator ». Une fois entré dans animator, il faut suivre les trois portes, et à chaque porte s’arrêter et attendre une confirmation explicite de l’utilisateur avant de passer à l’étape suivante. Même si l’utilisateur a déjà donné le titre / le nombre de cues / le texte, cela ne signifie pas qu’il vous autorise à sauter une porte.

Porte 1 · Plan textuel    ─►   Donner le tableau de cues en markdown dans le chat
                             STOP · Attendre que l’utilisateur réponde « OK / modifier X / supprimer Y / verrouiller » ou autre expression claire
                             ❌ Ne pas écrire de HTML de cue
                             ❌ Ne pas commencer le rendu
                                  |
Porte 2 · Spec Review    ─►   Écrire le HTML de chaque cue
                             ★ D’abord exécuter node recipes/lint_layout.js --all <répertoire des cues>
                               (zone de sécurité / taille de police min / largeur de texte ≤920 / centrage / nombre de tailles de police, corriger les échecs avant de continuer)
                             Ensuite générer _review/spec_review.html
                             STOP · Dire à l’utilisateur « Ouvre file:///<projet>/_review/spec_review.html pour voir, donne‑moi ton retour »
                             ❌ Ne pas rendre le ProRes mov
                             ❌ Ne pas composer la vidéo complète
                                  |
Porte 3 · Dernier appel avant rendu ─►  AskUserQuestion : récapitulatif + choix éditoriaux + format de sortie (trois options)
                             STOP · Attendre que l’utilisateur choisisse
                             ❌ Ne pas présumer du format de sortie
                                  |
Rendu + composition + sous‑titres

Tant que l’utilisateur n’a pas dit « verrouillé / confirmé / commence / rends / OK » ou une expression affirmative claire, vous êtes toujours dans la porte précédente.

❌ Contre‑exemples (ne pas faire)

Comportement erronéConséquence
L’utilisateur choisit 4 + donne le titre → vous extrayez le voice‑over + transcrivez + écrivez le HTML + lancez le renduSaute la porte 1, le point de contrôle le moins coûteux « modifier 1‑2 mots suffit », perte de 5‑10 min + 10k tokens
L’utilisateur dit « je veux ça » → vous jugez « puisqu’il le veut, je lance le rendu »Saute la porte 2, une erreur visuelle/taille de police coûte 5× plus cher à refixer après rendu (30 s de rendu × nombre d’échecs)
En porte 2 l’utilisateur dit « cue 3, modifier X » → vous modifiez et rendez directementSaute la porte 3, n’a pas laissé l’utilisateur choisir le format de sortie (vidéo originale seule / calque broll transparent / les deux), peut rendre 500MB de ProRes inutile
L’utilisateur ne dit rien d’affirmatif → vous supposez qu’il veut avancer et vous avancezL’utilisateur n’a pas fini d’examiner, le rendu peut être hors sujet et tout refaire

✅ Bon exemple

« Entrée dans animator. D’abord transcription + sortie d’un tableau de plan de cues en markdown pour que tu voies. C’est la porte 1 — pas d’HTML, pas de rendu, j’attends ton OK / modification / suppression. »

À la fin de chaque porte, utiliser une phrase explicite pour dire à l’utilisateur « Nous sommes à la porte X, attends ton OK » — ne pas avancer silencieusement.

Détails du processus + liste concrète des livrables par porte + baseline de nombre de cues dans animator/README.md.


Points d’entrée des sous‑modules

Sous‑moduleFonctionDocument d’entrée
opener/Carte titre 4,5 s avec police sérif jaune, superposition transparente alphaopener/README.md
animator/chyron / cutaway / listicle / spec_review, flux en trois portesanimator/README.md
subtitle/Transcription Whisper → superposition PNG avec mots‑clés surlignés → sous‑titres incrustés. 9:16 utiliser add_subtitles.py ; les longues vidéos 16:9 DOIVENT passer par make_events_16x9.py + burn_chunked_16x9.py (une seule chaîne brûle plantera, voir README)subtitle/README.md
slidecast/Tutoriel pratique en voice‑over (3:4) : voice‑over → diapositives case-step de démonstration coupées au timecode + sous‑titres → mp4 de prévisualisation + mov couche transparenteslidecast/README.md
reaction_overlayVoice‑over comme fond, priorité aux captures d’écran réelles sourcées et réactions réelles ; choisir le matériel et le temps d’arrêt selon le contenu, pas à fréquence fixe d’Emojirecipes/reaction_overlay.md

Conventions partagées

  • Convention de livraison : 做内容/_运营文档/视频成片流水线-模板.md — une vidéo = deux dossiers du même nom (travail / livraison) + les trois produits par défaut de la porte 3 (vidéo complète / couche titre 3:4 / chronologie) dans ~/Movies/<série>/<code vidéo>/. Tout le flux suit ce modèle.
  • Recette des livrables : recipes/deliverables.md (comment rendre la couche titre transparente · comment générer la chronologie à partir du plan de cues · nommage du dossier de livraison)
  • Porte de rendu P0 : pour une vidéo 9:16 complète, exécuter python3 recipes/preflight.py plan <projet>/preflight.json après la porte 1, et avant chaque rendu final exécuter python3 recipes/preflight.py final <projet>/preflight.json et vérifier les images clés, remplir la review et repasser ; vérifier les titres à 0 s, les préréglages de sous‑titres, les blancs visuels >8 s et les obstructions PIP/Logo/attribution. Format dans recipes/preflight.example.json et recipes/deliverables.md.
  • Conventions visuelles : CONVENTIONS.md (zone de sécurité, palette Hana, séquencement chyron, hiérarchie des tailles de police, règle climax) — à lire avant d’écrire du HTML pour tout sous‑module.
  • Lint de mise en page (★ obligatoire en porte 2) : node recipes/lint_layout.js <cue.html> — après rendu puppeteer, vérification automatique de la zone de sécurité / taille de police min 22px / largeur de texte ≤920 / centrage / nombre de tailles de police, avec trois préréglages automatiques 9:16·16:9·3:4 ; pour les cues d’animation, juger sur l’état final d’arrêt. Ne montrer le spec review à l’utilisateur qu’après correction des échecs. Les éléments décoratifs intentionnellement hors limites ajouter data-lint-ignore.
  • Auto‑diagnostic de l’environnement : bash recipes/doctor.sh — à exécuter sur une nouvelle machine / en cas d’erreur de rendu (vérification ffmpeg / whisper / Chrome / puppeteer-core / avconvert / polices, 11 éléments).
  • Recette double sortie ffmpeg : recipes/compose_dual.sh.template (mp4 + alpha mov optionnel).
  • Pièges connus : recipes/PITFALLS.md (broll_reel flash / HyperFrames webm sans alpha / échappement # dans ffmpeg / grisaillement de la couche alpha / chemin chinois TCC, etc., 23 entrées).
  • Index des cas historiques : recipes/examples.md (11 paradigmes de cues dans vos vraies vidéos).

Stratégie de double sortie

FichierUsageQuand le produireSpécification
<nom vidéo>_整片.mp4Prévisualisation / publication / reviewÀ chaque itérationH.264 yuv420p · CRF 20 · avec audio + superposition
<nom vidéo>_broll层.movSuperposition dans le logiciel de montage (Premiere / AE / FCP)Uniquement si l’utilisateur dit explicitement « version finale / couche de montage / calque ProRes / B‑Roll only »ProRes 4444 yuva444p10le · transparent · muet

Pendant l’itération, ne produire que le mp4 de la vidéo complète par défaut. Le rendu unique du calque broll prend ~30 s + ~500MB d’écriture disque, inutile pour la review d’itération.

⚠ Le calque broll est toujours une piste complète et synchronisée. Quand l’utilisateur dit « B‑Roll only », il veut cette piste entière, en aucun cas livrer N cues sous forme de fichiers mov séparés pour qu’il les monte lui‑même.

Pour la piste alpha avec cues non chevauchants, utiliser la composition par concat : gap transparent + cue + gap transparent + cue, le gap étant calculé selon la durée/nombre d’images réelle du cue via ffprobe. Ne pas superposer des cartes semi‑transparentes une par une sur un canevas transparent [email protected] ; cela rendrait les cartes blanc cassé gris‑noir lors de la superposition finale sur le voice‑over. Voir la règle 23 de recipes/PITFALLS.md et recipes/compose_dual.sh.template.

Avant de livrer le calque broll, faire un QA sur fond réel : superposer le fichier final <nom vidéo>_broll层.mov sur le voice‑over original et capturer 4‑8 images clés / contact sheet, vérifier la couleur, l’alpha, le masquage du visage et le timing. spec_review.html ne peut examiner que le HTML/l’animation, pas la composition ffmpeg finale.

Matrice de décision des titres (comment choisir quand l’utilisateur dit « ajouter un titre / un générique / des mots clés »)

L’utilisateur ditPar défaut =Paramètres clés
« Ajouter un titre » / « title card » / « générique » / « opener »opener/yellow.html (grand titre sérif jaune + sous‑titre italique blanc)Alpha transparent · début vidéo à 0 s · top-third (padding-top 280px) · 4,5 s · ProRes 4444 mov
« Insister sur un mot à l’instant X » / « texte pop‑up »animator/chyron/chyron.htmlCapsule jaune · top 16% (y≈307 centre) · pop 1‑2 s
« Liste 1, 2, 3 » / « trois / quatre éléments »animator/cutaway/scene_listicle.htmlListe numérotée révélée ligne par ligne · carte top 280px
« Carte de données plein écran / graphique comparatif » / « passer aux données X »animator/cutaway/scene_blank.htmlCutaway fond blanc plein écran · légende top 280px · mp4 opaque

Principes clés :

  • Le « titre » de la vidéo = générique à 0 s, par défaut. Même si le voice‑over ne prononce cette phrase qu’à 22 s, le titre sort à 0 s. Conserver le format du compte : titre principal jaune + sous‑titre blanc ; même si le titre principal n’a qu’une ligne, garder la couche blanche, sauf si l’utilisateur spécifie explicitement une version monochrome. En porte 2, toute scène de titre personnalisée doit être vérifiée par rapport à opener/yellow.html pour les couleurs et la hiérarchie.
  • Le titre du générique = superposition alpha transparente sur le talking head. Pas un plan séparé sur fond doré opaque.
  • Cutaway de carte de données = plein écran opaque, couvre le talking head ; les autres superpositions (titre / chyron) sont transparentes par défaut.

Skills associés

  • hyperframes / hyperframes-cli — CLI HyperFrames (rendu HTML → mov/mp4), dépendance de rendu pour le sous‑module d’animation

Hors du périmètre de ce skill (délégué)

  • Recherche de séquences libres de droit (Pexels / Pixabay) → skill footage-finder
  • Carte d’actualité → skill news-highlight
  • Génération de script / TTS voice‑over → fonction TTS du skill hyperframes
  • Vérification de conformité du contenu → skill content-audit

Skills associés