Communitygithub.com

clipper

Transforme vídeos longos em clipes verticais curtos com legendas palavra por palavra, prontos para publicar.

O que é clipper?

O clipper é uma skill projetada para agentes de IA como Claude Code que permite transformar vídeos longos (podcasts, gravações de palestras, lives do YouTube, etc.) em clipes verticais curtos (9:16) com legendas sincronizadas palavra por palavra, prontos para postar em plataformas como TikTok, Reels ou Shorts. A skill roda inteiramente na máquina local, sem enviar dados para terceiros, e não requer chave de API para transcrição — utiliza um modelo de fala leve (Whisper) baixado uma vez. O agente é responsável por analisar a transcrição gerada e selecionar de 3 a 5 momentos mais fortes com base em critérios como gancho inicial, autonomia narrativa, retorno e energia. Em seguida, scripts Python cortam e reenquadram os clipes para 1080x1920, focando no rosto do falante, adicionam legendas com destaque na palavra falada e equalizam o áudio. O resultado é uma pasta com os clipes, um arquivo de pontuação e legendas de postagem prontas. A skill suporta personalização de cores de legenda, duração dos clipes e número de momentos, e inclui verificações automáticas de qualidade (rosto no quadro, legendas duplicadas etc.).

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/corbinsylk/clipper-skill/tree/HEAD/skills/clipper

Perguntar na sua IA favorita

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

Documentação

O que clipper faz?

Insira um vídeo e Claude encontra os momentos mais fortes, transformando-os em clipes curtos com legendas, prontos para publicar.

Tudo roda neste computador. Nada é enviado. A skill reside em ~/.claude/skills/clipper/; suas ferramentas são scripts/transcribe.py e scripts/make_clips.py, executadas com o próprio Python da skill: ~/.claude/skills/clipper/.venv/bin/python.

0. Verifique a instalação (a cada execução)

test -x ~/.claude/skills/clipper/.venv/bin/python && command -v ffmpeg

Se algo estiver faltando, informe o usuário em uma linha e execute o instalador do repositório clonado (bash install.sh dentro da pasta clipper-skill). Se não encontrar a pasta, clone novamente: git clone https://github.com/corbinsylk/clipper-skill && cd clipper-skill && bash install.sh.

1. Obtenha o vídeo

O usuário arrasta o arquivo ou fornece um caminho. Se não fornecer nenhum, peça em uma linha. Ambos os scripts usam a pasta de trabalho <nome do vídeo>-clips/ ao lado do vídeo, a menos que você passe outra. Configurações que o usuário pode fornecer (caso contrário, use os padrões, nunca pergunte):

ConfiguraçãoPadrão
Quantos clipes3 a 5, tantos quantos forem genuinamente fortes
Duração do clipe20 a 60 segundos (ideal 30 a 45)
Cores das legendasoff-white #F5F1EA, a palavra sendo dita em clay #B03926
Legendasativadas

2. Transcreva

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/transcribe.py "<video>"

Ele imprime a pasta de trabalho primeiro. A primeira execução baixa o modelo de fala uma vez (cerca de 500 MB para small); um vídeo de 2 minutos leva cerca de um minuto, um de uma hora leva vários minutos. Para qualquer coisa acima de 10 minutos, execute o comando em segundo plano (no Claude Code: a ferramenta Bash com run_in_background) e informe ao usuário que está processando. Para sotaque forte ou áudio ruim, adicione --model medium. Um aviso sobre token HF ou dica de velocidade na primeira execução é inofensivo.

3. Escolha os momentos (esta é sua tarefa, não de um script)

Leia <pasta de trabalho>/transcript.md na íntegra. Escolha os 3 a 5 momentos mais fortes. Um momento forte:

  • Abre com um gancho em sua primeira frase. Uma afirmação ousada, um número surpreendente, uma pergunta, um erro, o início de uma história. Nunca comece com "então", "e", "hum", "como eu disse" ou uma linha que precise de contexto anterior.
  • É autônomo. Alguém que nunca viu o vídeo completo entende. Sem "isso", "aquela coisa" ou "como mencionei" apontando para fora do clipe.
  • Tem retorno. Termina na resposta, na piada, no resultado ou na lição: um pensamento completo, nunca no meio da frase.
  • Tem energia. Opiniões, detalhes, números, emoção, uma reviravolta. Pule saudações, leituras de patrocinadores, avisos e introduções lentas.
  • Não repete outra escolha. Cada clipe faz um ponto diferente, e os clipes nunca se sobrepõem no tempo. Um vídeo curto gera menos clipes: abaixo de cerca de 5 minutos, 1 a 3 clipes é normal; nunca estique ou sobreponha para atingir um número.

Pontue cada um de 1 a 10 (gancho, autonomia, retorno, energia juntos). Mantenha apenas os que pontuam 7 ou mais; se menos de 3 pontuarem, mantenha os 3 melhores e diga que são mais fracos. Em seguida, escreva <pasta de trabalho>/moments.json:

[
  {"title": "Título curto para o arquivo", "start": 63.2, "end": 101.8, "score": 9,
   "hook": "a primeira frase do clipe, palavra por palavra",
   "why": "uma linha: por que este momento funciona",
   "caption": "uma legenda de postagem pronta: uma linha de gancho, depois 2-3 linhas curtas, depois uma pergunta ou chamada para ação"}
]

start e end são segundos a partir do início do vídeo (os tempos da transcrição estão em minutos:segundos, então 01:03.2 = 63.2). <pasta de trabalho>/words.json contém cada palavra com seu início (s) e fim (e) exatos: leia para definir as bordas. Defina start como o s da primeira palavra do gancho e end como o e da última palavra do retorno. O script mantém as palavras de start a end (com 0,05 s de margem) e nunca alcança a palavra anterior ou posterior, portanto, para descartar uma palavra como "Então", defina start como o s da próxima palavra.

4. Crie os clipes

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/make_clips.py "<video>"

Adicione --text-color "#FFFFFF" --active-color "#FFD400" para outras cores de legenda, ou --no-captions. Leva cerca de um minuto por clipe. Cada clipe: cortado nas bordas das palavras, reenquadrado para 1080x1920 (um vídeo largo é cortado ao redor do rosto do falante; qualquer trecho de um segundo ou mais sem rosto, como um gráfico, tela ou cena de apoio, é exibido inteiro sobre um fundo desfocado em vez de cortado; um vídeo vertical é mantido inteiro), legendas três palavras por vez com a palavra falada destacada, som nivelado a -14 LUFS.

5. Verifique antes de entregar

Abra cada clipes/NN-*.jpg: cada um é uma faixa de 8 quadros ao longo de todo o clipe. Olhe para todos:

  • O rosto está no quadro e as legendas legíveis, abaixo do queixo, em todos os quadros de fala.
  • O vídeo já possui legendas queimadas (você vê dois conjuntos de palavras): recrie todos os clipes com --no-captions.
  • O script imprime "rosto em X/Y verificações" por clipe. Se X for 0, não há rosto para enquadrar (gravação de tela, slides): o clipe é centralizado, então informe isso no relatório. Quadros sem rosto são esperados em um vídeo editado; são as cenas de apoio que ele exibe inteiras.
  • Se um clipe começa ou termina no meio de uma palavra ou pensamento, corrija start/end em moments.json e recrie apenas aquele clipe com --only N.

6. Relatório

Uma lista curta: arquivo de cada clipe, duração, pontuação e por que funciona, além de sua legenda de postagem. Aponte para clipes/scores.md (tudo em um arquivo) e para a pasta clipes/. Ofereça um próximo passo: momentos diferentes, outras cores de legenda ou clipes mais longos/mais curtos.

Habilidades Relacionadas