O que reel faz?
Onde as coisas estão e configuração inicial
- Pasta do pipeline = a pasta
video-pipelineonde esta skill reside (três níveis acima deste arquivo:video-pipeline/.claude/skills/reel/SKILL.md). Execute todos os comandos a partir daí. Os projetos ficam emprojects/<data>-<slug>/dentro dela. - PY = o Python próprio do pipeline. Use-o para todos os comandos abaixo, nunca o do sistema:
.venv/Scripts/python.exeno Windows,.venv/bin/pythonno Mac ou Linux. - Se PY não existir, configure primeiro, sem pedir para o usuário digitar nada:
execute
python install.py(oupy install.pyno Windows,python3 install.pyno Mac). Se parar com "ffmpeg está faltando" ou "git está faltando", instale a ferramenta para eles (Windows:winget install ffmpeg/winget install Git.Git; Mac:brew install ffmpeg), diga para reiniciarem o Claude Code se o novo comando não for encontrado, e execute install novamente. Quando o install exibir READY, executePY scripts/selftest.pye confirme9/9 passed.
STYLE (uma vez por referência) -> 1 BRIEF -> [porta: usuário aprova roteiro] -> 2 GRAVA (usuário)
-> 3 ALINHAR -> 4 CORTAR -> 5 EFEITOS -> 6 PRÉVIA -> [porta: notas do usuário, loop] -> 7 FINAL
Você escreve, corta e renderiza. O usuário grava, aprova e publica. Nada é jamais publicado daqui.
0. Estilo a partir de uma referência (quando o usuário envia edições de referência)
PY scripts/style_ref.py <ref.mp4> [mais refs] --name <nome-do-estilo>- Abra cada imagem que ele escrever em
styles/refs/<nome-do-estilo>/e leia os números do report.json. - Escreva
styles/<nome-do-estilo>.jsoncom APENAS as chaves que diferem destyles/default.json: fonte/tamanho/cores/posição das legendas, palavras por grupo/maiúsculas, aparência do texto na tela, corte de encaixe (cut.max_gap: mais apertado para edições rápidas), espaçamento de efeitos (effects.min_gap, do ritmo da referência), loudness. - Escreva
styles/<nome-do-estilo>.md: o que a edição faz, em palavras simples. Quais dos 51 efeitos correspondem a movimentos que você viu, com que frequência algo acontece na tela, como o gancho abre, o que nunca faz. Adicione os números medidos (cortes por minuto, duração do take). - Mostre o .md ao usuário e pergunte o que você errou. Você vê frames amostrados, não movimento ou som:
diga isso, e peça que nomeiem timestamps que eles amam (
--at 7.2,12captura esses frames).
Fontes: as legendas podem usar qualquer fonte em vendor/claude-video-effects/fonts/ (Montserrat, Anton,
Archivo Black, Inter, Instrument Serif, Playfair Display, Space Mono, Permanent Marker) ou qualquer
.ttf/.otf que o usuário colocar em fonts/.
1. Brief
PY scripts/new_project.py "<slug>" --lang id --style <estilo>(lang: id, en ou auto).- Leia
~/.claude/youtube/voice.mdou~/.claude/instagram/voice.mdse existir. Escreva no idioma e voz do usuário. Nunca invente um número, resultado ou cliente; pergunte, ou deixe{{angka}}. - Preencha
script.json: uma linha por frase que ele dirá, papéishook/body/cta.- Hook: escreva 3 opções, recomende uma, mantenha com cerca de ~3 segundos falados.
onscreen: texto curto para o hook (e qualquer linha que precise de um cartão de título).effects: efeitos de dica EM UMA PALAVRA:{"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}. Escolha do .md do estilo. No máximo um efeito a cadaeffects.min_gapsegundos. Nem toda linha recebe um. Efeitos que usam os próprios reels do usuário (orbit,phone-fan,place-in-grid,fan-build,noise,profile-wall,carousel-spin) precisam de"images": "<pasta>".- Gráficos e contadores (
liquid-glass-graph,over-the-shoulder-zoom) apenas com números reais.
- Escreva
brief.mdao lado: as opções de hook, o roteiro como ele lerá, uma nota de take por efeito ("linha 4: deixe espaço acima da sua cabeça"), e as regras de gravação detemplates/shooting.md. - Porta: mostre o roteiro e pare. Não continue até o usuário aprová-lo.
2. Gravação (usuário)
Eles colocam os arquivos em <projeto>/raw/. Vários arquivos são aceitos; são usados na ordem do nome.
3. Alinhar
PY scripts/transcribe.py <projeto>(primeira execução baixa o modelo Whisper). Muitos reinícios na gravação, ou o corte ainda repete palavras? UsePY scripts/burst_transcribe.py <projeto>: ele transcreve cada rajada de fala separadamente (large-v3-turbo), para que um reinício após uma pausa nunca seja mesclado com o próximo take. Se palavras ainda engolirem pausas, executePY scripts/snap_words.py <projeto>antes de alinhar.PY scripts/align.py <projeto>. Leia o relatório para o usuário de forma resumida: linhas que estão FALTANDO ou SEM TAKE COMPLETO, e qualquer improvisação que pareça valer a pena manter. Não pare para eles a menos que uma linha esteja faltando; mencione-as na prévia.
4. Cortar
PY scripts/cut.py <projeto>
Reels apenas com voz (o usuário grava apenas a voz, a imagem é toda gráficos em movimento):
PY scripts/cut_voice.py <projeto> -> work/voice.wav (limpa, -16 LUFS) e
work/prog_words.json (cada palavra mantida com seu tempo na faixa cortada). Construa os visuais sobre isso
(HyperFrames, se o usuário tiver, ou o editor deles). A etapa de efeitos precisa de um rosto, então pule-a.
Música de fundo sem licença: se .venv-music/ existir (python install.py --music), crie uma
base com .venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<humor>, sem vocais",
escute para ver se há lacunas (tente outra seed se irregular) e defina "music": {"file": "<caminho abs>/work/bed.wav", "db": -22}.
5. Efeitos
PY scripts/effects.py <projeto> plan. Corrija qualquer aviso editando as dicas doscript.json.PY scripts/effects.py <projeto> check, depois OLHE cadawork/check/fx_*.png. Texto sobre o rosto, cortado na borda, ilegível: corrija opções (x,y,textmais curto) e verifique novamente.PY scripts/effects.py <projeto> render. Este é o passo lento (cada frame passa pelo rastreamento facial). Avise o usuário que está em execução.
6. Prévia
PY scripts/finish.py <projeto>->preview/preview_vN.mp4.PY scripts/finish.py <projeto> --check <t1,t2,...>no meio de cada efeito e em dois ou três outros momentos. OLHE os PNGs: legendas colidindo com um efeito, texto do gancho ilegível, qualquer coisa sobre o rosto. Corrija antes de mostrar.- Porta: dê ao usuário o caminho da prévia e uma breve lista de edição: takes usados, o que foi cortado, efeitos e onde. Peça notas.
Transformando notas em mudanças
| nota | mudança | reexecutar a partir de |
|---|---|---|
| "use a outra take da linha 3" | choices.json {"take": {"3": 1}} | alinhar |
| "mantenha o que eu disse em 0:14" | choices.json {"keep_unmatched": ["u3"]} | alinhar |
| "remova a linha 5" | choices.json {"drop_lines": [5]} | alinhar |
| "corte está muito apertado / muito solto" | estilo cut.max_gap, cut.post_pad | alinhar |
| "nenhum efeito aí" / "palavra maior" | script.json efeitos | plano de efeitos |
| aparência da legenda, texto na tela | estilo captions / onscreen, ou script onscreen | finalizar |
| música | script.json "music": {"file": "...", "db": -22} | finalizar |
Reexecutar a partir de uma etapa significa que todas as etapas seguintes também serão re-executadas. Reexecutar alinhar ou cortar significa que os efeitos renderizarão novamente (lento), então agrupe as notas primeiro.
7. Final
PY scripts/finish.py <projeto> --final->final/final.mp4efinal/cover.jpg.- Escreva
final/caption.md:- Os primeiros ~125 caracteres carregam o gancho; é tudo o que o feed mostra antes de "mais".
- Uma chamada para ação. Se for "comente PALAVRA-CHAVE", deve coincidir com o vídeo.
- Máximo de 5 hashtags, específicas ao assunto, no final. No idioma e voz do usuário.
- Nenhum número inventado. Nenhum "pare de rolar", nenhuma parede de hashtags.
- Lembre-os em uma linha: o áudio em tendência é adicionado dentro do Instagram, e eles mesmos publicam.
Regras
- O .md do estilo é o gosto. Quando estiver em dúvida se deve adicionar algo, não adicione.
- Nunca cubra o rosto. Nunca zoom além de 2x.
- Seja direto sobre os limites: o editor escolhe takes e tempos bem; ele não julga a entrega deles. Se um take parecer monótono, diga "verifique a energia da linha 3", não finja que ouviu.
- Mantenha
projects/fora do git: as gravações brutas são grandes e pessoais.