mm.blog

Guia · IA + conteúdo

Como editar vídeos com Claude Code e Whisper

Hoje peguei um vídeo de 14 minutos do meu YouTube e, numa conversa com o Claude Code, saíram 9 cortes verticais prontos para postar: título-gancho em cima, vídeo no meio, legenda embaixo, sem pausa nenhuma. Sem abrir editor. Aqui está o processo inteiro, para cortes de vídeo longo e para editar um vídeo cru do zero, com a skill que eu uso para baixar.

Skill video-editingPara Claude Code e Codex. Grátis, código aberto, roda no seu computador. Deixe seu e-mail e o download começa na hora.

Ao baixar, você aceita receber meus e-mails sobre IA e mídia paga. Dá para sair quando quiser.

01Como funciona

Editar vídeo falado é, na maior parte, decidir o que fica e o que sai. E essa decisão é sobre texto: qual frase abre, onde o raciocínio fecha, qual take ficou melhor, onde tem pausa. Por isso a IA consegue fazer o trabalho sem "ver" o vídeo:

  1. Whisper transcreve palavra a palavra, com o segundo exato em que cada palavra começa e termina. É o modelo de transcrição da OpenAI, gratuito, e roda no seu computador.
  2. O Claude Code lê a transcrição e toma as decisões de editor: quais trechos viram corte, qual o título, qual take descartar, o que o Whisper ouviu errado.
  3. O ffmpeg executa: corta nos segundos escolhidos, tira as pausas, monta o layout vertical, escreve título e legenda e normaliza o volume.
  4. O Claude confere o resultado olhando os quadros do vídeo pronto antes de te entregar.

A skill video-editing junta essas quatro etapas: os scripts fazem a parte mecânica e o SKILL.md ensina ao agente os critérios de edição.

02O que você precisa

  • Claude Code (plano Claude Pro ou Max) ou Codex (ChatGPT Plus ou Pro). Se ainda não tem, o passo 2 do guia de conectar ads mostra a instalação.
  • ffmpeg e Python 3. No Mac, com Homebrew: brew install ffmpeg python. No Windows, use o WSL (Ubuntu) e siga os comandos de Linux: sudo apt install ffmpeg python3 python3-venv.
  • yt-dlp (opcional), para baixar vídeos do YouTube: brew install yt-dlp.
  • ~2 GB livres para o modelo do Whisper, que baixa sozinho na primeira transcrição.
Mac com chip Apple (M1 em diante) é o cenário idealA skill usa o mlx-whisper, que roda na GPU do chip: um vídeo de 14 minutos transcreve em um ou dois minutos. Em outros computadores ela usa o faster-whisper, que funciona igual, só mais devagar.

03Instale a skill

Baixe o .zip e, na pasta onde ele foi salvo, rode:

cd ~/Downloads
mkdir -p ~/.claude/skills ~/.agents/skills
unzip -o video-editing.zip -d ~/.claude/skills
unzip -o video-editing.zip -d ~/.agents/skills
bash ~/.claude/skills/video-editing/scripts/setup.sh

O setup.sh confere o ffmpeg e cria um ambiente Python em ~/.video-editing com o Whisper e o Pillow (que desenha título e legenda). É uma vez só. Se o agente já estava aberto, feche e abra de novo para ele enxergar a skill.

Depois, crie uma pasta por vídeo. Mídia é pesada: se a pasta for um repositório Git, deixe vídeo e áudio fora dele.

mkdir -p ~/videos/2026-10-cortes/raw && cd ~/videos/2026-10-cortes
printf '*.mp4\n*.mov\n*.wav\n*.m4a\n' > .gitignore

04Cortes de um vídeo longo

É o caso mais rentável: um vídeo longo que você já gravou vira uma semana de Reels. Abra o Claude Code na pasta do vídeo e peça:

Use a skill video-editing. Baixe https://www.youtube.com/watch?v=SEU_VIDEO
e gere cortes de 30 a 80 segundos dos momentos em que eu falo algo importante
e fecho uma linha de raciocínio inteira. Layout: vídeo horizontal no meio,
tela preta em cima e embaixo, título chamativo acima e legenda abaixo.

O que acontece, na ordem:

  1. Download com o yt-dlp para raw/source.mp4. Se o YouTube devolver erro 403, o agente usa os cookies do seu navegador (--cookies-from-browser chrome), que é o que resolve.
  2. Transcrição do vídeo inteiro, uma vez só, em data/words.json (cada palavra com início, fim e confiança) e data/transcript.txt (legível, com minutagem).
  3. Escolha dos momentos. O Claude lê a transcrição de ponta a ponta e devolve uma lista: trecho, título e por que aquele trecho funciona sozinho. Você aprova, corta ou pede outros.
  4. Enquadramento. Ele tira um quadro do vídeo, olha onde está o seu rosto e ajusta o recorte para centralizar.
  5. Corte seco + layout (video.py cut): tira toda pausa acima de 0,4 s, monta o vídeo 1080×1920 e normaliza o áudio em −14 LUFS, o volume que Instagram e TikTok esperam.
  6. Revisão da legenda e render (video.py render): título e legenda queimados no vídeo, entregue em out/ com uma folha de quadros para conferência.

No meu vídeo de 14 minutos saíram 9 cortes, de 37 a 75 segundos. Juntos, perderam 35 segundos só de pausa, de quase nada num corte a 17 segundos em outro em que eu parei para pensar. O render leva menos de 1 minuto por corte.

Tudo o que foi decidido fica num arquivo só, o project.json. Para mudar um título ou estender um corte, você pede em português e o agente edita ali e renderiza de novo:

{
  "source": "raw/source.mp4",
  "layout": "letterbox",
  "crop_x": 136,
  "clips": [
    {"id": "05-trust-yourself", "start": 560.40, "end": 633.20,
     "title": "Why you don't trust yourself (and how to fix it)",
     "why": "Problema, solução e resultado no mesmo trecho."}
  ]
}

05Como escolher os momentos

Esta é a parte que separa corte bom de trecho aleatório, e é o que o SKILL.md ensina ao agente. Um corte bom:

  • Abre num gancho que funciona sem contexto: uma afirmação, um número, uma pergunta. Nunca começa em "e", "então", "porque".
  • Fecha um raciocínio inteiro: afirmação, explicação ou exemplo, conclusão. Se o desfecho vem 20 segundos depois, o corte estica até ele ou é descartado.
  • Tem de 30 a 80 segundos. Menos que isso raramente fecha uma ideia; mais que isso perde gente no meio.
  • Começa e termina na borda da palavra, nunca no meio de uma sílaba. O words.json dá o tempo exato.

O título é o gancho escrito: concreto, no idioma do vídeo, até duas linhas, e o corte precisa entregar o que ele promete. Alguns que saíram do meu vídeo: "There are only 2 ways your brain builds beliefs", "Trauma is just a bad belief", "Your life is your fault. That's good news."

Peça o porquêCada corte vem com uma linha explicando por que ele funciona sozinho. É o jeito mais rápido de você discordar de uma escolha antes de gastar tempo renderizando.

06Título, legenda e layout

Para cortes eu uso o layout "letterbox", que é o padrão de muito perfil de podcast e de desenvolvimento pessoal: o vídeo 16:9 no meio, ampliado uns 20% para preencher a largura, preto em cima e embaixo. Medi as posições num Reel de referência e deixei fixas na skill:

vídeo 1080×730 Título chamativo em até duas linhas legenda aqui y 595 y 1325
  • Título: fonte do sistema (SF Pro no Mac), seminegrito, branca, quebrada em duas linhas de largura parecida. Se não couber, a fonte diminui sozinha.
  • Legenda: 2 a 3 palavras por vez, branca, sem efeito, logo abaixo do vídeo. Ela quebra em pontuação e em pausa, para nunca juntar o fim de uma frase com o começo da próxima.
  • Sem re-transcrever: quando o script tira as pausas, ele recalcula o tempo de cada palavra para o vídeo cortado. Os cortes caem exatamente nos quadros do vídeo original, então a legenda não escorrega nem em vídeo com 50 cortes.

Para mudar o visual, peça ao agente: tamanho, posição, contorno e fonte (qualquer .ttf) são campos do project.json. Mudou e gostou? Diga "deixa como padrão".

07Revise a transcrição

O Whisper acerta quase tudo, e o perigo está justamente no erro que soa certo. Com sotaque, "can't" vira "can" e a frase passa a dizer o contrário. O SKILL.md manda o agente ler cada legenda pelo sentido, não só as palavras de baixa confiança, e te listar tudo o que ele corrigiu por dedução.

As correções ficam no project.json como pares "errado → certo", então valem em todo render seguinte:

"fix": [["Claude Coat", "Claude Code"], ["6 .30", "6:30"]]
  • Nomes e marcas saem fonéticos. Passe os principais na transcrição com --prompt "Claude Code, Whisper, Hotmart" e o Whisper erra bem menos.
  • Números se quebram em pedaços ("6.30" vira "6" e ".30"). O fix resolve.
  • Palavra solta no início: se o corte começou logo depois de um "and" ou "porque", tire na legenda ou comece o corte um pouco depois.

08Editar do zero

O outro caso: você gravou um vídeo falando para a câmera, com pausa, "ahn", frase repetida e take errado, e quer o Reel pronto. É a mesma skill, com o layout vertical:

Use a skill video-editing no raw/take.mov. Corte seco: tire pausas, vícios
de linguagem e os takes repetidos (fica o último completo). Punch-in a cada
corte, legenda, o título "Aumentei meu preço e não perdi nenhum cliente" nos
3 primeiros segundos e a música raw/musica.m4a baixinha por baixo.
  1. Takes repetidos: o agente lê a transcrição procurando a mesma frase dita duas vezes, frase abandonada no meio e "pera, vou falar de novo". Fica o último take completo, a não ser que um anterior seja claramente melhor. Os outros entram em remove.
  2. Vícios de linguagem: o Whisper costuma limpar "ahn" e "hum" sozinho. Os que aparecerem entram em fillers e saem do vídeo inteiro. Cuidado em português: "é", "tipo" e "né" também são palavras de verdade e não devem ir para essa lista.
  3. Pausas: saem do mesmo jeito que nos cortes, por volume.
  4. Punch-in: a cada corte, o enquadramento alterna entre normal e 12% mais fechado. É o truque clássico para o corte seco não parecer um pulo na imagem.
  5. Vídeo horizontal vira vertical, recortado em volta do seu rosto. Vídeo gravado em pé é usado como está.
  6. Música em loop, abaixo da voz e abaixando sozinha quando você fala (o famoso ducking). Tudo sai em −14 LUFS.
{
  "source": "raw/take.mov",
  "layout": "vertical",
  "punch_in": 1.12,
  "title_seconds": 3,
  "fillers": ["ahn", "hum"],
  "music": "raw/musica.m4a",
  "music_db": -22,
  "clips": [
    {"id": "reel-preco", "start": 1.2, "end": 94.0,
     "title": "Aumentei meu preço e não perdi nenhum cliente",
     "remove": [[12.4, 18.9], [40.0, 43.2]]}
  ]
}

Gravou um vídeo longo de uma vez com vários assuntos? Cada assunto vira um item em clips e sai um Reel por item.

09Confira antes de postar

Todo render gera, ao lado do vídeo, uma folha com 6 quadros espalhados pelo corte. O agente abre essa imagem e confere se o título está inteiro, se o rosto está centralizado e se a legenda não cobre nada importante. Se tiver dúvida num trecho, ele extrai o quadro exato e olha.

  • Área segura: o Instagram e o TikTok cobrem mais ou menos os 220 px de cima e os 380 px de baixo com botões e legenda do post. O layout da skill já respeita isso.
  • Versões: nada é sobrescrito. Cada render novo vira -v2, -v3, e você compara.
  • Postar é com você. A skill entrega os arquivos em out/ e para aí. Eu mando para o celular pelo AirDrop e posto pelo app.
Quer animação, print de tela e b-roll?No meu workspace de conteúdo eu uso, além disso, a skill de edição do Mino Lee, que monta sobreposições animadas em HTML. Ela tem licença de uso pessoal, por isso não está neste download. A video-editing é a minha versão aberta para cortes e corte seco, sem dependência paga.

10O que pedir depois

Com a skill instalada, alguns pedidos que funcionam bem:

Me dá mais 5 cortes desse mesmo vídeo, só de momentos que ainda não usamos.
Refaz o corte 03 começando na frase anterior e com um título mais curto.
Escreve a legenda do post e 3 opções de gancho para cada corte em out/.
Transcreve esse podcast e me diz quais trechos têm mais cara de viralizar, e por quê.

Se travar em algum passo, me chama no Instagram ou no X. Os cortes que saem desse processo vão para o meu Instagram, @moiseszip.