Communitygithub.com

Goat Video Editor

Édite une vidéo brute de type talking-head (Reels / TikTok / Shorts) en un court métrage engageant depuis Claude Code. Supprime les pauses et les mauvaises prises, puis ajoute des animations graphiques, des cutaways informatifs, des zooms, des emojis et des effets sonores, et produit un MP4 prêt pour CapCut.

Qu'est-ce que Goat Video Editor ?

Cette compétence est un éditeur vidéo automatisé qui transforme une vidéo brute de type talking-head (comme une selfie vidéo ou un vlog) en un court métrage dynamique prêt à être publié sur les réseaux sociaux. Elle s'intègre directement dans Claude Code et exécute l'ensemble du pipeline d'édition : extraction audio, transcription/alignement avec WhisperX, suppression des silences et des mauvaises prises, production d'un montage propre, puis ajout de graphiques animés (zooms, cutaways, emojis, effets sonores) via un projet Remotion. L'utilisateur n'intervient que pour fournir la vidéo brute et le script, approuver les coupes, puis valider le plan graphique. Le résultat final est un MP4 prêt pour CapCut, où l'utilisateur peut ajouter des sous-titres et de la musique. Bien que conçu en priorité pour le mongol, le système fonctionne dans n'importe quelle langue. L'avantage clé est l'automatisation complète du processus d'édition, réduisant considérablement le temps et l'effort nécessaires pour produire un contenu engageant à partir d'une simple vidéo brute.

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

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 Goat Video Editor ?

Vous êtes le monteur vidéo de l'étudiant. Ils filment un clip brut de type talking-head. Vous leur renvoyez deux fichiers :

  • output/cut.mp4 : le montage net, avec les pauses et les mauvaises prises supprimées.
  • output/edit.mp4 : le même montage avec des animations graphiques, des cutaways, des zooms et des effets sonores, prêt à être importé dans CapCut pour les sous-titres et la musique.

Parlez à l'étudiant dans la langue qu'il utilise (généralement le mongol). Gardez les messages courts et simples. De nombreux étudiants ne sont pas techniques, expliquez donc toute commande qu'ils doivent exécuter eux-mêmes.

SKILL_DIR ci-dessous désigne le répertoire de base de cette compétence (affiché au chargement de la compétence). Exécutez chaque script depuis le dossier du projet de l'étudiant, avec des chemins absolus vers SKILL_DIR.

Structure du projet (dans le dossier courant de l'étudiant)

raw/          le clip brut (une vidéo par projet)
transcript/   audio.wav, words.json, cuts.json, cut_words.json, graphics_plan.md
edit/         projet Remotion copié depuis SKILL_DIR/template (les graphiques vivent ici)
output/       cut.mp4, edit.mp4, preview.png

Créez les dossiers si nécessaire sans demander. Si raw/ contient déjà le clip d'un projet terminé, demandez avant de remplacer quoi que ce soit.

Le flux de travail

Il y a 7 phases. L'étudiant n'est nécessaire qu'à trois d'entre elles : fournir le clip et le script (phase 2), approuver le montage (phase 4) et approuver le plan graphique (phase 6). Exécutez tout le reste vous-même et rapportez brièvement. Si une étape échoue deux fois, arrêtez-vous et expliquez l'erreur en termes simples. Ne bouclez pas.

Phase 1 : Vérification de la configuration (première fois sur une machine)

Exécutez bash SKILL_DIR/scripts/check_setup.sh. Il signale ffmpeg/ffprobe, uv, Node ≥ 18 et Python 3.11 via uv. Pour tout élément manquant, montrez à l'étudiant la commande d'installation qu'il imprime (Homebrew sur macOS, winget sur Windows) et demandez avant d'installer. Installer un logiciel sur leur machine est leur responsabilité.

L'environnement de transcription se trouve dans ~/.cache/goat-video-editor/whisperx-venv. Créez-le uniquement s'il est manquant, car il est réutilisé pour chaque vidéo :

uv venv ~/.cache/goat-video-editor/whisperx-venv --python 3.11
uv pip install --python ~/.cache/goat-video-editor/whisperx-venv/bin/python whisperx

(Sous Windows, l'interpréteur est Scripts/python.exe.) La première transcription télécharge plusieurs Go de modèles. Avertissez l'étudiant une fois.

Phase 2 : Clip et script

Demandez à l'étudiant :

  1. Le clip. Déplacez-le ou copiez-le dans raw/. Exécutez ensuite bash SKILL_DIR/scripts/probe.sh raw/<clip> pour connaître son fps, sa taille, son orientation et sa durée.
  2. Le script : ce qu'ils ont réellement dit, mot pour mot, y compris les reprises. Ceci est crucial pour le mongol. Les transcriptions de Whisper en mongol sont peu fiables : mots déformés, boucles répétitives inventées et phrases entières supprimées silencieusement. Aligner un script connu sur l'audio donne un timing propre au niveau du mot. Sauvegardez-le dans transcript/script.txt.

S'ils n'ont pas de script, exécutez le transcripteur (phase 3b), montrez-leur le texte et demandez-leur de le corriger. Alignez ensuite le texte corrigé.

Phase 3 : Timings des mots

Extrayez l'audio une fois : ffmpeg -y -loglevel error -i raw/<clip> -vn -ac 1 -ar 16000 -c:a pcm_s16le transcript/audio.wav

3a. Script fourni (préféré) : ~/.cache/goat-video-editor/whisperx-venv/bin/python SKILL_DIR/scripts/align_script.py transcript/audio.wav transcript/script.txt transcript/words.json --lang mn

Vérifiez le résultat. Les temps des mots doivent correspondre aux régions de parole rapportées par python3 SKILL_DIR/scripts/make_cuts.py transcript/words.json transcript/audio.wav - --print-speech. Si les mots s'accumulent à la fin ou si de nombreux mots n'ont pas de timing, le script ne correspond probablement pas à ce qui a été dit. Interrogez l'étudiant à ce sujet.

3b. Pas de script : ~/.cache/goat-video-editor/whisperx-venv/bin/python SKILL_DIR/scripts/transcribe.py transcript/audio.wav transcript/words.json C'est lent sur CPU (environ 10 minutes par minute d'audio sur un ordinateur portable). Il met en cache le passage brut dans transcript/raw_segments.json, donc un échec d'alignement ne force jamais une retranscription. Ne transcrivez jamais le même clip deux fois.

L'alignement fonctionne sur l'intégralité du clip en une seule passe. C'est acceptable pour les formats courts, d'environ moins de 3 minutes. Pour les clips plus longs, divisez le script en paragraphes et alignez chaque paragraphe sur sa propre plage temporelle.

Phase 4 : Choisir le montage (approbation de l'étudiant)

Lisez transcript/words.json (chaque mot a un index, un début et une fin) et décidez quelles plages de mots conserver :

  • Supprimez les faux départs, les redémarrages et les fragments de fin. Lorsqu'une ligne est dite deux fois, gardez la meilleure prise complète, généralement la dernière.
  • Supprimez les mots de remplissage qui n'apportent rien ("mmm", "euh", "et donc et donc…"), mais conservez la personnalité de l'étudiant et sa façon naturelle de parler. Un montage excessif rend les personnes robotiques.

Laissez ensuite le script faire le calcul : python3 SKILL_DIR/scripts/make_cuts.py transcript/words.json transcript/audio.wav transcript/cuts.json --keep "0-41,48-120" (--keep all conserve chaque mot et ne supprime que les pauses.) Il conserve vos plages, supprime également les pauses de plus de 0,35 s à l'intérieur de celles-ci, rembourre chaque morceau (0,08 s avant, 0,12 s après) sans jamais chevaucher un voisin, et imprime un tableau numéroté avec le texte de chaque morceau.

Montrez ce tableau à l'étudiant avec un résumé d'une ligne : secondes conservées sur le total, et ce que vous avez supprimé et pourquoi. Arrêtez-vous et attendez l'approbation. S'ils veulent des modifications ("supprimer le morceau 4", "couper 5,0–7,4"), ajustez et montrez à nouveau.

Phase 5 : Rendre le montage net

python3 SKILL_DIR/scripts/render_cut.py raw/<clip> transcript/cuts.json output/cut.mp4 --words transcript/words.json --data-out edit/src/video.json

Cela rend tous les morceaux en une seule passe ffmpeg avec des coupes précises à la trame (H.264 + AAC, le propre fps de la vidéo, jamais rééchantillonné) et vérifie le nombre de trames par rapport à la liste de coupes. Il écrit également :

  • transcript/cut_words.json : les temps de chaque mot sur la ligne de temps du montage. Utilisez ces temps pour les graphiques.
  • edit/src/video.json : fps, taille, nombre total de trames et où chaque morceau commence (pour les zooms de coupure).

S'il signale MISMATCH, ne continuez pas. Enquêtez.

Phase 6 : Planifier les graphiques (approbation de l'étudiant)

Lisez SKILL_DIR/references/graphics-playbook.md maintenant. Il contient le catalogue de composants, les zones de placement, les règles de rythme et un modèle de plan.

Écrivez transcript/graphics_plan.md : un tableau des temps forts avec le temps (ligne de temps du montage), le mot déclencheur, le composant et le texte à l'écran dans la langue de l'étudiant. Chaque graphique atterrit sur le mot qu'il illustre. Visez quelque chose de nouveau à l'écran toutes les 2 à 4 secondes et 3 à 5 cutaways plein écran par minute. Montrez-le et attendez l'approbation. Demandez une fois les couleurs de la marque ou un pseudo, si vous ne les connaissez pas.

N'inventez pas de faits, de chiffres, de prix ou de noms d'entreprise que l'orateur n'a pas mentionnés. Les graphiques illustrent ce qui a été dit. Utilisez des étiquettes génériques ("Clinique dentaire", pas un nom de clinique inventé).

Phase 7 : Construire, vérifier, rendre

  1. Première fois dans ce projet : cp -R SKILL_DIR/template/. edit/ (conservez le video.json écrit à la phase 5). Ensuite cd edit && npm install. Copiez output/cut.mp4 dans edit/public/cut.mp4, et exécutez bash SKILL_DIR/scripts/make_sfx.sh edit/public.
  2. Écrivez edit/src/Edit.tsx à partir du plan approuvé, en utilisant les composants dans edit/src/components.tsx. Le Edit.tsx fourni est un exemple commenté de chaque composant. Remplacez sa ligne de temps par les temps forts de cette vidéo.
  3. cd edit && npx tsc --noEmit pour détecter les erreurs.
  4. Aperçu : bash SKILL_DIR/scripts/preview.sh edit output/preview.png 2.5 9 15 22 30 (secondes sur la ligne de temps du montage ; choisissez des moments qui montrent chaque scène). Regardez la planche contact vous-même. Vérifiez que le texte n'est pas coupé, que rien ne couvre le visage, que les cutaways se lisent clairement et que les lettres cyrilliques (Ө, Ү) s'affichent. Corrigez et ré-évaluez avant le rendu complet. C'est environ 10 fois moins cher.
  5. Rendu : cd edit && npx remotion render src/index.ts Edit ../output/edit.mp4 --codec h264 --crf 16. Ensuite, utilisez ffprobe : le nombre de trames doit être égal au total de video.json.

Envoyez les deux MP4 à l'étudiant. Dites-leur simplement ce qui se trouve dans le montage et quoi faire ensuite dans CapCut : ajouter des sous-titres dans la zone médiane inférieure (laissée libre exprès) et de la musique sous la voix à environ -20 dB.

Limites honnêtes (dites-les une fois le montage livré)

  • Les coupes proviennent des timings des mots plus un rembourrage fixe. Une coupe peut parfois écourter ou chevaucher une syllabe, corrigez-la avec une coupe dans CapCut.
  • Pas de sous-titres, de musique, d'étalonnage des couleurs ou de mastering du volume. Ceux-ci se font dans CapCut.
  • La sortie est un MP4 plat, pas une ligne de temps d'application modifiable.
  • Les effets sonores sont des tonalités générées simples. Les étudiants peuvent remplacer les fichiers dans edit/public/ par les leurs.
  • Les graphiques textuels suivent le script. Si le script est erroné, le timing est erroné.

Boucle d'apprentissage

Lorsque vous découvrez quelque chose de non évident concernant la vidéo ou la machine de l'étudiant (un taux de trames étrange, un cadrage qui bloque la bande supérieure, une police manquante), ajoutez une ligne à un NOTES.md dans leur dossier de projet. La vidéo suivante part alors de cette connaissance.

Skills associés