Communitygithub.com

aly shadotmd / montage vidéo

Ajoute des sous-titres incrustés à une vidéo verticale (9:16) de type talking-head : minutage exact des mots, un mot à la fois ou par petits groupes segmentés par le sens, police Figtree Bold blanche avec contour noir et un mot optionnellement surligné, placé dans la zone de sécurité sans recouvrir le visage ni l'accroche. Conçu pour Claude Code et Runneth. À utiliser après le cadrage et l'accroche, quand on demande des sous-titres ou des mots à l'écran.

Qu'est-ce que montage vidéo ?

Cette compétence permet d'ajouter automatiquement des sous-titres incrustés à une vidéo verticale (9:16) de type talking-head, en respectant un minutage exact des mots. Elle propose deux styles : un mot à la fois (taille environ 140 px avec contour 6 px) ou quelques mots à la fois (environ 60 px avec contour 3 px), avec la possibilité de surligner le mot en cours dans une couleur choisie (par défaut jaune vif #FFFF3A). Les sous-titres utilisent exclusivement la police Figtree Bold, en blanc avec contour noir, sans boîte ni ombre, et sont placés à hauteur de poitrine (y 1260–1305 sur une vidéo 1080×1920) dans la zone de sécurité définie par la compétence post-preview (x 100–880, y 290–1340). La compétence fonctionne en plusieurs étapes : transcription avec word timings via faster-whisper, segmentation en chunks par sens (pour le mode plusieurs mots), création d'un fichier ASS avec styles appropriés, puis incrustation directe avec ffmpeg en un seul passage. Elle vérifie automatiquement que chaque mot apparaît une fois et au bon moment, que les sous-titres restent dans la zone de sécurité, ne recouvrent pas le visage ni l'accroche, et que le surlignage (si activé) tombe sur le mot prononcé. Elle apprend des retours de l'éditeur pour améliorer les règles de segmentation et de style. C'est l'étape 5 de la chaîne de montage : après le cut A-roll, le B-roll, le cadrage et l'accroche. Elle nécessite que la vidéo soit déjà cadrée et que l'accroche soit posée (ou ses timings connus). Un script facultatif peut être fourni pour garantir l'orthographe des noms et produits. Compatible avec Claude Code et Runneth (sous Runneth, tout est préinstallé ; sous Claude Code, nécessite les outils du skill video-editing-setup).

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

Demander à votre IA préférée

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

Documentation

Sous-titres

L'objectif : des sous-titres que le spectateur lit sans effort. Chaque sous-titre est un court segment de sens complet, minuté exactement sur le mot, situé au même endroit pendant toute la vidéo.

C'est l'étape 5 de la chaîne de montage : cut A-roll, B-roll, cadrage, accroche, sous-titres. Elle s'applique sur la vidéo cadrée, après l'accroche, afin que les sous-titres restent en dehors de l'accroche.

Cette compétence est conçue pour Claude Code et Runneth.

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 silencieusement que ~/.video-editing-tools/bin/ffmpeg -version fonctionne. Si oui, utilisez les outils dans ~/.video-editing-tools/bin (ffmpeg, ffprobe, python) partout où cette compétence mentionne ffmpeg, ffprobe ou python3, et continuez. Sinon, suivez d'abord la compétence video-editing-setup, puis revenez ici.

La police : Figtree Bold, la seule police utilisée par cette compétence. C'est une police Google gratuite. Vérifiez silencieusement si elle se trouve sur l'ordinateur ou dans un dossier fonts à côté du projet. Si ce n'est pas le cas, demandez : « Cette compétence utilise Figtree, une police Google gratuite. Voulez-vous que je la télécharge ? » En cas d'accord, téléchargez le fichier Figtree Bold depuis Google Fonts (fonts.google.com/specimen/Figtree) dans un dossier fonts à côté du projet, et continuez. Cette vérification s'applique également dans Runneth.

Ce dont elle a besoin

  • La vidéo, cadrée et avec l'accroche (ou son timing).
  • Le script, s'il existe, pour que les noms et les mots de produits soient correctement orthographiés.
  • Quand l'accroche est à l'écran et où elle se trouve.

Étape 0 : Demander d'abord le style

Posez ces questions une par une, en attendant chaque réponse :

  1. « Voulez-vous les sous-titres un mot à la fois, ou quelques mots à la fois ? »
  2. Uniquement pour quelques mots à la fois : « Voulez-vous que le mot prononcé s'allume dans une couleur différente ? »
  3. Uniquement si oui : « Quelle couleur ? » Proposez le jaune vif (#FFFF3A) par défaut, ou leur couleur de marque.

Étape 1 : Obtenir chaque mot avec son timing

  1. Transcrivez le son de la vidéo elle-même avec les timings des mots (faster-whisper base, word_timestamps=True, vad_filter=False). Les timings doivent provenir de cette vidéo exacte, car chaque coupe les déplace.
  2. Utilisez l'orthographe du script pour les noms, marques et mots de produits, et conservez les timings de la transcription.
  3. Chaque mot prononcé obtient un sous-titre. Aucun mot non prononcé n'en obtient.

Étape 2 : Segmenter en chunks par sens (uniquement pour quelques mots à la fois)

  1. Généralement 1 à 3 mots par chunk, jusqu'à environ 5 lorsque cela garde une phrase entière et que ça tient dans la largeur.
  2. Garder ensemble : un nom avec ses mots descriptifs (« une boisson sommeil »), les noms (« compétence Claude »), un verbe avec ses petits mots (« aller au lit »), et les pensées courtes complètes (« mais c'est ce que je ressentais »).
  3. Chaque chunk se termine sur un mot porteur de sens. Les petits mots (le, la, un, une, de, à, et, parce que, que, je) commencent le chunk suivant à la place.
  4. Chaque chunk s'affiche depuis son premier mot jusqu'au début du chunk suivant, de sorte que l'écran ne reste jamais vide au milieu d'une phrase.
  5. Relisez toute la liste une fois comme un spectateur et corrigez toute coupure qui semble maladroite.

Étape 3 : Le rendu

Chaque sous-titre utilise Figtree Bold, blanc, avec un contour noir. Pas de boîte, pas d'ombre, pas d'animation d'apparition : les sous-titres apparaissent simplement. Principalement en minuscules, avec I, les noms et les marques en majuscules, et sans point ni virgule à la fin.

  • Un mot à la fois : environ 140 px avec un contour de 6 px, un mot à l'écran à la fois. Chaque mot reste jusqu'à ce que le suivant commence. Un mot long est réduit pour tenir dans environ 720 px de large. Sautez l'étape de segmentation en chunks (Étape 2).
  • Quelques mots à la fois : environ 60 px avec un contour de 3 px, en utilisant les chunks de l'Étape 2.
    • Avec surlignage du mot : le mot prononcé change à la couleur choisie dans le chunk, style karaoké.
    • Sans : tout le chunk reste blanc.

Étape 4 : Leur emplacement

  1. Centré, à hauteur de poitrine, environ y 1260 à 1305 dans une vidéo 1080×1920 : sous le menton, au-dessus des légendes et boutons de l'application.
  2. Dans la zone de sécurité : Les zones de sécurité proviennent de la compétence post-preview : gardez tout à l'intérieur de x 100 à 880, y 290 à 1340 sur une image 1080×1920 (la seule boîte qui est sûre pour Reels, Stories, Feed, TikTok et Facebook). Consultez post-preview pour les zones exactes couvertes par un placement lorsque quelque chose s'approche d'un bord. Les sous-titres centrés gardent donc chaque lettre (contour inclus) dans x 200 à 880, soit environ 680 px de large, et au-dessus de y 1340. Mesurez la largeur de chaque chunk ; un chunk trop large est divisé.
  3. Hors de l'accroche. Pendant que l'accroche est à l'écran, les sous-titres se placent en dessous avec un espace clair ; quand l'accroche est basse, les sous-titres descendent dans la zone de sécurité plutôt que de la chevaucher.
  4. Au même endroit pendant toute la vidéo, pour que l'œil sache toujours où regarder.
  5. Les sous-titres se placent sous la bouche, jamais sur le visage. Chaque sous-titre évite les yeux, le nez et la bouche. Lorsque le visage est si bas que l'emplacement des sous-titres le recouvrirait, c'est le cadrage qui est en cause : renvoyez-le au cadrage pour correction (ou déplacez les sous-titres vers le bas dans la zone de sécurité en attendant la correction).

Étape 5 : Construire et incruster

  1. Écrivez les sous-titres dans un fichier de sous-titres ASS. Avec le surlignage du mot, utilisez un événement par mot pour que la couleur suive la parole. L'espacement des lettres se fait via une balise inline \fsp.
  2. Pointez le rendu vers un dossier fonts contenant uniquement le fichier Figtree Bold, pour que le bon poids soit utilisé : ass=sous-titres.ass:fontsdir=polices.
  3. Incrustez en un seul passage depuis la vidéo pleine qualité (x264, slow, crf 14 à 18), son copié sans modification.

Étape 6 : Vérifier avant que quiconque ne voie

  1. Chaque mot, une fois, à temps : comparez la liste des sous-titres à la transcription mot pour mot.
  2. Une image de chaque chunk : dans la zone de sécurité, rien de coupé, rien ne chevauche l'accroche, et le sous-titre entier est sous la bouche. Utilisez un détecteur de visage ou lisez chaque image ; un sous-titre sur une partie du visage échoue à la vérification.
  3. Avec le surlignage du mot, la couleur tombe sur le mot prononcé, vérifié à plusieurs points de la vidéo.

Étape 7 : Apprendre de l'éditeur

Lorsque l'éditeur modifie une segmentation, un mot ou le rendu, demandez pourquoi (sauf s'il le dit). Écrivez la raison comme une règle dans « Règles de sous-titres de l'éditeur » ci-dessous, formulée comme ce qui devrait être vrai. Les raisons que vous avez trouvées vous-même sont marquées « (IA) » et ne modifient jamais les règles.

Règles de sous-titres de l'éditeur

(Vide au départ. Ajoutez chaque règle donnée par l'éditeur.)

Individual skills in this repo

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

alyshadotmd/video-editing

Turn raw talking-head footage full of repeated takes (one long recording, or several recordings of the same script) into a tight rough cut. Find every take of every line, judge each take on its words, sound and picture, pick the keeper for each line, and either show the editor the picks first or go straight to the cut. The cut is checked so no word is chopped and no pause is left in before anyone sees it. Built for Claude Code and Runneth. Use when someone uploads raw talking-head footage and asks to find the takes, pick the best ones, make a cut list or rough cut it. Triggers: "process my a-roll", "find my takes", "pick the best takes", "rough cut this", "cut list", "edit my talking head", "which take is best

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

Skills associés