Caso 07Pipeline autônomo de vídeo
Devocional com Jesus
Um canal de YouTube que se produz sozinho. A cada 6 horas, um robô confere a gaveta de vídeos prontos, escreve o que falta, narra, anima e agenda.
Ver um short por dentro- Meu papel
- Ideia, direção de arte e regras do roteiro. O código é do agente.
- Período
- Desde 6 de outubro de 2026
- Situação
- No ar, rodando sozinho
- Stack
- GitHub Actions, Gemini, edge-tts, Remotion e Buffer
Em 30 segundos
O canal publica um Short por dia, e nenhum passa por um editor de vídeo. O Gemini escreve o roteiro, uma API traz o versículo, uma voz sintética narra, o Remotion anima e o Buffer agenda.
Este caso é sobre o que acontece com um modelo de linguagem rodando sem ninguém olhando. Em 31 dias, o robô falhou em 28 execuções, e a agenda do canal só perdeu um dia.
- 63
- Shorts produzidos em um mês, sem abrir editor de vídeo
- R$ 0
- de custo mensal, com Actions, Gemini, voz e Buffer em plano gratuito
- 109
- execuções do robô em 31 dias. Cada causa de falha foi corrigida
- 1
- buraco na agenda do canal, em 30 dias
Um short por dentro
Aperte o play. A coluna acompanha a voz palavra por palavra e mostra de onde veio cada trecho.
0:00 / 0:41O vídeo tem som.
- Escrito pelo modelo
- Não passa pelo modelo
Pra quem está passando por uma fase escura.
O Senhor é a minha luz e a minha salvação; a quem temerei? O Senhor é a força da minha vida; de quem me recearei?
Salmo 27, versículo 1.
Davi escreveu esse salmo sabendo o que era ter inimigos por perto. Mesmo assim começa com uma pergunta: a quem temerei? Davi via o perigo. Só que olhou primeiro pra quem estava do lado dele. O medo diminui quando a gente lembra quem é Deus. Hoje ele também é a sua luz, mesmo que o caminho ainda esteja escuro.
Compartilha com quem está no escuro agora.
- Título
- O Senhor é a minha luz | Salmo 27:1
- Paleta e desenho
- Oliva e montes
- Voz
- pt-BR-AntonioNeural, a -4%, normalizada em -15 LUFS
- Quadro
- 1080 x 1920, 30 fps, renderizado no GitHub Actions
- Música
- "Lasting Hope" de Kevin MacLeod (incompetech.com), licença CC BY 4.0
O tempo de cada palavra vem da própria síntese de voz. É com ele que a câmera e o texto seguem a fala, sem ninguém cortar nada à mão. A palavra dourada do gancho é a que o modelo marcou com asteriscos no roteiro.
Da gaveta ao ar
Tudo roda em GitHub Actions, sem servidor. Cada execução faz só o que está faltando.
Confere a gaveta
A cada 6 horas, o robô conta os vídeos prontos. Com 30 na gaveta, para ali, em menos de um minuto.
Escreve
Se a fila tem menos de 10 roteiros, pede mais 14 ao Gemini, com a resposta presa a um esquema JSON.
Narra
O edge-tts sintetiza cada trecho, corta o silêncio das pontas e grava o início e o fim de cada palavra.
Anima
O Remotion renderiza 1080 x 1920 a 30 fps, até 3 vídeos por execução, com o texto seguindo a voz.
Guarda
Cada vídeo vira uma release privada e uma issue. Fechar a issue descarta o vídeo, e o robô repõe.
Agenda
O Buffer recebe os 7 próximos posts, um por dia, às 7h de Brasília, e publica no YouTube.
O pipeline inteiro tem 2.655 linhas, entre scripts e animação. Como a produção só repõe o que saiu da gaveta, o consumo de minutos acompanha o ritmo de um post por dia, e a conta fica nos planos gratuitos.
O versículo nunca vem do modelo
Para este público, um versículo inventado é o pior erro possível. O modelo escolhe a referência e escreve em volta dela. O texto bíblico vem de outro lugar.
- Gancho com até 10 palavras, falando de uma dor ou situação real. Marque UMA palavra-chave com asteriscos, assim: *medo*.
- Reflexão com 45 a 60 palavras, frases curtas. Traga um detalhe concreto do contexto bíblico (quem escreveu, em que situação) e termine aplicando à vida de quem ouve.
- Nada de travessão ou meia-risca. Nada de emojis.
- Evite clichês de texto gerado por IA: [...] tríades forçadas, frases que resumem o que acabou de ser dito.
- Fidelidade bíblica: não prometa prosperidade, cura garantida ou resultados. Fale de presença, consolo, esperança, perdão, caráter.O que protege o roteiro
A citação não passa pelo modelo
O Gemini devolve só a referência, como Salmos 27:1. O texto vem da bible-api, na Almeida, de domínio público. Referência que não existe é descartada.
scripts/refill.mjs
Conferência depois da resposta
Roteiro sem campo, com id ou versículo repetido ou com travessão cai fora, e o log diz por quê. O motivo no log entrou em 19 de outubro, quando o teste semanal falhou sem dizer por quê.
scripts/refill.mjs
Um teste para o modelo
Toda semana, um workflow pede 2 roteiros e confere se passam. Modelo removido ou chave inválida aparece antes de a fila secar. Sobrecarga do Google vira só aviso.
gemini.yml
31 dias de execução
Cada marca é uma execução do robô. Foram 109, e 98 dispararam sozinhas pelo agendamento.
- Concluída (79)
- Com falha (28)
- Cancelada (2)
Ver os 31 dias em tabela
| Dia | Concluídas | Com falha | Canceladas |
|---|---|---|---|
| 06/10 | 5 | 0 | 0 |
| 07/10 | 2 | 1 | 2 |
| 08/10 | 3 | 1 | 0 |
| 09/10 | 0 | 3 | 0 |
| 10/10 | 0 | 3 | 0 |
| 11/10 | 2 | 2 | 0 |
| 12/10 | 0 | 2 | 0 |
| 13/10 | 3 | 2 | 0 |
| 14/10 | 4 | 0 | 0 |
| 15/10 | 4 | 0 | 0 |
| 16/10 | 4 | 0 | 0 |
| 17/10 | 4 | 0 | 0 |
| 18/10 | 4 | 0 | 0 |
| 19/10 | 3 | 0 | 0 |
| 20/10 | 4 | 0 | 0 |
| 21/10 | 4 | 0 | 0 |
| 22/10 | 4 | 0 | 0 |
| 23/10 | 4 | 0 | 0 |
| 24/10 | 4 | 0 | 0 |
| 25/10 | 4 | 0 | 0 |
| 26/10 | 3 | 0 | 0 |
| 27/10 | 4 | 0 | 0 |
| 28/10 | 3 | 0 | 0 |
| 29/10 | 3 | 0 | 0 |
| 30/10 | 3 | 0 | 0 |
| 31/10 | 0 | 3 | 0 |
| 01/11 | 0 | 3 | 0 |
| 02/11 | 0 | 2 | 0 |
| 03/11 | 0 | 2 | 0 |
| 04/11 | 0 | 2 | 0 |
| 05/11 | 1 | 2 | 0 |
7 e 8 de outubro
2 falhas. Erro nosso
O plano gratuito do Buffer aceita 10 posts agendados, e o robô tentou mandar mais. No dia 8, uma listagem vazia do Buffer o fez achar que os posts tinham sido apagados. Ele apagou os vídeos do link público, e o post das 7h falhou.
O que mudouAgenda no máximo 7 posts à frente e confere cada post pelo id.
9 a 11 de outubro
8 falhas. Veio de fora
O GitHub Models, que escrevia os roteiros, foi desligado. O endereço passou a responder só "OK", a fila de roteiros acabou e o robô parou de produzir.
O que mudouTroca para o Gemini, com nova tentativa, queda para o Flash-Lite e um teste semanal que avisa antes de a fila secar.
12 e 13 de outubro
4 falhas. Veio de fora
A Microsoft passou a exigir um token novo, e a voz levou erro 403 em toda síntese.
O que mudouAtualização do edge-tts para a versão com a correção.
14 a 30 de outubro
Nenhuma
17 dias e 63 execuções seguidas sem nenhum erro.
31 de outubro a 5 de novembro
14 falhas. Erro nosso
O robô consultava cada post agendado em toda execução e estourou a cota do Buffer, de 1.000 chamadas em 30 dias. Toda execução passou a terminar em erro 429.
O que mudouUm arquivo local decide se há o que perguntar, e o gasto caiu para umas 5 chamadas por dia. Limite do Buffer deixou de ser erro. Se o canal for ficar sem vídeo, abre uma única issue.
Duas causas vieram de fora e duas eram erro nosso. A gaveta e os 7 dias de agenda seguraram o canal nas quatro. A agenda tem um único buraco, o post de 8 de outubro. Do dia 9 em diante, todo dia tem um vídeo marcado.
Sair do texto sobre degradê
A primeira versão era texto centralizado sobre um degradê, e achei genérica. Hoje, cada vídeo é um espaço com profundidade, e uma câmera voa entre frases compostas como pôster.



Cada vídeo combina uma de quatro paletas com um de quatro desenhos de linha. São 520 partículas projetadas pela mesma câmera do texto, um cone de luz, e o brilho do topo pulsa com o volume da voz.
A direção virou documento, para a próxima sessão do agente não voltar atrás. O arquivo MOTION_GRAPHICS.md fixa o enquadramento, as camadas e a câmera, e diz com todas as letras: "Não volte para legenda simples sobre fundo."
Como dividi o trabalho com a IA
Aqui a IA aparece duas vezes: um agente escreveu o sistema, e um modelo escreve os roteiros todos os dias.
Ficou com a IA
- Escrever o pipeline, os workflows e as animações em Remotion.
- Achar a causa de cada falha nos logs e corrigir.
- Escrever os roteiros, com o Gemini, dentro das regras do prompt.
Ficou comigo
- Decidir o formato, o tom e as regras do roteiro, como a fidelidade bíblica.
- Achar a primeira versão genérica e mandar refazer.
- Exigir que tudo ficasse em plano gratuito.
O que ainda falta
O que este robô ainda não resolve e o que ainda não tenho para mostrar.
- Sem revisão humana obrigatória. Posso descartar um vídeo na gaveta, mas se eu não olhar, ele vai ao ar. As regras de fidelidade estão no prompt, e prompt não é garantia.
- Ainda não tenho número de retenção ou alcance para mostrar. Este caso é sobre a produção, não sobre audiência.
- Foram 63 vídeos produzidos e 30 enviados para a agenda. Um post por dia é escolha, e o resto fica guardado.
- A voz depende do edge-tts, um cliente não oficial de um serviço da Microsoft. Já quebrou uma vez e pode quebrar de novo.
- A falha da cota do Buffer ficou 6 dias aberta antes da correção. A agenda cheia segurou o canal nesse tempo.




