Pipeline de Vídeos Automáticos com IA + YouTube — Script Python — Parte 3
render.py, que edita o vídeo, gera a copy com Gemini IA e publica no YouTube, e o setup_oauth.py, que autentica sua aplicação com o Google e gera o token que o workflow usa para operar indefinidamente sem login manual.
ℹ️ Nota Técnica: Os scripts fornecidos são para automação de conteúdo próprio e fins educacionais. Teste sempre em ambiente isolado antes de usar em canais reais. O @CanalQb não se responsabiliza por suspensões ou danos decorrentes de uso fora dos Termos de Serviço do YouTube ou das APIs do Google.
O que fazem o render.py e o setup_oauth.py no pipeline de vídeos automáticos?
render.py é o executor central do pipeline: lê a fila da planilha Google Sheets, baixa o vídeo do Drive, edita com MoviePy para formato 9:16, gera título, descrição e hashtags via Gemini IA e faz o upload para o YouTube com retry automático. O setup_oauth.py é executado apenas uma vez, manualmente, para autenticar sua aplicação com o Google e gerar o OAUTH_REFRESH_TOKEN que o workflow YAML usa para que o render.py acesse o YouTube indefinidamente sem login repetido.
Esses dois scripts são o que o run_notebook.yml da Parte 2 executa a cada ciclo. Sem eles, o workflow YAML tem motor mas não tem o que rodar. E sem o token gerado pelo setup_oauth.py, o render.py não consegue publicar nada no YouTube — a autenticação é o primeiro passo antes de qualquer execução automática.
Se você ainda não leu a Parte 1 (script GAS) e a Parte 2 (workflow YAML), recomendo começar por lá — o Drive, a planilha e os secrets configurados nelas são os recursos que esses scripts consomem.
Como o setup_oauth.py gera o token que libera o acesso permanente ao YouTube?
setup_oauth.py inicia um fluxo OAuth 2.0 com as credenciais da sua aplicação Google Cloud, abre o navegador para você autorizar o acesso uma única vez, e salva o OAUTH_REFRESH_TOKEN resultante. Esse token não expira como os access tokens normais — ele permite que o render.py se reconecte ao YouTube automaticamente em cada execução do workflow, sem precisar de login manual.
Antes de rodar o setup_oauth.py, você precisa de um projeto no Google Cloud com a YouTube Data API v3 habilitada e um par de credenciais OAuth 2.0 criado em Credenciais → ID do cliente OAuth. O tipo deve ser "Aplicativo de área de trabalho". O Client ID e o Client Secret gerados aqui são os mesmos secrets OAUTH_CLIENT_ID e OAUTH_CLIENT_SECRET que você cadastrou no repositório GitHub na Parte 2.
O script é executado uma única vez na sua máquina local — nunca no GitHub Actions. Ele usa o Client ID e o Client Secret para iniciar o fluxo OAuth, abre o navegador para você autorizar o acesso à sua conta YouTube e captura o código de retorno automaticamente. Aqui no @CanalQb, o processo inteiro leva menos de 2 minutos da primeira vez.
Após a autorização, o script imprime o OAUTH_REFRESH_TOKEN no terminal. Você copia esse valor e cadastra como secret no repositório GitHub — exatamente como descrito na Parte 2. A partir daí, o render.py usa esse token para se autenticar com o YouTube em cada execução do workflow, sem nenhuma interação manual.
setup_oauth.py novamente e atualizar o secret no GitHub.
Como o render.py executa o pipeline do início ao fim a cada ciclo?
render.py funciona como orquestrador linear: lê a planilha e pega o primeiro vídeo com status pendente, baixa o arquivo do Drive com verificação de integridade, edita para formato 9:16 com MoviePy, envia o tema para a API Gemini e recebe título, descrição e hashtags em JSON, faz o upload para o YouTube com chunked resumable e retry automático em erros de servidor, e atualiza a planilha com o link publicado. Cada etapa só avança se a anterior foi bem-sucedida.
O script conecta via conta de serviço e lê a primeira linha com status pendente na planilha configurada na Parte 1. Nenhum vídeo é processado duas vezes — o campo de status é atualizado imediatamente ao iniciar o processamento, evitando duplicatas mesmo que o workflow seja disparado manualmente durante uma execução automática.
O arquivo é baixado em diretório temporário e tem o tamanho verificado antes de prosseguir. Se o arquivo vier corrompido ou incompleto — o que acontece mais do que parece em conexões instáveis — o script registra o erro na planilha e interrompe sem comprometer o restante da fila. Esse checkpoint evita uploads de vídeos silenciosamente corrompidos no YouTube.
O script remove os primeiros 3 segundos de intro, recorta o vídeo para formato vertical 9:16 centralizado e normaliza o áudio. Tudo em código — sem abrir nenhum editor. O arquivo editado é salvo em diretório temporário e usado diretamente no upload. O original no Drive não é alterado.
O script envia o tema do vídeo para a API Gemini com um prompt estruturado e recebe um JSON com título viral (até 70 caracteres), descrição com CTA direcionando para o blog configurado no secret URL_DO_BLOG_BLOGGER, e lista de hashtags otimizadas. Nenhuma linha de copy é escrita manualmente — a IA gera tudo a cada ciclo com base no contexto do vídeo.
O envio usa upload resumable em chunks de 10MB. Em erros de servidor (500, 502, 503, 504), o script aguarda 5 segundos e retenta automaticamente sem perder o progresso do upload. Após a publicação bem-sucedida, o link do vídeo é gravado na planilha e os arquivos temporários são deletados.
Por que chunksize=-1 no MediaFileUpload falha silenciosamente em vídeos grandes?
chunksize=-1 no MediaFileUpload da YouTube Data API v3 faz o envio em bloco único — funciona para arquivos abaixo de 200MB em conexões estáveis, mas falha silenciosamente em arquivos maiores ou em conexões instáveis sem lançar exceção clara. O script do @CanalQb resolve isso com chunks de 10MB e retry automático em erros de servidor, garantindo que o upload retome do ponto onde parou em vez de recomeçar do zero.
O que está incluído nos scripts Python disponíveis para compra?
Não são snippets isolados. São dois arquivos Python estruturados em módulos independentes, comentados em PT-BR e testados nos canais do @CanalQb antes de serem disponibilizados. Cada função tem responsabilidade única — você consegue entender, adaptar e expandir sem precisar ser sênior em Python.
Quer o render.py e o setup_oauth.py completos agora?
Dois scripts Python prontos para produção, requirements.txt, guia de configuração OAuth e suporte disponível na Hotmart.
Produto ID T105334652V — Hotmart
Para quem vale a pena adquirir o render.py e o setup_oauth.py?
Se você já tem o script GAS organizando vídeos no Drive e o workflow YAML agendando execuções no GitHub, esses dois scripts são a última peça. Aqui no @CanalQb, validamos que o maior gargalo de quem monta pipelines pela metade é exatamente a autenticação OAuth — que parece complicada mas leva menos de 2 minutos com o setup_oauth.py pronto.
Publica no ritmo de uma equipe sem abrir editor de vídeo. O render.py edita e sobe tudo enquanto você faz outra coisa.
Opera múltiplos canais com uma única base de código — só muda o token OAuth e o ID da planilha por canal.
Distribui conteúdo para YouTube com CTA automático para o blog em cada descrição — tráfego passivo sem esforço adicional.
Entrega volume de publicações para clientes sem aumentar equipe — os scripts viram parte do produto oferecido.
O que o render.py e o setup_oauth.py entregam na prática?
- ✔ Autenticação OAuth 2.0 com geração de refresh token permanente (setup_oauth.py)
- ✔ Leitura de fila na planilha sem risco de processar o mesmo vídeo duas vezes
- ✔ Download do Drive com verificação de integridade antes de qualquer edição
- ✔ Edição automática 9:16 com remoção de intro e normalização de áudio via MoviePy
- ✔ Geração de copy completa via Gemini IA — título, descrição com CTA e hashtags
- ✔ Upload resumable em chunks de 10MB com retry automático em erros de servidor
- ✔ Atualização da planilha com link publicado e limpeza de temporários ao final
- ✔ Integração direta com o GAS (Parte 1) e o run_notebook.yml (Parte 2)
Quer o sistema completo das três partes integrado?
Se você quer pular a configuração parte por parte e já ter tudo funcionando junto — script GAS, workflow YAML e scripts Python — o sistema completo está disponível na Hotmart com suporte incluso. É o mesmo sistema que o @CanalQb usa para processar centenas de vídeos por semana de forma completamente autônoma.
Revise também as publicações anteriores desta série: Parte 1 — Script GAS e Parte 2 — Workflow YAML.
⚠️ 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!