Communitygithub.com

plugin-caption-cutter

Génère des légendes à partir de transcriptions sur une timeline CutBolt éditée et attache les scènes clipables sans film intermédiaire.

Qu'est-ce que plugin-caption-cutter ?

Ce skill permet de légender automatiquement une timeline CutBolt à partir d'un fichier de transcription (transcript.json) déjà associé au projet. Il suit un workflow en quatre étapes : génération des légendes (captions.draft), rendu (job.start avec run captions.render), attente de la fin du rendu (job.wait), puis application des opérations de légendes sur la session (session.apply). Les légendes sont attachées directement aux clips originaux sans créer de film intermédiaire, ce qui préserve la possibilité d'éditer le texte et le timing ultérieurement. Le skill gère les polices (locales ou nommées), les débordements de texte, les révisions périmées et les superpositions de légendes. Il fonctionne sur Windows et Linux avec FFmpeg/ffprobe externe. Aucun moteur, police, modèle ou outil média n'est fourni par le plugin.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/skulitom/cutbolt-plugin/tree/HEAD/skills/captions

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 la coupe actuelle

Utilisez un projet sauvegardé avec des pistes placées et un document de transcription nommé transcript.json. $PROJECT_ID et $REVISION font référence à la coupe en cours. Ébauchez après les modifications de timing. Remplacez les $PLACEHOLDERS par des valeurs réelles ; envoyez les appels cutbolt_* listés sans commande, ou utilisez cutbolt_run avec commande / arguments. Maintenez le rendu bloquant dans job.start.

{"command":"captions.draft","project":{"project_id":"$PROJECT_ID"},"transcripts":[{"file":"transcript.json"}]}

Examinez le texte des répliques et le timing dans le document retourné, puis conservez-le en tant que $CAPTION_DOCUMENT. Corrigez les erreurs de reconnaissance avant le rendu. $FONT est un objet identifiant/chemin de police (par exemple {"path":"font.ttf"}) ou un nom installé non ambigu provenant de fonts.find. $FONT_SIZE, $LINE_HEIGHT et $CAPTION_RECT sont des valeurs de mise en page en pixels adaptées au projet. Choisissez un espace suffisant pour les répliques réelles. Un débordement est rejeté, donc un texte coupé ne peut pas passer silencieusement.

{"command":"job.start","request_id":"caption-render","run":"captions.render","arguments":{"document":"$CAPTION_DOCUMENT","project":{"project_id":"$PROJECT_ID"},"layouts":{"default":{"fonts":["$FONT"],"size":"$FONT_SIZE","rect":"$CAPTION_RECT","line_height":"$LINE_HEIGHT","letter_spacing":0,"wrap":"none","overflow":"reject"}},"output":"caption-edits.json","mode":"generated","track_id":"captions","asset_id":"caption"}}

$JOB_ID est le ticket retourné.

{"command":"job.wait","job_id":"$JOB_ID","timeout_seconds":120}

Continuez uniquement lorsque le statut est completed. Conservez result.operations en tant que $CAPTION_OPERATIONS (une référence de fichier) et result.expected_revision en tant que $CAPTION_REVISION. Appliquez cette proposition à sa révision enregistrée. La commande crée la piste de légendes si elle est absente. Si elle contient déjà des légendes qui se chevauchent, supprimez explicitement les anciens clips prévus et préparez à nouveau contre la nouvelle tête. Ne dupliquez pas les légendes et n'écrasez pas les graphiques non liés.

{"command":"session.apply","project_id":"$PROJECT_ID","expected_revision":"$CAPTION_REVISION","request_id":"attach-captions","operations":"$CAPTION_OPERATIONS"}

Conservez la nouvelle révision. Exportez et inspectez les légendes réelles à des moments représentatifs, y compris les première et dernière répliques. Une modification de timing après cette étape nécessite des légendes régénérées. Les clips sauvegardés conservent des recettes de scène éditables et s'affichent directement avec les séquences vidéo ; aucun film intermédiaire de légendes n'est compilé. Conservez le document de légendes pour les futures modifications de texte/timing.

Pour une police locale fournie, utilisez un objet chemin ; les chaînes nomment les polices installées. Les polices installées manquantes ou ambiguës nécessitent une identité utilisable depuis fonts.find. En cas de débordement de texte, ajustez la boîte/police/mise en page des répliques et utilisez un nouveau nom de fichier de sortie. Pour une révision périmée, vérifiez si le timing de la timeline a changé avant l'attachement. Réutilisez l'ID de demande d'une modification incertaine et inspectez session.receipt ; un job.wait retournant un ticket ne prouve pas un rendu terminé.

Ce workflow fonctionne sur Windows et Linux avec FFmpeg/ffprobe externe. La reconnaissance vocale, lorsqu'elle est nécessaire, nécessite un moteur local et un modèle configurés séparément. L'enregistrement et le décodage matériel n'ont pas de backend Linux. Le plugin ne contient aucun moteur, police, modèle ou outil multimédia.

Skills associés