/clip
Découper une vidéo en clips courts + recadrer. Les sous-titres ne sont pas le travail de cette compétence — après le découpage, la compétence srt les stylise (voir le transfert ci-dessous).
Points d'entrée
-
Timecodes explicites (« coupe 2:00–3:00 de cette vidéo ») → découper le fichier local directement :
--video "<fichier>" --ranges "2:00-3:00,...". Pas de STT, pas de clé, pas de crédits. -
Sélection automatique des meilleurs moments sur un projet STT →
--planpuis--clips(le flux ci-dessous). Nécessite la transcription et les horodatages des mots du projet. -
Vidéo brute, « trouve les bons moments » (aucun timecode donné) → vous ne pouvez pas choisir les meilleurs moments sans transcription, alors demandez à l'utilisateur ce qu'il souhaite :
- STT (sélection appropriée, utilise des crédits) : exécutez d'abord la STT de la compétence
srtpour créer le projet, puis découpez-le avec--plan/--clips. - Gratuit (pas de STT) : l'utilisateur donne les timecodes et vous les découpez avec
--video --ranges.
Suivez leur choix — n'exécutez pas la STT (qui facture des crédits) sans demander.
- STT (sélection appropriée, utilise des crédits) : exécutez d'abord la STT de la compétence
Règles fondamentales
- Seul le worker voit la clé brute — ne jamais ouvrir, afficher ou passer en argument.
- La restriction de clé s'applique uniquement à
--project/--plan/--clips.--video --rangeset--sidecarssont entièrement hors ligne — ne jamais exécuter de vérification/inscription de clé pour eux. - Exécuter en arrière-plan — l'encodage prend du temps.
- Cette compétence partage les bibliothèques de la compétence de doublage : le dossier
dubbingdoit être installé à côté declip.
Flux
Phase 1 — planifier. node scripts/clip.mjs --project <seq> --plan affiche la carte de sections du résumé (guide thématique) ainsi que la transcription complète des phrases, chaque ligne sous la forme ordre [début-fin] texte.
Phase 2 — choisir, puis découper. Lisez la transcription et choisissez les clips, chacun sous la forme { "title": "...", "start_order": N, "end_order": M }. Grille d'évaluation :
- Amorce en premier — commencez par une phrase qui capte l'attention (question, affirmation audacieuse, phrase drôle/surprenante).
- Terminez là où le moment se résout, pas à la première phrase complète. Allez jusqu'au bout de l'élan — toute la réaction, la suite et toute chute secondaire. Lisez quelques phrases après la fin apparente ; conservez-les si elles font toujours partie de la même réaction.
- Coupez à la transition — terminez juste avant que l'énergie ne baisse ou que le ton ne change (réaction enthousiaste → narration calme).
- Point fort — privilégiez les moments drôles / surprenants / émotionnels / citables ; le point culminant se situe souvent une ou deux phrases après la révélation proprement dite.
- Durée 30–90 s — le worker prévient en dehors de cette fourchette ; préférez l'arc complet à une coupe prématurée.
- Titre — décrit le moment ; devient le nom du fichier (
01_<titre>.mp4).
Les sections sont de la longueur d'un chapitre — utilisez la carte des sections uniquement comme guide, puis resserrez autour de l'amorce.
Exécutez : node scripts/clip.mjs --project <seq> --clips '<json>' [--out dossier] (--clips accepte aussi @chemin). Les sources paysage (16:9) sont recadrées en 9:16 (letterbox drama-shorts) ; les sources portrait sont conservées. Le worker écrit les clips ainsi qu'un manifeste clips.json (enregistre chaque clip + la tranche de transcription nécessaire pour les sous-titres ultérieurs). Relayer [progress] ; livrer les fichiers depuis [clips-output].
Sous-titres → transfert vers la compétence srt
Les sous-titres sont désactivés par défaut. Après le découpage, informez l'utilisateur que les clips sont prêts et demandez s'il souhaite ajouter des sous-titres. S'il en veut, montrez d'abord les préréglages — ne sautez jamais directement à un seul, exactement comme le flux de stylisation de la compétence srt : la galerie interactive (sélectionner + Appliquer) dans l'application Claude, ou le ../srt/assets/style_presets.png statique + node ../srt/scripts/style.mjs --list-presets menu ailleurs. Laissez l'utilisateur choisir un préréglage ou décrire un style (les préréglages pour formats courts comme karaoke/bold-punch conviennent aux clips). Ce n'est qu'après son choix :
- Écrire les sidecars :
node scripts/clip.mjs --sidecars "<sortie>/clips.json"— ajoutez--karaokeuniquement pour un préréglage karaoké (il écrit aussi<clip>.timestamps.jsonpour le minutage mesuré des mots ; un préréglage simple nécessite seulement le.srt). - Styliser chaque clip avec la compétence srt :
node ../srt/scripts/style.mjs "<clip>.mp4" "<clip>.srt" --preset <id>(ajoutez--word-timestamps "<clip>.timestamps.json"pour le karaoké). Voir la section « Styliser et graver les sous-titres » de la compétence srt.
Ajoutez --host <runtime> pour la télémétrie (silencieuse), comme les autres workers.
Configuration (env)
Identique à /dubbing / /srt (PERSO_API_BASE/PERSO_MEDIA_BASE — hôtes https perso.ai uniquement, PERSO_SPACE_SEQ, XP_API_KEY, PERSO_NO_TELEMETRY, …).