Communitygithub.com

beachyphotoandfilm-arch/video-skills

Concevez des miniatures YouTube et des titres pour une vidéo de talking-head. Extrait des images pleine résolution étalonnées de la vidéo brute, génère des variantes stylisées aux couleurs de la marque selon deux mises en page éprouvées, et les vérifie à la taille d'un téléphone, là où le clic se décide réellement. Déclenchez avec « faire des miniatures », « miniature pour cette vidéo », « titre et miniature » ou après le montage de la vidéo.

Qu'est-ce que video-skills ?

Cette compétence automatise la création de miniatures YouTube et de titres pour des vidéos de type « talking-head », en extrayant des images pleine résolution étalonnées depuis les rushes bruts 4K (en évitant les exports 1080p) et en générant des variantes stylisées selon deux mises en page éprouvées. Elle s'appuie sur une recherche concrète : trois à cinq mots maximum pour la miniature, un visage expressif qui domine, un contraste élevé avec peu de couleurs, et une vérification à ~210px (taille téléphone) où la décision de clic est prise. Le titre et la miniature ne doivent pas se répéter, deux moitiés d'une même idée, avec des titres courts et spécifiques (environ 50-60 caractères). Toute la logique de rendu est exécutée localement via un script Node.js, un fichier HTML et headless Chrome, avec un étalonnage des rushes S-Log3 (via LUT) et des textes placés dans les zones vides (jamais sur le visage). Deux mises en page sont disponibles : « full-bleed » (recommandée pour le téléphone, texte en affiche avec contour net, jusqu'à trois mots) et « panel » (sujet en panel droit, texte à gauche, idéal pour les schémas ou deux lignes). Les couleurs, polices d'affichage (Anton, Bebas Neue) et LUT sont paramétrables via des variables CSS et un script shell. La compétence est compatible avec les terminaux Claude, Cursor, Codex et tout environnement supportant Node.js, Puppeteer et Chrome.

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

Demander à votre IA préférée

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

Documentation

Miniatures et titres

Définissez votre marque ici

Modifiez le bloc :root en haut des fichiers scripts/layout-fullbleed.html et scripts/layout-panel.html :

réglagevariable CSSdéfaut
couleur d'accent--brand-accent (+ --brand-accent-rgb sous forme r,g,b)#4a90e2
couleur de texte clair--brand-light#f2f2f2
couleur d'encre foncée (trait, fond du panneau)--brand-ink#0d131a
police d'affichage (grand texte)--font-display'Anton','Bebas Neue',Impact,sans-serif
police de corps (petit texte)--font-body'Inter',sans-serif

La police d'affichage doit être installée localement, car le rendu s'exécute dans un Chrome headless à partir de file://. Anton et Bebas Neue sont gratuites sur Google Fonts.

Définissez également votre LUT d'étalonnage dans scripts/frames.sh (LUT_DEFAULT), ou passez LUT=/chemin/vers/cube.cube par exécution.

Valeurs par défaut du style (à modifier selon vos goûts)

  1. Ne jamais rien mettre sur le visage. Pas de dégradé ni de voile sur le sujet. Soit un panneau à bord dur avec le visage entièrement dégagé, soit un fond perdu avec le texte dans un espace vide.
  2. Extraire les images de la RAW 4K, pas d'une exportation. Les exportations en 1080p donnent des images molles.
  3. Étalonner l'image d'abord. Les rushes Log (S-Log3, etc.) sont plats et gris non étalonnés. Intégrez la LUT avec lut3d (voir frames.sh). Ignorez la LUT si la caméra enregistre un profil final.

Règles issues de la recherche

  • Trois à cinq mots, et moins c'est mieux. La miniature n'est pas là pour expliquer la vidéo.
  • Un visage gagne. La plupart des vidéos qui percent en utilisent un. Une expression forte bat une expression neutre.
  • Un sujet dominant, deux ou trois couleurs, contraste élevé.
  • Jugez-la à ~210px. La plupart des décisions de visualisation sont prises sur un téléphone. Si ça ne marche pas là, rien d'autre ne compte.
  • Le titre et la miniature ne doivent pas se répéter. Deux moitiés d'une même idée. Gardez les titres courts et spécifiques (environ 50-60 caractères pour qu'ils ne soient pas tronqués).
  • Les tests A/B dans YouTube Studio valent mieux que des disputes, alors donnez à l'utilisateur 2-3 vraies options.

Quelle mise en page

Le fond perdu gagne sur téléphone et est la mise en page par défaut. Côte à côte à 210px, le visage est environ deux fois plus grand que dans la version panneau, et les sous-lignes du panneau disparaissent complètement.

  • layout-fullbleed.html : image étalonnée bord à bord, 1-3 mots dans la police d'affichage avec un trait d'encre épais, placés dans un espace vide (mur, porte) et jamais sur le visage. Préréglages stab, stat, bottom, band (une bande d'accent pleine en bas). Exemples de variantes héritées e, f, g, h.
  • layout-panel.html : sujet dans un panneau carré propre à droite, texte sur une moitié gauche sombre. À utiliser lorsque l'idée nécessite un schéma (le quadrillage de points) ou deux lignes de texte. Exemples de variantes a-d.

Exécutez-le

# 1. images étalonnées à partir de la source brute, aux moments expressifs (utilisez la transcription pour les trouver)
bash <skill>/scripts/frames.sh "<VOTRE_DISQUE_RUSHES>/<dossier>/C0001.MP4" "<work>" 178 310 459 503

# 2. regardez-les avant de choisir - une planche contact vaut mieux que deviner
ffmpeg -i hi-*.jpg -filter_complex hstack=... contact.jpg

# 3. rendu des variantes + la planche de vérification taille téléphone
WORK=<work> OUT=<out> node <skill>/scripts/render.mjs variants.json

variants.json :

[{"id":"E-no-time","layout":"fullbleed","v":"e","img":"full-C0001-503.jpg"},
 {"id":"S-custom","layout":"fullbleed","img":"full-C0001-310.jpg",
  "data":{"preset":"stab","head":"TROP OCCUPÉ ?","kicker":"ESSAYEZ CECI"}},
 {"id":"B-3x","layout":"panel","v":"b","img":"cut-C0001-97.jpg"}]

Le texte en fond perdu peut être passé par variante en tant que data (preset, head, kicker, side, size), ou ajouté comme nouveau bloc v hérité dans le HTML de la mise en page. Le texte du panneau se trouve dans les blocs v de layout-panel.html ; ajoutez une nouvelle variante en ajoutant un bloc, en vous limitant à 3 mots.

Nécessite puppeteer-core : réutilisez ../video-overlays/scripts/node_modules ou npm i dans le répertoire des scripts. render.mjs lance /Applications/Google Chrome.app/... ; changez le chemin sur d'autres systèmes.

Choisir l'image

Cherchez des sourcils levés, une main ouverte, une bouche en pleine parole. Utilisez la transcription pour trouver un moment d'énergie, puis extrayez une image une seconde plus tard. Les yeux morts tuent l'image. Les recadrages dans frames.sh supposent une source 4K (3840x2160) avec le sujet à environ 46 % de la largeur de l'image ; ajustez les décalages crop= si votre cadrage diffère.

Résultat

Rendu en 1920x1080 (YouTube sous-échantillonne proprement), gardez-le sous 2 Mo.

Liés

  • paper-edit, video-overlays : le reste du pipeline vidéo

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

Cut vertical Instagram reels out of a long-form talking-head video, hook first. Picks the strongest standalone moments from the transcript, opens each reel on its punchiest line, builds vertical timelines in DaVinci Resolve framed on the speaker's face with the LUT applied, and finishes them: a hook (a held text card, or a word-by-word "build" hook with punch-in) and burned-look captions on V3; this-or-that reels get product graphics and a comment-keyword CTA card. You trim and render, nothing to import. Trigger on "make reels", "clip this for Instagram", "cut some verticals", or after a YouTube 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