Communitygithub.com

Seagey/edit-reel

Monte des vidéos prises avec un téléphone en reels verticaux finalisés (1080x1920 MP4). Coupe les silences et les longues pauses en se basant sur le son, corrige le miroir de la caméra frontale, nettoie la voix en son studio, applique un étalonnage doux, intègre des sous-titres lisibles dans les zones de sécurité du téléphone, et règle le volume sonore à environ -14 LUFS. À utiliser quand la personne dit « monte ma dernière vidéo », « monte ce reel », « récupère mes dernières vidéos depuis iCloud et monte-les », « mets les sous-titres en jaune », « moins de couleur », « coupe plus serré », ou demande de modifier un réglage du reel.

Qu'est-ce que edit-reel ?

Seagey/edit-reel est une compétence pour agent AI (compatible avec Claude Code, Cursor, Codex) qui automatise le montage de vidéos brutes de téléphone en reels verticaux au format 1080x1920 MP4, prêts pour les réseaux sociaux comme Instagram ou TikTok. Toute l'exécution se fait localement sur le Mac de l'utilisateur, sans aucun service payant ni téléchargement externe (sauf éventuellement depuis iCloud Photos). L'agent utilise un script bash (`scripts/edit.sh`) qui orchestre plusieurs étapes : détection et suppression des silences et pauses par analyse audio, correction du miroir pour les clips de caméra frontale via OCR, recadrage en 9:16, étalonnage couleur doux, traitement audio professionnel (réduction de bruit, égalisation, compression, normalisation à -14 LUFS), et génération de sous-titres avec Pillow. L'utilisateur peut commander des modifications de réglages en langage naturel (couleur des sous-titres, taille, zoom, etc.) via un fichier `config.json` que l'agent modifie à sa place. La compétence est conçue pour un utilisateur non technique : l'agent parle en anglais australien simple, explique chaque étape avant de l'exécuter, effectue des vérifications visuelles et techniques sur le résultat (rapport JSON, images de contrôle), et présente le résultat de manière claire. En cas de problème (absence de parole, police manquante), l'agent propose des solutions concrètes sans jamais déplacer ni supprimer la vidéo originale. Cette compétence est particulièrement utile pour les créateurs de contenu qui veulent gagner du temps sur le montage tout en gardant le contrôle sur le résultat final.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Seagey/reel-editor/tree/HEAD/.claude/skills/edit-reel

Demander à votre IA préférée

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

Documentation

Monter un reel

Tout s'exécute sur le Mac de la personne. Aucun service payant. Le seul script qui fait le travail est scripts/edit.sh à la racine du dépôt, qui appelle scripts/edit_reel.py à côté de ce fichier.

La personne n'est pas technique. Parle-lui en français courant, phrases courtes, sans jargon. Dis ce que tu t'apprêtes à faire avant de le faire, puis dis ce qui s'est passé. N'utilise jamais de tirets cadratins ni de tirets demi-cadratins.

Sommaire

  • Chemin rapide
  • Récupérer la vidéo
  • Ce que fait un montage
  • Réglages que la personne peut demander de modifier
  • Avant de remettre le résultat : les vérifications
  • Lire le résultat à la personne
  • Problèmes courants
  • Règles strictes

Chemin rapide

  1. Vérifie que la configuration est faite : scripts/setup.sh --check. Si ça dit PAS PRÊT, suis CLAUDE.md (l'intégration), n'improvise pas d'installations.
  2. Récupère la vidéo (voir ci-dessous), puis exécute :
    • un fichier nommé : scripts/edit.sh "<chemin vers la vidéo>"
    • les N plus récents dans le dossier Inbox : scripts/edit.sh --latest 3
  3. Effectue les vérifications ci-dessous, regarde les images, lis les sous-titres, puis fais ton rapport.

Un clip de 30 à 60 secondes prend environ une à deux minutes sur un Mac avec puce Apple, plus longtemps sur un modèle plus ancien.

Récupérer la vidéo

Dans cet ordre, en t'arrêtant au premier qui fonctionne :

  1. Un fichier qu'ils nomment ou déposent. Utilise-le là où il est. Ne déplace ni ne supprime jamais leur original.
  2. Le dossier Inbox. Tout ce qu'ils ont envoyé par AirDrop ou déposé dans Inbox/ (dans le dossier du dépôt).
  3. Photos iCloud. Uniquement si iCloud est configuré (docs/ICLOUD.md). Leur identifiant Apple est dans config.json sous icloud_apple_id. Exécute scripts/icloud-fetch.sh <identifiant apple> 30.
    • Il affiche ICLOUD_FETCH_OK quand ça a fonctionné. Les vidéos les plus récentes atterrissent dans Inbox/.
    • Il affiche ICLOUD_FETCH_FAILED quand la connexion a expiré (elle dure environ deux mois) ou n'a jamais été faite. N'essaie pas de la réparer toi-même : dis-le, et guide-les à travers docs/ICLOUD.md étape « Se reconnecter ». Ils tapent le mot de passe et le code à 6 chiffres dans leur propre Terminal, jamais dans le chat.
    • « Les plus récentes » signifie les plus récemment filmées. Les vidéos tout juste filmées peuvent mettre quelques minutes à arriver sur iCloud, donc si celle qu'ils veulent manque, dis-le et propose de réessayer dans une minute.
    • Avant de monter, liste les vidéos les plus récentes avec leurs durées (ffprobe la durée) et confirme laquelle ils veulent s'il y a le moindre doute.
  4. Rien ne fonctionne. Propose la solution de repli : envoyer la vidéo par AirDrop à leur Mac, ou la déposer dans le dossier Inbox.

Ce que fait un montage

Dans l'ordre :

  1. Coupe, par le son. Trouve où la voix commence et finit vraiment en se basant sur le volume de l'audio, pas sur les horodatages des sous-titres (les temps de transcription en tout début de clip peuvent se situer dans le silence et cacher les blancs). Supprime le silence au début et à la fin, et raccourcit les longues pauses. Les coupes sont placées au moment le plus silencieux à proximité et chaque jointure a un fondu de 15 ms, donc aucun mot n'est coupé. Les phrases sont conservées entières ; rien n'est supprimé qui n'était pas un blanc.
  2. Vérification du miroir. Les clips de la caméra frontale sont souvent en miroir. Lit tout texte dans l'image (panneaux, écrans, vêtements) en mode normal et inversé avec OCR et inverse la vidéo uniquement si des vrais mots se lisent correctement inversés. Jamais jugé à l'œil. S'il n'y a pas de texte lisible, il laisse la vidéo telle quelle et le mentionne dans le rapport.
  3. Recadrage en 9:16 et mise à l'échelle en 1080x1920 (les clips paysage sont recadrés au milieu).
  4. Couleur. Mesure quelques images et applique une petite correction d'exposition, contraste et saturation, plafonnée pour ne jamais sembler exagérée, avec une feuille avant/après. Les clips HDR d'iPhone sont d'abord convertis en couleur standard.
  5. Son studio. Réduction du bruit, égalisation vocale, dé-esser, compresseur, limiteur, puis volume à -14 LUFS. Ce réglage a été affiné par mesure. L'oreille décide : si ça semble dur, fin ou trop traité, passe audio.strength à light.
  6. Sous-titres. Transcrit le son nettoyé, puis dessine les sous-titres avec Pillow. Dans les zones de sécurité du téléphone (x 90 à 960, y 250 à 1520 sur une image 1080x1920) pour que les boutons et le texte propre de l'application ne les cachent pas. Le mot actif change de couleur. Le contour reste foncé. Pas de boîtes colorées derrière les mots, parce qu'elles deviennent molles sur un visage.
  7. Sorties. Edited/<nom>-edited.mp4 et, dans Edited/checks/<nom>/ : contact-sheet.jpg, colour-before-after.jpg, caption-frame.png, captions-words.txt, report.json.

Réglages que la personne peut demander de modifier

Tous dans config.json à la racine du dépôt (créé à partir de config.default.json, qui n'est jamais modifié). La personne ne touche jamais au fichier. Elle le dit en termes simples et toi tu le changes, tu relances le montage, et tu lui montres. Table des mots complets : docs/STYLE.md.

Exemples :

  • « Mets les sous-titres en jaune » définit captions.highlight_color (le mot actif) ou captions.color (tous les mots). Demande lequel si ce n'est pas clair.
  • « Sous-titres plus grands » augmente captions.size d'environ 12 (par défaut 78). Garde le résultat à l'intérieur de la zone de sécurité : le script rapporte inside_safe_zone.
  • « Remonte les sous-titres » définit captions.position à middle ou upper.
  • « Un mot à la fois » définit captions.style à word. « Lignes » le remet à line.
  • « Pas de sous-titres » définit captions.enabled à false.
  • « Moins de couleur » diminue grade.strength de 0.2. « Pas d'étalonnage couleur » met grade.enabled à false.
  • « Coupe plus serré » définit cuts.tightness à tight. « Laisse plus d'air » : gentle.
  • « Son trop traité » : audio.strength à light.
  • « Rapproche-toi de mon visage » : framing.zoom 1.15 (max raisonnable 1.4).
  • Nom mal orthographié dans les sous-titres : ajoute-le dans vocabulary (aide le transcripteur à le reconnaître) et, s'il est toujours faux, dans replacements comme {"entendu": "Orthographe Correcte"}.

Après une modification, relance le montage sur la même vidéo et montre le nouveau résultat. Utilise les fichiers Edited/ ; relancer remplace l'ancien montage du même nom.

Avant de remettre le résultat : les vérifications

Le script imprime un résumé et écrit report.json. Tu dois quand même regarder.

  1. Les chiffres. loudness_ok, start_ok, end_ok doivent tous être true. Le silence au début doit être de 0,45 s ou moins et à la fin de 0,75 s ou moins. Sinon, dis-le et relance avec --tightness tight.
  2. Regarde les images avec l'outil Lire : contact-sheet.jpg (le visage est-il dans le cadre, l'image a-t-elle l'air naturelle, les sous-titres sont-ils dans l'écran), colour-before-after.jpg (à gauche est l'original, à droite l'étalonnage : peau naturelle, pas orange ou grise, blancs non brûlés, noirs non écrasés) et caption-frame.png (lis chaque mot en taille réelle, peux-tu lire chacun d'eux sur l'arrière-plan).
  3. Lis les sous-titres. Ouvre captions-words.txt. La transcription parle mal les noms et les mots locaux (par exemple un nom de marque). Corrige avec vocabulary et replacements, puis relance. Vérifie caption_vs_sound_match dans le rapport : en dessous de 0,9 signifie que quelque chose cloche, enquête.
  4. Miroir. Regarde dans report.json mirror. Si decision est unknown et qu'il y a du texte dans l'image (un panneau, un écran), regarde une image et vérifie que le texte se lit correctement. S'il est inversé, mets framing.mirror_fix à always et relance.
  5. Silence par le son. Le script lance silencedetect sur le mix final. Ne te fie pas aux horodatages des sous-titres pour cela.

Tu ne peux pas écouter. Dis-le honnêtement : le son a été réglé et mesuré, mais c'est leur oreille qui décide.

Lire le résultat à la personne

Court, simple, sous cette forme :

  • Où est le fichier, et comment l'ouvrir (Finder, dossier Edited dans le dossier de l'éditeur de reels).
  • Ce qui a été coupé ( « enlevé 1,1 seconde de silence au début, raccourci deux longues pauses, 36 secondes réduites à 33 » ).
  • Si l'image a été inversée et pourquoi.
  • Ce que mesure le son maintenant (« environ -14, le niveau habituel pour Instagram et TikTok »).
  • Sous-titres : police, couleurs, tout mot que tu as changé.
  • Tout ce que tu n'as pas pu réparer, et ce qu'ils peuvent dire pour le changer.

Puis demande ce qu'ils veulent modifier, et propose une ou deux idées dans la liste des réglages ci-dessus.

Problèmes courants

  • « Aucune parole trouvée » : le clip est silencieux ou seulement musical. Dis-le.
  • Sous-titres mal placés ou coupés : vérifie inside_safe_zone dans le rapport ; réduis size.
  • Police non trouvée : le script utilise Arial Black par défaut et imprime une note. Propose l'une des polices intégrées (docs/STYLE.md), ou télécharge une police gratuite (un .ttf de fonts.google.com) dans ~/.reel-editor/fonts/ et mets captions.font au nom du fichier sans .ttf.
  • Un outil de configuration manque : exécute scripts/setup.sh. Si Homebrew manque, suis CLAUDE.md.
  • Le montage prend très longtemps : les clips 4K de plus de 3 minutes sont lourds. Dis-le et laisse-le s'exécuter.

Règles strictes

  • Ne supprime ni ne modifie jamais la vidéo originale de la personne.
  • Ne demande ni n'accepte jamais de mot de passe ou de code à 6 chiffres dans le chat.
  • Pas de services payants et aucun téléchargement de leur vidéo ailleurs. Tout reste sur ce Mac, sauf le téléchargement depuis iCloud.
  • Pas d'incitations à défiler ou de superpositions « suis-moi » sauf si la personne le demande.
  • N'ajoute rien que la personne n'ait dit : les sous-titres montrent seulement ce qui a été prononcé.

Skills associés