Pipeline de Vídeos Automáticos com IA + YouTube — Script YAML para GitHub — Parte 2
run_notebook.yml. É ele que agenda, executa, gerencia credenciais e aciona os scripts Python das Partes seguintes — tudo dentro do GitHub Actions, gratuitamente.
ℹ️ Nota Técnica: Os workflows apresentados são para automação de conteúdo próprio. O @CanalQb não se responsabiliza por uso indevido, violação de termos de serviço de terceiros ou danos causados pela má aplicação das técnicas. Revise sempre os Termos de Uso das plataformas envolvidas.
O que é o arquivo run_notebook.yml e qual é o papel dele no pipeline?
run_notebook.yml é o workflow do GitHub Actions que age como orquestrador do pipeline inteiro. Ele define quando executar (via CRON agendado ou disparo manual), quais scripts Python chamar, como injetar as credenciais de forma segura via secrets e o que fazer após cada execução. Sem ele, os scripts Python da Parte 3 não têm motor — ficam estáticos no repositório sem nunca rodar.
A diferença entre um script que funciona uma vez e um sistema que escala está exatamente aqui. O run_notebook.yml é o que transforma o render.py e o setup_oauth.py — que você vai ver na Parte 3 — em um sistema autônomo que processa vídeos sem você precisar abrir o computador.
Se você ainda não leu a Parte 1 (script Google Apps Script), recomendo começar por lá. O Drive e a planilha configurados no GAS são os mesmos recursos que o workflow YAML consome.
Como o run_notebook.yml executa o pipeline? Os 7 estágios do workflow
O workflow roda em dois modos. No modo automático, um CRON agenda as execuções em horários anti-congestionamento. No modo manual, o workflow_dispatch permite forçar uma execução fora do ciclo normal direto pelo painel do GitHub — útil quando chega um lote novo de vídeos fora do horário programado ou para testar alterações sem alterar o agendamento.
Antes de cada ciclo, o workflow remove automaticamente os registros de execuções anteriores bem-sucedidas. Apenas falhas são mantidas no histórico para auditoria. Isso não é estética — é performance e diagnóstico. Ambientes com histórico acumulado ficam mais lentos e tornam difícil identificar o que quebrou quando algo falha.
A cada execução, o runner do GitHub Actions é provisionado do zero. O workflow instala apenas o necessário: Python na versão correta, dependências do requirements.txt e ferramentas de processamento de vídeo. Esse isolamento elimina o problema de "lixo de execução anterior" — cada ciclo começa limpo, independente do que aconteceu no anterior.
Nenhuma credencial aparece no código YAML. O workflow usa o sistema de Secrets do GitHub para injetar as variáveis sensíveis apenas no ambiente do runner, no momento da execução, e nunca nos logs. Cada secret tem escopo definido — isso facilita a rotação de chaves sem precisar alterar o workflow inteiro.
Com o ambiente pronto e as credenciais injetadas, o workflow chama o render.py — o script Python que lê a fila da planilha, baixa os vídeos do Drive, edita com MoviePy, gera copy via Gemini IA e faz o upload para o YouTube. O workflow é apenas o disparador: ele não sabe o que o script faz, só garante que ele rode nas condições certas.
Após o processamento, o workflow remove as credenciais do ambiente do runner. Se tudo correu bem, apaga o próprio registro de execução. O sistema trabalhou, entregou resultado e não deixou rastro visível — apenas erros ficam auditáveis. Aqui no @CanalQb, chamamos isso de modo stealth: centenas de vídeos processados por semana sem histórico acumulado.
Quando uma execução falha, o workflow registra o erro com timestamp, etapa e mensagem na planilha Google Sheets — a mesma usada pelo script GAS da Parte 1. Isso centraliza o diagnóstico: você tem um único lugar para ver o que o sistema GAS coletou, o que o workflow executou e o que os scripts Python publicaram.
Quais Secrets do GitHub o run_notebook.yml usa e para que serve cada um?
| Secret | Função no workflow |
|---|---|
GDRIVE_CREDENTIALS |
JSON da conta de serviço Google Cloud. Permite que o render.py baixe vídeos do Drive sem autenticação interativa. |
GEMINI_API_KEYS |
Chave da API Gemini (Google AI Studio). Usada pelo render.py para gerar título, descrição e hashtags de cada vídeo. |
ID_PLANILHA_GOOGLE |
ID da planilha Google Sheets que funciona como fila e painel de controle — a mesma configurada no script GAS da Parte 1. |
OAUTH_CLIENT_ID |
Identificação da aplicação no Google Cloud Console. Necessário para autenticar com a YouTube Data API v3 via OAuth 2.0. |
OAUTH_CLIENT_SECRET |
Chave privada da aplicação OAuth. Nunca deve aparecer em código ou log. Gerado junto com o Client ID no Google Cloud. |
OAUTH_REFRESH_TOKEN |
Token gerado pelo setup_oauth.py (Parte 3) na primeira autenticação. Mantém o acesso ao YouTube ativo entre ciclos sem login manual. |
URL_DO_BLOG_BLOGGER |
URL do blog. Injetada automaticamente nas descrições geradas pela IA, direcionando tráfego passivo para monetização. |
Por que o horário do CRON importa mais do que a frequência de execução?
Depois de analisar logs de execuções do pipeline aqui no @CanalQb, identificamos atrasos de até 8 minutos em horários de pico — simplesmente porque o workflow estava agendado em */5 ou 0 * * * *, junto com milhares de outros repositórios. A correção foi simples e os atrasos desapareceram.
Por que usar números primos no CRON reduz colisões entre workflows diferentes?
| Objetivo | Expressão CRON | Motivo |
|---|---|---|
| Verificação horária estável | 7 * * * * |
Minuto 7 tem tráfego mínimo na maioria dos data centers do GitHub. |
| Alta frequência sem pico | */17 * * * * |
17 é primo — nunca coincide com múltiplos de 5 ou 10 em nenhuma hora. |
| Múltiplos workflows no mesmo repo | 13 * * * * e 19 * * * * |
Primos diferentes garantem que os dois nunca executem no mesmo minuto. |
| Máxima estabilidade em produção | 7,23,41,59 * * * * |
Quatro execuções por hora em janelas de baixa disputa global. |
O que está incluído no arquivo run_notebook.yml disponível para compra?
Não é um template genérico de GitHub Actions. É o arquivo run_notebook.yml testado em produção nos canais do @CanalQb, com todas as etapas comentadas em PT-BR, secrets mapeados e integração com o render.py e o setup_oauth.py da Parte 3 já configurada.
Workflow completo com CRON anti-congestionamento, disparo manual e todas as etapas comentadas em PT-BR.
Documento com cada secret necessário, onde gerar e como configurar no repositório GitHub.
Lógica de remoção de histórico de execuções bem-sucedidas já implementada no workflow.
O workflow chama diretamente o render.py e o setup_oauth.py da Parte 3, usando a planilha e o Drive configurados na Parte 1.
Todas as variáveis sensíveis são injetadas via secrets — o arquivo YAML pode ficar público sem risco.
Dúvidas de configuração respondidas pelo canal de suporte da plataforma.
Quer o run_notebook.yml completo com mapa de secrets?
Workflow testado em produção, CRON anti-congestionamento configurado, autolimpeza inclusa e integração com os scripts Python da Parte 3.
Produto ID S105334146O — Hotmart
O que o run_notebook.yml entrega na prática?
- ✔ Execução automática e contínua do pipeline sem servidor próprio
- ✔ Agendamento CRON anti-congestionamento com números primos
- ✔ Disparo manual via workflow_dispatch para lotes fora do ciclo
- ✔ Autolimpeza de histórico — só erros ficam visíveis
- ✔ Ambiente isolado e limpo provisionado a cada ciclo
- ✔ Credenciais protegidas via secrets — zero exposição no código
- ✔ Integração direta com render.py e setup_oauth.py (Parte 3)
- ✔ Registro de erros na planilha Google Sheets (Parte 1) para diagnóstico centralizado
O que vem na Parte 3 desta série?
Na Parte 3, você vai ver os dois scripts Python que o workflow YAML executa: o render.py — responsável por editar o vídeo com MoviePy, gerar a copy com Gemini IA e fazer o upload para o YouTube — e o setup_oauth.py, que autentica sua aplicação com o Google e gera o OAUTH_REFRESH_TOKEN que você cadastra nos Secrets aqui da Parte 2.
Se quiser o sistema completo das três partes já integrado, sem esperar as próximas publicações, ele está disponível na Hotmart com suporte incluso.
⚠️ Aviso: Este post contém link de produto pago. O @CanalQb pode receber comissão por indicações. O conteúdo técnico é gratuito e completo — a compra é opcional e acelera seu acesso ao sistema pronto.

Comentários
Comente só assim vamos crescer juntos!