Você dá a história e os personagens. Ele devolve o vídeo pronto, com voz — imagens, cenas animadas e narração, tudo pela API Agnes AI a custo US$ 0.

Um pipeline que lê o conto, desenha os personagens, gera duas imagens por cena (início e fim), anima cada par em vídeo, narra em português e monta o filme. Duas skills acompanham o projeto: videos-agnes (história → filme) e imagens-agnes (imagem avulsa).
Imagens (agnes-image-2.1-flash) e vídeo (agnes-video-2.5-flash; o v2.0 saiu da API em out/2026) pela API Agnes AI, sem cobrança por geração. Narração roda local.
Model sheet por personagem: uma âncora-mãe e as demais vistas derivadas dela, para o mesmo rosto atravessar as cenas.
A voz é gerada antes; cada clipe dura exatamente a fala da cena. Revisão de dicção corrige número e moeda por extenso antes do TTS.
Cada história é um arquivo de spec em historias/<nome>.py. O rodar.py percorre tudo, é idempotente (reexecutar só refaz o que falta) e entrega o filme no Telegram.
text2img e img2img com até 2 referências (teto medido — mais que isso satura). Proporção 16:9 via pixels explícitos.
Modo keyframes: cada cena interpola da imagem A para a B. Duração pela regra 8n+1, respeitando o rate limit de 6/min.
Narração TTS local (inemavox, voz bella/chatterbox), com padding para casar fala e imagem sem cortar palavra.
Tudo roda local, exceto as chamadas à API Agnes. As chaves ficam fora do repo.
Em ~/projetos/agnes-nei/.env, lida em runtime.
# .env AGNES_API_KEY=sua-chave
Daemon inemavox para o TTS.
# inemavox localhost:8010
ffmpeg e ffprobe no PATH para montar o filme.
ffmpeg -versionDo clone à entrega, com uma história de exemplo já incluída no repo.
O repo traz o pipeline, as duas skills e uma história de exemplo.
git clone https://github.com/inematds/videos-agnes.git cd videos-agnes
Gera âncoras, cenas, narração, clipes, monta e envia — tudo de uma vez.
python3 rodar.py exemplo # O Pequeno Robô que Aprendeu a Sonhar
Copie o molde e preencha personagens, cenas (2 por cena), narração e movimento. Prompts em inglês; narração em português.
cp historias/exemplo.py historias/minha.py # edite TITULO, ANCORAS, CENAS, NARRACAO, MOVIMENTO python3 rodar.py minha
CLI direto para gerar imagem avulsa (text2img ou img2img), sem montar filme.
python3 skills/imagens-agnes/gerar.py "a red fox in a snowy forest, cinematic" -o fox.png python3 skills/imagens-agnes/gerar.py "..." --ref base.png # img2img
Cenas reais produzidas pelo pipeline, no estilo Pixar 3D em 16:9.


Arte de anúncio do INEMA.CLUB (1:1) animada pelo agnes-video-2.5-flash: 2 clipes de 8 s que começam e terminam na própria imagem, emendados e cortados em 15 s. O texto da arte não deforma.

python3 imagem_video.py arte.png --segundos 15 --proporcao 1:1 --saida ~/projetos/output/videos-agnes/minha-arte
Aprendido em ~70 chamadas reais. A documentação completa está no README.
Em português a API bloqueia conteúdo legítimo com HTTP 400. "Usar um galho como alavanca" foi recusado 4× em PT e passou de primeira em EN.
Cinco referências destroem a imagem: confete de pixels e o prompt é ignorado. Muitos personagens numa cena? Use uma âncora de grupo (várias pessoas juntas = 1 ref).
Em img2img o ratio é ignorado (vira quadrado). Peça size:"1312x736" em pixels, sem ratio, para manter 16:9.
~34% das chamadas voltam 503. O retry com backoff recupera quase todas — não é opcional.
Frontal simétrica duplica cauda/cabeça. Use perfil ou três-quartos e peça "exactly one" no positivo (nunca "no two", que vira atrator).
O agnes-video-v2.0 saiu da API (503 "no available channel", out/2026). O 2.5-flash usa mode:"keyframe" com first_frame/last_frame e seconds de 4 a 12. Limite de 6 pedidos/min, fila cheia (503) frequente e ~25 min por clipe. Entrega 1280×704 (16:9) ou 704×704 (1:1) — meça com ffprobe.
O pipeline nasceu medindo a API na prática — o que a documentação promete versus o que ela entrega.
imagem_video.py: uma arte pronta vira vídeo de qualquer duração em clipes de até 12 s com emenda invisível (out/2026). Pipeline migrado para o agnes-video-2.5-flash.