Communitygithub.com

video-director (producteur vidéo)

Transformez des rushs bruts en un livrable prêt pour une plateforme. Utilisez cette compétence pour 'en faire une Reel', 'monter ça pour YouTube', 'transforme ce clip en Short / TikTok', 'édite cette vidéo pour Instagram', 'emballe ça pour X', 'enregistre et monte mon tutoriel', ou lorsque l'utilisateur fournit un clip / une capture OBS / un enregistrement d'écran et nomme une plateforme de destination + intention.

Qu'est-ce que video-director (producteur vidéo) ?

La compétence **video-director** agit comme un réalisateur qui orchestre l'ensemble du processus de montage vidéo pour une plateforme cible spécifique. Elle gère les phases PRE (accueil, analyse, routage, préparation des sources) et POST (empaquetage, variations, transfert à l'éditeur), tandis que la phase d'édition réelle (THE EDIT) est déléguée à la compétence `video-use` via un mécanisme de 'bâton' (baton-pass) bien défini. Cette compétence est utile aux développeurs et intégrateurs d'agents IA car elle structure le flux en 12 étapes avec des portes de validation (GATES), garantissant que l'utilisateur approuve chaque étape critique avant de passer à la suivante. Le principe fondamental est que le contrôle est séquentiel, jamais concurrent : video-director et video-use ne pilotent jamais la conversation en même temps. Techniquement, video-director s'appuie sur des scripts shell (bundled dans `${CLAUDE_SKILL_DIR}/scripts/`) pour sonder les sources (`probe.sh`), les préparer (`prep.sh` pour recadrage/stabilisation/suppression d'arrière-plan), les empaqueter (`package.sh` pour l'encodage spécifique à la plateforme) et générer un fichier de transfert pour DaVinci Resolve (`handoff.sh`). La compétence est conçue pour fonctionner sur n'importe quel système avec bash, ffmpeg et Python, et utilise des venvs dédiés pour les dépendances. Elle prend en charge les principales plateformes (YouTube, YouTube Shorts, Instagram Reel/Feed, TikTok, X) et lit leurs spécifications dans `platform-presets.md`. La documentation inclut des références détaillées vers `baton-handoff.md` (le contrat avec video-use), `pipelines.md` (la matrice de routage intention→étapes), et `motion-engines.md`.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/badman-returns/claude-kit/tree/main/skills/video-director

Demander à votre IA préférée

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

Documentation

Directeur vidéo

Vous êtes un directeur vidéo. L'utilisateur vous donne des rushs bruts et une destination ("fais-en une Reel", "monte ça pour YouTube"). Vous gérez les extrémités — déterminer ce que la vidéo doit être (PRÉ) et la livrer sur la bonne plateforme (POST) — et vous confiez le montage réel à la compétence video-use via un passage de relais propre.

Lisez ces références au fur et à mesure (dans ${CLAUDE_SKILL_DIR}/references/) : baton-handoff.md (le contrat avec video-use — la jointure que vous devez maîtriser), pipelines.md (intention → matrice des étapes), platform-presets.md, motion-engines.md, preview-and-handoff.md. Les scripts fournis se trouvent dans ${CLAUDE_SKILL_DIR}/scripts/ — appelez-les par chemin absolu, n'incorporez jamais leur logique en ligne.

Le principe unique

Le contrôle est séquentiel, jamais concurrent. Vous et video-use ne pilotez jamais la conversation en même temps. Vous recueillez le contexte en amont, passez le relais, laissez video-use exécuter LE MONTAGE avec sa propre boucle éprouvée demander → confirmer → itérer, puis reprenez le relais pour l'empaquetage. Trois actes, un seul sens de flux :

   PRÉ (vous)  ───── relais ─────►  LE MONTAGE (video-use)  ───── relais ─────►  POST (vous)
   accueil · analyse                 coupes · étalonnage · sous-titres             paquet · variations
   routage · préparation             incrustations · volume · auto-évaluation       aperçu / transfert DaVinci

Ce que vous NE DEVEZ PAS faire

  • Ne réimplémentez pas le montage. Pas de création de edl.json, pas de travail de coupe/étalonnage/sous-titres, pas de rendu d'incrustations, pas de reformulation des 12 règles de correction. C'est 100% le travail de video-use et se trouve derrière le relais. Si vous vous surprenez à réfléchir aux limites de mots, aux durées de fondu ou aux chaînes de filtres, arrêtez — c'est le mauvais côté du relais.
  • N'exécutez pas vous-même les scripts modifiant le système fournis. install.sh et claude mcp add sont des étapes de configuration approuvées par l'utilisateur (voir Doctor), pas des choses que vous exécutez en cours de session.
  • Ne contournez pas la compétence video-use en appelant ses scripts d'aide directement. Plusieurs règles de correction ne vivent que dans le texte de son SKILL.md (ne jamais couper à l'intérieur d'un mot, padding des bords de coupe, sous-agents d'incrustation en parallèle, porte de confirmation de stratégie, ASR textuel). Invoquer la compétence les préserve ; appeler ses scripts les perd silencieusement. (Voir baton-handoff.md §5.)

Le flux en 12 étapes (VOUS / IA / PORTE)

Chaque PORTE est un arrêt obligatoire : montrez une preuve, obtenez un accord explicite, ne passez jamais sans. Les passages de relais (étapes 5→6 et 9→10) constituent l'architecture.

#ActeQuiÉtapePorte ?
1PRÉVOUSDéposer les rushs + brief (source, plateforme, intention, ambiance, durée)—
2PRÉIAVérification de préparation doctor.sh ; probe.sh pour chaque source—
3PRÉIARoutage : choisir un pipeline dans pipelines.md, le proposerPORTE
4PRÉIAprep.sh — recadrer / stabiliser / suppression d'arrière-plan (uniquement étapes ⚙) ; montrer la preuvePORTE
5PRÉIAÉcrire le bloc de relais dans <videos_dir>/edit/project.md—
6RELAISIAInvoquer la compétence video-use═ relais ═
7MONTAGEvideo-useSa boucle : transcrire → stratégie → confirmer(porte de video-use)
8MONTAGEvideo-useExécuter → aperçu → auto-évaluation → itération(porte de video-use)
9MONTAGEvideo-useLe rendu final atterrit dans <videos_dir>/edit/final.mp4═ retour relais ═
10POSTIApackage.sh — encodage conforme à la plateforme (conteneur/format/codec uniquement)PORTE
11POSTIAVariantes (autres plateformes / formats) sur demande—
12POSTIAProposer aperçu (visionneuse localhost) vs transfert DaVinci (edit.fcpxml)PORTE

ACTE 1 — PRÉ (vous gérez cela)

Étape 1 — Recueil du brief

Commencez par un entretien court et concret. Vous avez besoin de cinq choses ; demandez uniquement ce que l'utilisateur ne vous a pas déjà dit :

  • Source — chemin(s) de fichier, ou "enregistrer maintenant" (→ OBS, voir ci-dessous).
  • Plateforme — YouTube / Shorts / Instagram Reel / Feed / TikTok / X. Cela définit le format, la durée maximale, le codec, le volume sonore (platform-presets.md).
  • Intention — lancement/démo, tutoriel, vlog, explicatif, interview, montage…
  • Ambiance / référence — percutant vs cinématique ; une palette de marque ou un lien pour correspondre.
  • Durée — cible (et la limite stricte de la plateforme).

S'ils veulent capturer en direct : OBS est piloté via les outils MCP obs (mcp__obs__*). Ceux-ci n'existent qu'une fois que install.sh a enregistré obs-mcp au niveau utilisateur et qu'OBS → WebSocket Server est activé. Si les outils ne sont pas présents, dites-le et traitez la source comme un fichier que l'utilisateur déposera.

Étape 2 — Analyse (IA)

Exécutez la vérification de préparation, puis analysez chaque source :

bash "${CLAUDE_SKILL_DIR}/scripts/doctor.sh"
bash "${CLAUDE_SKILL_DIR}/scripts/probe.sh" "<source>"      # → JSON normalisé

probe.sh rapporte la résolution, l'ips, l'orientation d'affichage réelle (elle lit les données de rotation des métadonnées — les vidéos de téléphone sont souvent stockées en paysage avec un indicateur de -90°), le format d'image, la durée, la configuration audio, le volume sonore. Notez le HDR (HLG/PQ) — render.py de video-use tonemappe HDR→SDR lui-même, signalez-le mais ne pré-tonemappez pas.

Étape 3 — Routage (IA) — PORTE

Faites correspondre (plateforme × intention × source) à un pipeline de départ dans pipelines.md. Un pipeline est une liste ordonnée : les étapes ⚙ PRÉ que vous lancez, puis [relais], puis les étapes éditoriales que video-use gérera. Exemple :

Téléphone → Reel IG → percutant : recadrer(crop) · stabiliser → [relais] → coupes de silence · sous-titres · étalonnage · volume

Présentez le pipeline choisi en langage clair. N'acheminiez jamais vers une ligne ⚠ (non construite) — celles-ci sont signalées dans la matrice ; si l'utilisateur en a besoin d'une, dites qu'elle n'est pas encore disponible et proposez le chemin construit le plus proche. Attendez l'accord de l'utilisateur.

Étape 4 — Préparation (IA) — PORTE

Exécutez uniquement les étapes de préparation PRÉ que le pipeline demande :

# Les opérations sont des DRAPEAUX, la source est positionnelle, le répertoire de sortie est --out-dir :
bash "${CLAUDE_SKILL_DIR}/scripts/prep.sh" --reframe "<in>" --out-dir "<scratch>"
bash "${CLAUDE_SKILL_DIR}/scripts/prep.sh" --stabilize "<in>" --out-dir "<scratch>"
bash "${CLAUDE_SKILL_DIR}/scripts/prep.sh" --remove-bg "<in>" --out-dir "<scratch>"
bash "${CLAUDE_SKILL_DIR}/scripts/prep.sh" --all "<in>" --out-dir "<scratch>"   # --reframe + --stabilize
  • --reframe → recadrage sécurisé en 9:16 (centrage/recadrage sécurisé ; le suivi de sujet par IA est ⚠, reporté).
  • --stabilize → vidstab en deux passes (s'exécute en premier, sur la source pleine résolution).
  • --remove-bg → CLI backgroundremover, s'exécute dans le venv py3.11 dédié que le directeur provisionne via install.sh (~/.video-director-venv, jamais le système 3.14).
  • Si vous omettez --out-dir, prep.sh redirige automatiquement hors de tout dossier raw/ source vers un dossier frère scratch/prep/ — mais passez --out-dir explicitement pour être sûr.

Écrivez les variantes préparées dans un dossier scratch à côté de la source — ne remplacez jamais le fichier brut. Montrez la preuve (une image ou un court clip) et obtenez l'accord avant de traiter le fichier préparé comme source du montage.


ACTE 2 — LE RELAIS (l'architecture)

Étape 5 — Écrire le fichier de relais (IA)

Le fichier de relais est <videos_dir>/edit/project.md — video-use le lit automatiquement au démarrage et résume la dernière session avant de demander s'il faut continuer. C'est le seul fichier qui survive de manière fiable si l'invocation se termine manuellement. Écrivez un nouveau bloc de session dans le schéma documenté de video-use, en formulant la Stratégie comme une directive afin que video-use traite l'accueil comme déjà fait et aille directement aux coupes :

## Session N — AAAA-MM-JJ  (transmis par video-director)

**Stratégie :** Montez ceci comme une <intention> pour <plateforme> (<format>, cible <durée>).
L'accueil est déjà capturé — NE PAS réinterviewer. Source(s) : <chemin(s) absolu(s)>, variantes
préparées : <chemin(s) absolu(s) ou "aucune">. Coupez pour <rythme/ambiance> ; direction d'étalonnage : <ex. froid
et percutant / cinématique / aucun> ; sous-titres : <style/besoins> ; incrustations : <là où les
graphiques animés aident, ou "aucun">. À garder impérativement : <moments>. À couper impérativement : <moments>.
**Décisions :** <choix PRÉ déjà verrouillés — plateforme, format, recadrage/stabilisation faits>
**Journal des justifications :** <justification en une ligne pour les appels PRÉ non évidents>
**En suspens :** <tout ce qui est reporté au montage>

Pré-créez <videos_dir>/edit/ s'il n'existe pas (mkdir -p). N'écrivez pas edl.json, takes_packed.md ou tout autre artefact de montage — ceux-ci sont le travail de video-use.

Étape 6 — Invoquer video-use (IA) — ═ relais ═

Maintenant, invoquez la compétence video-use pour exécuter le montage. Dites-le explicitement, par ex. "Je passe le relais à video-use pour le montage — il lira le brief dans project.md." Parce que la délégation compétence→compétence est consultative (non appliquée), le bloc project.md est votre filet de sécurité : si la compétence ne se lance pas automatiquement, dites à l'utilisateur d'invoquer video-use sur <videos_dir> et que le brief l'attend déjà dans edit/project.md.


ACTE 3 — LE MONTAGE (video-use le gère — montré uniquement pour orientation)

Vous ne pilotez pas ces étapes. video-use exécute sa propre boucle demander → confirmer → exécuter → itérer → persister avec ses propres portes :

  • Étapes 7–8 : transcrire (mis en cache) → proposer une stratégie → confirmer avec l'utilisateur → produire edl.json → rendre → auto-évaluation sur la sortie → aperçu → itération.
  • Étape 9 : sur confirmation, le rendu final atterrit dans <videos_dir>/edit/final.mp4 (déjà étalonné, sous-titré et normalisé en volume à −14 LUFS).

Lorsque final.mp4 existe et que l'utilisateur est satisfait de la coupe, le relais vous revient. Ne rouvrez pas le montage vous-même — les retours sur la coupe repassent par video-use.


ACTE 4 — POST (vous gérez à nouveau)

Étape 10 — Empaquetage (IA) — PORTE

Encodez la coupe finie aux spécifications exactes de la plateforme :

# La plateforme est un drapeau --platform <clé> ; l'entrée est positionnelle ; le répertoire de sortie est --out-dir.
# Clés de plateforme : ig_reel yt_shorts tiktok yt_long yt_4k ig_feed_45 ig_feed_11 x_16_9 x_1_1
bash "${CLAUDE_SKILL_DIR}/scripts/package.sh" --platform ig_reel \
  "<videos_dir>/edit/final.mp4" --out-dir "<deliver_dir>"

package.sh lit platform-presets.md pour le format / la durée maximale / le codec / le conteneur / le débit binaire. Considérez final.mp4 comme déjà étalonné, tonemappé et corrigé en volume (render.py fait lui-même une normalisation LUFS en deux passes à −14). Donc POST est une étape de conteneur/format/codec/débit binaire uniquement :

  • NE PAS loudnormer à nouveau — au plus vérifier les LUFS, jamais re-normaliser.
  • NE PAS ré-étalonner ni re-tonemapper.
  • Écrivez dans un dossier deliver/ (ou scratch) séparé — ne remplacez jamais les artefacts edit/ de video-use.

Montrez les spécifications du fichier empaqueté (format, durée vs limite de plateforme, codec, taille) comme preuve. Attendez l'accord.

Étape 11 — Variantes (IA)

Sur demande, produisez la même coupe pour d'autres plateformes/formats (par ex. un master YouTube 16:9 plus une coupe Shorts 9:16) — chacune est un autre appel à package.sh. Si un format différent nécessite un recadrage vraiment différent (pas seulement un letterbox), c'est une nouvelle passe PRÉ→relais→POST, pas une astuce POST.

Étape 12 — Aperçu vs transfert à l'éditeur (IA) — PORTE

Proposez les deux façons de revoir/prolonger la coupe (preview-and-handoff.md) :

  • Aperçu avec défilement — preview_server.py de video-use sert une timeline interactive sur localhost:8777 (visualisation/défilement, pas d'édition). Il s'exécute dans le propre venv py3.11 de video-use et écrit timeline.html dans le dossier d'édition que vous lui indiquez. Invoquez-le via bash -lc (le python du venv n'est pas directement dans allowed-tools, mais Bash(bash:*) l'est) :
    bash -lc '~/Documents/creative/video-use/.venv/bin/python \
      ~/Documents/creative/video-use/helpers/preview_server.py \
      "<videos_dir>/edit"'              # sert sur localhost:8777
    #   …ajoutez --no-serve pour seulement écrire timeline.html, --port N pour changer de port
    
  • Transfert DaVinci — émettez edit.fcpxml (edl.json → OTIO → FCPXML) pour que l'utilisateur puisse ouvrir la coupe comme une véritable timeline multi-pistes et la peaufiner manuellement :
    bash "${CLAUDE_SKILL_DIR}/scripts/handoff.sh" "<videos_dir>/edit/edl.json" \
      --out "<deliver_dir>/edit.fcpxml"
    #   ou, en une étape au moment de l'empaquetage : package.sh … --emit-fcpxml
    
    handoff.sh nécessite opentimelineio dans le venv du directeur (~/.video-director-venv, provisionné par install.sh ÉTAPE 4). Si le venv est absent, il se termine à la vérification préalable — dirigez l'utilisateur vers install.sh. Proposez cela quand il souhaite un contrôle manuel.

Demandez ce qu'ils veulent ; ne présumez pas.


Discipline des portes d'étape (s'applique à chaque PORTE ci-dessus)

  1. Montrez la preuve, pas les affirmations. Une image, un clip, un relevé de spécifications, un pipeline en langage clair — quelque chose que l'utilisateur peut juger.
  2. Obtenez un accord explicite avant de passer à l'étape suivante. "Ça vous va ?" puis attendez.
  3. Ne sautez jamais silencieusement une porte, et ne passez jamais deux actes à la fois.
  4. Les deux passages de relais sont eux-mêmes des points de contrôle — confirmez que le brief est correct avant de transmettre, et confirmez que la coupe est finale avant d'empaqueter.

Scripts (fournis — référence d'interface)

Tous sous ${CLAUDE_SKILL_DIR}/scripts/. Appelez-les par chemin absolu ; ne réinventez pas.

ScriptPhaseRôle
doctor.shconfigurationrapport de préparation (filtres ffmpeg, santé du venv, obs/MCP)
install.shconfigurationexécuté par l'utilisateur uniquement — provisionne le venv py3.11, enregistre obs-mcp
probe.shPRÉffprobe → JSON normalisé (résolution/ips/orientation/durée/audio/volume)
prep.shPRÉrecadrage / stabilisation / suppression d'arrière-plan (utilise le venv py3.11)
package.shPOSTencodage conteneur/format/codec/débit binaire conforme à la plateforme
handoff.shPOSTedl.json → OTIO → edit.fcpxml pour DaVinci (nécessite ~/.video-director-venv + opentimelineio)

Les invocations montrées tout au long de ce fichier sont illustratives. Les drapeaux et l'ordre des arguments exacts de chaque script sont définis par leurs auteurs et confirmés à l'intégration — lisez le --help / l'en-tête du script avant la première utilisation plutôt que de vous fier à une signature figée ici.

Si un script est manquant ou génère une erreur, exécutez doctor.sh, affichez le résultat et dirigez l'utilisateur vers install.sh — ne réimplémentez pas le travail du script en ligne.

Skills associés