tianbester-ZA/edit

Corta anúncios pagos e reels orgânicos de 15 a 60 segundos, de material bruto até master 9:16 e 4:5 com som, neste Mac usando ffmpeg. Pergunta o objetivo do vídeo, ouve cada clipe, planeja cada batida contra três livros de edição, mostra opções antes do rascunho e executa uma passagem crítica separada no corte bruto.

O que é edit?

O skill `/bb:edit` transforma material bruto em vídeos curtos prontos para publicação, projetados para parar o espectador, gerar emoção e levar a uma ação. Ele gsa ffmpeg neste Mac para produzir masters 1080×1920 (9:16) e 1080×1350 (4:5) a aproximadamente −14 LUFS. O processo começa verificando as ferramentas do sistema (Python, ffmpeg, Whisper), depois pergunta ao usuário sobre o contexto do vídeo — tipo, público-alvo, sentimento desejado, estilo de referência e metadados — registrando tudo em `job/brief.md`. Ele ouve cada clipe com Whisper para extrair falas, risadas e picos de nível, e mede a música com `beats.py` para alinhar cortes a batidas intencionais. O planejamento consulta três livros de edição (Murch, Pearlman, Block) via `search.py` para cada decisão de ritmo, direção do olhar e som. Três opções de tratamento são mostradas ao usuário antes de qualquer rascunho. O corte bruto é gerado em proxies, seguido por uma passagem separada de crítico (um agente fresco) que avalia contra o job e a rubrica em `references/critic.md`. Por fim, o corte final é renderizado em qualidade total, verificado com `check_cut.py` e `listen.py`, e entregue com quadros e README. O skill impõe limites rígidos: nunca altera alegações ou ideias (isso volta para `/bb:script`), nunca aplica denoise, zoom móvel, preenchimento espelhado ou barras pretas, e sempre mantém o áudio real dos clipes. É ideal para editar depoimentos de fundadores, UGC, cenas de bastidores, montagens e anúncios pagos, e é usado sempre que alguém pede para editar, cortar, recortar, “fazer um reel a partir de”, montar, legendas, trilha sonora ou finalizar um vídeo.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tianbester-ZA/butcherbird-skills/tree/main/plugins/bb/skills/edit

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

/bb:edit

Objetivo

Transformar material bruto em um vídeo curto que um estranho pare para ver, sinta algo e aja: um master 1080×1920 e um master 1080×1350 para o Feed, ambos a aproximadamente −14 LUFS, com um plano de edição que justifique por que cada corte está onde está.

Antes de tudo: verifique este Mac

python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --data "${CLAUDE_PLUGIN_DATA}"

Ele imprime uma linha de status por ferramenta, cada uma com a correção exata, depois READY ou NOT READY. É seguro executar novamente e leva segundos depois que tudo estiver instalado. A primeira execução compila as ferramentas Python, o que leva alguns minutos.

Se estiver NOT READY, forneça à pessoa as linhas de correção e pare. Se apenas os modelos estiverem faltando, diga que são cerca de 490 MB e, com autorização, adicione --download-models ao mesmo comando. Linhas OPTIONAL não bloqueiam nada.

Depois: pergunte o que estamos tentando fazer

A pessoa que executa isso detém o contexto, e o que ela disser aqui é o que torna o trabalho bom. Um anúncio nosso falhou porque nada foi perguntado; um reel funcionou porque alguém deu contexto real.

Veja primeiro o que já está lá (material, roteiro, briefing, anotações) e reformule, para que ela confirme em vez de redigitar. Pergunte em uma única rodada curta (AskUserQuestion se tiver, caso contrário na mensagem).

Pergunte primeiro, sempre, a menos que já tenham te dito:

  1. O que estamos tentando fazer e que tipo de vídeo é? Um vídeo de conscientização, um reel de portfólio, um anúncio pago vendendo algo, UGC ou um fundador falando, bastidores, outra coisa?

Depois, apenas o que estiver faltando:

  1. Para quem é e o que eles devem sentir ou fazer depois de assistir?
  2. Qual estilo? Qual referência é a mais próxima? Você mostrará opções no material real para escolher.
  3. Material, som ou música, duração e onde será veiculado.

Se for um anúncio, o comprador e o estágio do roteiro são mantidos, ou /bb:script é executado primeiro. Uma edição nunca troca a ideia ou uma alegação; isso volta para o roteiro.

Coloque as respostas em job/brief.md e trabalhe até o fim. A única outra parada são as opções na etapa 2. Se já deram tudo, ou disseram "vai logo", não pergunte. Se ninguém puder responder (execução sem supervisão), diga o que teria perguntado e assuma a leitura sensata.

O gosto pertence ao job

A pergunta 1 define o job: escreva-o na primeira linha de job/brief.md. O que alguém gostou em um vídeo não se aplica a outro. Um reel orgânico e um anúncio são jobs diferentes: o anúncio deve vender. Portanto, um anúncio é julgado por para quem é, pelos pontos de venda do produto, pela prova e pelo motivo de compra, não pelas piadas ou sensação de uma peça orgânica. Lições de um corte orgânico não vinculam um anúncio, e vice-versa.

Por quê

Edições genéricas de IA cortam em cada batida musical, dão a mesma duração a cada cena, aproximam tudo e param no momento em que a última palavra termina. Cada uma dessas foi rejeitada aqui (veja lessons.md). Os livros de edição respondem melhor às mesmas perguntas, então os consultamos por decisão: Murch para onde um pensamento termina, Pearlman para ritmo e a pergunta aberta, Block para onde o olho vai. Os livros são perguntas e passagens, nunca vozes.

Como é um bom resultado

  • O quadro 0 já funciona como uma imagem estática com o som desligado: o produto, um resultado ou uma surpresa, nunca um logotipo ou saudação.
  • Uma pergunta se abre no gancho e permanece aberta até a recompensa.
  • Os cortes ocorrem onde um pensamento ou movimento termina, não em uma grade. Pelo menos uma cena é mantida ao lado de outras mais rápidas, para que pareça uma pausa intencional.
  • A coisa mais brilhante ou em movimento em cada cena é o que se deve olhar. O texto fica sob o queixo ou em um céu limpo, nunca sobre uma boca, e nunca empilhado com outra linha dizendo as mesmas palavras.
  • O fechamento é mais calmo que a cena anterior e o pedido é claro. O final funciona: a música termina em seu próprio final ou em uma frase real, nunca um fade em uma música ainda tocando, e nunca sobre seus próprios últimos acentos.
  • O som real está presente. As pessoas no material são ouvidas por cima da música, e o maior momento da música coincide com o maior momento da imagem.
  • O material parece como foi filmado: a cor natural do iPhone, enquadramento estático, um zoom suave apenas no produto, sem zooms móveis, sem preenchimento espelhado, sem barras pretas.
  • O 4:5 é recriado a partir da mesma EDL, para que legendas e rostos permaneçam no quadro.

Comandos

Arquivos de referência escrevem de forma curta. O estado do shell não persiste entre comandos, então use sempre a forma completa e forneça a forma completa também para um agente crítico.

  • PY significa "${CLAUDE_PLUGIN_DATA}/venv/bin/python", o Python que o setup construiu. Execute todo script Python aqui com ele.
  • scripts/... significa ${CLAUDE_SKILL_DIR}/scripts/.... references/... significa ${CLAUDE_SKILL_DIR}/references/....
  • search.py significa python3 "${CLAUDE_PLUGIN_ROOT}/skills/books/scripts/search.py".

Fluxo de trabalho

Pasta do job: <cliente>-<job>/ na pasta em que a pessoa está, ou na que o briefing nomear (job/). O material permanece onde está; apenas as renderizações são escritas.

  1. Leia e ouça. Execute PY scripts/listen.py clips <material> --out job/sound antes de planejar: ele transcreve cada clipe e encontra falas, risadas, gritos e picos de nível. Leia tudo. Falas fora da câmera geralmente são a ideia e dizem o que uma cena realmente é (um clipe de "aplicação" de um anúncio era um diretor dizendo "você não precisa aplicar nada"). Execute também PY scripts/listen.py song <faixa> e leia as palavras: elas podem lutar contra a imagem ou ajudar. Depois, quaisquer notas do cliente, lessons.md, a pasta do cliente com edições anteriores (apenas aquele cliente, veja examples/README.md), o roteiro ou briefing. Execute scripts/probe.sh <material> > job/footage-log.md, depois assista aos clipes e adicione os melhores momentos com timecode. Converta HDR com scripts/proxies.sh antes de qualquer outra coisa. Um log de material escrito por outra pessoa é uma pista, não um fato: veja um quadro de cada seleção antes de colocá-la na EDL (scripts/sheet.sh <clipe> <início> <duração> job/sheets, para que nada seja escrito ao lado do material). Liste cada alegação que o roteiro ou briefing faz contra o momento do clipe que a mostra; uma alegação que nenhum clipe mostra é alterada ou cortada agora, não pelo crítico. Escreva a vibe em uma linha, nas palavras da pessoa.
  2. Planeje. Carregue references/plan.md, rhythm.md, eye.md, sound.md. Meça a música com PY scripts/beats.py <faixa>: tempo, primeira batida e o mapa de loudness, que mostra onde a faixa já está se movendo para music.start. Por batida (gancho, virada, recompensa, fechamento): o que sentir, o ritmo, onde o olho pousa, o som. Uma pesquisa por coluna. Escreva job/plan.md, cada linha com um id de passagem.
  3. Opções. Cerca de três tratamentos por seção (casual, médio, extremo) como cartões: um quadro e uma linha cada. A pessoa escolhe. Se ela não estiver presente, ou disse "vai logo", escolha, registre o motivo em options.md e mantenha os outros visíveis; uma tabela de opções é suficiente.
  4. Corte bruto. Carregue references/formats.md. Escreva job/edl.json, depois mix.py (o som) e cut.py --draft nos proxies. scripts/sheet.sh no resultado, listen.py cut no resultado, e leia o relatório e sua imagem de forma de onda. Olhe para a folha de quadros, a tira do gancho e o quadro 0 você mesmo, e assista uma vez com o som desligado.
  5. Crítico. Um agente novo recebe job/brief.md (para julgar contra o job), quadro 0 em tamanho real, os quadros, a tira, o relatório do listen, o log do mix, a lista de alegações, references/critic.md e o comando completo de search.py. O quadro 0 vai primeiro, porque uma miniatura pode ser mal interpretada. Não suas anotações nem este chat. Ele retorna notas por batida, no máximo três correções com ids de passagem, e um veredito.
  6. Final. Corrija o que o crítico encontrou (ou escreva por que o briefing vence). Aponte a EDL para arquivos SDR de qualidade total, renderize sem --draft, depois reframe.py para o 4:5, depois check_cut.py e listen.py cut no resultado. Corrija todo FAIL; leia todo WARN. Diga claramente que ninguém ouviu: o relatório mede, não ouve, então as linhas de voz e o mix vão para os ouvidos da pessoa. Folhas de ambos os masters. README.txt e entrega conforme formats.md.

Responda com os dois arquivos, quadro 0, uma linha por batida sobre o que mudou após o crítico, e uma frase mencionando os livros uma vez. As citações permanecem em plan.md, nunca no vídeo.

Limites rígidos

  • Uma alegação ou ideia alterada volta para /bb:script. Se o material ou o som matar a ideia, pare e refaça o diagnóstico e o roteiro, com o crítico; nunca insira uma nova linha durante o corte. Um anúncio nosso trocou sua linha na edição e foi publicado sem público e sem razão de existir.
  • Opções antes de um rascunho, sempre. Se ninguém estiver, escolha e registre; nunca pule.
  • Nunca desacelere ou acelere uma voz. cut.py silencia o áudio próprio de uma cena quando sua velocidade não é 1.
  • Sem denoise, sem desfoque, sem zooms móveis, sem preenchimento espelhado, sem barras pretas. HDR vai para SDR primeiro com avconvert. Sem correção de cor em talking heads e UGC. Um visual leve apenas quando o briefing pedir (look na EDL), dito em voz alta na resposta.
  • Nunca envie com o som do clipe desligado e sem motivo escrito no plano.
  • Uma cena nunca prova mais do que aconteceu: se o áudio disser que foi simulado, não é prova.
  • Legendas no idioma falado, cada palavra que importa, nunca sobre a boca, nunca empilhadas com um destaque.
  • Alegações, preços e ofertas na tela vêm do briefing ou do site ativo do cliente, nunca inventados.
  • Nada vai para um cliente, é publicado ou gasta dinheiro sem o sim da pessoa. A entrega para o Drive do cliente e qualquer mensagem são redigidas para ela; ela envia.

Saber-fazer

  • Texto: O ffmpeg do Homebrew não tem drawtext nem libass, então o texto é desenhado como PNGs por scripts/text_png.swift (CoreText, compilado uma vez por cut.py) e sobreposto com overlay. Fontes estão em assets/fonts/ (Geist Black, Geist Bold, Playfair Display Itálico); a fonte de um cliente vai no bloco styles da EDL por caminho.
  • Whisper é inglês e ouve mal vozes fora da câmera. listen.py usa o modelo pequeno em inglês. Verifique qualquer linha que for legendar lendo os quadros; para uma leitura mais clara de uma linha duvidosa, setup.py --download-large adiciona um modelo maior (1,6 GB), que listen.py clips --large usa.
  • Velocidade: renderizações finais rodam a cerca de 3 a 5 quadros por segundo para um 1080×1920 de fontes 1080p enquanto outras codificações rodam; um anúncio de 30 s leva de 3 a 5 minutos. Use --draft para o corte bruto. Execute renderizações longas como tarefas em segundo plano.
  • Cortes alinhados à batida: beats.py mede bpm e offset do arquivo. Meça a faixa inteira: ela verifica se suas duas metades concordam, e uma janela curta sobre uma introdução pode travar no pulso errado. Dê à música um bpm e offset (segundos no arquivo do primeiro tempo forte) ou uma lista de beats. Marque as cenas cujo final deve cair em uma batida com "snap": true; o padrão ajusta apenas essas. cut.py --beats imprime a grade contra os cortes atuais. Ajuste a virada e a recompensa, não todo corte: check_cut.py avisa quando mais de 80% dos cortes estão em uma batida.
  • Tempo do texto: vincule o texto a uma cena ("shot": 2, "at": 0.3, "dur": 1.2) em vez de segundos absolutos, para que siga a cena quando um ajuste de batida mover um corte.
  • Loudness: loudnorm de duas passagens para −14 LUFS em modo linear, depois um limitador a 4× a taxa de amostragem; cut.py mede o arquivo e recodifica com um teto mais baixo se o AAC ultrapassar −1 dBTP. A música fica 14 dB abaixo do áudio do clipe por padrão quando alguma cena mantém seu próprio som; defina music.gain_db para alterar.
  • 4:5: reframe.py enquadra cada cena exatamente como o 9:16 e pega uma janela de 1350 linhas por cena (y45, padrão 285). O texto mantém seu lugar na imagem e é puxado 40 px para dentro. Mantenha o texto do 9:16 entre as linhas 330 e 1590 e o 4:5 não precisará de trabalho extra.
  • Zonas seguras (9:16): nada acima da linha 270 ou abaixo de 1590, exceto cartões em tela cheia; os 12% inferiores são o botão do Meta.
  • Folhas de quadros: sheet.sh <video> [início] [duração] escreve uma folha de 40 quadros (tempos no .txt ao lado), uma tira de 10 fps do gancho (ou qualquer janela) e o quadro 0. Quadros de flash aparecem na tira, não na folha.
  • Finais de clipe: cut.py avisa quando o out de uma cena ultrapassa o último quadro da imagem e mantém esse quadro, para que o master nunca fique aquém do seu áudio. Recue out se um congelamento aparecer.
  • Câmera na mão e zoom suave: x é um número por cena, então um assunto com câmera na mão que deriva sai da janela, e um zoom suave multiplica a deriva. Veja a janela daquela cena em movimento (sheet.sh <render> <início da cena> <duração> dá uma tira de 10 fps) antes de confiar no enquadramento.
  • Tempos das palavras derivam: os tempos por palavra do Whisper podem estar até 2 s errados. Antes de colocar uma linha, transcreva o trecho sozinho; uma palavra perdida em qualquer extremidade significa que o corte está errado.
  • Sincronia labial: cópias de telefone podem ter áudio cerca de 0,1 s adiantado. Verifique um clipe antes de cortar; se a voz liderar, ajuste in na imagem, nunca nas palavras.
  • A busca nos livros: search.py "<palavras literais>" --job feel|rhythm|eye --book murch|pearlman|block --k 6, depois --show <id> para ler uma anotação. Palavras literais funcionam; perguntas não.

Referências (carregar por decisão)

  • references/plan.md: o plano de quatro batidas, uma linha por batida por coluna, e as consultas por coluna.
  • references/rhythm.md: onde um corte cai, se mantém, padrão muda, a pergunta aberta.
  • references/eye.md: para onde o olho vai, posicionamento do texto, zonas seguras, a faixa 4:5.
  • references/sound.md: a etapa de ouvir, voz, música, efeitos, loudness, o final.
  • references/critic.md: a rubrica, carregada apenas pelo agente crítico.
  • references/formats.md: formato da EDL, os scripts em ordem, saídas, onde os finais vão.
  • references/drawings.md: animação desenhada à mão sobre um corte, quando o briefing a solicita.

Lições

lessons.md contém linhas datadas de reações e resultados reais. Leia na etapa 0; o crítico verifica o corte contra as últimas cinco. Esta pasta é substituída em cada atualização, então lições de um cliente vão na pasta desse cliente, e uma lição para todos entra através do repositório (CONTRIBUTING.md).

Individual skills in this repo

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

Habilidades Relacionadas