Produção de episódios animados
Visão geral
Um episódio animado vertical, narrado, legendado e animado: arte de personagens, painéis, vozes clonadas ou de biblioteca, música, clipes de imagem-para-vídeo e sincronia labial, montados por um motor que cronometra cada plano a partir do áudio real do diálogo. Um único episode.json contém todo o projeto, e engine/episode.py executa cada fase a partir dele. As skills irmãs fazem o trabalho dos provedores.
Use o motor; não escreva seus próprios scripts de edição. Linha do tempo, sobreposições, legendas, texto da direita para a esquerda, mixagem, durações e junções de lip-sync já estão em engine/. Foi comprovado pela reconstrução de um episódio real de 3,5 minutos: quadros idênticos, áudio idêntico e o comprimento exato que o original havia perdido. Uma edição manual redescobre cada bug em references/troubleshooting.md.
O áudio é o mestre. Durações dos planos, tempos das legendas e partes de lip-sync vêm dos arquivos de diálogo finalizados. Nunca estime um tempo a partir do texto.
Você não pode assistir nem ouvir. Você verifica quadros, durações e números. O ser humano julga semelhança, vozes, pronúncia, ritmo e piadas. Planeje seus pontos de verificação e mantenha-os.
Requer:
- Estas skills ao lado desta: image-generation, elevenlabs-tts, generating-video-clips.
- Python 3 com
pip install -r <diretório-desta-skill>/requirements.txt(Pillow compilado com RAQM, numpy; OpenCV opcional). - ffmpeg 7 ou mais recente.
- Fontes: os estilos e legendas nomeiam chaves de fonte (
bold,hblack,blackno exemplo) quefontsmapeia para arquivos.ttfinstalados. Para hebraico e latim, Rubik e Heebo (grátis, Google Fonts) funcionam bem;checkbloqueia se alguma estiver faltando. - Chaves em variáveis de ambiente, definidas em todo shell que execute o motor:
OPENAI_IMAGE_API_KEY,ELEVENLABS_API_KEY,GEMINI_API_KEY,FAL_KEY.
Para ver todo o pipeline funcionar sem chamadas de API, execute python3 <diretório-desta-skill>/engine/episode.py /tmp demo, depois check e build o projeto demo que ele cria.
O pipeline e seus portões
Cada portão é uma parada: envie o artefato, pergunte, aguarde. Os comandos são python3 <diretório-desta-skill>/engine/episode.py PROJETO <comando>. Custos medidos em outubro de 2026.
| # | Fase | Comando | Portão (o humano) | Custo |
|---|---|---|---|---|
| 1 | História e roteiro | script.md a partir de templates/script.template.md | o roteiro e todo tópico sensível | - |
| 2 | Bíblia de personagens | templates/characters.template.md, depois characters em episode.json | - | - |
| 3 | Rostos, cards, promover | chars face, chars card key=rosto.png, chars final keys | semelhança, em uma folha de todos os cards | ~$0.30 por personagem |
| 4 | Painéis | panels draft, depois panels final ids | cada painel, em uma folha | ~$0.30 por painel |
| 5 | Vozes | uma amostra por voz (elevenlabs-tts) | cada voz, de ouvido, antes do lote | centavos |
| 6 | Falas | lines | o conjunto de ouvido, com carimbos de tempo; nomes A/B | centavos a alguns $ |
| 7 | Música e SFX | sound | a música | centavos |
| 8 | Animatic | build (ainda sem clipes: imagens estáticas com movimentos de câmera) | ritmo e ordem, antes de qualquer gasto com vídeo | grátis |
| 9 | Animação | animate, folhas, retakes com animate S --takes 2 + animate pick S K | movimento, a partir das folhas | ~$0.10 por segundo de clipe, por take |
| 10 | Lip-sync | lipsync prep, pontos faciais no config, lipsync run | verificação pontual de quadros | ~$0.13 por segundo |
| 11 | Editar e entregar | build, sheet, deliver | o humano assiste ao mp4 | grátis |
Comandos, entradas, saídas e tratamento de falhas para cada fase: references/pipeline.md.
Escrevendo o roteiro
Regras que se mantiveram (detalhes e um exemplo prático: references/script-writing.md):
- Um gancho nos primeiros 3-4 segundos (uma abertura fria sobre o problema), depois o título. Em menos de 30 segundos, coloque o título e o card final como sobreposições em planos da história e pule a montagem.
- Cada personagem recorrente fala pelo menos uma vez. Uma montagem de abertura, uma palavra cada em sua própria voz com cerca de 1,2-1,5 s por card, é barata e amada.
- Texto na tela deve ser legível: cerca de 0,8 s mais 0,06 s por caractere; 1,2-1,5 s para um card curto; 4-6 s para uma legenda final. Dê aos cards um
mindur. - Plante pistas cedo e as recompense. Referências a piadas internas reais do grupo causam mais impacto.
- Tópicos sensíveis são decisão do usuário. Liste cada detalhe privado que gostaria de usar (saúde, dinheiro, relacionamentos, família, brigas), pergunte sobre cada um e use apenas o que eles confirmarem.
- Falas de 12 palavras ou menos, números por extenso. Texto na tela mantém a ortografia normal; correções de pronúncia vão em
pronounce. - Música e efeitos sonoros, mesmo para narração. Pelo menos uma base musical e alguns efeitos (whooshes em cortes, um impacto na revelação); uma base silenciosa soa inacabada.
episode.json em uma tela
templates/episode.example.json é um episódio pequeno completo; cada chave está em references/config-schema.md. As partes que você mais edita:
characters: nome de exibição, cor, voz e os campos de prompt da bíblia de personagens.speakers: vozes que nunca são desenhadas, como um narrador ({"display": null, "voice": "<id>"}dá legendas sem nome).lines: id, falante, texto com tags de áudio;trimelevelem falas de uma palavra.shots: imagem, linhas ("[email protected]"sobrepõe a linha anterior), pads,mindur, câmera, fx, sfx, sobreposições, deslocamento e velocidade do clipe.music_cues:[cue, from shot, to shot, volume, offset]. O build avisa quando um cue é mais curto que sua janela.lipsync: quais planos, quais linhas pular, um ponto facial por parte.prompts: substituachar_styleepanel_stylepara uma aparência diferente (cartoon 3D, aquarela, fotorrealista).
Construindo e revisando
- Agrupe as correções. Uma build completa leva minutos. Colete todas as notas de uma rodada de revisão (um take de fala, um pad, um deslocamento de clipe), aplique todas e reconstrua uma vez.
- Segmentos são armazenados em cache e rastreados.
buildrenderiza exatamente os planos cujas entradas mudaram: um novo clipe ou versão com lip-sync, um painel promovido, uma fala editada, plano ou estilo.build --only S05,S06força esses planos;--forcerenderiza tudo novamente. - Um plano com lip-sync é refeito após qualquer alteração em seu clipe, deslocamento, velocidade ou falas:
lipsync prep S05 && lipsync run S05. Até lá o build avisa que está desatualizado e usa o clipe bruto. - Regenerar um asset existente precisa de
--force(sound theme --force,animate S05 --force); sem ele, arquivos existentes são mantidos e apenas lacunas são preenchidas. - Revise com folhas.
sheetcoloca 3 quadros por plano em uma página. Quando o humano nomear um momento pelo tempo, extraia e leia esses quadros antes de responder (ffmpeg -ss T -i build/<saída>.mp4 -frames:v 1 f.jpg). checkantes de toda build: assets faltando, chaves, skills irmãs e texto de sobreposição mais largo que o quadro.- Durações são verificadas ao final de toda build. Áudio mais curto que vídeo falha a build em vez de cortar o final.
- Antes de enviar:
references/qa-checklist.md.
Trabalhando com o humano
- Envie cada artefato com sua ferramenta de envio de arquivos e ofereça-se para revelá-lo no Finder; não apenas imprima um caminho. O passo final é
delivere enviar esse arquivo. - Para áudio, diga o que ouvir e onde ("aos 0:41, o nome da Dani soa correto?"). Nunca afirme que ouviu.
- Escolhas de pronúncia e voz são deles: arquivos A/B com carimbos de tempo (elevenlabs-tts).
- Antes de cada fase paga, dê a estimativa de custo; depois dela, o total acumulado.
Quando algo parece errado
| Sintoma | Correção |
|---|---|
| Cards ou legendas muito rápidos para ler | aumente mindur / post: ~1,2-1,5 s por card curto, 4-6 s para a legenda final |
| Um título cortado nas bordas | check avisa; diminua o size do estilo ou adicione wrap |
| Música para antes do fim da seção | o build avisou: aumente os seconds do cue, sound <cue> --force; ou divida a seção em dois cues |
| O final é cortado | não pode acontecer com o motor (mixagem de comprimento exato, verificação de duração); em muxagens manuais, veja deck-to-video |
| Uma fala soterrada pela música | level_clips.py --report naquela fala, depois um take mais firme; reduza o volume daquele cue |
| Um personagem aponta ou age antes da fala | clip_off depois disso, ou divida o plano e corte a primeira parte com clip_cam |
| Bocas não se movem com as palavras | fase de lip-sync; se a boca errada se move, corrija seu ponto facial |
| Um rosto maior no plano de grupo | instale OpenCV (rostos são equalizados), ou mirror um card cujo adereço cobre um vizinho |
| Hebraico renderizado invertido ou sem junção | Pillow sem RAQM: check diz como corrigir |
| Um nome ou estrangeirismo mal pronunciado | uma entrada pronounce, A/B de ouvido |
Mais, com causas: references/troubleshooting.md.
Skills relacionadas
- image-generation: cards de personagens e painels ("Personagens recorrentes e painéis de história").
- elevenlabs-tts: vozes, falas de uma palavra, pronúncia, música e SFX.
- generating-video-clips: clipes, folhas de takes, lip-sync.
- deck-to-video: as mesmas lições de ffmpeg para vídeos de slides.