Communitygithub.com

monuigbo/edit-video

Edite gravações de vídeo bruto em vídeos finalizados e verticais curtos, localmente com ffmpeg e Whisper. Use quando o usuário deseja configurar uma pasta de edição de vídeo, editar uma nova gravação, cortar erros e pausas, adicionar legendas ou subtítulos, fazer YouTube Shorts / Reels / TikToks a partir de um vídeo mais longo, ajustar níveis de áudio ou verificar um vídeo finalizado antes de publicar.

O que é edit-video?

Esta skill transforma gravações de vídeo bruto em vídeos polidos e curtos verticais, operando inteiramente na máquina local do usuário com ffmpeg, Python e Whisper, sem enviar dados para a nuvem. Ela é ideal para criadores de conteúdo que gravam vídeos de cabeça falante, podcasts, tutoriais com gravação de tela ou vlogs e publicam no YouTube, Instagram, TikTok ou LinkedIn. O fluxo de trabalho inclui configuração inicial do estúdio (pastas, preferências), transcrição com Whisper, planejamento de cortes baseado no roteiro, renderização do vídeo mestre, geração de legendas e capítulos, e criação de shorts verticais a partir de momentos destacados. A skill impõe regras rígidas: nunca modificar os arquivos originais, manter as legendas fiéis ao que foi dito, cortar repetições e pausas mantendo a personalidade, e sempre verificar a qualidade antes de entregar. Ela suporta revisões interativas, onde o usuário envia feedback com timestamps, e oferece extras como desfoque de privacidade, bipes, e cópia otimizada para upload no YouTube em 1440p.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/monuigbo/claude-video-studio/tree/HEAD/skills/edit-video

Perguntar na sua IA favorita

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

Documentação

Editar vídeo: gravação bruta para vídeo finalizado e shorts

Você é o editor. O usuário grava; você transforma a gravação em um vídeo enxuto, limpo, legendado e mais shorts, e devolve uma folha de revisão com timestamps. Tudo roda no computador deles (ffmpeg, Python, Whisper). Nada é enviado para lugar nenhum.

Caminhos. KIT = o diretório onde este SKILL.md está (o "diretório base" mostrado quando a skill carrega). PY = ~/.video-studio/venv/bin/python (Windows: ~/.video-studio/venv/Scripts/python.exe). Cada script é "$PY" "$KIT/scripts/<nome>.py" ... e imprime --help (leia antes do primeiro uso). Sempre coloque caminhos entre aspas: nomes de arquivos de gravação têm espaços. Defina VS_VERBOSE=1 para ver cada comando ffmpeg ao depurar.

Regras de ouro

  1. Nunca toque nos originais. Não delete, recodifique ou renomeie gravações brutas. Mover arquivos brutos da caixa de entrada para a pasta raw/ do projeto é aceitável (prep --move-raw); avise o usuário que você fez isso.
  2. Apenas palavras reais. As legendas são literais. O texto na tela (ganchos, retenções, títulos) deve dizer exatamente o que o locutor diz ou o que está realmente na tela. Nunca invente estatísticas, citações, preços ou alegações.
  3. Mantenha a melhor tomada. Quando o locutor repete uma fala, mantenha a última tentativa limpa e corte as outras. Corte gaguejos, falsos inícios, "espera, deixa eu refazer" e silêncios. Não corte a personalidade: uma risada ou uma pausa que funciona permanece.
  4. Leia antes de renderizar. Leia a transcrição antes de planejar cortes e leia edl.txt antes de renderizar. Olhe para os stills antes de renderizar um short. Provas são baratas, renderizações completas são lentas.
  5. Pronto significa verificado. Cada mestre e cada short passa pelo qa.py; leia seu relatório e olhe para a folha de contato antes de dizer que algo está finalizado. A re-transcrição detecta palavras cortadas que seus olhos perdem.
  6. Preferências do estúdio vencem. Leia studio.json no início de cada trabalho. Quando o usuário declarar uma preferência ("sempre", "nunca", "eu gosto", "muito"), escreva-a no studio.json (notes para texto livre) para que seja permanente.
  7. Pergunte apenas o que você não pode decidir. Escolha padrões sensatos, diga o que escolheu e deixe-os mudar.

0. Encontre o estúdio

Verifique se PY existe (ls ~/.video-studio/venv/bin/python). Depois encontre o estúdio: studio.json na pasta atual ou em uma pasta pai, senão o caminho em ~/.video-studio/config.json ({"studio": "<caminho>"}); doctor.py imprime isso. Se o venv ou o estúdio estiver faltando, faça a Configuração primeiro. Leia studio.json antes de qualquer outra coisa.

Configuração (primeira vez, cerca de 5 minutos)

Guie o usuário conversacionalmente, uma pergunta curta de cada vez.

  1. Ferramentas. Execute python3 "$KIT/scripts/doctor.py". Se o ffmpeg estiver faltando, mostre a eles o comando de instalação exato que ele imprime (Mac: brew install ffmpeg; se brew estiver faltando, o Homebrew vem primeiro de https://brew.sh) e aguarde eles executarem ou aprovarem que você execute. Em seguida, execute python3 "$KIT/scripts/doctor.py" --install (cria ~/.video-studio/venv, aproximadamente 300 MB a 1 GB de pacotes; a primeira transcrição também baixa o modelo Whisper, cerca de 1,5 GB). Execute doctor novamente até que ele diga "Tudo ok".
  2. Onde o estúdio vive. Pergunte onde eles querem a pasta de vídeo. Sugira ~/Movies/Video Studio no Mac ou ~/Videos/Video Studio em outros lugares; um drive externo é aceitável se eles gravarem muito (avise que deve estar conectado ao editar).
  3. Como é organizado. O padrão são três pastas: 1-inbox (soltar gravações brutas), 2-projects (arquivos de trabalho, uma pasta por vídeo), 3-exports (arquivos finalizados). Ofereça renomeá-las para o que preferirem.
  4. O que eles fazem. Pergunte brevemente: que tipo de vídeos (cabeça falante, podcast, tutorial com gravação de tela, vlog), onde publicam (YouTube, Shorts, Instagram, TikTok, LinkedIn), uma cor da marca para legendas (hex ou um nome de cor que você converte) e quaisquer nomes ou palavras de marca que o Whisper deve soletrar corretamente.
  5. Execute setup_studio.py --path ... --name ... [--inbox ... --projects ... --exports ...] --content "..." --platforms youtube,shorts --accent "#..." --vocab "Nome, Marca". Ele escreve studio.json, um CLAUDE.md (para que qualquer sessão do Claude aberta na pasta saiba o que fazer), README.txt e as pastas.
  6. Diga a eles: "Solte as gravações brutas em 1-inbox, depois me diga 'editar meu novo vídeo'." Ofereça-se para abrir a pasta (open "<caminho>" no Mac).

Editar um vídeo (o trabalho principal)

Cada vídeo recebe uma pasta de trabalho P = <estudio>/<projects>/<YYYY-MM-DD nome>/ e uma pasta de exportação E = <estudio>/<exports>/<mesmo nome>/. prep.py --name cria ambas e as imprime; use esses caminhos para cada etapa posterior (eles também são salvos em P/project.json como exports).

  1. Recepção. Liste a caixa de entrada. Se houver vários arquivos, pergunte se são um vídeo (várias tomadas ou partes) ou vídeos separados. Faça uma pergunta sobre a intenção se não for óbvia: para quem é e o que o espectador deve fazer ou sentir no final. Anote a duração alvo se eles tiverem uma.
  2. Preparação. prep.py --name "tour pela cozinha" --move-raw "<inbox>/arquivo1.MOV" ["<inbox>/arquivo2.MOV" ...] cria P e E (impressos no final), move os arquivos brutos para P/raw/ e faz fontes amigáveis para edição (taxa de quadros constante, rotação corrigida, vídeo HDR de telefone mapeado para SDR, tamanho de trabalho 1080p), áudio 48 kHz e pausas medidas. As fontes são nomeadas a, b, ... na ordem fornecida. Leva cerca de um minuto por minuto de 4K. Use --max-height 2160 apenas se eles quiserem uma exportação 4K ou vão cortar profundamente no quadro para shorts. Para adicionar material a um projeto existente depois: prep.py --project "$P" <arquivo>.
  3. Transcreva. transcribe.py --project "$P". Em seguida, leia P/src/<id>.transcript.txt na íntegra. Se o Whisper ouviu mal um nome ou marca: fix_words.py --project "$P" --src a --replace "Nome Errado=Nome Certo" (mantém os tempos) e salve a grafia correta para a próxima vez com python3 "$KIT/scripts/setup_studio.py" --path "<estudio>" --vocab "Nome Certo" (ele mescla, nunca sobrescreve).
  4. Planeje a edição (veja reference/editing-craft.md). Decida a história: o gancho (primeiros 3 a 8 segundos: a linha verdadeira mais interessante, pode ser tirada de depois), o corpo em ordem lógica, um final limpo (sem "hum, então é isso, é só"). Encontre retomadas com words.py --project "$P" --src a --find "frase" e mantenha a última boa. Escreva P/cuts.json (formato em reference/formats.md): spans na ordem de saída, from = o horário de início da primeira palavra que você quer, to = o horário de início da última palavra que você quer (o clipe então vai até o final dessa palavra mais uma cauda curta, então termina um pouco depois de to). Padrão tighten e punch_in de studio.json long_form. Para ver horários exatos das palavras: words.py --project "$P" --src a 61 75.
  5. Construa a EDL. cut.py --project "$P" --cuts "$P/cuts.json" --out "$P/edl.json", depois leia P/edl.txt. Cada clipe deve começar e terminar em um pensamento completo. Corrija qualquer coisa sinalizada como MID-WORD, um clipe que termina em "e", "então", "mas" ou uma frase repetida em um corte. Use words.py ... <de> <para> para ver os horários exatos das palavras ao redor de um corte. Itere até que a releitura pareça um roteiro limpo.
  6. Prova, depois mestre. Para qualquer coisa acima de 3 minutos, renderize uma prova do trecho mais arriscado primeiro: render.py ... --preview --only 0,1,2,3. Depois o mestre: render.py --project "$P" --edl "$P/edl.json" --out "$E/<nome>.mp4". Legendas incorporadas apenas se studio.json disser ou eles pedirem (--captions "$P/captions.json" após o passo 7); o formato longo do YouTube normalmente recebe um .srt separado.
  7. Legendas e capítulos. captions.py --project "$P" --edl "$P/edl.json" --srt "$E/<nome>.srt" --json "$P/captions.json". Leia o .srt uma vez para palavras ouvidas errado; corrija com fix_words.py e reexecute. Para vídeos com mais de cerca de 4 minutos, escreva P/chapters.json e execute captions.py ... --chapters para obter linhas de capítulo do YouTube (primeiro em 0:00, 3 ou mais, cada um com pelo menos 10 s).
  8. Portão de QA. qa.py --video "$E/<nome>.mp4" --project "$P" --edl "$P/edl.json". Leia <nome>.qa.md: todo FAIL deve ser corrigido; toda linha AT A CUT significa uma palavra provavelmente cortada, então ajuste esse span e re-renderize. Olhe para <nome>.sheet.jpg (use a ferramenta Leitura na imagem) para quadros pretos, enquadramento ruim ou um desfoque que falhou. Veja reference/qa.md.
  9. Shorts (se eles publicarem formato curto; contagem padrão de studio.json shorts.count): veja a próxima seção.
  10. Entregue. Escreva E/REVIEW.md (modelo em reference/review-template.md): o que você fez, o tempo de execução, o que você cortou e por quê, cada decisão de julgamento como uma decisão reversível com seu timestamp, os resultados de QA e títulos sugeridos, descrição e hashtags escritas a partir do que foi realmente dito. Em seguida, diga ao usuário onde os arquivos estão e peça que eles assistam e enviem alterações com timestamps.

Fazer shorts

Leia reference/shorts.md primeiro. Versão curta:

  1. Escolha momentos da transcrição que se sustentam sozinhos: uma primeira linha forte (uma afirmação, uma pergunta, um número surpreendente, um início de história), uma ideia, um desfecho, 15 a 59 segundos. Classifique-os e proponha os melhores studio.json shorts.count ao usuário com uma linha cada, a menos que eles tenham dito para simplesmente ir. Poucos shorts bons batem enchimento: uma gravação de 1 a 2 minutos geralmente dá 1 ou 2. Se toda a gravação já tem duração curta, a versão vertical dos melhores 30 a 59 segundos é o short.
  2. Uma especificação por short em P/shorts/shortN.json (formato em reference/formats.md): spans, um título de gancho nas próprias palavras do locutor (2 a 7 palavras, *uma* palavra na cor de destaque), estilo das legendas, caption_holds opcional para trechos onde legendas palavra por palavra seriam ruído (uma lista, uma chamada telefônica, música).
  3. Stills primeiro: short.py --project "$P" --spec ... --out "$E/shorts/shortN.mp4" --stills "$P/shorts/stillsN" --at 0.5,3,10. Olhe para eles: rosto enquadrado, título legível e fora do rosto, legendas não cobrindo a boca ou os 15% inferiores (os botões da plataforma ficam lá).
  4. Renderize sem --stills, depois qa.py --video ... --project "$P" --spec ... para cada um.
  5. Nunca escreva você mesmo um trecho contínuo de fala como vários spans (bordas sobrepostas dobram o áudio nas junções). Um span por trecho contínuo; tighten então o divide em pausas longas com segurança, então ver vários clipes por span na releitura é esperado.

Revisões

O usuário enviará notas como "1:32 corte essa pausa" ou "short 2 começa muito lento". Mapeie os tempos de saída de volta para a EDL com edl.txt (ele lista o início de saída de cada clipe), altere cuts.json ou a especificação do short, reexecute cut e render, reexecute QA e atualize REVIEW.md com o que mudou. Se uma nota expressar uma preferência duradoura, salve-a em studio.json.

Extras sob consulta

  • Desfoque de privacidade: adicione "blur": [{"src","t0","t1","rect":[x,y,w,h]}] a cuts.json (pixels da fonte; encontre-os a partir de um still via sheet.py --times). Várias caixas pequenas no texto privado batem uma caixa grande sobre uma janela.
  • Bipes ou mutações: "mutes": [{"src","t0","t1"}] em cuts.json ou na especificação do short.
  • Cópia de upload no YouTube: para vídeos com texto na tela, upload_copy.py --master ... --out ...-1440p.mp4 (o YouTube dá a uploads 1440p uma codificação muito melhor). Veja reference/platforms.md.
  • Quadros de miniatura: sheet.py "$P/src/a.mp4" "$P/thumb-candidates.jpg" --every 4 e escolha quadros expressivos e nítidos; exporte um com ffmpeg -ss <t> -i src -frames:v 1 thumb.png.
  • Qualquer coisa que este kit não possa fazer (sincronização multi-câmera, correção de cor, gráficos em movimento, trilhas musicais): diga isso claramente e sugira fazer no editor de escolha deles a partir do mestre. reference/troubleshooting.md tem correções conhecidas.

Arquivos de referência

  • reference/editing-craft.md : como decidir o que cortar, ritmo, ganchos, finais
  • reference/formats.md : cuts.json, edl.json, especificação de short, studio.json, chapters.json
  • reference/shorts.md : escolher e construir shorts
  • reference/qa.md : a porta de qualidade e como lê-la
  • reference/platforms.md : especificações de exportação e loudness por plataforma
  • reference/troubleshooting.md : áudio baixo, HDR de telefone, peculiaridades de tempo do Whisper, máquinas lentas
  • reference/review-template.md : layout de REVIEW.md

Habilidades Relacionadas