infofilm: filmes explicativos com infográficos
Um filme feito com esta skill é um baralho de cartões instrutivos dispostos sobre uma mesa azul-marinho. Cada cartão tem uma faixa de título, uma janela de imagem e uma faixa de legenda. Uma ilustração gerada por IA é exibida na janela, e infográficos desenhados por código surgem sobre ela na palavra exata que os nomeia. Um narrador de cinejornal carrega o significado, e um mascote o interpreta em pantomima, sem nunca falar. Intervalos comerciais cantados e uma balada de encerramento dão ritmo ao filme.
Cada número, título e rótulo é desenhado por código a partir de uma base de fatos. As imagens nunca contêm texto.
O modelo em template/ é um filme completo e funcional: uma demo de um minuto sobre anos bissextos. Use-o como base e substitua a demo pelo seu filme, peça por peça. O filme é renderizado a cada etapa: cenas sem um componente mostram seu cartão, e cenas sem narração recebem tempo estimado. Assim, você pode sempre visualizar o todo antes de gastar dinheiro.
Regras permanentes (substituem a conveniência)
- Dinheiro: pergunte primeiro. ElevenLabs, geração de imagens e downloads do Suno custam dinheiro real ou cota. Antes de cada lote pago, informe o que é, quantos itens e o custo estimado;
--dry-runexibe o custo. Aguarde uma resposta positiva. Essa autorização cobre apenas aquele lote, a menos que o usuário tenha dado aprovação permanente ("você está autorizado para imagens, voz e música"). Registre cada aprovação e custo emnotes/log.md. - Nunca adivinhe um fato.
- Cada afirmação e número vem de
notes/research.md, que cita fontes primárias. Cada número na tela vem devideo/src/data.ts, que cita a seção de pesquisa. - Eventos atuais devem ser verificados contra fontes primárias. Se algo não puder ser verificado, fica fora do filme, ou a cena espera; veja "Cenas que esperam" em references/script.md.
- Cada afirmação e número vem de
- Texto e números são desenhados em código, nunca pelo modelo de imagem. Os prompts de imagem proíbem texto, e cada imagem é inspecionada.
- O usuário ouve, o Whisper não. Nunca transcreva a fala gerada para verificá-la; o Whisper ouve mais erros do que existem. Em vez disso, forneça ao usuário uma página de audição.
- Sátira imparcial. A ironia visa o sistema, a máquina e o espetáculo, nunca um partido, grupo ou pessoa. Trate os lados de forma idêntica em tamanho, lógica de cores e animação. Nenhuma pessoa ou logotipo real nas imagens.
- Diacríticos corretos em todos os lugares (å ä ö é ü …), inclusive em prompts para subagentes. Diga a cada subagente explicitamente.
- Leia as palavras do usuário literalmente. "Distópico", "retrô" ou "estilo Fallout" são atmosferas, não listas de objetos. Quando uma palavra de estilo puder significar várias coisas, mostre propostas e confirme antes de prosseguir (veja references/style.md).
O pipeline
Trabalhe nestas fases em ordem. As etapas ⛔ são portões: pare e obtenha a decisão do usuário antes de prosseguir.
0 · Início
- Confirme o assunto, público, idioma, duração (padrão cerca de 12 minutos) e propósito. Verifique
ELEVENLABS_API_KEYeOPENROUTER_API_KEYno ambiente, Chrome com a extensão claude-in-chrome e um login Suno, além denode,pnpm/npm,ffmpegepython3comnumpyeelevenlabs. - Estrutura inicial:
Isso copia o modelo, instala o Remotion, sintetiza os efeitos sonoros, constrói uma primeira linha do tempo e verifica tipos.<skill>/scripts/new_film.sh <dir> --slug my-film --title "My Film" --lang sv --locale sv-SE - Mantenha decisões em
notes/log.md, com datas e quem decidiu. - As renderizações precisam de espaço. Verifique
df -he aponteOUTDIRpara um disco grande quando o disco do sistema tiver menos de cerca de 20 GB livres.
1 · Pesquisa → notes/research.md
- Escreva seções numeradas (
## 2.3 · O limite), um fato ou grupo por seção, cada uma com sua fonte primária: legislação, estatísticas oficiais, as páginas da própria autoridade. - Marque qualquer coisa incerta. Para um evento recente, registre a data em que os fatos são válidos.
- Veja references/script.md.
2 · Visual e elenco ⛔
- Reutilize o estilo padrão (creme, azul-marinho e tinta dourada; retrofuturismo de 1957; Bowlby One SC + Jost + Lobster) ou proponha alternativas. Renderize o mesmo infográfico pequeno em 3 a 7 estilos para que o usuário compare.
- Escolha o mascote: um homem comum silencioso com um gesto característico (o mascote padrão tira o chapéu). Evite gestos que pertençam a mascotes famosos, como uma piscadela com um polegar para cima.
- Gere o retrato de referência primeiro (
kind: "ref"), depois uma ficha de modelo, e obtenha aprovação antes de qualquer imagem de cena. - ⛔ O usuário escolhe o estilo, mascote, gesto e fontes. Detalhes: references/style.md e references/images.md.
3 · Roteiro → script/script.md ⛔
- Estrutura: um tema de abertura, 2 a 4 partes, um intervalo comercial entre as partes e uma balada de encerramento. Cada cena é um cartão de 15 a 40 segundos.
- O orçamento de palavras é minutos × cerca de 127 palavras por minuto para um narrador de cinejornal.
- Escreva os números por extenso na narração; os cartões mostram os dígitos exatos.
- Evite palavras com data, como "na segunda-feira". O filme dura mais que a semana.
- Revise antes de alguém pagar. Peça a um subagente independente que verifique o roteiro e a pesquisa com fontes primárias, classificando as descobertas em DEVE, DEVERIA e PODERIA. Corrija tudo classificado como DEVE. Revisões já encontraram erros na própria pesquisa.
- ⛔ O usuário aprova o roteiro. Formato e elaboração: references/script.md.
4 · Narrador ⛔
- Crie 3 opções com
voice/design_voice.py preview <tag>(pergunte primeiro) e deixe o usuário escolher uma. Salve-a comcreate. - Faça uma leitura de teste de 2 cenas representativas e deixe o usuário aprovar o ritmo e a pronúncia.
- Grave tudo:
python3 voice/narrate.py --dry-run, depois pergunte e execute.
Se uma cena for editada depois, apenas aquela cena é cobrada novamente. Detalhes e armadilhas: references/voice.md.
5 · Música (Suno, interface web oficial, via Chrome)
Você precisa destes segmentos:
- um tema de abertura de cerca de 20 segundos, que funciona muito bem no modo Speech como uma voz de harmonia fechada e monótona
- uma base instrumental para cada parte, em loop e com volume reduzido sob a voz
- um jingle cantado para cada intervalo comercial
- uma balada de encerramento, tipicamente uma regravação do tema.
Use prompts para expressões idiomáticas americanas dos anos 1950; palavras de gênero como "schlager" levam a música para outro lugar. O usuário gosta de opções no Suno, a menos que tenha lhe dado a escolha. Baixe WAV pelo menu do Suno, obtenha as letras alinhadas para os pontos de corte e escreva music/cuts.json e video/src/lyrics.ts. Detalhes: references/music.md.
6 · Ilustrações
- Uma imagem 21:9 2K por cena,
film-Sxxemart/shots.json, baseada na referência do mascote. Custo:python3 art/gen.py --dry-run, depois pergunte. - Examine cada imagem em busca de texto, objetos duplicados, membros extras e roupa errada, e regenere as ruins.
- Execute
python3 tools/sync_art.pye depoispython3 tools/build_timeline.py. Detalhes: references/images.md.
7 · Cenas (Remotion)
- Construa duas cenas douradas você mesmo: as cenas que contêm os infográficos centrais do filme. Faça-as atender ao padrão e registre-as em
golden.ts, substituindoTheYear/TheRuleda demo. - Em seguida, distribua para 2 a 3 subagentes construtores paralelos com
video/CONTRACT.md(preencha suas linhas{{…}}). Cada construtor tem seu próprio registro de grupo e verifica com folhas de contato. - Os construtores podem começar antes da narração existir, porque as marcações seguem as palavras estimadas e depois mudam para as reais automaticamente. Se o roteiro mudar enquanto eles trabalham (uma revisão chega), envie a cada construtor as alterações exatas para suas cenas com SendMessage.
- Revise você mesmo a ficha de cada cena.
- Detalhes: references/scenes.md.
8 · Renderização e entrega
- Execute
tools/render.sh. Ele reconstrói a linha do tempo, verifica as marcações, verifica tipos, renderiza, aplica loudnorm de duas passagens para −14 LUFS / −1 dBTP e escreve o SRT. - Verifique o volume por segmento e faça verificações pontuais de quadros do mp4, depois abra o filme para o usuário.
- Detalhes: references/render.md.
9 · Revisões
- Texto alterado: regrave apenas aquela cena, depois reconstrua a linha do tempo. As marcações seguem as palavras automaticamente.
- Imagem alterada: regenere a imagem, sincronize, reconstrua.
- Música alterada: edite
cuts.json.
Correções visuais não custam nada além de uma re-renderização; apenas nova narração, imagens ou downloads custam dinheiro.
Mapa do modelo
| Caminho | O que é |
|---|---|
film.json | título, slug, idioma, localidade, introduções e bases das partes, música de início/fim de cena, modelo TTS, outDir |
script/script.md | o manuscrito: ## Sxx · nome, <!-- title: -->, <!-- facts: -->, > visual:, narração |
notes/research.md, notes/log.md | a base de fatos; decisões e custos |
voice/ | design.json + design_voice.py (design de voz), narrate.py (narração + timestamps), listen.py (página de audição), voice.json |
music/ | suno/*.wav, cuts.json, tools/beats.py (tempo), tools/suno_lines.py (letras alinhadas → linhas) |
art/ | style.json (o visual, a lista do que nunca fazer), shots.json, gen.py, img/ |
tools/ | build_timeline.py, cues.py, lint_cues.py, make_srt.py, sync_art.py, art_sheet.py, unframe.py, make_sfx.py, render.sh |
video/src/ | theme.ts, fonts.ts, timing.tsx (useScene, cue), data.ts, lyrics.ts, Music.tsx, primitives/ (Card, Bits, Film, Jingle, Hemicycle), scenes/ |
video/tools/ | stills.mjs (folha de contato de quadros escolhidos), review.mjs (N quadros por cena, muitas cenas) |
Armadilhas conhecidas, com suas correções: references/pitfalls.md.