Reel Pixel Crew
O exemplo a ser copiado é projects/ai-delivery-team (leia
docs/REFERENCE-BREAKDOWN.md para entender por que funciona). Leia CLAUDE.md para o mapa
e as regras que nos pegaram.
1 · Roteiro primeiro (script.json)
Formato que funciona: gancho (≤5 s) → N blocos idênticos (~3,5 s cada) → pagamento → CTA com palavra-chave.
- Gancho: um número surpreendente + o sistema inteiro em um quadro ("7 funcionários, nenhum deles humano").
- Cada bloco: "O Papel faz a, b e c." — três substantivos concretos que podem ser animados.
- Pagamento: o único trabalho do humano (aprovar, decidir, revisar).
- CTA: "Comente PALAVRA-CHAVE e eu te envio …" (palavra-chave em
brand.keyword). - Escreva
linescomo frases de 2 a 4 palavras para legendas; cada linha se torna uma legenda. - Busque 30 a 45 s no total; velocidade de voz 1,3–1,4 mantém o Kokoro perto de 3,5 palavras/s.
- Pergunte ao usuário o handle da marca / nome do aprovador / palavra-chave se desconhecido; caso contrário, mantenha os placeholders
@seudhandlee informe isso.
2 · Scaffold
node scripts/new.mjs reel <nome>
python3 scripts/voice.py projects/<nome> # tempos primeiro, depois design para eles
3 · Cenas (index.html + style.css + scenes.js)
- Uma
<section class="scene">por cena do roteiro, na mesma ordem (R.cuts()mapeia paraTIMING.scenes). - Cada cena de funcionário:
.headcom.step[data-step][data-label]+.title(tamanho para caber em ≤ 980 px), depois um ou dois.cards que interpretam a tarefa. - Dê a cada cena seu próprio destaque (
--accent: var(--rN)) e fundos alternados (is-paper,is-peri,is-lav,is-cobalt). - Anime cada substantivo falado:
R.pop(el, R.word(scene, line, "substantivo")),R.tick,R.type,R.grow,R.slampara carimbos. - Use placeholders
data-icon,data-bot,data-burst,data-face,data-presenter;Sprites.hydrate()os preenche. - Termine com
R.captions(...)eR.register(); mantenha a linha inlinewindow.__timelines["main"].
4 · Verifique, depois renderize
node scripts/build.mjs projects/<nome> --no-voice --no-render --snap <um tempo por cena>
# leia projects/<nome>/build/snaps/contact-sheet*.jpg, corrija, repita
node scripts/hf.mjs lint projects/<nome>
node scripts/build.mjs projects/<nome> --no-voice # → renders/<nome>.mp4
Verifique o MP4 em si: ffmpeg -i renders/<nome>.mp4 -vf fps=1,scale=180:-1,tile=8x5 sheet.jpg
e -af ebur128 (alvo ≈ −14 LUFS). Procure por: primeiro quadro em branco, texto
tocando bordas, elementos sob a UI do Instagram, legendas fora de sincronia.
Trocas
- Voz:
script.json → voice.voice(am_michael,am_puck,am_fenrir,af_heart,bf_emma, …) ou grave a sua própria embuild/voice.wave executevoice.py --from-wav. - Música: coloque uma faixa em
build/music-override.wav. - Apresentador: o cartoon do dono (
kit/brand.js,kit/avatars/) é usado automaticamente por[data-presenter]e[data-face]; dimensione apresentadores de imagem por largura (.is-img), é de cintura para cima. Não desenhe um personagem diferente a menos que solicitado.