Communitygithub.com

akachandan1/video-studio

Ajoutez des légendes stylisées et synchronisées mot à mot (et une accroche optionnelle qui arrête le défilement) à une vidéo de parole. L'utilisateur fournit une vidéo ; vous la transcrivez, affichez chaque style de légende rendu sur sa propre vidéo, il choisit un style et une accroche, puis vous rendez le MP4 légendé.

Qu'est-ce que video-studio ?

Cette compétence transforme n'importe quelle vidéo de parole en une vidéo professionnelle avec des légendes stylisées et synchronisées mot à mot, le tout exécuté localement avec HyperFrames, sans nécessiter After Effects. Le flux commence par la transcription de la vidéo avec WhisperX, puis l'utilisateur peut prévisualiser sept styles de légendes différents (Lime Hook, Karaoke Pop, One Word, Clean Box, Editorial, Subtitle, Neon) directement sur sa propre vidéo avant d'en choisir un. Une accroche optionnelle, extraite du discours réel, peut être ajoutée pour capter l'attention, et des fonctionnalités de polissage (réduction de bruit, correction colorimétrique, musique de fond) sont disponibles via une commande `polish`. La compétence est conçue pour Claude Code et d'autres agents IA dans un environnement de studio, en utilisant des outils en ligne de commande Python et npm. Elle est idéale pour les créateurs de contenu, les spécialistes du marketing, et toute personne souhaitant ajouter rapidement des légendes accrocheuses à des vidéos sociales, des publicités, des interviews ou des explications.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/caption-video

Demander à votre IA préférée

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

Documentation

Légender une vidéo

L'utilisateur fournit une vidéo de parole. Il choisit dans le catalogue de styles de légendes, qui est prévisualisé sur sa propre vidéo, et vous livrez le MP4 légendé. Tout s'exécute localement avec HyperFrames. After Effects n'est jamais nécessaire.

Kit : .claude/skills/caption-video/kit/ dans le dépôt du studio. Les projets sont créés dans videos/captions/<name>/ et les vidéos terminées vont dans out/captions/<name>.mp4 (les deux sont relatifs à la racine du studio).

Depuis la racine du studio, définissez K="$PWD/.claude/skills/caption-video/kit" et exécutez python3 "$K/caption.py" … (mettez les chemins entre guillemets ; les dossiers peuvent contenir des espaces). Utilisez le venv python du studio (.venv/bin/python) si numpy/scipy manquent dans le python système – setup/setup.sh le crée.

Flux

1. Obtenir la vidéo

Si aucun chemin de vidéo n'a été donné, demandez-en un. Vérifiez qu'il existe et qu'il contient une personne parlant. Exécutez :

python3 "$K/caption.py" new "<chemin vidéo>" <nom court>

Ceci copie la vidéo, la ré-encode en H.264 et la transcrit mot par mot avec WhisperX. La première exécution après un certain temps peut prendre une minute. Les longues vidéos prennent environ temps réel ÷ 4.

2. Afficher la transcription

Affichez la transcription de la sortie de commande dans un bloc lisible. Signalez toute erreur probable, en particulier les noms de marque et le jargon (noms de produits, "HyperFrames", acronymes), et demandez à l'utilisateur de confirmer ou de corriger. Les corrections vont dans --fix "faux=juste,…" au moment de la construction. Si la transcription est du charabia, ou si l'audio ne contient pas de parole, arrêtez-vous et dites-le. Ne légendez pas des mots inventés.

3. Afficher chaque style sur leur vidéo

Exécutez python3 "$K/caption.py" styles pour la liste et python3 "$K/caption.py" preview <nom> pour la feuille visuelle. La feuille se trouve à videos/captions/<nom>/previews/styles.png. Regardez-la vous-même, puis envoyez-la avec SendUserFile (affichage render). À côté, donnez la liste numérotée avec la ligne "meilleur pour" de chaque style :

  1. Lime Hook : le look template (Anton en capitales, mot parlé en vert fluo)
  2. Karaoke Pop : grandes salves de 2 mots, mot parlé en jaune
  3. One Word : un mot géant à la fois
  4. Clean Box : texte sombre sur une carte blanche, surligneur sur le mot parlé
  5. Editorial : calme en casse normale, mots-clés en italique serif
  6. Subtitle : petits sous-titres en phrase complète
  7. Neon : lueur cyan sur le mot parlé

Recommandez-en un en une seule ligne en fonction du contenu : hype ou social → 1 ou 2, explicatif ou pub → 4, histoire de fondateur ou premium → 5, interview ou podcast → 6, tech ou IA → 7. Demandez ensuite à l'utilisateur de choisir un numéro. Si le catalogue dans caption.py a changé, listez ce que styles affiche plutôt que cette copie.

4. Accroche (optionnelle)

Suggérez 3 accroches tirées de ce que le locuteur dit réellement. Commencez par le nombre, résultat ou contradiction le plus surprenant, utilisez 4 à 8 mots, et gardez le mot payant pour la fin. Formatez chaque accroche en syntaxe d'accroche, puis demandez avec AskUserQuestion : trois options d'accroche plus "Pas d'accroche" (l'utilisateur peut aussi taper la sienne).

La syntaxe d'accroche utilise une ligne par |, chacune commençant par son style :

  • s: introduction en italique serif ("Comment", "Pourquoi")
  • c: mise en place en capitales condensées blanches
  • b: le mot ou nombre payant en grand cercle (1–2 mots)
  • l: rebond en capitales vert fluo
  • r: petite étiquette en italique

Exemple : s:Comment|c:J'ai atteint|b:300k+|l:sans pubs|r:vues. L'accroche doit correspondre à ce que la vidéo délivre dans ses 10 premières secondes.

4b. Polissage (proposez-le ; exécutez-le quand l'utilisateur demande une notation, un audio plus propre, un rognage ou de la musique)

python3 "$K/polish.py" <nom> [--grade clean|cinematic|none] [--music calm|none] [--music-level 1.0] [--denoise 100]
  • Rognage : coupe le silence avant le premier mot et après le dernier (garde 0,3 s et 0,9 s), et décale la transcription en conséquence.
  • Notation : clean (par défaut) donne une peau chaude et saine, un contraste doux et une légère vignette. cinematic est plus profond et plus froid. Avant de choisir, comparez une image de chacun avec l'original et regardez-la.
  • Voix : suppression du bruit DeepFilterNet3 (~/.venvs/dfn, créé par setup.sh ; ne l'installez jamais globalement, il nécessite numpy<2), puis un filtre passe-haut, une accentuation de la présence, un dé-esseur et une compression douce.
  • Musique : un lit de piano et pad calme synthétisé. Au niveau 1, il se situe environ 20 dB sous la voix dans les pauses et environ 25 dB sous la voix pendant qu'elle parle. Utilisez --music-level 0.6 pour plus silencieux ou 1.5 pour plus présent.
  • Les originaux sont conservés sous source_orig.mp4 / transcript_orig.json, donc le polissage peut être ré-exécuté avec n'importe quels réglages. Après le polissage, exécutez à nouveau build et render.
  • Mentionnez tout bafouillage ou faux départ dans l'ouverture ("à l'heure actuelle, au moment présent…"). Les couper crée un petit saut de coupe, donc demandez avant de le faire.

5. Construire, vérifier, rendre

python3 "$K/caption.py" build <nom> --style <clé> [--hook "…"] [--hot "mot,mot"] [--fix "a=b"]
cd "videos/captions/<nom>" && npx --yes [email protected] check
python3 "$K/caption.py" render <nom>
  • --hot liste les mots qui restent dans la couleur d'accentuation. Choisissez 2 à 5 mots payants ; les nombres sont automatiquement chauds.
  • check : les avertissements de contraste au moment de la disparition de l'accroche sont attendus. Corrigez toute erreur réelle avant de rendre.
  • Avant de rendre une accroche, faites un instantané (npx --yes [email protected] snapshot . --at 1.6 --no-end --describe false) et vérifiez qu'elle ne couvre pas le visage. Lorsque le visage est haut dans le cadre (assis ou plan américain), déplacez l'accroche sur la poitrine avec --hook-y 0.43 ; l'ombrage suit automatiquement.
  • Avant d'envoyer, extrayez 3–4 images de out/captions/<nom>.mp4 et regardez-les. Les légendes ne doivent pas couvrir la bouche ou les yeux. Si c'est le cas, reconstruisez avec --cap-y (nombre plus élevé = plus bas à l'écran).
  • Les vidéos filmées inclinées (un appareil photo tourné sur le côté, sans métadonnées de rotation) montrent la personne allongée sur le côté dans la feuille de contact. Faites-la pivoter d'abord (ffmpeg -vf transpose=2 = 90° dans le sens inverse des aiguilles d'une montre, ou transpose=1 = dans le sens des aiguilles ; vérifiez une image) dans videos/_caption-inputs/, puis exécutez new sur ce fichier.
  • Envoyez le MP4 avec SendUserFile, et donnez son chemin sous forme de lien.

6. Révisions

Les réglages persistent dans videos/captions/<nom>/caption.json, donc une révision n'est que build <nom> --<option> … suivi de render <nom>. Demandes courantes :

  • Style différent : --style.
  • Plus grand ou plus petit : --size 1.2.
  • Plus haut ou plus bas : --cap-y 0.7.
  • Moins de mots par légende : --words 2.
  • Couleur différente : --accent "#FF4D3D".
  • Changer l'accroche : --hook ; --hook "" la supprime.
  • Longueur de l'accroche : --hook-dur 3.5.

Ils peuvent aussi l'ouvrir eux-mêmes dans HyperFrames Studio avec cd videos/captions/<nom> && npm run dev.

Informations de configuration (si quelque chose casse)

  • La transcription appelle ~/.claude/skills/embedded-captions/scripts/transcribe.cjs avec HYPERFRAMES_ROOT=~/.hyperframes-root, une installation de HyperFrames CLI 0.8.147 avec un lien symbolique packages/cli/dist/cli.js. Si l'un ou l'autre manque, réinstallez : npx hyperframes skills update embedded-captions, puis reconstruisez ~/.hyperframes-root (npm install [email protected] et liez symboliquement node_modules/hyperframes/dist/cli.js à packages/cli/dist/cli.js).
  • Les polices se trouvent dans kit/fonts/ (toutes en SIL OFL) et sont copiées dans chaque projet.
  • setup/doctor.sh vérifie chaque élément ci-dessous ; setup/setup.sh les répare.
  • Les légendes qui passent derrière la personne sont possibles avec le flux /embedded-captions, mais c'est beaucoup plus lent (environ 4 minutes pour 10 secondes) et nécessite que HYPERFRAMES_ROOT soit défini. Proposez-le uniquement si demandé.

Individual skills in this repo

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

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

Skills associés