alyShadot.md/video-editing

Transformez des enregistrements bruts de tête parlante (une longue prise ou plusieurs prises du même script) en un montage serré. Trouvez chaque prise de chaque réplique, jugez chaque prise sur ses paroles, son son et son image, sélectionnez la meilleure pour chaque réplique, et soit montrez les sélections à l'éditeur en premier, soit passez directement au montage. Le montage est vérifié pour qu'aucun mot ne soit coupé et qu'aucune pause ne subsiste avant que quiconque ne le voie. Conçu pour Claude Code et Runneth.

Qu'est-ce que video-editing ?

Cette compétence automatise le montage de vidéos de tête parlante en transformant des enregistrements bruts (une longue prise ou plusieurs prises d'un même script) en un montage serré et propre. Elle trouve chaque tentative de chaque ligne, les évalue selon les paroles, le son et l'image, sélectionne la meilleure prise pour chaque ligne, et produit soit une liste de coupes, soit un montage final directement. Destinée à Claude Code et Runneth, elle nécessite ffmpeg, un outil de reconnaissance vocale avec timings (Whisper), et un script Python de vérification. La compétence gère plusieurs enregistrements, détecte les faux départs, assemble des phrases à partir des meilleurs fragments de différentes prises, et vérifie rigoureusement que chaque mot est entier et qu'aucune pause indésirable ne subsiste. Elle apprend également des retours de l'éditeur pour affiner ses critères de sélection.

Compatible avec✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/alyshadotmd/video-editing/tree/HEAD/skills/aroll-processing

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Traitement du plan principal

Objectif : un long enregistrement, ou plusieurs enregistrements du même script, entre en entrée et un montage serré en sort, construit à partir de la meilleure prise de chaque réplique. La parole s'enchaîne directement, chaque mot est entier, et le montage sonne comme une seule prise propre, du premier coup.

Cette compétence est conçue pour Claude Code et Runneth. Elle nécessite :

  • ffmpeg pour mesurer l'audio, extraire des images fixes et couper la vidéo.
  • Les timings de chaque mot prononcé : un outil de reconnaissance vocale qui donne le temps de chaque mot (Whisper, faster-whisper, whisper.cpp).
  • Un moyen de juger l'image : voir « Comment juger une prise » ci-dessous.
  • Le script de vérification dans scripts/cut_check.py (python3 avec numpy et ffmpeg).

Parlez à l'éditeur dans un langage simple et courant, une idée à la fois.

Avant de commencer : les outils

Dans Runneth, tout est déjà installé : passez cette section.

Dans Claude Code, cette compétence nécessite les outils vidéo gratuits installés par la compétence video-editing-setup. Vérifiez discrètement que ~/.video-editing-tools/bin/ffmpeg -version fonctionne. Si c'est le cas, utilisez les outils dans ~/.video-editing-tools/bin (ffmpeg, ffprobe, python) chaque fois que cette compétence mentionne ffmpeg, ffprobe ou python3, et continuez. Sinon, suivez d'abord la compétence video-editing-setup, puis revenez ici.

Étape 0 : Deux vérifications rapides avant tout travail

  1. Le fichier est bien celui que l'éditeur voulait. S'il a dit qu'il s'agit d'un re-tournage ou d'un nouveau clip et qu'il a la même durée ou le même cadre qu'un précédent, demandez en une ligne avant de commencer.

  2. Posez exactement cette question, comme une seule question avec deux options :

    « Voulez-vous que je vous montre d'abord les prises que je garderais, ou que je fasse directement le montage ? »

    • Montrez-moi d'abord → suivez chaque étape ci-dessous et arrêtez-vous à l'étape 4 pour l'approbation de l'éditeur.
    • Faites directement le montage → exécutez toutes les étapes du début à la fin sans vous arrêter. Mentionnez une fois à la fin tout ce dont vous n'étiez pas sûr.

    Sautez la question si l'éditeur a déjà dit ce qu'il voulait (« fais le montage », « montre-moi les prises d'abord »). Si personne n'est là pour répondre, considérez que c'est « Faites directement le montage ».

Étape 1 : Obtenir les paroles

  1. Vérifiez la durée, l'orientation et la fréquence d'images de chaque enregistrement (ffprobe). Lorsqu'il y a plusieurs enregistrements, donnez à chacun une étiquette simple (Vidéo A, Vidéo B, Vidéo C) et exécutez chaque étape ci-dessous sur tous.
  2. Extrayez l'audio de chaque enregistrement : ffmpeg -i IN.mov -vn -ac 1 -ar 16000 audio.wav.
  3. Marquez chaque segment de parole : ffmpeg -i audio.wav -af silencedetect=n=-35dB:d=0.3 -f null -. Les segments entre les silences sont les îlots de parole. Chaque mot vit à l'intérieur d'un îlot, et ils sont plus précis que n'importe quel timing de transcription.
  4. Transcrivez avec les timings des mots. Avec faster-whisper : modèle base, word_timestamps=True, condition_on_previous_text=False, et un initial_prompt listant les noms et mots de marque susceptibles d'apparaître dans la vidéo. Les modèles plus grands uniquement anglais nettoient discrètement les redémarrages, ce qui cache les faux départs que cette compétence a besoin de voir.
  5. Les transcriptions dérivent ou sautent des passages dans les longs segments. Chaque îlot de parole a besoin de mots. Quand un îlot n'en a pas, ou que des mots semblent manquer entre les silences, retranscrivez juste ce segment : commencez la fenêtre environ 1 seconde avant l'îlot, terminez-la environ 1 seconde après, et désactivez tout filtre de parole (vad_filter=False).
  6. Les courtes fenêtres retranscrites peuvent inventer des mots à la fin qui n'ont pas été dits (« Merci beaucoup », « Merci d'avoir regardé »). Ne conservez que les mots qui se trouvent à l'intérieur de l'îlot et qui correspondent à la ligne ; les mots empilés au même horodatage sont inventés.
  7. Corrigez les erreurs évidentes de compréhension des noms et mots de marque. S'il y a un script, utilisez-le comme carte des répliques ; sinon, la transcription est la carte.

Étape 2 : Grouper les prises

  1. Divisez les rushes en répliques (une phrase ou une idée chacune) et regroupez chaque tentative de la même réplique, dans tous les enregistrements. Plusieurs enregistrements d'un même script constituent un seul pool de prises : la réplique 1 reçoit toutes les prises de la réplique 1 de la Vidéo A, B et C côte à côte, et chaque prise est étiquetée avec son enregistrement (« Vidéo B, prise 3 »). Les tentatives commencent généralement par les mêmes quelques mots.
  2. Une prise va du début d'une tentative à la fin de son dernier mot, avant que la tentative suivante ne commence.
  3. Marquez chaque prise comme complète (dit toute la réplique) ou faux départ (s'arrête en cours de route).
  4. Chaque phrase à l'intérieur d'une réplique compte comme son propre morceau. Une réplique peut être construite à partir des meilleurs morceaux de différentes prises (la première phrase de la prise 4, la seconde de la prise 2), y compris des morceaux propres de faux départs.

Étape 3 : Juger chaque prise

Chaque prise de chaque réplique est jugée, y compris les répliques dites une seule fois. La meilleure version de chaque phrase gagne, quelle que soit la prise ou l'ordre. Construisez chaque réplique à partir de ces meilleurs morceaux lorsque la jointure entre eux est propre (voir règle 7 ci-dessous). Utilisez « Qu'est-ce qui fait qu'une prise est la meilleure » ci-dessous, et écrivez une ligne par prise dans le fichier des prises (modèle : templates/takes.md) : réplique, prise, temps, ce que vous avez vu, garder ou non, et une courte raison.

Comment juger une prise

Ce qu'il faut juger reste le même dans les deux cas. Comment le voir dépend de l'outil :

  • Dans Runneth (ou toute configuration qui peut envoyer la vidéo à un modèle qui la regarde, comme Gemini), faites regarder chaque enregistrement par ce modèle et jugez chaque réplique répétée sur « Qu'est-ce qui fait qu'une prise est la meilleure », ainsi que le ton, l'emphase, le timing des blagues et les hésitations. Gardez vos propres choix séparés de ce que vous lui envoyez, afin que les deux lectures restent indépendantes. Là où il choisit une prise différente de la vôtre, son choix prévaut. Prenez toujours les temps de la transcription et des îlots de parole, jamais du modèle vidéo : ses horodatages dérivent et il saute parfois des répliques.
  • Dans Claude, qui ne peut pas regarder la vidéo, jugez à partir de trois choses qu'il peut vérifier par lui-même :
    1. Les paroles (transcription) : toute la réplique, sans trébuchement, sans mot de remplissage, sans redémarrage au milieu.
    2. Le son (astats sur chaque prise) : volume stable, pas d'écrêtage, pas de bruit ou de rafale de bruit.
    3. L'image (images fixes) : une planche par réplique répétée avec toutes les prises empilées, 2 images par seconde : ffmpeg -nostdin -ss START -t LENGTH -i IN.mov -vf fps=2,scale=160:-2,tile=10xN take.jpg, une par prise, empilées en une seule image. Regardez les planches pour tout ce qui est dans « Qu'est-ce qui fait qu'une prise est la meilleure ».
  • Enregistrements d'écran avec une voix : jugez le phrasé, la voix, et si le pointage ou les clics correspondent à ce qui est dit.

Étape 4 : Montrer les sélections (uniquement si l'éditeur a demandé à les voir d'abord)

  1. Montrez la liste de coupe : une ligne numérotée par morceau conservé, début-fin et les mots exacts conservés. Marquez les choix serrés avec « (choix serré : la prise 2 est tout aussi propre) » sur cette ligne, afin que l'éditeur sache où regarder ; les choix évidents n'ont pas de note. Ajoutez une courte ligne à la fin uniquement si quelque chose bloque le montage (un mot que vous ne pouvez pas distinguer).
  2. L'éditeur approuve, échange une prise (« utilise la prise 2 pour la réplique 4 ») ou supprime une réplique. Ses modifications prévalent, même si un modèle vidéo est en désaccord plus tard. Lorsqu'il échange, demandez pourquoi en une courte question s'il n'a pas dit. Sa raison est la façon dont la compétence apprend (Étape 7).

Étape 5 : Construire le montage

Le montage est très serré : la parole s'enchaîne directement partout, même à l'intérieur des prises conservées. Les pauses de réflexion et les respirations entre les phrases sont coupées. Le seul moment maintenu est d'environ 0,5 s sur la dernière image.

  1. Les bords viennent des îlots de parole, pas de la transcription. Chaque morceau conservé commence au premier son de son îlot et se termine à son dernier. Les respirations, claquements de lèvres et bruits de manipulation avant le premier mot peuvent dépasser -30 dB et être intégrés à l'îlot, donc un morceau commence à l'attaque de son premier mot (là où le niveau monte jusqu'à la parole, généralement -25 dB ou plus fort), pas au premier pic. Toute respiration ou bruit au début ou à la fin d'un morceau est coupé. Les fins fonctionnent dans l'autre sens : une réplique s'éteint souvent doucement (« endormi la nuit » dit doucement), donc un morceau se termine après son dernier mot même lorsque ce mot est plus doux que le reste. Vérifiez que le dernier mot de chaque réplique est dans la transcription du montage.
  2. Les pauses à l'intérieur d'une prise conservée sont trouvées avec un passage plus sensible, silencedetect=n=-30dB:d=0.2, et chaque pause de 0,25 s ou plus est coupée. Les redémarrages et les mots répétés à l'intérieur d'une prise sont également coupés, ne conservant que le phrasé final propre.
  3. Ajoutez environ 0,05 s de chaque côté à chaque morceau. Plus laisse une pause ; moins coupe un mot. Ensuite, accrochez chaque bord à une image entière (le début arrondit à l'image précédente, la fin arrondit à l'image suivante). Les bords entre les images provoquent la duplication ou la perte d'images à la jointure, ce qui décale chaque coupe ultérieure d'une ou deux images et laisse passer des images parasites lorsque des images de coupe sont placées sur les coupes.
  4. Les morceaux de moins d'environ 0,3 s sont presque toujours des restes (une syllabe isolée). Supprimez-les sauf s'ils contiennent un mot entier.
  5. Ajoutez un fondu audio de 20 ms à chaque jointure et assemblez le tout en un seul ré-encodage à partir d'une copie de travail. Le fichier original reste intact.
  6. Enregistrez la liste des morceaux ([[début, fin], ...] en secondes) sous clips.json ; le script de vérification la lit.

Étape 6 : Vérifier le montage avant que l'éditeur ne le voie

Chaque version que l'éditeur voit a passé toutes les vérifications sur ce fichier exact. Une vérification qui n'a pas été effectuée compte comme un échec.

  1. Exécutez le script de vérification : python3 scripts/cut_check.py --voice audio.wav --clips clips.json --out CUT.mp4. Il vérifie trois choses et affiche RESULT PASS ou FAIL :
    • Fins : les 50 dernières ms de chaque morceau sont en dessous du niveau de parole (-30 dB). Si ce n'est pas le cas, un mot a été coupé : déplacez cette fin plus tard là où le niveau baisse.
    • Débuts : les 30 ms avant le début de chaque morceau sont silencieuses, donc aucun morceau ne commence au milieu d'un mot.
    • Trous : aucune pause de 0,25 s ou plus nulle part dans le montage, sauf la tenue finale. Avec plusieurs enregistrements, exécutez-le une fois par enregistrement : l'audio de cet enregistrement comme --voice et seulement ses morceaux dans clips.json, chaque fois avec le même montage comme --out. Si le son provient d'un fichier différent de l'image (un micro séparé), coupez également l'audio de la caméra avec les mêmes trim et passez-le comme --camlock, afin que le script vérifie aussi la synchronisation (toutes les 3 secondes à moins de 40 ms).
  2. Chaque mot, entier, une fois : transcrivez le montage avec les timings des mots et comparez-le mot pour mot à la liste de coupe. Un demi-mot à une jointure signifie que ce bord est trop serré. Un mot ou une phrase répété à une jointure signifie un redémarrage résiduel. Pas de silence entre les mots : dans cette transcription, aucun écart entre la fin d'un mot et le début du suivant n'est plus long qu'environ 0,3 s (sauf la tenue finale). La vérification des trous dans le script ne trouve que les pauses silencieuses ; une pause pleine de respiration est assez forte pour la passer, donc cette vérification des écarts entre mots est ce qui l'attrape. Taillez le morceau à son premier mot et exécutez à nouveau toutes les vérifications.
  3. Chaque jointure, une par une : pour chaque coupe, nommez le dernier mot avant elle et le premier mot après elle, et confirmez que les deux sont entièrement prononcés. Transcrivez une fenêtre de 2 secondes autour de chaque jointure pour vérifier (un général « un problème ? » laisse passer un mot coupé). Dans Runneth, faites également regarder le montage par le modèle vidéo en tant que spectateur pointilleux de première fois et listez les problèmes avec les temps : mots coupés ou isolés, défauts, images figées, sauts brusques.
  4. Durée : la durée du montage correspond au total de la liste de coupe.

Réparez tout ce qui échoue, coupez à nouveau et relancez toutes les vérifications.

Étape 7 : Apprendre de l'éditeur

Chaque fois que l'éditeur échange une prise, modifie un bord ou dit pourquoi une prise est meilleure, transformez cette raison en règle générale et fusionnez-la dans « Qu'est-ce qui fait qu'une prise est la meilleure » ci-dessous (ou dans l'Étape 5 quand il s'agit de la finesse du montage). Gardez la liste courte : réécrivez et combinez les règles au lieu d'en ajouter de nouvelles. Seules les raisons de l'éditeur changent les règles.

Qu'est-ce qui fait qu'une prise est la meilleure

Ces règles proviennent des choix réels d'une éditrice sur ses propres vidéos de tête parlante. Appliquez-les dans l'ordre, puis remplacez-les par les règles de votre propre éditeur au fur et à mesure que ses raisons arrivent.

  1. Toute la réplique, dite proprement. Une prise avec un trébuchement ou un mot manquant perd face à une prise propre, aussi bonne soit-elle visuellement.
  2. Rien ne couvre le visage. Une main ou un micro devant la bouche disqualifie une prise.
  3. Énergie. Les gestes, le mouvement et une lecture animée l'emportent sur une lecture statique et plate.
  4. Le visage le plus heureux. Un vrai sourire et des yeux brillants gagnent entre deux prises propres.
  5. Le visage correspond à la réplique. Des yeux grands ouverts sur une chute, un vrai sourire sur une réplique joyeuse.
  6. Rythme naturel et régulier. Pas précipité, pas de longues pauses.
  7. Meilleurs morceaux, assemblés proprement. La meilleure prise gagne quel que soit l'enregistrement dans lequel elle se trouve, et une réplique faite de parties de deux prises bat une prise entière lorsque chaque partie est la meilleure version. La jointure est propre lorsque la tête et les mains du locuteur sont à peu près à la même place des deux côtés (vérifiez l'image avant et après), ou lorsque la jointure est ensuite recouverte par des images de coupe. Un changement entre enregistrements nécessite également la même apparence des deux côtés (cheveux, lumière, cadrage, produit en main) ; lorsque l'apparence change, le changement se fait entre les répliques et est recouvert par des images de coupe ou un changement de zoom.
  8. Plus court quand il frappe plus fort. Coupez une réplique à sa partie la plus forte lorsque le reste répète ce qui a déjà été dit ou ralentit la vidéo (« jusqu'à ce que je sois à court » au lieu de « Je n'avais pas réalisé à quel point ça m'aidait jusqu'à ce que je sois à court »).
  9. Les choix serrés restent des choix serrés. Lorsque deux prises sont également propres et que les images ne montrent aucune différence réelle, choisissez-en une et marquez-la comme choix serré. Les images fixes ne peuvent pas montrer le ton, alors ne prétendez pas que l'une est clairement meilleure.

Règles pour chaque montage

  • Chaque mot dans le montage provient de l'audio. Les mots que vous ne pouvez pas distinguer sont marqués comme peu clairs, jamais devinés.
  • Les temps proviennent de la ligne de temps de l'enregistrement original, et chaque morceau dans la liste de coupe nomme son enregistrement.
  • Les temps de l'IA sont approximatifs, pas exacts. Chaque bord est défini à partir des îlots de parole et vérifié dans l'audio.

Individual skills in this repo

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

alyshadotmd/video-editing

Turn raw b-roll footage into a tagged, searchable library of short clips. Watch each b-roll video once, tag every useful moment with timestamps, pick the moments worth keeping (the editor picks, or the AI picks on its own if the editor says so), cut only those picks with a 1-second buffer, and learn the editor's taste from their reasons. Use when someone uploads b-roll, asks to tag, bank or label b-roll, or asks to find a kind of shot ("find me unboxing b-roll"). Triggers: "process my b-roll", "tag this b-roll", "bank this b-roll", "b-roll library", "find me unboxing b-roll", "do we have b-roll of", "label my b-roll

alyshadotmd/video-editing

Plan and place b-roll on a video from its first cut: go through the cut line by line, decide which lines get b-roll and what kind of shot, pull the best matching moments from a tagged b-roll library, list what still needs filming, and place the b-roll once the editor approves. Use after a first cut exists and someone wants b-roll added, asks what b-roll a video needs, or asks for a b-roll shot list. Triggers: "add b-roll", "what b-roll do I need", "b-roll plan", "place the b-roll", "b-roll for this cut", "what should I film for b-roll", "shot list for this edit

alyshadotmd/video-editing

>- Add burned-in captions to a vertical (9:16) talking-head video: exact word timings, one word at a time or short chunks broken by meaning, white outlined Figtree Bold with an optional highlighted word, placed in the safe area clear of the face and the hook headline. Built for Claude Code and Runneth. Use after framing and the headline, when someone asks for captions, subtitles or on-screen words.

Skills associés