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.
Diagrama ilustrativo — recriação conceitual dos dois builds em produção, não uma captura de tela real.
📅 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
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.
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."
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.
Roda sem ninguém.
Hard-coded no topo.
Toda a tarefa num .ts.
Dispara no dashboard.
🔁 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.
Do Cloud Console.
Renova o acesso.
Feito uma vez só.
Quando o Playground falha.
🐞 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 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.
📄 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.
Campos do formulário.
Relatório gerado.
Folder ID organiza.
Antes do formulário.
🔔 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
Bearerantes da chave. - ✗Usar a URL de teste em vez da de produção no final.
Conceitos-chave
POST https://.../webhook-report Authorization: Bearer <chave-da-API> Content-Type: application/json { "payload": { "empresa": "...", "setor": "..." } }
Acorda a tarefa.
Vai na URL.
Protege o endpoint.
Site, e-mail, sistema.
🔗 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
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.
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.
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
Você itera no editor.
Dispara o deploy.
TRIGGER_ACCESS_TOKEN.
Ú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.
🛡️ 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
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.
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.
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.
🔄 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
Próxima Trilha:
Trilha 4 — Construindo Frontends & Apps: dar cara de produto à automação.