Communitygithub.com

Montage vidéo

Montez des vidéos de type talking-head, tutoriel, explicatif et Shorts avec Claude Code. Coupes précises au mot près à partir de prises brutes, graphismes animés sous forme de pages HTML + GSAP (ou three.js) synchronisées avec les paroles, effets sonores synthétisés en Python, gestion honnête du volume sonore et rendu image par image.

Qu'est-ce que Montage vidéo ?

Ce skill permet à un assistant IA (Claude Code) de collaborer avec un monteur humain pour transformer des rushes bruts en un montage vidéo finalisé. Il fonctionne en plusieurs étapes : transcription Whisper, montage approximatif, révision, ajout de chapitres, graphismes animés, effets sonores, mixage final et livraison. Il est conçu pour les créateurs de contenu qui réalisent des vidéos éducatives, des tutoriels, des talking-heads ou des Shorts. Le skill s'adapte à chaque créateur en apprenant ses préférences (couleurs, logo, police, niveau de mouvement, effets sonores) lors de la première utilisation et en les réutilisant automatiquement pour chaque projet suivant. La synchronisation est basée sur les horodatages des mots, pas sur l'écoute - le skill ne peut pas entendre l'audio. Toutes les animations et effets sonores sont déclenchés par une horloge temporelle dérivée des mesures de mots. Le flux de travail encourage des boucles de révision courtes et la créativité délibérée : chaque élément visuel doit aider le spectateur à comprendre et ne jamais ressembler à un simple modèle. Le skill prend en charge les plateformes de bureau (macOS, Linux, Windows) via Claude Code et nécessite Python 3, Node.js et des dépendances de base comme Whisper, FFmpeg et une installation Flask/HTTP pour servir l'aperçu vidéo.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Mert-Oezdemir/video-edit-workbench/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

Que fait Montage vidéo ?

Ce skill transforme des rushes bruts en un montage finalisé, en collaboration avec un monteur humain. Lisez ce fichier en entier avant de toucher à un projet. Lisez ensuite reference/audio.md avant toute coupe ou modification de niveau, et reference/style.md avant tout graphisme.

À lire en premier : ce que vous pouvez et ne pouvez pas faire

  • Vous ne pouvez pas entendre. Vous n'écoutez jamais l'audio. Tout ce que vous savez sur le son provient de chiffres : horodatages des mots de Whisper, enveloppe d'énergie sur 10 ms, sonomètres, spectrogrammes. Dites-le clairement à l'utilisateur et ne prétendez jamais que quelque chose « sonne bien ».
  • L'oreille humaine est le juge final. Que'une coupe coupe un mot, qu'un effet soit trop fort, que la voix soit étouffée : c'est l'utilisateur qui décide. Votre travail est de rendre chaque problème mesurable et chaque correction rapide.
  • La première passe n'est jamais le montage final. Travaillez étape par étape, remettez un aperçu après chaque étape et attendez-vous à des corrections. La plupart des bons résultats viennent de courtes boucles de révision, pas d'une longue exécution autonome.
  • Synchronisation par construction, pas à l'oreille. Les animations et les effets sonores sont déclenchés à partir de la même horloge temporelle, et cette horloge est dérivée des horodatages mesurés des mots. C'est ainsi que les effets atterrissent sur l'image sans que vous les entendiez.
  • Soyez créatif, intentionnellement. Chaque visuel doit aider le spectateur à comprendre, et rien ne doit ressembler à un modèle. Voir « Direction créative » ci-dessous.

Chemins d'accès

Les commandes sont exécutées depuis le dossier du projet utilisateur. $SKILL est le dossier dans lequel se trouve ce fichier (par exemple ~/.claude/skills/video-edit) ; définissez-le une fois dans le shell : SKILL=~/.claude/skills/video-edit.

Première exécution : faire connaissance avec le créateur

Cherchez le profil du créateur dans ~/.claude/video-edit/profile.md. S'il n'existe pas, c'est la première exécution : présentez-vous en un court message et demandez ces informations ensemble. L'utilisateur peut ignorer toute question.

  1. Nom à l'écran : le nom et un rôle en une ligne pour le tiers inférieur et l'écran de fin.
  2. Chaîne : nom de la chaîne, plateformes (YouTube, Instagram, TikTok…), la langue qu'ils parlent dans les vidéos, et s'ils veulent une seconde langue à l'écran.
  3. Couleurs : les couleurs qu'ils aiment (une couleur d'accent et une ou deux couleurs de soutien) et les couleurs qu'ils ne veulent jamais. Une miniature ou une page de marque peut aussi servir de réponse.
  4. Logo : un fichier logo (SVG, ou PNG avec transparence), et où il peut apparaître : tiers inférieur, écran de fin, ou nulle part.
  5. Police : une police de marque, ou la police par défaut.
  6. Vidéos habituelles : éducatives, talk, tutoriel, Shorts, et comment ils aiment le mouvement (calme ou énergique).
  7. Son : effets sonores jamais, seulement lorsque le son est la chose montrée, ou aussi discrètement sur les transitions. Musique de fond oui ou non.
  8. Jamais : les choses qu'ils n'aiment pas (lueurs, italique, emoji, zooms rapides, une couleur…).

Enregistrez les réponses dans ~/.claude/video-edit/profile.md (format dans reference/profile.md) et copiez le logo dans ~/.claude/video-edit/brand/. Affichez le profil enregistré en quelques lignes et demandez s'il est exact.

À partir de là :

  • Lisez le profil au début de chaque projet et appliquez-le sans redemander : les couleurs d'accent et de soutien vont dans les variables CSS de la scène, le nom et le logo dans le tiers inférieur et l'écran de fin, et les valeurs par défaut du son et du mouvement dans le plan.
  • Mémorisez les règles durables. Lorsque l'utilisateur donne une règle pour toutes les vidéos (« pas de son sur les transitions », « livrez toujours en 4K et 480p », « mon accent est maintenant vert »), ajoutez-la au profil dans « Règles durables » avec la date immédiatement, et dites-le. Une règle pour une seule vidéo va dans work/NOTES.md de ce projet. En cas de doute, demandez.
  • Le profil est personnel. Il se trouve dans le dossier personnel de l'utilisateur. Ne le copiez jamais dans un projet partagé ou dans un dépôt.

Chaque projet : demander

Demandez ces informations une fois par projet et conservez les réponses dans work/NOTES.md. Ignorez ce que le profil répond déjà.

  1. Type de vidéo : éducative / explicative, talk (talking head), tutoriel avec enregistrement d'écran, ou Short (vertical, moins de 60 s). Cela définit le niveau de mouvement (voir le tableau ci-dessous).
  2. Matériel brut : quels clips, dans quel ordre, y a-t-il un script ou un plan à suivre ?
  3. Langue(s) à l'écran : depuis le profil, sauf si cette vidéo est différente.
  4. Effets sonores : depuis le profil. Sans profil, le défaut est aucun effet sur les transitions, effets uniquement là où le son est le sujet.
  5. Livrables : résolution (1080p / 1440p / 4K), sous-titres et leurs langues, liste des chapitres YouTube, date limite.

Types de vidéos

TypeMouvementEffets sonoresCoupes
Éducative / explicativeCalme et sérieuse. Diagrammes propres, panneaux lisibles, mouvements de caméra lents. three.js seulement lorsque cela explique quelque chose (un modèle 3D de la chose enseignée).Aucun, ou transitions très discrètesRythme naturel
Talk (talking head)Peu de cartes qui restent longtemps à l'écran, placées dans les zones vides, jamais sur le visage.Transitions de chapitre discrètes uniquementRythme naturel ou serré
Tutoriel / enregistrement d'écranZoom sur la partie de l'écran discutée, boîtes de surbrillance, cartes d'étapes.Clics doux optionnels sur les surbrillancesRythme naturel
ShortPlus dynamique : révélations plus rapides, police plus grande, accroche dans les 2 premières secondes, sous-titres activés. Toujours fluide, jamais saccadé.Autorisé, toujours en dessous de la voixSerré

Si l'utilisateur ne le dit pas, déduisez le type à partir de la transcription et confirmez-le. N'animez pas trop une vidéo éducative et ne rendez pas un Short lent.

Direction créative

Soyez créatif, intentionnellement. Un bon montage explique le sujet mieux que le locuteur seul ne le pourrait, et il ne donne jamais l'impression que la même carte est collée encore et encore.

  • Expliquez, ne décorez pas. Pour chaque moment, demandez : qu'est-ce qui ferait comprendre à quelqu'un qui n'en a jamais entendu parler ? Dessinez l'idée abstraite (pour « le modèle a besoin de beaucoup de données », montrez de nombreux visages différents en cours de numérisation et d'étiquetage). Lorsqu'un outil, un langage ou un terme est nommé que de nombreux spectateurs pourraient ne pas connaître, montrez une petite boîte : son nom, le type de chose (langage, outil, modèle, concept) et une phrase simple.
  • Utilisez du matériel réel. Les données mesurées de la vidéo elle-même (la forme d'onde de la phrase prononcée, les chiffres réels de volume sonore), des captures d'écran et des enregistrements d'écran réels que l'utilisateur possède, le vrai avant et après. Une preuve réelle bat un exemple inventé à tous les coups. Demandez des captures d'écran à l'utilisateur lorsqu'un moment en nécessite une.
  • Montrez les erreurs honnêtement. Lorsque la vidéo parle de quelque chose qui a mal tourné, montrez la capture d'écran réelle, la note qui a été donnée et la version corrigée côte à côte.
  • Variez la forme. Alternez entre une carte mot-clé, une liste qui s'agrandit au fur et à mesure que chaque élément est dit, un compteur, un tableau plein écran pour une idée dense, un zoom sur l'écran, un insert encadré d'une autre vidéo. Choisissez la forme qui correspond au contenu, pas celle utilisée la dernière fois.
  • Une idée à la fois, mouvement calme. Créatif ne signifie pas chargé. Respectez le niveau de mouvement du type de vidéo et du profil.
  • Proposez d'abord les gros morceaux. Avant de construire un tableau plein écran, un montage ou une scène 3D, décrivez-le en deux lignes et laissez l'utilisateur dire oui.

Flux de travail

Travaillez dans cet ordre. Après chaque étape numérotée, arrêtez-vous et remettez une URL d'aperçu ou un fichier ainsi qu'une courte liste de ce que vous avez décidé et pourquoi.

0. Structure du projet

projet/
  src/            clips bruts (ou liens symboliques)
  work/           tout ce qui est généré : wav, transcriptions, program.json, proxy.mp4, sfx/, NOTES.md, sauvegardes
  scene/          la page de graphismes animés (copiée du modèle de ce skill template/)
  out/            rendus et fichiers finaux

Gardez le projet en dehors des dossiers synchronisés dans le cloud (iCloud Desktop, Dropbox) si possible. Les fichiers synchronisés peuvent être retirés du disque en plein rendu, et les lectures peuvent alors se bloquer.

1. Transcrire

python3 $SKILL/scripts/transcribe.py --project . src/*.mov --lang fr

Cela divise chaque clip aux pauses, transcrit chaque court segment séparément (avec du silence ajouté) et écrit work/transcripts/<clip>.json + .txt avec des énoncés numérotés et des horodatages de mots. Transcrire des fichiers entiers cache les reprises : Whisper fusionne les phrases répétées et supprime les mots redondants. Voir reference/audio.md.

Ensuite, lisez vous-même les fichiers .txt. Repérez les reprises, les faux départs, les demi-phrases et les tics de langage. Les locuteurs répètent souvent une phrase deux ou trois fois ; gardez la dernière prise fluide sauf indication contraire de l'utilisateur.

2. Montage approximatif

Écrivez work/edl.json (format dans reference/edl.md) : les énoncés à conserver, dans l'ordre du script, avec des marqueurs de chapitre. Ensuite :

python3 $SKILL/scripts/cuts.py --project .          # edl.json -> work/program.json (points de coupe ajustés aux bords réels des mots)
python3 $SKILL/scripts/build.py --project . audio video   # -> work/prog.wav + work/proxy.mp4 (aperçu 1080p)
python3 $SKILL/scripts/verify.py --project .        # re-transcrit chaque jonction, signale les mots coupés et les répétitions restantes

Corrigez ce que verify.py signale, reconstruisez, et ensuite seulement remettez le résultat. Indiquez à l'utilisateur la nouvelle durée et le nombre de coupes effectuées.

3. Boucle de révision

  • L'utilisateur donne des horodatages. Faites correspondre par contenu, pas par horloge. Leur onglet peut montrer une version antérieure. Citez la phrase que vous pensez qu'ils veulent dire et confirmez en cas de doute. Si un temps ne correspond pas, recherchez la phrase citée dans les transcriptions.
  • Avant chaque nouvelle version, copiez work/edl.json et work/program.json vers work/backup/vN/. Si l'utilisateur dit « annulez tout », restaurez exactement, ne réinterprétez pas.
  • Ne remplacez jamais work/proxy.mp4 pendant que l'utilisateur le regarde ; écrivez le nouveau et dites quand il est prêt.
  • Changez une chose à la fois lorsque l'utilisateur est mécontent. Un aperçu cassé fait perdre confiance dans toute la révision.

4. Chapitres

Divisez la vidéo en chapitres par sens, pas par horloge :

  • Un chapitre par changement réel de sujet, dans l'ordre dont le spectateur a besoin pour comprendre. Suivez les sections du script lorsqu'il y a un script.
  • Pour une vidéo de 10 à 15 minutes, cela fait généralement 5 à 10 chapitres principaux, chacun d'au moins environ 45 s. Un sous-sujet court reste à l'intérieur de son chapitre comme un changement de vignette, pas un chapitre en soi.
  • Titrez chaque chapitre avec ce que le spectateur en retire (« Là où l'IA s'est trompée »), pas avec une étiquette vague (« Partie 3 »). Assez court pour être lu en un coup d'œil.
  • Règles YouTube : le premier chapitre commence à 0:00, au moins trois chapitres dans l'ordre croissant, chacun d'au moins 10 s, horodatages écrits avec des deux-points (0:51, pas 0.51), dans la description (pas dans un commentaire). Les chapitres qui enfreignent une règle échouent en silence.

Proposez la liste avec une ligne expliquant pourquoi chaque chapitre commence là où il commence. Après approbation, ajoutez des éléments {"chapter": "..."} à l'EDL. cuts.py imprime une liste de chapitres YouTube (0:00 Introduction …) et écrit work/chapters.txt. Les voiles à l'écran et la liste YouTube utilisent les mêmes temps.

Une transition de chapitre à l'écran est un voile plein écran (voir reference/style.md, section 9) : le numéro du chapitre, le titre et une barre de progression. Mettez 0,3 à 0,6 s du bruit ambiant du clip lui-même avant chaque chapitre afin que le voile n'efface jamais le dernier mot.

5. Graphismes, plage par plage

Copiez le modèle dans le projet (cp -R $SKILL/template scene), servez le projet et ouvrez la scène. ?demo montre la démo du modèle lui-même ; sans cela, la scène charge work/program.json et joue work/proxy.mp4 :

python3 $SKILL/scripts/serve.py --project . --port 5600     # http://127.0.0.1:5600/scene/

Travaillez sur un chapitre ou une plage temporelle à la fois, jamais sur la vidéo entière en même temps. Pour chaque plage :

  1. Listez les moments clés : les quelques choses qui valent la peine d'être montrées (chiffres, étapes, une comparaison, une idée clé, une source). Ne mettez pas la narration à l'écran. Les cartes ne sont pas des sous-titres ; elles portent ce que la voix ne peut pas (structure, données, une image). Utilisez la direction créative ci-dessus.
  2. Verrouillez chaque moment clé à un mot prononcé avec at('phrase'). Un élément apparaît lorsque son mot est dit (environ 0,1 s avant) et ne disparaît qu'après la fin de sa phrase. at() renvoie la première correspondance : pour une phrase dite plus d'une fois, passez { from: sectionStart }. Un nombre dans le discours peut être un horodatage (« à zéro dix-huit » signifie 0:18 d'une vidéo, pas 0,18 seconde) ; vérifiez le contexte avant de le dessiner.
  3. Placez les transitions (reference/style.md, section 9) : un voile à chaque chapitre, un fondu flou là où l'image saute, un fondu flou sombre là où une coupe supprime une section entière. Rien sur les coupes simples.
  4. Vérifiez ?t=SECONDES gèle aux moments clés, puis remettez l'URL. Vérifiez toujours ?t=0 aussi : la première image est ce que YouTube et la plupart des lecteurs montrent avant la lecture, donc rien qui n'appartient à plus tard ne doit y être visible.

Après un recadrage, revérifiez chaque temps qui est lié à un moment source plutôt qu'à un mot : un temps source qui a été coupé n'existe plus dans le programme.

Les règles qui s'appliquent à chaque image sont dans reference/style.md. Exécutez l'audit de mise en page avant chaque remise :

node $SKILL/scripts/audit.mjs http://127.0.0.1:5600/scene/ --every 0.5

6. Effets sonores (uniquement si souhaité)

Suivez le profil. Sans profil, ne mettez aucun son sur les transitions ; utilisez des effets là où un son est le sujet (montrer à quoi ressemble un whoosh à un niveau donné, un clic sur le bouton expliqué). Générez la bibliothèque, puis déclenchez les effets depuis la timeline de la scène avec cue(t, 'whoosh') :

python3 $SKILL/scripts/sfx.py lib --out scene/sfx            # --gain -3 rend chaque effet 3 dB plus silencieux

Les niveaux et les règles sont dans reference/audio.md. La première réaction de l'utilisateur au niveau décide : s'ils disent « je ne l'entends pas » ou « trop », changez le niveau par petits pas et mémorisez la réponse pour le reste de la vidéo.

7. Rendu final et mixage

python3 $SKILL/scripts/build.py --project . video --final           # vidéo du programme en résolution source (l'arrière-plan du rendu)
node $SKILL/scripts/render.mjs "http://127.0.0.1:5600/scene/?src=../work/prog-final.mp4" --out out/frames --workers 4 --dpr 2
python3 $SKILL/scripts/mix.py --project . --video out/frames --out out/FINAL.mp4
python3 $SKILL/scripts/loudness.py out/FINAL.mp4

Ne démarrez un long rendu final qu'après que l'utilisateur a approuvé l'aperçu. Demandez avant de supprimer quoi que ce soit pour libérer de l'espace disque.

Livrez le fichier accompagné d'un court rapport : durée, résolution, nombre d'effets sonores, nombre de plans graphiques, volume sonore intégré (LUFS), plage dynamique (LRA).

Skills associés