Explicador com evidências (nota de voz → vídeo vertical de 1 minuto com comprovantes)
Baseado em "Como malauianos conseguem cartões Visa sem forex" (11 Nov 2026): uma nota de voz Android de 4:15 → um TikTok de 60,4 s com 10 páginas da web como evidência, diagrama de arquitetura da Bridge, 9 logos, 4 chings. Exemplo funcional em assets/examples/visa-cards/ (script + verificação para leigos, lista de cortes, jobs de captura, video.json completo, texto para postagem, folha de contato).
nota de voz ─► transcrever + ilhas ─► SCRIPT + VERIFICAÇÃO LEIGA (ponto de verificação) ─► cortar voz (bordas verificadas) ─► tempo + palavras
│
└► evidência: capturas de tela com retângulos alvo · logos · diagramas de documentação
│
video.json linha do tempo (cenas, zooms, carimbos, glossários, chings, etapas do diagrama)
│
efeitos sonoros + música baixa + mix ─► imagens estáticas com zonas seguras ─► renderizar ─► verificar
Configuração
SK=~/.claude/skills/evidence-explainer
zsh $SK/scripts/new_explainer.sh "<arquivo de áudio>" .context/<slug> # ~1-3 min; imprime espaço em disco
cd .context/<slug> # todo script executa a partir daqui (obrigatório)
Requer ffmpeg, Python 3 + numpy + Pillow, Node 20+, Chrome (Playwright usa o Chrome instalado), whisper.cpp + ggml-medium.en.bin em ~/.cache/whisper.cpp (scripts/setup_whisper.sh compila; use WHISPER_DIR para sobrescrever). O scaffold executa npm i em remotion/, ou clona um node_modules existente quando EXPLAINER_NODE_MODULES aponta para um (cópia APFS copy-on-write, ~0 bytes). Visual = "modo dev" (src/brand.ts: grade de pontos, Space Mono, ciano/amarelo/âmbar); handle/site vêm de video.json.
As etapas (leia a referência ao chegar em cada uma)
| # | Etapa | Ler | Ferramentas |
|---|---|---|---|
| 1 | Escrever o script a partir das batidas de sent.txt, depois executar a verificação para leigos | references/01-script-and-lay-check.md | — |
| 2 | Cortar a voz para ≤ 60 s com bordas verificadas, tempo, legendas | references/02-voice-cut.md | islands_labels.txt, dips.py, tx.sh, cut.py, voice.sh, words.py |
| 3 | Evidência: capturas de tela + retângulos alvo, logos, diagramas de documentação | references/03-evidence.md | shoot.mjs, logo_tools.py, logo.mjs, register_image.py |
| 4 | Linha do tempo em remotion/src/video.json | references/04-video-json.md | motor src/Explainer.tsx |
| 5 | Som: cliques, chings, música baixa, mix | references/05-sound.md | sfx_mix.py, score.py |
| 6 | Pré-visualização com zonas seguras do TikTok, renderizar, verificar | references/06-render-verify.md | remotion/stills.mjs, sheet.py, verify.sh |
Caminho rápido após o script ser aprovado:
python3 $SK/scripts/cut.py cut.json && zsh $SK/scripts/voice.sh 1.18 "Nomes, Marcas, Jargão"
python3 $SK/scripts/words.py word_fixes.json
node $SK/scripts/shoot.mjs shoot_jobs.json shots && cp shots/*.png remotion/public/shots/ && cp shots/shots.json remotion/src/shots.json
python3 $SK/scripts/logo_tools.py sync # após buscar logos
# escrever remotion/src/video.json, depois:
python3 $SK/scripts/sfx_mix.py path/to/music.mp3 # ou `none`
(cd remotion && npx tsc -p . && node stills.mjs 45,300,...) && python3 $SK/scripts/sheet.py stills --zones
(cd remotion && npx remotion render src/index.ts Explainer ../out/<slug>.mp4 --codec=h264 --crf=18 --audio-codec=aac --audio-bitrate=192k)
zsh $SK/scripts/verify.sh out/<slug>.mp4
Uma renderização completa de 60 s leva ~40 s; imagens estáticas ~1 s cada após o bundle.
Estilo da casa (da revisão do criador do primeiro vídeo — manter a menos que indicado o contrário)
- B-roll em tela cheia. Capturas de tela preenchem o quadro 1080×1920 (sem moldura de navegador); a câmera começa ampla, depois aplica zoom na linha que comprova o ponto enquanto um marcador a percorre. Uma pequena pílula
https://dominio+ tag amarela// evidência: …fica no canto superior esquerdo. - Logos chegam com clique de câmera (cartão branco, leve inclinação, pop de escala, flash branco). Mostre mais deles: toda empresa mencionada recebe seu logo uma vez.
- "Ka-ching" em cada transação bem-sucedida (conta criada, dinheiro recebido, carteira carregada, pagamento aprovado) com chip verde ✓ e anel.
- Arquitetura para leigos. Um diagrama (Você → App → Infraestrutura → Cartão), com logos nos nós, construído passo a passo ("PASSO 1 · CADASTRO"…), com pacotes rotulados viajando entre nós. Um diagrama de desenvolvedor do provedor é mostrado apenas com zoom em suas caixas em linguagem simples, nunca inteiro.
- Pergunte-se após escrever o script: isso vai esclarecer ou confundir um leigo que usa o produto? Corrija todo "confundir" antes de construir (cartões de glossário, rótulos mais simples, sem estilo de código). Coloque a verificação no arquivo do script e no resumo.
- Legendas ancoradas na parte inferior: a borda inferior da caixa está fixada 400 px acima da borda inferior do quadro (logo acima do bloco de nome de usuário/legenda do TikTok), páginas de 2 linhas crescem para cima, com recuo à direita para evitar a barra de ações.
- Gancho primeiro (palavra grande em matriz de pontos + a pergunta do espectador sobre a primeira evidência, desfocada), CTA final (recapitulação da cadeia de logos, SEGUIR, handle, botão, site).
- A música é um fundo baixo (score.py BASE −26 LUFS): uma trilha dramática alta foi testada como "muito alta e irritante".
Pontos de verificação (pare e pergunte, com uma recomendação)
- Script + verificação para leigos antes de cortar qualquer coisa: a tabela de batidas (o que ele diz → o que está na tela) e a tabela de confunde/esclarece.
- Afirmações que você não pode verificar (ex.: "o app X usa o provedor Y"): mantenha-as nas palavras dele, escreva os rótulos na tela como "ex." / "um exemplo", e sinalize-as.
- Antes de renderizar: imagens estáticas de cada novo elemento com
--zones. - Antes de publicar: licenças de logos (CC BY/BY-SA precisam de crédito), afirmações atenuadas ("muito provavelmente" permanece visível), nomes que o Whisper ouviu errado (legendas usam a grafia correta mesmo que ele tenha dito errado). Envie apenas quando solicitado.
Princípios de trabalho
- Evidência sobre afirmação: cada batida factual recebe uma página que a comprova, capturada ao vivo, com zoom na linha. Prefira fontes primárias (sala de imprensa da empresa, documentação oficial, o regulador/banco central, a página do app na loja) a blogs. Anote o que uma página NÃO diz (tabela de países da Bridge = quem pode ser integrado, não disponibilidade de cartão) e rotule de acordo.
- Corte apenas em bordas verificadas: ilhas de energia + vales bissectados (
tx.sh), nunca tempos de palavra do Whisper (eles podem variar em segundos em áudio de telefone). Re-transcreva o corte final e a renderização. - Glossários são curtos e concretos: "stablecoin = um dólar digital, 1 USDC ≈ $1", "KYC = a verificação de identidade + selfie que você fez ao se cadastrar", "API = um plug que permite que apps usem X".
- Limites de zoom: uma captura de tela de 1200 px de celular preenche o quadro com zoom 1.0 (já está cortada ~36 px de cada lado); parágrafos toleram ≤ 1.3, alvos curtos (uma linha de código, uma linha de tabela) 1.8–2.0. Verifique se as palavras destacadas e qualquer coluna chave (ex.: moeda) permanecem dentro do quadro.
- Verifique, depois reporte: durações (vídeo vs áudio), −14 LUFS / pico ≤ −1, transcrição completa da renderização, chings ≥ +5 dB sobre a voz, uma folha de contato que você olhou. Diga o que escolheu por tag sem ouvir (música).
Formato do resumo final
Caminho do entregável + duração; imagem da folha de contato; o que está na tela, batida por batida (resumido); veredito da verificação para leigos; "verificar antes de publicar" (afirmações não verificadas, licenças, atenuações, nomes ouvidos errado); tarefas de manutenção (diretório de trabalho, disco, custo de re-renderização, qual arquivo editar).