Communitygithub.com

video-reels

Découpez des Reels Instagram verticaux à partir d'une vidéo longue de type talking-head, en commençant par l'accroche. Il sélectionne les meilleurs moments autonomes de la transcription, ouvre chaque reel sur sa phrase la plus percutante, construit des timelines verticales dans DaVinci Resolve cadrées sur le visage de l'intervenant avec le LUT appliqué, et les finalise : une accroche (une carte texte fixe ou une accroche « build » mot par mot avec punch-in) et des sous-titres au look brûlé sur V3 ; les reels « ceci ou cela » reçoivent des graphiques produit et une carte CTA avec mot-clé. Vous rognez et rendez, rien à importer. Déclenchez sur « make reels », « clip this for Instagram », « cut some verticals », ou après le montage d'une vidéo YouTube.

Qu'est-ce que video-reels ?

Ce skill est conçu pour les créateurs et les éditeurs qui souhaitent transformer rapidement des vidéos longues (talking-head) en Reels Instagram verticaux optimisés. Il automatise l'ensemble du flux de travail : analyse de la transcription pour extraire les moments clés, ouverture de chaque reel sur une accroche percutante, création de timelines dans DaVinci Resolve avec cadrage automatique et LUT, ajout d'accroches visuelles (cartes texte ou animations mot par mot), de sous-titres et de graphiques produit pour les formats comparatifs. Le skill s'appuie sur des outils locaux comme `whisper-cli` pour la transcription, `ffmpeg`, `puppeteer-core` pour le rendu HTML, et DaVinci Resolve Studio avec scripting et MCP. Il gère également la sélection musicale et les effets sonores, et propose un système de suivi des performances (« reel tracker ») pour optimiser les futures créations. Fonctionne principalement sur macOS.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/beachyphotoandfilm-arch/video-skills/tree/HEAD/skills/video-reels

Demander à votre IA préférée

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

Documentation

Reels

Clips verticaux extraits d'une vidéo longue (ou reels autonomes filmés comme tels).

Configuration : définissez votre marque ici

Modifiez ces éléments une fois avant la première exécution. Tout ce qui suit y fait référence par leur nom.

paramètreemplacementpar défaut
couleur d'accent--brand en haut de scripts/motion.html, scripts/thisorthat.html, scripts/hook.html#3b82f6
police d'affichage (cartes d'accroche, titres, mots-clés)--display-font dans les mêmes fichiersAnton (gratuit, Google Fonts)
police des sous-titresscripts/caption.htmlMontserrat ExtraBold 800 (gratuit)
LUT de la caméra"lut" dans reel-params.json, et la variable d'environnement LUT pour preview_reel.py<CHEMIN_VERS_VOTRE_LUT>.cube
dossier de dépôt des nouveaux rushesétape « Où les nouveaux rushes arrivent »<VOTRE_DISQUE_RUSHES>/<DOSSIER_RECEPTION>/
bibliothèque de b-rollstyle animé, étape 6<VOTRE_DISQUE_RUSHES>/<tournage>/<cam>/full/
suivi des reelsÉtape 0drafts/social/reel-tracker.md dans votre projet
modèle whispervariable d'environnement WHISPER_MODEL~/.cache/whisper-models/ggml-small.en.bin
CTA mot-clé de commentaireéléments du plan ctavotre propre mot-clé (p. ex. GUIDE)
référence musicale de fondétape musiqueun morceau de référence que vous aimez (p. ex. un ID de morceau Spotify pour SearchRecordings)

Polices : installez Montserrat et votre police d'affichage dans ~/Library/Fonts (ou conservez l'@import Google Fonts dans chaque fichier HTML et effectuez le rendu en ligne). Si votre police d'affichage est sous licence, gardez-la hors du dépôt.

Outils : whisper-cli (whisper.cpp), ffmpeg, Node + puppeteer-core, Google Chrome, DaVinci Resolve Studio avec scripting activé (et un Resolve MCP avec execute_resolve_code), macOS pour cutout.swift.

Étape 0 : lisez d'abord le tableau de bord

Avant de sélectionner ou de couper quoi que ce soit, lisez le suivi des reels.

  1. Remplissez les statistiques pour toute ligne qui est en ligne depuis 7 jours ou plus et encore vide. Extrayez-les de votre outil d'analyse (p. ex. getAnalyticsDataByMetrics de Metricool pour les Reels Instagram). Vues, durée moyenne de visionnage, rétention à 3 secondes si disponible, partages, sauvegardes, commentaires, abonnements.
  2. Comparez par ce que nous contrôlons : format, style d'accroche (carte / build / titre), durée, type de CTA, punch-ins, sujet. N'appelez quelque chose un pattern qu'avec au moins 3 reels de chaque côté, et dites l'ampleur de l'écart.
  3. Rédigez la conclusion sous « Ce que les chiffres disent jusqu'à présent » dans le suivi, daté.
  4. Appliquez-la à ce lot et dites-le dans la liste de reels que vous montrez à l'utilisateur (« les accroches build retiennent 1,4x plus longtemps à 3s, donc j'ai utilisé build sur 6 reels sur 8 »). Si un gagnant contredit un style verrouillé, demandez avant de le modifier.
  5. Après la planification, ajoutez une ligne par reel avec la façon dont il a été monté.

La règle qui compte : l'accroche en premier

Les 3 premières secondes décident de la distribution, jusqu'à la moitié des spectateurs partent dans cette fenêtre, et une accroche doit se charger instantanément plutôt que de se construire. Un reel qui commence par « l'astuce numéro deux est... » est mort.

Donc ne coupez pas un extrait chronologique. Construisez chaque reel comme suit :

  1. ACCROCHE (2-4s) : la phrase la plus percutante et autonome, prise de n'importe où dans la vidéo, y compris à la fin.
  2. DÉVELOPPEMENT : le contexte et l'explication, dans l'ordre qui se lit le mieux.
  3. PAYOFF : une courte phrase de clôture si elle existe.

Les morceaux chronologiques produisent des accroches faibles. Réorganiser les mêmes images, sans refaire de prise, corrige le problème. La réorganisation est l'essentiel du travail.

Bonnes accroches, en pattern : « on ne saute plus le jour des jambes », « un plan que tu sautes n'est pas un plan », « 10 minutes par jour c'est 60 heures par an ». Court, déclaratif, sans préparation.

Où les nouveaux rushes arrivent

Les nouveaux lots de reels arrivent dans <VOTRE_DISQUE_RUSHES>/<DOSSIER_RECEPTION>/, souvent sous forme de untitled folder. Cherchez d'abord là. Une fois que vous savez ce qu'il contient, renommez le dossier avec la date d'abord, puis un nom : 9-28-2026 gear reels. Transcrivez avant de renommer, puis corrigez les chemins dans clips.ndjson.

Reels autonomes : style animé

Pour les reels filmés en tant que tels (pas de vidéo longue, pas de montage papier), le style animé est plus engageant : produit dans le cadre, cartes photo, une flèche ou un anneau sur un bouton, notes de machine à écrire en haut, petites images qui apparaissent au-dessus de la tête, une accroche grande et audacieuse avec une petite sous-ligne. Construisez d'abord un reel et faites-le approuver avant de faire le lot.

  1. Pas de montage papier. Écrivez segments-v2.json comme [] et donnez à chaque partie "raw": true, "exact": true.
  2. Ne faites pas confiance à la transcription whisper du clip entier pour ceux-ci. Les prises avec de longues réinitialisations entre les lignes dérivent de 2 à 5 secondes (whisper peut placer une phrase à l'intérieur d'un silence de 5,4 s). Exécutez GAP=0.18 SUF=.fine blobs.py <work> <clip> et coupez les parties sur les bords des blobs. Pour le dernier mot, vérifiez une carte RMS de 50 ms : une baisse au milieu d'un mot peut être une fricative (« f » dans « free »), alors relisez la queue de la légende. Terminez la dernière partie après que la queue du mot tombe en dessous de -50 dB. Whisper invente également des mots après la coupe sur la dernière carte, alors vérifiez le dernier indice du SRT par rapport à l'audio.
  3. Rythme des punch-ins : alternez les parties entre large (zoom 1,25, inclinaison 0) et piqué (zoom 1,6, inclinaison -90) sur des images natives verticales. Panorez toute partie où l'intervenant se penche (p. ex. accroche : panoramique 180).
  4. Couche d'animation sur V2 : motion.json (liste d'éléments synchronisés avec les mots dans reels-built.json) -> render_motion.mjs (image par image, ~50s pour 30s). Les types d'éléments sont documentés dans motion.html : constructions de mots, slam, notes de machine à écrire, oscillation, découpes de produits (pop / fly-in / shrink), anneaux pulsants sur les boutons, un barré, et une carte b-roll qui joue des images réelles (étalonnées avec le LUT via ffmpeg lut3d). Un visuel par ligne, tous dans la bande au-dessus de la tête (y 200-550 ; à y 100, les mots du haut sont coupés). Pour faire de la place, inclinez chaque partie de 100 de plus que le cadrage de base (large 1,25 / inclinaison -100, piqué 1,6 / inclinaison -190). Les mots-clés utilisent la classe blue (elle utilise --brand), qui dessine une épaisse bordure blanche derrière le remplissage pour que l'accent ne disparaisse pas sur un mur neutre. Placez avec resolve_captions.py, "track": 2.
  5. Images produit : API Wikimedia Commons d'abord, puis images OG de la marque. Découpez avec scripts/cutout, recadrez les reflets de table. Gardez-les dans <work>/gear/.
  6. Vos images pour le b-roll : <VOTRE_DISQUE_RUSHES>/<tournage>/<cam>/full/. Si les images sont en log, utilisez les fichiers pleine résolution plus le LUT ; les proxies intégrés ont souvent l'aspect croquant.
  7. Effets sonores sur A2 : build_sfx.py motion.json out.wav. Il utilise video-reels/sfx/<nom>.wav lorsqu'il est présent (pop, whoosh, slam, tick, click, type, swipe, wobble, shrink), sinon un substitut synthétisé, donc il fonctionne immédiatement sans fichiers. ding est toujours scripts/ding.wav (livré en tant que ding synthétisé ; remplacez-le par votre propre son de pick). Le pop synthétisé est un déclencheur d'appareil photo (un pop avec balayage de hauteur a tendance à sonner « alien »), et MASTER = -3 dB maintient chaque effet juste en dessous de la voix. Pour de meilleurs sons, créez sfx/ et déposez vos propres effets sous licence, puis réglez les gains par fichier dans LIBGAIN. Avec le connecteur Epidemic Sound : recherchez avec SearchSoundEffects, récupérez avec DownloadSoundEffect (WAV), puis utilisez curl sur l'assetUrl. 7b. Musique de fond douce sur A3 : choisissez une ambiance et tenez-vous-y (p. ex. jazz rêveur / sax, sans voix). Avec Epidemic Sound : SearchRecordings avec query.externalID = {type: SPOTIFY_TRACK, id: <ID_DE_MORCEAU_SPOTIFY_DE_REFERENCE>} et vocals: false, sautez tout ce qui est tagué bizarre/effrayant/drone/orchestral, et donnez à chaque reel un morceau différent. Ensuite, EditRecording avec targetDurationMs = longueur du reel + ~0,3s et forceDuration, afin que le morceau se termine au lieu d'être coupé. Intégrez -21 dB et un fondu de 1,2 s dans le wav avec ffmpeg, car l'API Resolve ne peut pas régler le volume du clip (SetProperty("Volume") renvoie False). Cela place la musique environ 15 dB sous la voix.
  8. Aperçu avant la revue dans Resolve : preview_reel.py (mêmes recadrages, LUT, incrustations, sfx, musique) donne un mp4 que vous pouvez regarder en quelques secondes. Rognez chaque morceau au nombre exact d'images de Resolve (fps, puis trim=end_frame, puis atrim=duration) ; les entrées simples -ss/-t sont environ 0,45s trop longues et coupent la dernière ligne de l'aperçu. Prouvez-le avec un contact sheet de 1,3s, et chuchotez les 1,5 dernières secondes pour confirmer que la fin est entièrement là.
  9. Conservez une ligne de conclusion si l'intervenant en ajoute une après le CTA : coupez sur le silence après celle-ci, pas après le mot du CTA. build_reels.py ajoute 1s de silence après l'audio, car whisper supprime les derniers mots des légendes sinon. Les nouveaux rendus vont vers de nouveaux noms de fichiers (-v3) pour que Resolve ne puisse pas servir un ancien clip mis en cache.

Lots de reels autonomes

Faites d'abord approuver le style d'UN SEUL reel, puis lancez le reste en parallèle :

  1. Un dossier par reel (~/Movies/reels-<MMDD>/<NN>-<slug>/) avec <clip>.wav/.json en lien symbolique, clips.ndjson, segments-v2.json = []. Des dossiers séparés empêchent les reels de s'écraser mutuellement reels-built.json.
  2. Rédigez un brief court pointant vers les fichiers du reel approuvé (motion.json, cadrage, sfx) et lancez un agent en arrière-plan par reel, 4 à la fois (plus encombre un ordinateur portable sur des décodages 4K). Donnez à chaque agent la transcription du clip, le nom exact du modèle du produit, et toutes les lignes à couper (faits erronés, redémarrages, bavardages).
  3. Les agents s'arrêtent à un aperçu sans musique. Faites la musique de manière centralisée (une édition par reel, un morceau différent à chaque fois), nivelez à environ -38 dB moyen avec un fondu, rendez l'aperçu final, puis placez dans Resolve un reel à la fois.
  4. Prouvez vous-même le contact sheet de chaque agent avant de construire. Rassemblez les aperçus finaux dans un dossier previews/ pour la revue.
  5. Le cadrage diffère selon la configuration. Exemple : zoom large 1,2 / inclinaison -190, piqué 1,5 / inclinaison -380 sur une configuration ; 1,25/-100, 1,6/-190 sur une configuration plus large. Vérifiez les images fixes par clip.
  6. Rassemblez tous les éléments « à vérifier » de chaque agent (erreurs de compréhension, faits qu'il a coupés, affirmations à l'écran) dans votre résumé. Whisper comprend mal couramment la parole rapide (p. ex. « free » comme « for you »).

Obtenez chaque reel de la vidéo

Exploitez toute la vidéo, ne répétez jamais le contenu.

  1. Inventoriez d'abord. Parcourez toute la transcription et listez chaque unité d'idée qui pourrait tenir seule : chaque astuce, histoire, statistique, script, confession, ligne provocatrice et victoire client. Attendez-vous à environ un reel par 1,2-1,5 min de montage final.
  2. Recherchez ces types d'accroches :
    • un nombre : « 300 pains », « 40% de mes factures d'épicerie », « de 5K à 50K abonnés »
    • une confession : « Avant, je me contentais de m'asseoir et d'espérer qu'ils me contactent »
    • une ligne provocatrice : « ne le donnez pas simplement... c'est un mauvais cadeau »
    • une ligne d'initié : « le secret que personne ne fait »
    • une victoire client : un résultat nommé (avec permission)
    • un script dit à voix haute : le DM, la demande de recommandation
    • un « jamais » : « Je n'ai jamais eu quelqu'un qui me dit non en face »
  3. L'accroche doit nommer le sujet. « Le secret que personne ne fait » échoue tout seul parce que le spectateur ne peut pas dire de quoi il s'agit. Choisissez la ligne qui dit ce dont parle le reel dans la première seconde.
  4. Aucune ligne dans deux reels. Deux reels peuvent partager un thème si l'accroche et l'angle diffèrent.
  5. Présentez-le par niveaux : la liste A à construire, la liste B comme pièces de rechange, et les restes avec une raison chacun (« deuxième moitié du Reel 4 », « pas d'accroche », « bavard à l'écran »). L'utilisateur choisit.
  6. Arrêtez-vous quand cela commencerait à se répéter. Au-delà de ce point, chaque reel dilue les autres.

La forme que suit chaque reel

« L'accroche doit accrocher les gens, puis le reste du reel explique l'accroche et explique la valeur, le cœur du sujet. »

  1. Accroche : arrête le défilement et nomme le sujet.
  2. Expliquez l'accroche : la ligne suivante répond à la question que l'accroche a soulevée. Si l'accroche est « J'ai perdu 20 kilos sans salle de sport », ce qui suit dit comment.
  3. Le cœur : la valeur réelle, le comment faire, le script, la preuve. C'est la majeure partie du reel.
  4. Arrêtez-vous sur la ligne de payoff.

Une excellente accroche suivie de lignes qui ne la concrétisent pas est pire qu'une accroche simple, car le spectateur se sent appâté. Jugez chaque reel sur ses deux moitiés : est-ce que l'accroche m'arrêterait, et est-ce que tout ce qui suit a du sens et tient la promesse ?

Vérification du flux : lisez-le comme un étranger avant de construire

Écrivez chaque reel en phrases simples dans l'ordre, puis lisez-le comme quelqu'un qui n'a jamais vu la vidéo longue. Ce n'est qu'ensuite que vous regardez les timings. Voici les règles sur lesquelles les coupes manuelles tombent toujours :

  1. Terminez sur le payoff, une fois. Arrêtez-vous sur la ligne la plus forte. N'ajoutez pas de slogan après ni une seconde passe sur le point.
  2. Rien ne peut faire référence à quelque chose que le reel n'a pas mis en place. « Je leur ai simplement demandé et ils le partagent presque toujours » sans « leur demander quoi » dans le reel doit disparaître. Vérifiez chaque « elle », « ils », « ceci », « cela » et « donc » par rapport à ce qui est venu avant dans le reel.
  3. Les histoires se déroulent dans l'ordre de l'histoire. Une victoire comme accroche parlée, avec la personne nommée plus tard, confond l'auditeur. Nommez d'abord la personne, puis la victoire. La carte texte fait l'accroche.
  4. Une idée par reel. Deux idées plus une reformulation devraient devenir une idée plus une preuve.
  5. Coupez les apartés sur l'intervenant et les bégaiements à l'intérieur d'une partie. Divisez la partie autour d'eux.
  6. L'accroche parlée nomme le sujet en mots. « C'est aussi un moyen incroyable d'atteindre une nouvelle communauté » laisse « ce » indéfini. « Alors que vous continuez à préparer vos repas le dimanche... » dit de quoi parle le reel.
  7. Visez 20-35s. Tout ce qui dépasse 40 a besoin d'une raison.

Livrez-le serré : pas de euh, pas de silence mort, pas de redémarrages. Avant de construire :

  • Audio lavalier/salle : exécutez segments.py (de paper-edit) avec NOISE_DB=-30. La détection de silence de ffmpeg est basée sur les pics, et le bruit ambiant sur un lavalier dépasse le pic par défaut de -36, donc de vraies pauses de 0,5 à 0,8s passent inaperçues à -36.
  • whisper supprime complètement les « euh », même avec une invite de remplissage. Vérifiez le premier blob vocifère de chaque partie : un blob court (0,2-0,7s) isolé avant le premier vrai mot. Coupez-le.
  • Remplissez les espaces en coupant les espaces à l'intérieur des parties. Si une partie a 1,2s d'espace au milieu, scindez-la à cet endroit (les deux moitiés sont exactes) et laissez build_reels.py le gérer.
  • Vérifiez les mots inventés par whisper. La fonction de remplissage inverse (transcrire le premier mot de chaque partie pour confirmer que le recadrage est correct) est intégrée dans build_reels.py.

Flux de travail par morceau

Avec des morceaux exacts, tout est plus simple. Utilisez-les quand vous le pouvez.

Musique pour un lot

... (contenu tronqué)

Avant de confirmer une liste

... (contenu tronqué)

Individual skills in this repo

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

beachyphotoandfilm-arch/video-skills

Sync camera footage to a separate lapel or field-recorder track (e.g. Tascam DR-10L and similar) and lay it up in DaVinci Resolve. Stitches the recorder's split files, finds each clip's exact place in the audio by matching words then waveforms, cuts one lapel slice per clip so every later skill works unchanged, checks for clipping, and builds a synced timeline in a new Resolve project. Trigger on "sync the lapel", "sync my audio", "line up the recorder", "I used a lav", or any shoot with a separate audio folder (live talks, events, workshops). Run it before paper-edit or video-reels.

beachyphotoandfilm-arch/video-skills

Turn raw talking-head footage into an assembled rough cut inside DaVinci Resolve. Pulls the clips off your footage drive, transcribes them locally, removes failed takes, restarts, asides and dead air, then creates a new Resolve project with two paper-edit timelines ready for your fine trim. Trigger on "paper edit", "cut my raw footage", "make a rough cut", "clean up this video", or when the user points at a folder of raw camera files for a YouTube video.

beachyphotoandfilm-arch/video-skills

Design a unique Instagram cover for each reel in your house style. Reads what the reel is about, writes a short hook headline, picks one of your own photos from a tagged photo library, lays it out like your existing covers, and proofs it in grid view at phone size. Renders locally, never with AI image generation. Can be called by a scheduling skill before reels are scheduled. Trigger on "make covers", "reel covers", "cover photo for this reel", "design the IG covers".

beachyphotoandfilm-arch/video-skills

Render finished reels out of DaVinci Resolve, write captions in the creator's voice, attach a custom Instagram cover from reel-covers, and schedule them to Instagram, TikTok and YouTube Shorts through Metricool. Handles the Drive upload hop, collision checks against the existing calendar, and cleanup. Trigger on "schedule the reels", "post these", "put these on the calendar", or after reels are approved.

beachyphotoandfilm-arch/video-skills

Build animated brand overlays (motion graphics) for a talking-head video, timed to the speaker's exact words, plus a DaVinci Resolve import file. House style is in-scene type (text beside and behind the speaker's head) plus diagrams. Transcribes the rough cut locally, picks the moments, renders transparent .mov clips, and writes an FCPXML that drops every clip onto the timeline already in position. Trigger on "make animations for this video", "add overlays/motion graphics", "animate this", "b-roll graphics for my YouTube video", or when the user shares a rough cut and asks for graphics.

beachyphotoandfilm-arch/video-skills

Design YouTube thumbnails and titles for a talking-head video. Pulls graded full-res frames out of the raw footage, renders brand-styled variants in two proven layouts, and proofs them at phone size where the click actually gets decided. Trigger on "make thumbnails", "thumbnail for this video", "title and thumbnail", or after a video is cut.

beachyphotoandfilm-arch/video-skills

Run the whole YouTube video pipeline end to end, one stage at a time, stopping for the creator's approval at every gate. Paper edit, punch-ins, reels, reel covers, scheduling the reels, overlays, thumbnail and title, then scheduling the long-form video, all through Metricool. Keeps state per video so you can stop anywhere and pick up later. Trigger on "/youtube", "let's do the whole video", "run the video pipeline", "continue the <name> video", or when handed raw footage for a YouTube video.

Skills associés