Communitygithub.com

perso-ai/perso-dubbing-plugin

Compétence de montage vidéo court : découpe et recadrage de clips, en complément du plugin de doublage Perso. GIFs de démonstration dans docs/media.

Qu'est-ce que perso-dubbing-plugin ?

Cette compétence pour agents IA (compatible Claude Code, Cursor, Codex) permet de découper une vidéo en clips courts et de les recadrer au format 9:16 pour les réseaux sociaux. Elle s'intègre au plugin de doublage Perso et partage sa bibliothèque. Elle offre trois modes d'entrée : via des timecodes explicites (hors ligne, sans crédit), via une sélection automatique des meilleurs moments basée sur une transcription STT (avec crédits), ou en demandant à l'utilisateur de choisir entre STT ou saisie manuelle des timecodes. La compétence gère le plan de découpage, l'extraction des clips, et la génération de fichiers sidecars pour les sous-titres, puis transfère le style des sous-titres à la compétence `srt`. Les clips sont livrés avec un manifeste `clips.json` contenant les métadonnées et les portions de transcription nécessaires pour le sous-titrage ultérieur. La clé API n'est requise que pour les opérations STT ; les découpes par timecodes sont entièrement hors ligne.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/perso-ai/perso-dubbing-plugin/tree/main/skills/clip

Demander à votre IA préférée

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

Documentation

/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 → --plan puis --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 srt pour 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.

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 --ranges et --sidecars sont 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 dubbing doit être installé à côté de clip.

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 :

  1. Écrire les sidecars : node scripts/clip.mjs --sidecars "<sortie>/clips.json" — ajoutez --karaoke uniquement pour un préréglage karaoké (il écrit aussi <clip>.timestamps.json pour le minutage mesuré des mots ; un préréglage simple nécessite seulement le .srt).
  2. 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, …).

Individual skills in this repo

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

Skills associés