MÓDULO 3.2

⚙️ Agentes em Produção: Agendados & Webhooks

Dois builds reais de ponta a ponta, com erro tratado e debug em produção. Você constrói um agente de pesquisa agendado (cron → Firecrawl → Google Sheets), resolve o OAuth refresh token, depura uma falha que só aparece em prod, monta um relatório por webhook (JSON → .docx → Google Drive), protege o endpoint com Bearer, liga o pipeline GitHub → Trigger.dev e domina o error handling em camadas e o loop humano de debug.

8
Tópicos
~65
Minutos
Inter.
Nível
Prod
Tipo
Progresso do módulo 0% · 0 de 8

Este módulo são dois builds completos rodando em produção. Um é agendado: o cron dispara, o Firecrawl pesquisa, a IA sintetiza e uma linha vai para o Google Sheets. O outro é por evento: um webhook recebe um payload JSON, gera um .docx e salva no Google Drive. O diagrama compara os dois caminhos.

Build 1 · Agendado Cron 8h todo dia Tarefa Firecrawl + síntese Google Sheets linha appendada Build 2 · Webhook Webhook payload JSON · Bearer Tarefa gera .docx Google Drive relatório salvo Em ambos try/catch · retries logs · alertas · traces

Diagrama ilustrativo — recriação conceitual dos dois builds em produção, não uma captura de tela real.

1

📅 Masterclass: agente de pesquisa agendado

O que é

O primeiro build é um agente de pesquisa agendado: uma tarefa do Trigger.dev que roda sozinha toda manhã num horário cron. Ela pesquisa um tópico fixo com o Firecrawl, sintetiza os achados com a IA e escreve uma linha estruturada no Google Sheets. Tudo num arquivo único (ex.: morning-research.ts), com o tópico hard-coded no topo — fácil de mudar e versionar.

Por que aprender

O fluxo de build

1

Conferir pré-requisitos

Repo conectado, conta do Trigger.dev, MCP instalado, projeto inicializado, env vars na nuvem e o Firecrawl MCP com a chave no .env.

2

Prompt em Plan Mode

"Tarefa diária não-supervisionada, tópico fixo, pesquisa com Firecrawl, síntese, escreve uma linha no Sheets, sem perguntas no meio, trata erro sem crashar, loga cada passo."

3

Preparar o Sheet e deployar

Crie a aba Sheet1 com cabeçalho (data, tópico, resumo, fontes, status). Deploy e teste manual no dashboard (não dá para esperar o horário agendado).

Conceitos-chave

🎯 Dica prática

A IA pode não fazer perguntas de esclarecimento e tomar decisões razoáveis sozinha (colunas, tópico) — revise e ajuste depois. Mantenha o tópico hard-coded no topo do arquivo: é trivial de trocar e fica no controle de versão.

Não-supervisionada

Roda sem ninguém.

Tópico fixo

Hard-coded no topo.

Arquivo único

Toda a tarefa num .ts.

Teste manual

Dispara no dashboard.

2

🔁 OAuth refresh token

O que é

Para a tarefa escrever no Google Sheets de forma autônoma, ela precisa de um refresh token OAuth — uma credencial de configuração única que renova o acesso sem login manual. Em vez de uma service account, o build usa OAuth com client ID, client secret e o refresh token, todos no .env e nas env vars da nuvem.

Por que aprender

✓ O caminho que funciona

  • Pegar client ID + secret no Google Cloud Console.
  • Quando o Playground falha, rodar o script de terminal da IA.
  • Colar o refresh token no .env e nas env vars do Trigger.dev.

✗ A armadilha do Playground

  • O OAuth Playground pode dar "access blocked / request is invalid".
  • Não insistir nele — use o fallback de script no terminal.
  • Não esquecer o refresh token no ambiente de produção.

Conceitos-chave

O fallback é elegante: um script no terminal (usando client ID + secret do .env) imprime uma URL de autorização; você abre, autoriza, e o script devolve o refresh token para colar no .env e nas env vars. É o setup feito uma vez — depois a tarefa renova o acesso sozinha a cada execução.

Client ID/secret

Do Cloud Console.

Refresh token

Renova o acesso.

Setup único

Feito uma vez só.

Fallback CLI

Quando o Playground falha.

3

🐞 Debug que só aparece em produção

O que é

Alguns erros só surgem com dados reais em produção. No build agendado, o Firecrawl retornou success: false e colocou os resultados numa propriedade web em vez de data — o shape da resposta diferiu do que o código assumia. A correção: ajustar o parsing, redeployar e disparar de novo.

O shape inesperado (exemplo ilustrativo)
// o código esperava:
{ "success": true, "data": [ ... ] }

// mas em produção veio:
{ "success": false, "web": [ ... ] }   // ← parsing quebra aqui

Por que aprender

Esperar erros do modelo é parte do jogo — ele pode assumir o formato errado de uma resposta de API. O importante é a reação: abrir o passo que falhou, copiar a mensagem de erro completa, colar na IA para diagnosticar, aplicar a correção de parsing, redeployar e disparar de novo. E aqui o tratamento de erro provou seu valor: mesmo com o Firecrawl falhando, a tarefa não crashou e ainda escreveu uma linha parcial no Sheets.

🎯 Dica prática

Depois de deployar, dispare manualmente para testar — não espere o horário agendado. E confirme que a env var existe especificamente no ambiente de produção, não só no de dev.

4

📄 Masterclass: relatório por webhook

O que é

O segundo build é orientado a evento: uma tarefa disparada por webhook. Um formulário web envia um payload JSON (campos como nome da empresa, setor, meta, desafio) para a URL do webhook; a tarefa gera um relatório .docx a partir desses campos e o salva automaticamente no Google Drive. A IA preenche as seções do relatório (sumário executivo, contexto do setor, desafios) a partir de poucos campos de entrada.

Por que aprender

✓ O fluxo do build

  • Prompt: webhook recebe JSON, gera .docx, salva no Drive, sem perguntas, trata erro, loga.
  • Folder ID opcional para organizar a saída no Drive.
  • Testar localmente com um payload de exemplo antes de ligar o formulário.

📊 Ligando um formulário no-code

  • Um gatilho de formulário no n8n + um nó HTTP Request.
  • POST para a URL do webhook (que inclui o ID da task).
  • Corpo como JSON nomeado payload.

Conceitos-chave

A tarefa normaliza os rótulos do formulário para o shape de payload esperado, e a execução pode ser de sucesso total ou parcial. A ordem de teste é sempre: local primeiro (dev server + payload de exemplo), depois com o formulário, e só então em produção. Qualquer formulário/sistema que suporte webhooks + API serve — não está preso a uma ferramenta específica.

Payload JSON

Campos do formulário.

.docx

Relatório gerado.

Google Drive

Folder ID organiza.

Teste local

Antes do formulário.

5

🔔 Webhook como "campainha digital"

O que é

Um webhook é uma "campainha digital": uma URL que escuta dados que chegam e, ao recebê-los, acorda a tarefa, passando o payload adiante. Enquanto o cron dispara por tempo, o webhook dispara por evento. A URL inclui o ID da task (ex.: webhook-report), e ela é compartilhável e embutível — pode vir de um site, um e-mail, outro sistema.

Por que aprender

⚠️ Sem autenticação, qualquer um chama sua tarefa

Uma URL aberta é um convite: qualquer pessoa que a descobrir pode disparar sua tarefa (e gastar seus tokens). A proteção é um header Authorization: Bearer <chave> na requisição.

  • Deixar o webhook sem autenticação.
  • Esquecer o espaço depois de Bearer  antes da chave.
  • Usar a URL de teste em vez da de produção no final.

Conceitos-chave

A requisição HTTP (exemplo ilustrativo)
POST https://.../webhook-report
Authorization: Bearer <chave-da-API>
Content-Type: application/json

{ "payload": { "empresa": "...", "setor": "..." } }
URL escuta

Acorda a tarefa.

ID da task

Vai na URL.

Bearer

Protege o endpoint.

Compartilhável

Site, e-mail, sistema.

6

🔗 Pipeline GitHub → Trigger.dev

O que é

O pipeline GitHub → Trigger.dev fecha o ciclo de iteração: quando você muda algo no editor e dá push para o GitHub, o GitHub faz o deploy automático no Trigger.dev. Os arquivos mais recentes estão sempre no ar, sem deploy manual. É o "commit → push → deploy" rodando sozinho.

Por que aprender

Ligando o GitHub ao Trigger.dev

1

Pedir o fluxo de auto-push à IA

Peça para a IA configurar o fluxo: iterar no editor empurra para o GitHub, que faz deploy no Trigger.dev. Aprove os comandos bash.

2

Adicionar o Repository Secret

No GitHub, em Settings > Secrets and Variables > Actions, crie TRIGGER_ACCESS_TOKEN com o valor da chave secreta do Trigger.dev.

3

Iterar e confirmar no dashboard

A partir daí, cada push aciona o GitHub Actions, que deploya. Confirme no dashboard do Trigger.dev que a versão mais recente está no ar.

Conceitos-chave

commit → push

Você itera no editor.

GitHub Actions

Dispara o deploy.

Repository Secret

TRIGGER_ACCESS_TOKEN.

Sempre no ar

Última versão deployada.

🎯 Dica prática

Com o pipeline no ar, o ciclo de debug em produção fica fluido: você corrige no editor, dá push, e a produção se atualiza sozinha — sem repetir o deploy manual a cada iteração.

7

🛡️ Error handling em camadas

O que é

Sem um agente se auto-curando em produção, o tratamento de erro robusto é o que fecha o agentic gap. A abordagem é em camadas: log significativo em cada passo (visibilidade), try/catch em volta de cada chamada externa, retries configuráveis com backoff e alertas de falha. O Trigger.dev dá visibilidade e retry, mas só consegue retentar o que reconhece como falha.

Por que aprender

1

Camada 1 — Logging

Log claro em cada passo significativo: "Firecrawl retornou 429 na fonte 3", não "task failed". Logs vagos são inúteis.

2

Camada 2 — try/catch

Envolva cada chamada de API externa em try/catch, logue o erro com contexto, continue onde der e só dê throw em falhas críticas.

3

Retries + Alertas

Configure retries (ex.: até 3 com backoff exponencial a partir de 30s) e alertas (Project Settings > Alerts) por e-mail/Slack/webhook.

Conceitos-chave

✓ Boas práticas

  • Logar contexto específico (código de status, qual fonte).
  • Configurar alertas para saber da quebra antes do usuário.
  • Envolver chamadas externas no nível certo.

✗ Erros a evitar

  • Logs genéricos do tipo "task failed".
  • Achar que retries consertam bugs de lógica (só falhas transitórias).
  • Deployar sem nenhum alerta de falha configurado.
8

🔄 O loop humano de debug

O que é

Em produção, a IA ainda depura — mas não mais automaticamente. O loop humano de debug é o ciclo em que você é a ponte: abrir o trace vermelho no dashboard, copiar o erro, colar na IA ("aqui está o trace que falhou, o que está errado, como conserto?"), deixá-la diagnosticar, aplicar a correção e redeployar. O trace + a IA dão diagnóstico rápido; um humano só precisa levar o erro até ela.

Por que aprender

🔁 O ciclo de quatro passos

  • 1.Abrir o trace vermelho (a execução que falhou) no dashboard.
  • 2.Copiar a mensagem de erro completa do passo que quebrou.
  • 3.Colar na IA e deixá-la identificar a causa e o conserto.
  • 4.Redeployar e disparar de novo até passar.

Conceitos-chave

A mudança de mentalidade é deixar de ser o gatilho para configurar gatilhos que rodam enquanto você se afasta. Prompting e leitura de traces ficam mais fáceis com a repetição — o segundo build é sempre mais rápido que o primeiro. E garanta que toda tarefa deployada tenha alertas de falha, para você saber da quebra antes do usuário.

Auto-recuperação (opcional): uma tarefa em produção falha intermitentemente porque a API externa às vezes responde com timeout. Qual recurso é o mais indicado?

📌 Resumo do Módulo

Agente agendado — cron → Firecrawl → síntese → linha no Google Sheets, não-supervisionado.
OAuth refresh token + debug em prod — setup único (fallback via terminal); shape de resposta inesperado.
Relatório por webhook — payload JSON → .docx → Google Drive; campainha digital + Bearer.
Pipeline GitHub → Trigger.dev — push faz deploy automático; última versão sempre no ar.
Error handling + loop de debug — log, try/catch, retries, alertas; trace → IA → corrige → redeploy.

Próxima Trilha:

Trilha 4 — Construindo Frontends & Apps: dar cara de produto à automação.