Este módulo consiste en dos builds completos que se ejecutan en producción. Uno es programado: el cron se activa, Firecrawl busca, la IA sintetiza y se agrega una fila a Google Sheets. El otro es por evento: un webhook recibe un payload JSON, genera un .docx y guarda en Google Drive. El diagrama compara los dos caminos.
Diagrama ilustrativo — recreación conceptual de los dos builds en producción, no es una captura de pantalla real.
📅 Masterclass: agente de investigación programado
Qué es
El primer build es un agente de investigación programado: una tarea de Trigger.dev que se ejecuta sola cada mañana a una hora programada con cron. Investiga un tema fijo con el Firecrawl, sintetiza los hallazgos con la IA y escribe una línea estructurada en el Google Sheets. Todo en un único archivo (p. ej., morning-research.ts), con el tema hard-coded en la parte superior: fácil de cambiar y versionar.
Por qué aprender
El flujo de build
Verificar los requisitos previos
Repo conectado, cuenta de Trigger.dev, MCP instalado, proyecto inicializado, env vars en la nube y el Firecrawl MCP con la clave en .env.
Prompt en Plan Mode
"Tarea diaria sin supervisión, tema fijo, investigación con Firecrawl, síntesis, escribe una línea en Sheets, sin preguntas durante el proceso, maneja los errores sin bloquearse, registra cada paso."
Preparar el Sheet y hacer deploy
Crea la pestaña Sheet1 con encabezado (fecha, tema, resumen, fuentes, estado). Deploy y prueba manual en el dashboard (no se puede esperar al horario programado).
Conceptos clave
🎯 Consejo práctico
Es posible que la IA no haga preguntas para aclarar y tome decisiones razonables por su cuenta (columnas, tema); revísalas y ajústalas después. Mantén el tema hard-coded al principio del archivo: es muy fácil cambiarlo y queda bajo control de versiones.
Se ejecuta sin nadie.
Hard-coded en la parte superior.
Toda la tarea en un .ts.
Se activa en el dashboard.
🔁 Token de actualización OAuth
Qué es
Para que la tarea escriba en Google Sheets de forma autónoma, necesita un refresh token OAuth: una credencial de configuración única que renueva el acceso sin iniciar sesión manualmente. En lugar de una service account, el build usa OAuth con client ID, client secret y el refresh token, todos en el .env y en las env vars de la nube.
Por qué aprender
✓ El camino que funciona
- ✓Obtener el client ID + secret en Google Cloud Console.
- ✓Cuando falla el Playground, ejecuta el script de terminal de la IA.
- ✓Pegar el refresh token en .env e en las variables de entorno de Trigger.dev.
✗ La trampa del Playground
- ✗OAuth Playground puede mostrar "access blocked / request is invalid".
- ✗No insistas con eso; usa el fallback de script en el terminal.
- ✗No olvides el refresh token en el entorno de producción.
Conceptos clave
El fallback es elegante: un script en la terminal (que usa client ID + secret de .env) imprime una URL de autorización; la abres, autorizas y el script devuelve el refresh token para pegarlo en el .env y en las env vars. La configuración se hace una sola vez; después, la tarea renueva el acceso por su cuenta en cada ejecución.
Desde Cloud Console.
Renueva el acceso.
Hecho una sola vez.
Cuando falla el Playground.
🐞 Error que solo aparece en producción
Qué es
Algunos errores solo aparecen con datos reales en producción. En la compilación programada, Firecrawl devolvió success: false y puso los resultados en una propiedad web en vez de data — o shape de la respuesta fue diferente de lo que el código suponía. La corrección: ajustar el parsing, volver a hacer el deploy y activarlo de nuevo.
// o código esperava: { "success": true, "data": [ ... ] } // mas em produção veio: { "success": false, "web": [ ... ] } // ← parsing quebra aqui
Por qué aprender
Es normal que el modelo cometa errores: puede asumir un formato incorrecto para una respuesta de API. Lo importante es cómo reaccionas: abre el paso que falló, copia el mensaje de error completo, pégalo en la IA para diagnosticar el problema, aplica la corrección del parsing, vuelve a desplegar y ejecútalo otra vez. Y aquí el manejo de errores demostró su valor: aunque Firecrawl falló, la tarea no se bloqueó y aun así escribió una fila parcial en Sheets.
🎯 Consejo práctico
Después de hacer deploy, ejecútalo manualmente para probarlo; no esperes al horario programado. Y confirma que la env var exista específicamente en el entorno de producción, no solo en el de desarrollo.
📄 Masterclass: informe por webhook
Qué es
El segundo build está orientado a eventos: una tarea activada por webhook. Un formulario web envía un payload JSON (campos como nombre de la empresa, sector, meta, desafío) a la URL del webhook; la tarea genera un informe .docx a partir de estos campos y lo guarda automáticamente en el Google Drive. La IA completa las secciones del informe (resumen ejecutivo, contexto del sector, desafíos) a partir de pocos campos de entrada.
Por qué aprender
✓ El flujo de build
- ✓Prompt: webhook recibe JSON, genera .docx, guarda en Drive, sin preguntas, gestiona errores, registra en el log.
- ✓ID de carpeta opcional para organizar la salida en Drive.
- ✓Probar localmente con un payload de ejemplo antes de activar el formulario.
📊 Conectar un formulario no-code
- •Un activador de formulario en n8n + un nodo HTTP Request.
- •POST a la URL del webhook (que incluye el ID de la tarea).
- •Cuerpo como JSON con nombre
payload.
Conceptos clave
La tarea normaliza las etiquetas del formulario para ajustarlas a la estructura de payload esperada, y la ejecución puede ser totalmente exitosa o parcial. El orden de las pruebas siempre es: local primero (servidor de desarrollo + payload de ejemplo), luego con el formulario y solo entonces en producción. Cualquier formulario/sistema que admita webhooks + API sirve; no depende de una herramienta específica.
Campos del formulario.
Informe generado.
El ID de carpeta organiza.
Antes del formulario.
🔔 Webhook como «timbre digital»
Qué es
Un webhook es un "timbre digital": una URL que escucha los datos que llegan y, al recibirlos, activa la tarea y pasa el payload más adelante. Mientras que el cron se activa por tiempo, el webhook se activa por evento. La URL incluye el ID de la task (p. ej., webhook-report) y se puede compartir e insertar: puede venir de un sitio web, un correo electrónico u otro sistema.
Por qué aprender
⚠️ Sin autenticación, cualquiera puede ejecutar tu tarea
Una URL abierta es una invitación: cualquier persona que la descubra puede activar tu tarea (y gastar tus tokens). La protección es un header Authorization: Bearer <chave> en la solicitud.
- ✗Deja el webhook sin autenticación.
- ✗Olvidar el espacio después de
Bearerantes de la clave. - ✗Usar la URL de prueba en lugar de la de producción al final.
Conceptos clave
POST https://.../webhook-report Authorization: Bearer <chave-da-API> Content-Type: application/json { "payload": { "empresa": "...", "setor": "..." } }
Activa la tarea.
Ve a la URL.
Protege el endpoint.
Sitio, correo electrónico, sistema.
🔗 Pipeline GitHub → Trigger.dev
Qué es
O pipeline GitHub → Trigger.dev cierra el ciclo de iteración: cuando cambias algo en el editor y haces push a GitHub, GitHub hace el deploy automático en Trigger.dev. Los archivos más recientes siempre están disponibles, sin deploy manual. Es el «commit → push → deploy» funcionando solo.
Por qué aprender
Conectar GitHub con Trigger.dev
Pedirle a la IA el flujo de auto-push
Pídele a la IA que configure el flujo: iterar en el editor lo envía a GitHub, que hace el deploy en Trigger.dev. Aprueba los comandos bash.
Agregar el Repository Secret
En GitHub, en Settings > Secrets and Variables > Actions, crea TRIGGER_ACCESS_TOKEN con el valor de la clave secreta de Trigger.dev.
Iterar y confirmar en el dashboard
A partir de ahí, cada push activa GitHub Actions, que hace el deploy. Confirma en el dashboard de Trigger.dev que la versión más reciente esté activa.
Conceptos clave
Tú iteras en el editor.
Activa el deploy.
TRIGGER_ACCESS_TOKEN.
Última versión desplegada.
🎯 Consejo práctico
Con el pipeline en marcha, el ciclo de debug en producción se vuelve fluido: corriges en el editor, haces push y producción se actualiza sola, sin repetir la implementación manual en cada iteración.
🛡️ Manejo de errores por capas
Qué es
Sin un agente que se autocure en producción, el manejo robusto de errores es lo que cierra la brecha agentic. El enfoque se organiza en capas: registro significativo en cada paso (visibilidad), try/catch alrededor de cada llamada externa, reintentos configurables con backoff y alertas de error. Trigger.dev ofrece visibilidad y reintentos, pero solo puede volver a intentar lo que reconoce como error.
Por qué aprender
Capa 1 — Logging
Registro claro en cada paso significativo: «Firecrawl devolvió 429 en la fuente 3», no «task failed». Los registros vagos son inútiles.
Capa 2 — try/catch
Envuelve cada llamada a una API externa en try/catch, registra el error con contexto, continúa cuando sea posible y lanza una excepción solo ante fallas críticas.
Retries + alertas
Configura retries (por ejemplo, hasta 3 con backoff exponencial a partir de 30s) y alertas (Project Settings > Alerts) por correo electrónico/Slack/webhook.
Conceptos clave
✓ Buenas prácticas
- ✓Registrar contexto específico (código de estado, cuál fuente).
- ✓Configurar alertas para enterarte de la falla antes que el usuario.
- ✓Envolver las llamadas externas en el nivel adecuado.
✗ Errores que debes evitar
- ✗Registros genéricos del tipo «task failed».
- ✗Creer que los retries corrigen errores de lógica (solo sirven para fallos transitorios).
- ✗Hacer deploy sin configurar ninguna alerta de fallos.
🔄 El ciclo humano de depuración
Qué es
En producción, la IA todavía depura, pero ya no automáticamente. El bucle humano de depuración es el ciclo en el que tú haces de puente: abrir el trace rojo en el dashboard, copiar el error, pegarlo en la IA ("aquí está el trace que falló, ¿qué está mal y cómo lo arreglo?"), dejar que lo diagnostique, aplicar la corrección y volver a hacer el deploy. El trace + la IA permiten un diagnóstico rápido; un humano solo tiene que llevarle el error.
Por qué aprender
🔁 El ciclo de cuatro pasos
- 1.Abrir el trace rojo (la ejecución que falló) en el dashboard.
- 2.Copiar el mensaje de error completo del paso que falló.
- 3.Pegar en la IA y deja que identifique la causa y la solución.
- 4.Volver a desplegar y volver a ejecutarlo hasta que pase.
Conceptos clave
El cambio de mentalidad consiste en dejar de ser el disparador y configurar disparadores que se ejecuten mientras te alejas. El prompting y la lectura de traces se vuelven más fáciles con la práctica: el segundo build siempre es más rápido que el primero. Y asegúrate de que toda tarea desplegada tenga alertas de fallos, para que te enteres del problema antes que el usuario.
Autocuración (opcional): una tarea en producción falla de forma intermitente porque la API externa a veces responde con timeout. ¿Qué recurso es el más indicado?
📌 Resumen del módulo
Próxima Ruta:
Ruta 4 — Creación de frontends y apps: darle apariencia de producto a la automatización.