Communitygithub.com

Montage vidéo (builtnotboosted/video-editing)

Transforme des rushes d’une personne qui parle en face caméra en vidéos verticales (1080×1920) et horizontales 16:9 prêtes à publier, avec ffmpeg et Whisper. Garde exactement une prise propre par ligne de script, ne laisse jamais un plan fixe, ajoute sous-titres, normalise le volume à -14 LUFS, génère une miniature et exécute un contrôle qualité qui retranscrit le rendu final.

Qu'est-ce que video-editing) ?

Cette compétence transforme des rushes filmés (talking head) en vidéos finalisées pour les réseaux sociaux (shorts verticaux 1080×1920) et YouTube (longs formats 16:9). Basée sur un outil en ligne de commande (`vedit.py`) utilisant ffmpeg, Whisper et Playwright, elle prend en charge l’intégralité du montage : sélection des prises propres, découpage sans bafouillage, variation de plans (punch-ins, reframes, B-roll, motion graphics), sous‑titres (brûlés pour les shorts, SRT pour les longs formats), normalisation audio à -14 LUFS, génération d’une miniature à partir d’une image réelle de la vidéo, et une porte de contrôle qualité (QA) qui retranscrit le rendu et refuse la livraison tant que le rendu ne passe pas les vérifications. La compétence s’intègre avec d’autres compétences : `video-scripting` pour le script et les notes de montage, `brand/brand-profile.md` pour les couleurs, polices et mentions obligatoires, `image-generation` pour les images, `review-loop` pour la relecture indépendante, et `scheduling` pour la publication. Rien n’est posté ou programmé depuis cette compétence : elle livre les fichiers prêts à l’emploi.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/builtnotboosted/built-not-boosted-skills/tree/HEAD/plugins/built-not-boosted/skills/video-editing

Demander à votre IA préférée

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

Documentation

Montage vidéo

Cette compétence transforme des rushes d’une personne qui parle en face caméra en une vidéo finalisée, un fichier de sous-titres SRT et une miniature, à l’aide d’un outil en ligne de commande intégré (vedit.py) basé sur ffmpeg, Whisper et Playwright. Elle gère l’intégralité du montage : choix des prises propres, découpage net, variété de plans, graphismes et placement de B-roll, sous‑titres, volume, miniature et le contrôle qualité final. Elle délègue à la compétence video-scripting pour le script et les notes de montage, à brand/brand-profile.md pour les couleurs, polices et mentions de conformité, à la compétence image-generation pour les images fixes, à la compétence review-loop pour la vérification indépendante, et à la compétence scheduling pour la publication. Rien n’est posté ou programmé depuis cette compétence.

Ordre d’autorité : brand-profile.md prime pour les constantes de marque et le libellé de conformité ; cette compétence définit la méthode.

Avant de commencer

  1. Trouvez l’espace de travail marketing (par défaut marketing/). S’il n’y en a pas, dites-le en une ligne et proposez la compétence brand-setup ; l’outil fonctionne tout de même avec un aspect neutre.
  2. Trouvez le dossier de la pièce, content/<aaaa-mm-jj>-<slug>/. Il doit contenir script.txt (une phrase parlée par ligne ; les [notes entre crochets] et les marqueurs [CHAPTER N • Title] ne sont jamais parlés), et idéalement edit-notes.txt (lignes HOOK ON SCREEN:, COVER:, OUTCOME:) et sources.txt (les seules figures autorisées à l’écran). Si la personne a filmé sans script, transcrivez d’abord et traitez la transcription nettoyée comme le script.
  3. Lisez les sections ## Identité visuelle, ## Conformité, ## Limites et ## CTA & contact du profil de marque, ainsi que brand/voice-learnings.md pour les mots et le phrasé sur les graphismes et les miniatures.
  4. Vérifiez que l’outil est prêt : python3 <skill>/vedit.py doctor. Si quelque chose manque, exécutez bash <skill>/setup.sh une fois (ffmpeg, Node, environnement virtuel Python, Whisper, Playwright, polices). Le grand modèle Whisper fait environ 3 Go et transcrit à peu près à une à deux fois la durée du clip sur un CPU d’ordinateur portable, alors lancez les étapes longues en arrière-plan.

La norme

  1. Une seule lecture propre de chaque ligne. La vidéo finale contient exactement une lecture de chaque ligne : pas de redémarrage, pas de « le, le », pas de demi-phrase d’une prise abandonnée, pas de fin de mot coupée. C’est un blocage, pas une finition. Un « euh » naturel isolé peut rester (les gens doivent sonner comme eux-mêmes), mais jamais dans la ligne d’ouverture et jamais deux dans une même ligne.
  2. Suivez la parole, pas le script écrit. Les gens améliorent les lignes en parlant. Une reformulation en direct se traduit par une ligne manquante ou peu couverte dans le repérage de prises ; ce n’est pas une erreur. Conservez leur version, coupez uniquement les vrais bafouillages et redémarrages, et corrigez tout graphisme ou carte d’accroche écrite d’après le script pour correspondre à ce qui a été réellement dit.
  3. Gardez les moments qui font gagner l’affaire. Si le script a une ligne précoce « qui je suis » ou un appel à l’action de clôture, elle reste là où elle est.
  4. Jamais un plan fixe unique. Alternez plan large et serré à chaque coupe, recadrez à l’intérieur des longues lectures, coupez sur du B-roll, portez l’histoire avec des graphismes animés. La tête parlante est la colonne vertébrale, pas la vidéo entière.
  5. Les sous‑titres viennent de l’audio final , vérifiés par rapport au script, pour correspondre exactement à ce qui est entendu. Gravés sur les shorts ; SRT uniquement sur les longs formats.
  6. Volume -14 LUFS , pic vrai -1,5 dB, pour que ce soit correct sur toutes les plateformes.
  7. Une miniature à partir d’une image réelle avec le titre dans le carré sûr de la grille, proposée en une ou deux variantes.
  8. Le contrôle qualité passe avant toute livraison. Il retranscrit le rendu, écoute chaque coupe individuellement et vérifie que chaque coupe tombe dans le silence. deliver refuse sans un PASS récent.
  9. Honnête sur l’oreille. Claude ne peut pas entendre. La porte vérifie les mots et l’énergie, pas le ton, une toux sous un mot ou une mauvaise jonction de son ambiant. Dites-le à la remise, à chaque fois.

La méthode

Chaque commande est python3 <skill>/vedit.py <commande> <slug>. Lisez references/project-config.md avant de modifier project.json à la main.

  1. Rassemblez d’abord tout. Listez chaque clip dans le lot. Appairez les deuxièmes caméras par le son (scripts/sync_cams.py ; une vraie correspondance donne environ 0,4 à 0,55, une non-correspondance environ 0,03) et les caméras silencieuses comme les drones par le mouvement et les timestamps (scripts/sync_cams_visual.py). Faites un contact-sheet de chaque photo et clip court, notez ce qui est utilisable comme B-roll, et demandez immédiatement toute caméra que la personne mentionne et qui n’est pas dans le dossier. Ouvrez references/multicam-and-long-form.md pour les détails.
  2. Init. vedit.py init <slug> --raw <clip caméra A> --pack <dossier contenu> [--long] [--cam B=<clip>]. Il copie le script, lit les notes de montage et mappe la palette et les polices du profil de marque dans project.json. Ensuite, remplissez vocab avec tous les noms propres du script, y compris le nom du présentateur.
  3. Prep (lent, en arrière-plan) : vedit.py prep <slug>. Master en upright à la fréquence d’images de la caméra, audio 16 kHz, caméras supplémentaires synchronisées, et deux transcriptions (large-v3 verbatim plus medium.en). Il s’arrête sur les rushes HDR, les rushes au mauvais format, et l’audio de qualité d’appel d’un micro Bluetooth ; references/audio-and-sync.md contient la voie de secours.
  4. Takes. vedit.py takes <slug> aligne la parole sur le script comme un prompteur : un saut en arrière est un redémarrage, donc chaque tentative de chaque ligne devient une prise notée. Une deuxième écoute reprend chaque prise individuellement pour trouver les bafouillages, répétitions et doubles lectures. Lisez picker/takes_report.txt. Ensuite, vérifiez avant de faire confiance : ouvrez references/whisper-pitfalls.md, car Whisper ignore les faux départs répétés, invente des mots finaux et sépare les termes inconnus. Une coupe de redémarrage proposée reste valide sauf si la carte d’énergie ne montre pas de deuxième burst de parole.
  5. Picks. Soit la personne choisit dans le navigateur (vedit.py picker <slug> en arrière-plan, puis ouvrez http://localhost:8765), soit, si elle demande à Claude de choisir, écrivez vous-même picker/picks.json avec une note pour chaque modification par rapport au choix machine. Dites-leur quelles lignes sont rouges ou orange et pourquoi. Préférez les lectures de la même prise que les lignes voisines : elles coulent sans coupure. Ne livrez jamais à partir de choix machine.
  6. Chorégraphiez (travail de conception, lisez d’abord references/style-notes.md). À partir du script, de sources.txt et de ce qu’il y a dans les rushes : une carte d’accroche sur l’image 0 d’après edit_notes.hook_on_screen (3 à 5 mots, une promesse pas la réponse) ; des cartes graphics.json pour les moments qui en ont besoin, avec uniquement des figures présentes dans sources.txt ; des cues ancrés à des lignes ou des mots parlés, jamais à des temps fixes ; des B-roll motivés (sur le mot qu’ils illustrent, ou juste après un regard ou un geste) ; framing.face_x/eye_y mesuré sur une image ; exit_tail pour la sortie. Prévisualisez les graphismes sous forme d’images fixes avec vedit.py mg-preview <slug>.
  7. Build. vedit.py build <slug> plan est instantané et affiche le résumé du montage ; build cues liste toute cue qu’il n’a pas pu placer (corrigez-la, ne l’ignorez jamais). Itérez sur build cut plus scripts/cut_check.py jusqu’à ce que ce soit propre, faites la miniature (étape 9) pour que l’image de poster soit intégrée, puis build all. Les règles appliquées par la construction sont dans references/edit-rules.md.
  8. Gate. vedit.py gate <slug>. Il échoue sur une ligne lue deux fois, un bafouillage ou un départ abandonné laissé, de l’énergie vocale sans mots (une relecture cachée), une répétition ou un saut à travers une coupe (entendue seule par les deux modèles), des mots errants d’une prise abandonnée à une coupe, une coupe qui tombe sur du son, et (multi-caméra, si un gaze.json existe) la mauvaise caméra. Corrigez la cause, reconstruisez, re-gatez. Ensuite, la passe de proxy humain : regardez un contact-sheet du rendu, lisez chaque sous-titre (vedit.py captions <slug>), et pour chaque ligne que vous avez modifiée, notez ce qui était là et ce qui est conservé.
  9. Miniature. vedit.py frames <slug> --every 5 pour un contact-sheet ; choisissez une image avec contact visuel, une expression chaleureuse (pas à mi-mot), une mise au point nette et un accessoire qui raconte l’histoire. Définissez cover.frame et une ou deux variants (2 à 4 mots, grands, un mot en surbrillance, simples et vrais), puis vedit.py cover <slug>. Il vérifie chaque zone de texte par rapport au carré sûr de la grille et au visage, et écrit grid_tiles.jpg montrant ce que la grille de profil affichera.
  10. Relecture. Remettez le contact-sheet du rendu, les miniatures, le SRT et la liste des coupes à la compétence review-loop. Les figures à l’écran sont vérifiées par rapport à sources.txt, pas prises pour acquises.
  11. Livrer et diffuser. vedit.py deliver <slug> écrit la vidéo, le SRT, les miniatures, la liste des coupes (chaque ligne : prise, plage source, coupes, chaque modification avec sa raison), le rapport de contrôle qualité et, pour les longs formats, youtube-chapters.txt dans content/<date>-<slug>/video/. vedit.py release <slug> --to <dossier> copie la vidéo, le SRT et une vignette JPG sous un même nom de fichier, ce que les planificateurs et YouTube attendent.

Vérifications avant expédition

La remise à la personne inclut toujours :

  • Gate PASS, récent (plus récent que le rendu).
  • Synchronisation labiale mesurée sur le rendu final : scripts/lipsync.py build/final.mp4 <t0> <t1> sur deux ou trois passages face caméra, chacun dans ±40 ms.
  • Vérification des sous-titres lue (vedit.py captions <slug>, livrée sous vN-caption-check.txt) : les FIX semblent sensés, et chaque CHECK est nommé comme une ligne que la personne doit écouter.
  • Durée et volume indiqués.
  • Chaque modification de leurs choix, avec la raison, et les lignes qui valent la peine d’être écoutées.
  • Miniature A contre B, et l’aperçu de la grille.
  • « Rien n’a été posté ou programmé. »
  • « Je ne peux pas l’entendre : écoutez avant qu’il ne parte. »

Adaptation

  • Pas de script ? Transcrivez d’abord (prep produit les deux transcriptions), nettoyez la transcription en une phrase par ligne, enregistrez-la sous script.txt, puis lancez takes.
  • Aspect différent : tout ce qui est visuel lit project.json brand (couleurs, polices) et cover.wordmark (une petite étiquette de nom optionnelle). Modifiez-le là, jamais dans les scripts.
  • Orthographe différente : captions.locale en-GB (par défaut) ou en-US.
  • Machine plus lente : `

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

builtnotboosted/image-generation

Produces finished social images with any image model (Google Gemini image, "Nano Banana", as the worked example) - feed statics, carousel slides, short-form video covers, YouTube and article thumbnails, local listing cards and animated statics. Bakes the headline into the scene instead of pasting text on top, keeps text inside the profile-grid safe zone, locks the likeness of real people to their reference photos, hits exact platform sizes, writes alt text and re-judges every re-roll on the filed file. Use when someone says "make an image for this post", "create a thumbnail", "make a cover from my video", "design a carousel", "animate this static", "the image model won't do 4:5", "my headline is getting cut off in the grid", or when a content pack needs its visuals.

builtnotboosted/review-loop

The quality gate every piece of content passes before it is filed, scheduled or posted. Runs a self-critique, then an independent review by a fresh subagent that sees only the finished work and the criteria (never the builder's reasoning), then fix and re-judge until there is a clean pass. Covers what to do when a piece can't pass unattended (hold, flag, ship the rest). Use when someone says "review this", "check this before it goes out", "QA the pack", "is this ready to post", "get a second pair of eyes on this", "proofread the captions", or when any other Built Not Boosted skill hands work over for checks.

builtnotboosted/scheduling

Gets finished posts into a social media scheduler (or posted by hand) safely. Queue-only with explicit timezone offsets, live dedup against scheduled and already-published posts, media readiness checks, correct post types (shorts, reels, carousels, first comments, manual-posting reminders), alt text, a link gate that sends copy back for a rewrite rather than stripping it, and confirmation before anything goes live. Writes and keeps a scheduling manifest for each pack. Works with any scheduler; Publer is the worked example. Use when someone says "schedule this", "queue these posts", "put this in Publer", "book in this week's content", "post this on Tuesday at 7", "move that post", "what's already scheduled", or hands over a finished content pack to go out.

builtnotboosted/video-scripting

Writes video scripts that sound like the person who will say them, for shorts (Reels, TikTok, YouTube Shorts) and long-form YouTube. Warm hook rather than a shout, who-am-I and follow early, a retention shape that delays the answer, a soft earned close, length that follows the story, real-problem substance, reactive scripts for news and data releases. Output is teleprompter-ready (think-breaks, shot reminders) with short edit notes for the video-editing skill. Use when someone says "write me a script", "script a reel about", "I need a short on", "plan a YouTube video", "turn this post into a video", "react to today's news on video", "what should I say on camera", or before a filming session.

Skills associés