Communitygithub.com

builtnotboosted/edição-de-vídeo

Edita gravações de pessoas falando para a câmera em vídeos verticais prontos para publicação (1080x1920) e longas-metragens 16:9 para o YouTube, usando ffmpeg e Whisper. Mantém exatamente uma leitura limpa de cada linha do roteiro, nunca deixa um único take plano (com cortes, reenquadramentos, B-roll, gráficos animados), gera legendas a partir do áudio final, normaliza o volume para -14 LUFS, cria uma capa real do quadro e executa uma porta de qualidade que retranscreve o render e só libera a entrega se passar.

O que é edição-de-vídeo?

Esta habilidade transforma gravações brutas de alguém falando para a câmera em um vídeo finalizado, com arquivo de legenda SRT e capa, usando uma ferramenta de linha de comando (`vedit.py`) construída sobre ffmpeg, Whisper e Playwright. Ela comanda toda a edição: escolha dos takes limpos, cortes precisos, variedade de planos, posicionamento de gráficos e B-roll, legendas, normalização de volume, criação da capa e a verificação final de qualidade. A habilidade depende da habilidade `video-scripting` para o roteiro e notas de edição, do perfil `brand/brand-profile.md` para cores, fontes e linhas de conformidade, da habilidade `image-generation` para imagens estáticas, da habilidade `review-loop` para a verificação independente e da habilidade `scheduling` para a postagem. **Nada é postado ou agendado a partir daqui.** O padrão fundamental é uma leitura limpa de cada linha do roteiro, sem hesitações, reinícios ou cortes duplos, e nunca um único take plano. A ferramenta também oferece sincronização de câmeras por áudio e geração de capítulos do YouTube, sendo ideal para situações como 'editar meu vídeo', 'cortar esse clipe', 'remover minhas repetições', 'adicionar legendas ao meu vídeo', 'criar um short a partir dessa gravação', 'sincronizar minhas duas câmeras', 'fazer uma miniatura do meu vídeo' ou quando alguém entrega gravações brutas e um roteiro.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/builtnotboosted/built-not-boosted-skills/tree/HEAD/plugins/built-not-boosted/skills/video-editing

Perguntar na sua IA favorita

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

Documentação

Edição de Vídeo

Esta habilidade transforma gravações brutas de alguém falando para a câmera em um vídeo finalizado, um arquivo de legenda SRT correspondente e uma capa, usando uma ferramenta de linha de comando (vedit.py) construída sobre ffmpeg, Whisper e Playwright. Ela comanda toda a edição: escolha dos takes limpos, cortes precisos, variedade de planos, posicionamento de gráficos e B-roll, legendas, normalização de volume, criação da capa e a verificação final de qualidade. Ela depende da habilidade video-scripting para o roteiro e notas de edição, do perfil brand/brand-profile.md para cores, fontes e linhas de conformidade, da habilidade image-generation para imagens estáticas, da habilidade review-loop para a verificação independente e da habilidade scheduling para a postagem. Nada é postado ou agendado a partir daqui.

Ordem de autoridade: brand-profile.md vence em constantes da marca e redação de conformidade; esta habilidade é dona do método.

Antes de começar

  1. Encontre o workspace de marketing (padrão marketing/). Se não houver, diga isso em uma linha e ofereça a habilidade brand-setup; a ferramenta ainda funciona com uma aparência neutra.
  2. Encontre a pasta da peça, content/<yyyy-mm-dd>-<slug>/. Ela deve conter script.txt (uma frase falada por linha; marcadores [notas entre colchetes] e [CAPÍTULO N • Título] nunca são falados) e, idealmente, edit-notes.txt (linhas HOOK ON SCREEN:, COVER:, OUTCOME:) e sources.txt (as únicas figuras permitidas na tela). Se a pessoa filmou sem roteiro, transcreva primeiro e trate a transcrição limpa como o roteiro.
  3. Leia ## Identidade visual, ## Conformidade, ## Limites e ## CTA & contato no perfil da marca, e brand/voice-learnings.md para palavras e frases em gráficos e capas.
  4. Verifique se a ferramenta está pronta: python3 <skill>/vedit.py doctor. Se faltar algo, execute bash <skill>/setup.sh uma vez (ffmpeg, Node, ambiente virtual Python, Whisper, Playwright, fontes). O modelo grande do Whisper tem cerca de 3 GB e transcreve aproximadamente de uma a duas vezes a duração do clipe em uma CPU de laptop; portanto, inicie etapas longas em segundo plano.

O padrão

  1. Uma leitura limpa de cada linha. O vídeo finalizado contém exatamente uma leitura de cada linha: sem reinícios, sem "o, o", sem meia frase de um take abandonado, sem cortes no final de palavras. Isso é um bloqueador, não um polimento. Um "hum" natural isolado pode permanecer (as pessoas devem soar como elas mesmas), mas nunca na linha de abertura e nunca dois em uma linha.
  2. Siga a fala real, não o roteiro escrito. As pessoas melhoram as linhas enquanto falam. Uma reformulação ao vivo aparece como uma linha ausente ou de baixa cobertura no localizador de takes; não é um erro. Mantenha a versão delas, corte apenas gagueiras e reinícios genuínos, e corrija qualquer gráfico ou cartão de gancho escrito a partir do roteiro para corresponder ao que foi realmente dito.
  3. Mantenha os momentos que geram o negócio. Se o roteiro tiver uma linha inicial "quem sou eu" ou uma chamada para ação final, ela permanece onde está.
  4. Nunca um único take plano. Alterne entre close e plano aberto em cada corte, reenquadre dentro de falas longas, corte para B-roll, conduza a história com gráficos animados. A cabeça falante é a espinha dorsal, não o vídeo inteiro.
  5. As legendas vêm do áudio final, verificadas contra o roteiro, para que correspondam exatamente ao que é ouvido. Incorporadas nos shorts; apenas SRT nos longas.
  6. Volume -14 LUFS, pico verdadeiro -1,5 dB, para que soe bem em todas as plataformas.
  7. Uma capa real do quadro com o título dentro do quadrado seguro da grade, oferecida como uma ou duas variantes.
  8. A porta de qualidade passa antes de qualquer entrega. Ela retranscreve o render, ouve cada corte individualmente e verifica se cada corte termina em silêncio. deliver recusa sem um PASS fresco.
  9. Seja honesto sobre o ouvido. Claude não pode ouvir. A porta verifica palavras e energia, não tom, uma tosse sob uma palavra ou uma emenda ruim de ruído ambiente. Diga isso na entrega, todas as vezes.

O método

Todo comando é python3 <skill>/vedit.py <comando> <slug>. Leia references/project-config.md antes de editar project.json manualmente.

  1. Reúna tudo primeiro. Liste cada clipe no lote. Emparelhe segundas câmeras pelo som (scripts/sync_cams.py; uma correspondência real pontua cerca de 0,4 a 0,55, uma não correspondência cerca de 0,03) e câmeras silenciosas, como drones, por movimento e carimbo de data/hora (scripts/sync_cams_visual.py). Crie folhas de contato de cada foto e clipe curto, anote o que é utilizável como B-roll e pergunte imediatamente sobre qualquer câmera que a pessoa mencione mas que não esteja na pasta. Abra references/multicam-and-long-form.md para os detalhes.
  2. Inicializar. vedit.py init <slug> --raw <clipe câmeraA> --pack <pasta de conteúdo> [--long] [--cam B=<clipe>]. Ele copia o roteiro, lê as notas de edição e mapeia a paleta de cores e fontes do perfil da marca para project.json. Em seguida, preencha vocab com todos os nomes próprios do roteiro, incluindo o nome do apresentador.
  3. Preparar (lento, em segundo plano): vedit.py prep <slug>. Master na orientação correta na taxa de quadros da própria câmera, áudio de 16 kHz, câmeras extras sincronizadas e duas transcrições (large-v3 literal mais medium.en). Ele para em material HDR, material com formato errado e áudio de qualidade de chamada de um microfone Bluetooth; references/audio-and-sync.md tem a rota de resgate.
  4. Takes. vedit.py takes <slug> alinha a fala ao roteiro como um teleprompter: um salto para trás é um reinício, então cada tentativa de cada linha se torna um take pontuado. Uma segunda audição ouve cada take individualmente para encontrar preenchimentos, repetições e leituras duplas. Leia picker/takes_report.txt. Em seguida, verifique antes de confiar: abra references/whisper-pitfalls.md, porque o Whisper ignora falsos começos repetidos, inventa palavras finais e divide termos desconhecidos. Um corte de reinício proposto permanece a menos que o mapa de energia mostre sem segunda explosão de fala.
  5. Escolhas. Ou a pessoa escolhe no navegador (vedit.py picker <slug> em segundo plano, depois abra http://localhost:8765) ou, se ela pedir ao Claude para escolher, escreva picker/picks.json você mesmo com uma note sobre cada alteração em relação à escolha automática. Diga a elas quais linhas estão vermelhas ou âmbar e por quê. Prefira leituras da mesma execução que as linhas vizinhas: elas fluem sem corte. Nunca entregue a partir de escolhas automáticas.
  6. Coreografar (trabalho de design, leia references/style-notes.md primeiro). A partir do roteiro, sources.txt e o que está na gravação: um cartão de gancho no quadro 0 a partir de edit_notes.hook_on_screen (3 a 5 palavras, uma promessa, não a resposta); cartões graphics.json para os momentos que precisam deles, com apenas figuras que estão em sources.txt; cues ancoradas em linhas ou palavras faladas, nunca em tempos fixos; cortes motivados para B-roll (na palavra que ilustram, ou logo após um olhar ou gesto); framing.face_x/eye_y medidos em um quadro; exit_tail para a saída. Visualize os gráficos como imagens estáticas com vedit.py mg-preview <slug>.
  7. Construir. vedit.py build <slug> plan é instantâneo e imprime o resumo do corte; build cues lista qualquer cue que não pôde ser posicionada (corrija, nunca ignore). Itere em build cut mais scripts/cut_check.py até ficar limpo, faça a capa (etapa 9) para que o quadro do pôster seja incorporado, depois build all. As regras que a construção aplica estão em references/edit-rules.md.
  8. Porta. vedit.py gate <slug>. Ela falha em uma linha lida duas vezes, um gaguejo ou início abandonado deixado, energia de fala sem palavras (uma releitura oculta), uma repetição ou salto em qualquer corte (ouvido individualmente por ambos os modelos), palavras soltas de um take descartado em um corte, um corte que termina em som e (várias câmeras, se existir um gaze.json) a câmera errada. Corrija a causa, reconstrua, repasse pela porta. Em seguida, a passagem de proxy humano: assista a uma folha de contato do render, leia cada legenda (vedit.py captions <slug>) e, para cada linha que você alterou, anote o que estava lá e o que foi mantido.
  9. Capa. vedit.py frames <slug> --every 5 para uma folha de contato; escolha um quadro com contato visual, uma expressão calorosa (não no meio de uma palavra), foco nítido e um adereço que conta a história. Defina cover.frame e uma ou duas variants (2 a 4 palavras, grande, uma palavra de destaque, simples e verdadeira), depois vedit.py cover <slug>. Ela verifica cada caixa de texto contra o quadrado seguro da grade e o rosto, e escreve grid_tiles.jpg mostrando o que a grade do perfil exibirá.
  10. Revisão. Entregue a folha de contato do render, as capas, o SRT e a lista de cortes para a habilidade review-loop. As figuras na tela são verificadas contra sources.txt, não aceitas por confiança.
  11. Entregar e lançar. vedit.py deliver <slug> escreve o vídeo, SRT, capas, lista de cortes (cada linha: take, intervalo de origem, cortes, cada alteração com seu motivo), relatório de QA e, para longas, youtube-chapters.txt dentro de content/<data>-<slug>/video/. vedit.py release <slug> --to <pasta> copia o vídeo, o SRT e uma miniatura JPG sob um único nome de arquivo, que é o que os agendadores e o YouTube esperam.

Verificações antes de enviar

A entrega para a pessoa sempre inclui:

  • Gate PASS, fresco (mais novo que o render).
  • Sincronização labial medida no render final: scripts/lipsync.py build/final.mp4 <t0> <t1> em dois ou três trechos de rosto para câmera, cada um dentro de ±40 ms.
  • Verificação de legendas lida (vedit.py captions <slug>, entregue como vN-caption-check.txt): os FIXes parecem sensatos, e cada CHECK é nomeado como uma linha para a pessoa ouvir.
  • Tempo de execução e volume informados.
  • Cada alteração nas escolhas da pessoa, com o motivo, e as linhas que vale a pena ouvir.
  • Capa A versus B, e a prévia da grade.
  • "Nada foi postado ou agendado."
  • "Não consigo ouvir: por favor, ouça antes de publicar."

Adaptações

  • Sem roteiro? Transcreva primeiro (prep faz ambas as transcrições), limpe a transcrição para uma frase por linha, salve como script.txt, depois execute takes.
  • Visual diferente: tudo visual lê project.json brand (cores, fontes) e cover.wordmark (uma etiqueta de nome opcional pequena). Altere lá, nunca nos scripts.
  • Ortografia diferente: captions.locale en-GB (padrão) ou en-US.
  • Máquina mais lenta: "whisper": {"large": "small.en", "medium": "base.en"} em project.json troca precisão por velocidade; a porta ainda funciona.
  • Negócio regulamentado: coloque a redação obrigatória na tela de ## Compliance em um gráfico ou cartão final, e mantenha cada figura na tela em sources.txt.
  • Novos modelos gráficos: adicione-os a scripts/mg/kit.html e documente-os em references/project-config.md.
  • Aprendizado: quando a pessoa relatar um salto ou repetição que a porta não detectou, anote o caso antes de corrigir o vídeo e adicione o que aprendeu sobre o gosto de edição dela a brand/performance-learnings.md. O SRT é transcrito da própria voz dela, então a habilidade voice-loop pode aprender com ele.

Lacunas conhecidas

  • O localizador de takes pode perder um reinício que muda muito a redação; a regra de releitura da porta é a salvaguarda. Após qualquer alteração manual de corte ou nin, leia build/edl.json e verifique cada emenda que você tocou.
  • A verificação de palavras soltas corresponde às palavras da borda do take mantido por texto; portanto, a palavra de um take abandonado que soa como a primeira palavra do take mantido pode passar como uma nota "ad-lib". Mapeie cada nota desse tipo para o tempo de origem através de build/edl.json manualmente.
  • Nenhuma verificação automática de sincronização labial na porta: execute lipsync.py em cada render final.
  • As chamadas de câmera em gravações com várias câmeras são manuais ("cam" nas escolhas), a menos que você forneça um gaze.json; veja references/multicam-and-long-form.md.
  • Legendas "karaokê" palavra por palavra não são construídas; ofereça-as como ideia, nunca mude o estilo de legenda sem ser solicitado.

Arquivos nesta habilidade

ArquivoAbra quando
references/project-config.mdeditando project.json, graphics.json, cues, variantes de capa ou escolhas
references/edit-rules.mdjulgando um corte, uma legenda, um gráfico ou uma capa
references/whisper-pitfalls.mdverificando takes, cortes e notas da porta
references/style-notes.mdcoreografando uma edição (variedade de planos, cortes, cartão de gancho, capas)
references/multicam-and-long-form.mduma segunda câmera, um drone, um longa 16:9, capítulos
references/audio-and-sync.mdáudio ruim, áudio atrasado, ruído de fundo, volume
references/project-template.jsono project.json inicial
setup.sh, vedit.py doctorprimeira execução em uma máquina

Saiba mais

Um guia mais longo com exemplos está em https://builtnotboosted.com/skills/video-editing

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

builtnotboosted/image-generation

Produces finished social images with any image model (Google Gemini image, "Nano Banana", as the worked example) - feed statics, carousel slides, short-form video covers, YouTube and article thumbnails, local listing cards and animated statics. Bakes the headline into the scene instead of pasting text on top, keeps text inside the profile-grid safe zone, locks the likeness of real people to their reference photos, hits exact platform sizes, writes alt text and re-judges every re-roll on the filed file. Use when someone says "make an image for this post", "create a thumbnail", "make a cover from my video", "design a carousel", "animate this static", "the image model won't do 4:5", "my headline is getting cut off in the grid", or when a content pack needs its visuals.

builtnotboosted/review-loop

The quality gate every piece of content passes before it is filed, scheduled or posted. Runs a self-critique, then an independent review by a fresh subagent that sees only the finished work and the criteria (never the builder's reasoning), then fix and re-judge until there is a clean pass. Covers what to do when a piece can't pass unattended (hold, flag, ship the rest). Use when someone says "review this", "check this before it goes out", "QA the pack", "is this ready to post", "get a second pair of eyes on this", "proofread the captions", or when any other Built Not Boosted skill hands work over for checks.

builtnotboosted/scheduling

Gets finished posts into a social media scheduler (or posted by hand) safely. Queue-only with explicit timezone offsets, live dedup against scheduled and already-published posts, media readiness checks, correct post types (shorts, reels, carousels, first comments, manual-posting reminders), alt text, a link gate that sends copy back for a rewrite rather than stripping it, and confirmation before anything goes live. Writes and keeps a scheduling manifest for each pack. Works with any scheduler; Publer is the worked example. Use when someone says "schedule this", "queue these posts", "put this in Publer", "book in this week's content", "post this on Tuesday at 7", "move that post", "what's already scheduled", or hands over a finished content pack to go out.

builtnotboosted/video-scripting

Writes video scripts that sound like the person who will say them, for shorts (Reels, TikTok, YouTube Shorts) and long-form YouTube. Warm hook rather than a shout, who-am-I and follow early, a retention shape that delays the answer, a soft earned close, length that follows the story, real-problem substance, reactive scripts for news and data releases. Output is teleprompter-ready (think-breaks, shot reminders) with short edit notes for the video-editing skill. Use when someone says "write me a script", "script a reel about", "I need a short on", "plan a YouTube video", "turn this post into a video", "react to today's news on video", "what should I say on camera", or before a filming session.

Habilidades Relacionadas