Abrir o canal

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
  1. Pra quem está passando por uma fase escura.

  2. 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?

  3. Salmo 27, versículo 1.

  4. 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.

  5. 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.

  1. 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.

  2. Escreve

    Se a fila tem menos de 10 roteiros, pede mais 14 ao Gemini, com a resposta presa a um esquema JSON.

  3. Narra

    O edge-tts sintetiza cada trecho, corta o silêncio das pontas e grava o início e o fim de cada palavra.

  4. Anima

    O Remotion renderiza 1080 x 1920 a 30 fps, até 3 vídeos por execução, com o texto seguindo a voz.

  5. Guarda

    Cada vídeo vira uma release privada e uma issue. Fechar a issue descarta o vídeo, e o robô repõe.

  6. 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.

scripts/refill.mjs, trechos do prompt
- 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

  1. 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

  2. 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

  3. 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
Execuções do robô por dia, no horário de Brasília.
DiaConcluídasCom falhaCanceladas
06/10500
07/10212
08/10310
09/10030
10/10030
11/10220
12/10020
13/10320
14/10400
15/10400
16/10400
17/10400
18/10400
19/10300
20/10400
21/10400
22/10400
23/10400
24/10400
25/10400
26/10300
27/10400
28/10300
29/10300
30/10300
31/10030
01/11030
02/11020
03/11020
04/11020
05/11120
  1. 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.

  2. 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.

  3. 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.

  4. 14 a 30 de outubro

    Nenhuma

    17 dias e 63 execuções seguidas sem nenhum erro.

  5. 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.

Quadro em roxo, com as palavras saiu do lugar em dourado
Aurora e ondasSalmo 23:1, do primeiro dia do canal.
Quadro em laranja, com as palavras pelos filisteus em Gate
Brasa e anéisSalmo 56:3, com a reflexão contando o episódio de Davi em Gate.
Quadro em verde, com as palavras gente lembra quem é Deus
Oliva e montesSalmo 27:1, o short lá de cima.

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.