Communitygithub.com

perso-ai/perso-dubbing-plugin

Ferramenta de clipes curtos para vídeos, complementar ao plugin de dublagem Perso. Demonstrações em GIFs na pasta docs/media.

O que é perso-dubbing-plugin?

A habilidade `/clip` do Perso permite cortar vídeos em clipes curtos e refatorar o enquadramento, sendo projetada para funcionar ao lado do plugin de dublagem Perso. Ela oferece três pontos de entrada principais: cortes explícitos baseados em timecodes (totalmente offline, sem necessidade de STT), seleção de destaques com base em transcrições de projetos STT (usando os comandos `--plan` e `--clips`) e, para vídeos brutos sem timecodes, o assistente pergunta ao usuário se deseja executar STT (que consome créditos) ou fornecer timecodes manualmente. A habilidade segue regras rígidas de segurança de chaves, executa em segundo plano e gera um manifesto `clips.json` que registra cada clipe e o trecho de transcrição necessário para legendas. Por padrão, as legendas são desativadas; o assistente pergunta ao usuário se deseja adicioná-las e, em caso positivo, exibe os presets disponíveis do sistema de legendas `srt`, permitindo ao usuário escolher um estilo antes de aplicar as legendas com os comandos apropriados. A configuração é feita por variáveis de ambiente compartilhadas com as habilidades `/dubbing` e `/srt`.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

/clip

Corte um vídeo em clipes curtos + reenquadre. Legendas não são função desta habilidade — após o corte, a habilidade srt as estiliza (veja a transição abaixo).

Pontos de entrada

  • Timecodes explícitos ("corte 2:00–3:00 deste vídeo") → corte o arquivo local diretamente: --video "<arquivo>" --ranges "2:00-3:00,...". Sem STT, sem chave, sem créditos.

  • Seleção de destaques por IA em um projeto STT → --plan depois --clips (o fluxo abaixo). Precisa da transcrição do projeto e dos timestamps das palavras.

  • Vídeo bruto, "encontre os bons momentos" (sem timecodes fornecidos) → você não pode selecionar destaques sem uma transcrição, então pergunte ao usuário qual ele prefere:

    • STT (seleção adequada, usa créditos): execute o STT da habilidade srt primeiro para criar o projeto, depois corte com --plan/--clips.
    • Livre (sem STT): o usuário fornece os timecodes e você os corta com --video --ranges.

    Prossiga com a escolha — não execute STT (que consome créditos) sem perguntar.

Regras principais

  • Apenas o worker vê a chave bruta — nunca abra, exiba ou passe como argumento.
  • A trava de chave se aplica apenas a --project/--plan/--clips. --video --ranges e --sidecars são totalmente offline — nunca execute verificação/registro de chave para eles.
  • Execute em segundo plano — a codificação leva tempo.
  • Esta habilidade compartilha as bibliotecas da habilidade de dublagem: a pasta dubbing deve estar instalada ao lado de clip.

Fluxo

Fase 1 — planejamento. node scripts/clip.mjs --project <seq> --plan imprime o mapa de seções do resumo (guia de tópicos) mais a transcrição completa de frases, cada linha como order [início-fim] texto.

Fase 2 — escolha e corte. Leia a transcrição e escolha clipes, cada um como { "title": "...", "start_order": N, "end_order": M }. Critérios:

  • Gancho primeiro — comece em uma frase que prenda a atenção (pergunta, afirmação ousada, linha engraçada/surpreendente).
  • Termine onde o momento se resolve, não na primeira frase completa. Acompanhe a batida até o fim — toda a reação, o desdobramento e qualquer piada secundária. Leia algumas frases depois do aparente fim; mantenha-as se ainda fizerem parte da mesma reação.
  • Corte na transição — termine antes da energia cair ou o tom mudar (reação animada → narração calma).
  • Pico — prefira momentos engraçados/surpreendentes/emocionais/citáveis; o ponto alto geralmente fica uma ou duas frases após a revelação literal.
  • Duração 30–90s — o worker avisa se estiver fora; prefira o arco completo a um corte prematuro.
  • Título — descreve o momento; vira o nome do arquivo (01_<titulo>.mp4).

As seções têm tamanho de capítulo — use o mapa de seções apenas como guia, depois aperte o gancho.

Execute: node scripts/clip.mjs --project <seq> --clips '<json>' [--out pasta] (--clips também aceita @caminho). Fontes paisagem (16:9) são reenquadradas para 9:16 (letterbox de drama-shorts); fontes retrato são mantidas. O worker escreve os clipes mais um manifesto clips.json (registra cada clipe + o trecho de transcrição necessário para legendas futuras). Relate [progress]; entregue os arquivos de [clips-output].

Legendas → transição para a habilidade srt

Legendas estão desativadas por padrão. Após o corte, informe ao usuário que os clipes estão prontos e pergunte se deseja adicionar legendas. Se quiser legendas, mostre os presets primeiro — nunca pule direto para um, exatamente como o fluxo de estilização da habilidade srt faz: a galeria interativa (selecionar + Aplicar) no aplicativo Claude, ou o menu estático ../srt/assets/style_presets.png + node ../srt/scripts/style.mjs --list-presets em outros lugares. Deixe o usuário escolher um preset ou descrever um estilo (presets de formato curto como karaoke/bold-punch são adequados para clipes). Só depois que ele escolher:

  1. Escreva os sidecars: node scripts/clip.mjs --sidecars "<saida>/clips.json" — adicione --karaoke apenas para um preset karaoke (também escreve <clip>.timestamps.json para medição de tempo de palavras; um preset comum precisa apenas do .srt).
  2. Estilize cada clipe com a habilidade srt: node ../srt/scripts/style.mjs "<clip>.mp4" "<clip>.srt" --preset <id> (adicione --word-timestamps "<clip>.timestamps.json" para karaoke). Veja a seção "Estilizar e queimar legendas" da habilidade srt.

Adicione --host <runtime> para telemetria (silenciosa), igual aos outros workers.

Configuração (env)

Mesmo que /dubbing / /srt (PERSO_API_BASE/PERSO_MEDIA_BASE — apenas hosts https perso.ai, 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.

Habilidades Relacionadas