¿Qué hace este flujo y qué problema resuelve?
Resumen ejecutivo: este flujo en n8n automatiza la recolección, filtrado y síntesis de señales competitivas públicas (precios, ofertas de empleo, comunicados, menciones en prensa) y entrega un briefing ejecutivo semanal. Resuelve la falta de visibilidad oportuna del equipo directivo al transformar datos dispersos en alertas accionables.
Problema concreto: los equipos directivos pierden tiempo y reaccionan tarde. Por ejemplo, el equipo de estrategia de Novatech Salud detectó una promoción de un competidor clave dos semanas tarde; el resultado fue pérdida de cuota de mercado en una línea específica. Un proceso manual que revisa 10 webs, LinkedIn y Google News consume al menos 6 horas semanales y depende de la atención de una persona.
Qué hace este flujo en términos técnicos y de negocio:
- Ejecuta un cron semanal (configurable) que dispara una serie de nodos en n8n.
- Rastrea páginas públicas de competidores (pricing, páginas de producto y empleo) mediante HTTP Request y parsing con Cheerio/HTML Extract.
- Consume fuentes de noticias (Google News RSS o NewsAPI) para capturar menciones recientes.
- Agrega y normaliza señales en nodos Function/Set para crear un paquete de contexto.
- Envía ese paquete a un LLM (OpenAI/Claude) para sintetizar un briefing ejecutivo de una página, incluyendo líneas de acción.
- Distribuye el briefing por Slack y/o correo, con enlaces a las evidencias originales.
Valor esperado: los directivos reciben, por ejemplo, cada lunes a las 07:00, un briefing de una página que les permite tomar decisiones en la reunión de dirección sin trabajo manual de recopilación. Impacto medible: ahorro de tiempo (6+ horas/semana), reducción del riesgo de reacción tardía y mejora en la calidad de las decisiones estratégicas.
Cuándo usar este flujo
Cuándo usar este flujo
| ✓ Úsalo cuando… | ✗ No lo uses cuando… |
|---|---|
|
|
Prerrequisitos
Requisitos técnicos y de accesos:
- Instancia de n8n accesible y con ejecución programada (self-hosted o n8n.cloud) con permisos para instalar nodos HTTP Request y OpenAI.
- Credenciales API: OpenAI o Claude (ID y secret), NewsAPI o acceso a Google News RSS según preferencia. Alternativa: configuración de un proxy/RSS para Google News si la región lo requiere.
- Acceso a Slack workspace y token de bot para enviar mensajes; o una cuenta SMTP con credenciales para envío de correo.
- Lista de competidores con URLs públicas para scraping y criterios de señales (p. ej. sección /pricing, /careers, /press).
- Política legal/ético: revisión de robots.txt y política de uso de datos de cada sitio; permiso interno para operar scraping en los dominios seleccionados.
Configuración de recursos y límites:
- Límites de API: asegúrese de que el plan de OpenAI/Claude cubra el volumen previsto. Estime tokens por briefing: paquete de contexto ~2.000-6.000 tokens por petición si incluye textos extraídos.
- Almacenamiento temporal: habilite un bucket S3 o similar si planea mantener evidencias (HTML / capturas) más allá del flujo de ejecución.
- Monitoreo y alertas: configure un nodo de error (Error Trigger) y notificaciones a un canal de operaciones para fallos de scraping o errores de cuota.
Ejemplo de prerrequisitos concretos para una pyme (MobiTrans):
- n8n self-hosted en AWS t3.medium
- OpenAI API Key con plan de pago
- NewsAPI key
- Slack Bot token con permisos chat:write
- Lista de 6 competidores con URLs: https://competidor1.com/pricing, https://competidor2.com/careers, etc.
Definición de señales a monitorizar
Explicación detallada: la definición de señales es el primer paso estratégico. Señales bien definidas determinan la relevancia del briefing y reducen ruido. Clasifique señales en tres categorías: cuantitativas (precios, descuentos), cualitativas (comunicados, cambios en la proposición), y de talento (nuevas contrataciones, salidas del equipo).
Proceso recomendado:
- Workshop de 60 minutos con CEO, Chief of Staff y Product Manager para listar decisiones que deben soportarse con inteligencia competitiva.
- Priorice señales: alta (impacto directo en precio/venta), media (posible impacto en roadmap), baja (contexto de mercado).
- Mapeo de fuentes: para cada señal, asigne una URL o feed específico (p. ej. /pricing para precios, LinkedIn company updates para contratación, Google News RSS para menciones).
Configuración de nodos n8n para este paso:
- Node: Set — crear un documento maestro con la lista de competidores y señales. Campos: competitor_name, domain, pricing_path, careers_path, rss_news_url, priority.
- Node: Function — transformar la lista en tareas de scraping por competidor. Código de ejemplo en el campo "Function code": var items = []; items.push({json: {task: 'fetch_pricing', url: url}}); return items;
- Node: SplitInBatches — para procesar competidores uno por uno, evitando sobrecarga y respetando delays.
Consideraciones técnicas y de negocio:
- Respeto a robots.txt: automatice una validación inicial con HTTP Request a https://[DOMINIO]/robots.txt y un nodo Function que rechace paths desautorizados.
- Priorización de señales: evite enviar todo al LLM; agregue un nodo Filter/IF para que solo señales "alta" o "media" entren en la síntesis principal y las "bajas" se guarden en un respaldo.
- Latencia vs. costo: señales que requieren scraping profundo (capturas de precios por SKU) aumentan tokens y tiempo. Balancee frecuencia y detalle.
Ejemplo concreto: para Aurea Retail:
- Competidor: "RápidoShop" — domain: rapidoshop.com — pricing_path: /tienda/precios — careers_path: /empleos — rss_news_url: https://news.google.com/rss/search?q=rapidoshop
- Prioridad: pricing=alta, careers=media, prensa=baja
Prompt de configuración para LLM (copiable):
System: Eres un asistente de síntesis ejecutiva. Mantén el informe a una página. Incluye: resumen ejecutivo, cambios críticos, impacto estimado y recommended next steps.
Este paso convierte estrategia en tareas técnicas claras y auditables dentro de n8n.
Recopilación de datos
Descripción del paso: recopilar datos significa ejecutar peticiones HTTP y consumir feeds, luego normalizar los resultados. La calidad de la síntesis depende de la integridad y la limpieza de estos datos.
Nodos n8n y configuración específica:
- Cron — Programación semanal. Parámetros: Mode=Custom, Schedule=0 7 * * 1 (cada lunes a las 07:00). Output: trigger.
- HTTP Request — Scraping de páginas públicas. Method=GET, URL={{ $json["url"] }}, Response Format=String, Send Query Parameters and Headers según sea necesario. Timeout=60s. Validación: revisar statusCode==200 en un nodo IF.
- HTTP Request para robots.txt — Method=GET, URL=https://[DOMINIO]/robots.txt. Luego Function para validar path permitido.
- HTML Extract / Cheerio — Selectores CSS para extraer precios (p. ej. '.price', '.product__price'), títulos de ofertas de empleo (p. ej. '.job-title'), fechas y cuerpos de comunicados. Configure Selectors por dominio en la Set node inicial para reusar.
- RSS Feed / HTTP Request — Para Google News, use el RSS por búsqueda: https://news.google.com/rss/search?q=[TÉRMINO] o NewsAPI con endpoint /v2/everything. Campos: title, url, publishedAt, source.name.
- Function — Normalización: convertir precios a formato numérico, extraer ISO date, deduplicar por URL.
- SplitInBatches — Control de tasa para evitar bloqueo; sleep entre peticiones (Delay node) de 3-10s según política del sitio.
Consideraciones técnicas y de negocio:
- Manejo de JavaScript dinámico: si la información se carga con JS (Single Page Apps), use un servicio de renderizado (puppet/Playwright) o una API pública del competidor si existe; documente el costo adicional.
- Evidencias: archive snapshots HTML en S3 o DB con metadatos (competitor, path, timestamp). Esto es crítico para auditoría de decisiones posteriores.
- Privacidad y cumplimiento: no recolecte datos personales identificables; si hay dudas, consulte al equipo legal.
Ejemplo operativo concreto (MobiTrans):
- Cron activa el flujo a las 07:00.
- SplitInBatches itera sobre 6 competidores: para "DriveLogistics" ejecuta HTTP Request a https://drivelogistics.com/pricing, extrayendo .price y .plan-name. Convierte "€29/mes" a 29 y registra currency=EUR.
- Consume Google News RSS: https://news.google.com/rss/search?q=drivelogistics&hl=es-419&gl=ES
- Si el site devuelve 403, Storage en bucket "scrape-failures" y alerta a canal de operaciones.
Síntesis con IA
Explicación del paso: una vez normalizados los datos, el LLM sintetiza el briefing. El objetivo es un documento accionable de una página con hallazgos, impacto y recomendaciones. La calidad de la salida depende del prompt, el contexto enviado y la gestión de tokens.
Configuración n8n específica:
- Node: Set — preparar el paquete de contexto: fecha, lista de evidencias (título, url, snippet), cambios detectados (campo estructurado), métricas (precios antes/después).
- Node: OpenAI (o HTTP Request a Claude) — Model=GPT-4o/GPT-5 si disponible; Resource=Completion; Input: system prompt + user prompt. Temperature=0.2 para consistencia; Max tokens=1200-2000 según paquete. Streaming=false.
- Node: Function — postprocesamiento: truncar, convertir a Markdown/HTML, insertar enlaces y notas de evidencia.
- Node: IF — si el LLM indica incertidumbre (pattern matching en la respuesta), crear ticket en Jira o enviar alerta humana para revisión.
Prompts listos para usar (copiables):
System: Eres un asistente de síntesis ejecutiva. Entregas un briefing de máximo 350 palabras. Estructura: 1) Resumen ejecutivo (1-2 líneas) 2) Cambios críticos detectados (bullet points) 3) Impacto estimado (breve) 4) Recomendación operativa (2 acciones concretas) 5) Evidencias (lista con título y URL).
User: Toma estos datos: Fecha: [FECHA]; Competidores: [LISTA_COMPETIDORES]; Evidencias: [EVIDENCIAS_JSON]. Identifica cambios relevantes y prioriza por impacto en ventas y producto. Si la evidencia es ambigua, marca como "verificar" e incluye la razón.
Consideraciones técnicas y de negocio:
- Contexto mínimo: envíe al modelo solo los campos esenciales (resumen de cambios y 3-5 snippets) para controlar tokens y coste.
- Seguridad: no envíe información sensible en el prompt.
- Verificabilidad: incluya siempre la lista de URLs y snippets para auditoría humana posterior. Mantenga un ID de correlación entre el briefing y las evidencias almacenadas.
- Manejo de falsos positivos: añada lógica para filtrar cambios de baja relevancia o auto-referentes (por ejemplo, blogs de empleados sin efecto en mercado).
Ejemplo concreto (Aurea Retail):
- Entrada al LLM: 4 cambios de precios detectados, 1 comunicado de prensa y 2 nuevas ofertas de empleo. El LLM sintetiza: "Resumen: RápidoShop lanzó promoción del 20% en categorías clave, riesgo de canibalización del plan Silver; Recomendación: revisar competitividad de plan Silver y considerar promoción de retención."
Distribución del informe
Descripción: la distribución garantiza que el briefing llegue a las personas correctas en el formato adecuado. Debe ser automática, trazable y con enlaces a evidencias.
Nodos n8n y configuración recomendada:
- Node: Slack — Method=Post Message, Channel=[#canal_directivos], Text={{ $json["briefing_html"] }}; Username="Briefing Competitivo"; Attachments con enlace a evidencias. Use Blocks para formato si el workspace lo soporta.
- Node: Email Send — SMTP credentials. From: "briefing@[empresa].com"; To: [EMAIL_LIST]; Subject: "Briefing Competitivo - [FECHA]"; Body (HTML) = {{ $json["briefing_html"] }}; Adjuntos: PDF generado.
- Node: HTML to PDF (externo o servicio) — convertir el HTML del briefing a PDF para archivo legal o distribución offline. Parámetros: page size=A4, margin=normal.
- Node: S3 Put — almacenar briefing HTML y PDF con clave: briefings/[FECHA]_[HASH].pdf
- Node: Webhook / Share Link — opcionalmente generar enlace seguro con expiración y enviar al canal de dirección.
Consideraciones técnicas y de negocio:
- Formateo: mantenga el briefing en una página (350-450 palabras). Use bullets y un bloque de "Acciones recomendadas" con responsables asignados si es posible.
- Auditoría: registre en la DB o bucket la correspondencia entre briefing y evidencias con metadatos (autor, timestamp, hash).
- Escalado: si una señal es crítica (p. ej. cambio de precio mayor al X%), active flujo paralelo: notificación inmediata a C-level y creación de tarea en herramienta de gestión.
- Compliance: cifre los PDFs si contienen información sensible y limite accesos usando IAM roles en S3.
Ejemplo concreto (envío de MobiTrans):
- Slack: canal #executive-briefings. Mensaje: bloque con "Resumen ejecutivo" en negrita, bullets y botón "Ver evidencias" que abre el S3 pre-signed URL.
- Email: lista: ceo@mobitrans.com, cos@mobitrans.com. Asunto: "Briefing Competitivo (Semana del [FECHA])". Adjunta PDF.
Output esperado del flujo
Descripción del output: al finalizar el flujo, se generan y distribuyen los siguientes artefactos:
- Briefing ejecutivo (HTML y PDF) de una página enviado por Slack y/o email.
- Registro de evidencias en almacenamiento (S3) con snapshots HTML y metadatos.
- Registro de ejecución en n8n con estado y métricas (tiempo de ejecución, tokens usados, errores).
Ejemplo concreto de briefing (datos ficticios):
Fecha: 2026-07-12 Resumen ejecutivo: RápidoShop lanzó una promoción del 20% en la categoría Hogar, y DriveLogistics aumentó tarifas para el plan Pro (+12%). Impacto: riesgo de pérdida de 3-5% de ventas en segmento Silver de Aurea Retail; presión de coste para clientes enterprise de MobiTrans. Cambios críticos: - RápidoShop (rapidoshop.com): promoción 20% en 120 SKUs (evidencia: https://rapidoshop.com/ofertas). Riesgo: canibalización de promociones. - DriveLogistics (drivelogistics.com): ajuste precios Pro de €199 a €224 (evidencia: https://drivelogistics.com/pricing). Impacto: posible migración de clientes a MobiTrans si se mantiene precio competitivo. Recomendaciones: 1) Revisar precio promocional de plan Silver y preparar comunicados de retención para clientes vulnerables (Responsable: Head of Growth). 2) Evaluar contraoferta para clientes Pro en cuentas clave (Responsable: Sales Ops). Evidencias: - "RápidoShop - Ofertas" https://rapidoshop.com/ofertas - "DriveLogistics - Pricing" https://drivelogistics.com/pricing
Metadatos incluidos en salida:
- ID de ejecución: [EXEC_ID]
- Tokens consumidos: 3.200
- Archivos almacenados: s3://briefings/2026-07-12_briefing.pdf
Cómo leerlo: el briefing prioriza hallazgos con acciones concretas y responsables. Cada hallazgo incluye evidencia enlazada para verificación rápida.
| Nodo | Función | Configuración clave |
|---|---|---|
| Cron | Dispara el flujo de recolección en horario periódico. | Programación semanal (CRON editable); zona horaria; opción para ejecución manual y parámetros de fecha rango. |
| HTTP Request (competidores) | Descarga páginas públicas de precio, producto y empleo. | Lista de URLs por competidor; timeout y reintentos; headers user-agent configurables; manejo de rate limits y backoff. |
| HTML Extract / Cheerio | Parsea el HTML y extrae campos estructurados (precio, título, descripción, fecha). | Selectores CSS/XPath versionados; normalización de formatos (moneda, fecha); validación de existencia de nodos. |
| RSS / NewsAPI | Ingesta de menciones en medios y comunicados recientes. | Feeds configurables por fuente; API key para NewsAPI; filtro por palabra clave y recency window. |
| Function / Set (normalización) | Agrega, normaliza y etiqueta señales para crear el paquete de contexto. | Mapeo de campos (origen, tipo, confianza), deduplicación por URL/huella, score de relevancia y metadata (timestamp, extractor). |
| Switch / IF (filtrado) | Clasifica señales por prioridad y regla de alerta. | Reglas booleanas: umbrales de cambio de precio, vacantes críticas, menciones de marca; rutas para alertas inmediatas vs. briefing semanal. |
| OpenAI / LLM | Sintetiza un briefing ejecutivo de una página con líneas de acción. | Prompt template con contexto y ejemplos; modelo y temperatura definibles; límite de tokens; incluir lista de evidencias y enlaces. |
| Slack / Email | Distribuye el briefing y enlaces a evidencias al equipo directivo. | Canales y destinatarios configurables; formato del mensaje (resumen + link a evidencia); adjuntos o enlace al documento almacenado. |
| Storage (Google Sheets / DB / S3) | Almacena evidencias y registros de ejecución para auditoría y trazabilidad. | Tabla o bucket para raw HTML, metadatos y resultado LLM; esquema mínimo: id, fuente, tipo, timestamp, url, confidence, resumen. |
Problemas frecuentes y cómo resolverlos
Lista de errores comunes, con síntoma, causa y solución práctica:
- Error: Scraping falla con 403 o 429
- Síntoma: HTTP Request retorna 403 (Forbidden) o 429 (Too Many Requests).
- Causa: bloqueo por políticas anti-bot o exceso de velocidad.
- Solución: respectar robots.txt, introducir Delay node con intervalos de 5-15s, usar encabezados User-Agent realista, emplear IP rotation o proxies legales, y reducir frecuencia de scraping para ese dominio. Registrar el incidente en bucket de fallos para reintento manual.
- Error: LLM devuelve respuestas vagas o genéricas
- Síntoma: briefing con frases vagas como "posible impacto" sin detalles.
- Causa: prompt insuficiente o paquete de contexto demasiado grande/ruidoso.
- Solución: usar prompt estructurado (vea prompts en Step 3), enviar solo 3-5 snippets representativos en vez de todo el HTML, reducir temperatura a 0.2 y establecer formatos de salida requeridos (JSON o bullets).
- Error: Datos inconsistentes entre ejecuciones
- Síntoma: precios extraídos varían sin razón aparente.
- Causa: selectores CSS no robustos, versiones diferentes del DOM o variabilidad geográfica (precios por IP/país).
- Solución: validar y estandarizar selectores por dominio, usar renderizado en la misma región para consistencia, y almacenar snapshots HTML para auditoría. Documentar la versión de selector y fecha de cambio.
- Error: Exceso de coste por tokens
- Síntoma: facturas de API elevadas.
- Causa: enviar demasiado contexto al LLM, múltiples reintentos y prompts largos.
- Solución: sintetizar y filtrar evidencias antes de enviar al modelo (usar un LLM de menor coste para prefiltrado), establecer límites de tokens y usar modelos más económicos para tareas de extracción.
- Error: Briefing no llega a destinatarios
- Síntoma: Slack o Email falla en el envío.
- Causa: credenciales expiradas o permisos del bot insuficientes.
- Solución: comprobar credenciales en n8n Credentials, renovar tokens, verificar scopes del bot en Slack (chat:write, files:write) y probar envío manual desde n8n. Implementar Retry node y alertas a operaciones en caso de fallo.
Recomendación operativa: documente cada fallo en un runbook y asigne responsables para tiempos de respuesta (p. ej. 24 horas para problemas críticos de entrega, 72 horas para ajuste de selectores).
Adaptaciones del flujo para otros contextos
El flujo base es modular y puede adaptarse a diferentes necesidades. A continuación, variantes prácticas con configuración y ejemplo:
- Alta frecuencia para mercados volátiles
- Descripción: aumentar frecuencia a diaria o por hora para señales críticas.
- Configuración n8n: Cron node con Schedule=0 * * * * (cada hora) o 0 7 * * * (diario), mayor uso de caching y control de cuotas en OpenAI.
- Ejemplo: Fintech "CapitaBank" monitorea movimiento regulatorio y promociones flash de competidores. Se establece un filtro de "alerts" que dispara notificación inmediata cuando cambio de precio >10%.
- Investigación cualitativa profunda
- Descripción: cuando se requiere análisis narrativo y entrevistas, combinar este flujo con un proyecto de IA más profundo (Claude Projects o Manus).
- Configuración n8n: exporte evidencias a un repositorio y cree una tarea en la cola para análisis humano o para un modelo de mayor contexto que soporte project memory.
- Ejemplo: Laboratorio "BioNova" archiva comunicados regulatorios y solicita análisis mensual en profundidad para impacto en pipeline clínico.
- Monitoreo de partners y ecosistema
- Descripción: en lugar de competencia, monitorice partners para oportunidades de colaboración o riesgos de exclusividad.
- Configuración n8n: añadir flags en el Set node que marquen "partner=true" y distintas plantillas de recomendación en el prompt del LLM.
- Ejemplo: Plataforma "SupplyNet" vigila cambios en partners logísticos para identificar riesgos de dependencia y negociar cláusulas SLA.
- Reporte consolidado multisector
- Descripción: consolidar señales de distintas áreas (producto, ventas, regulación) en un informe ejecutivo ampliado.
- Configuración n8n: agrupar outputs por temática con nodos GroupBy y enviar un briefing general + mini-briefings sectoriales a stakeholders relevantes.
- Ejemplo: Holding "GrupoVento" recibe un briefing global y sub-briefings para Retail, SaaS y Logística, cada uno con responsables asignados.
Consideraciones para elegir variante: evalúe coste, urgencia de la señal y requisitos regulatorios. La modularidad de n8n facilita probar una variante en paralelo sin interrumpir la versión productiva.
¿Qué hacer ahora?
Pasos ejecutivos inmediatos (cronograma 2 semanas):
- Semana 1, Día 1: Reunión de 60 minutos entre CEO, Chief of Staff y Head of Data para definir la lista de competidores y priorizar señales. Entregar archivo CSV con columnas: competitor_name, domain, pricing_path, careers_path, news_query, priority.
- Semana 1, Día 3: Equipo técnico configura la instancia n8n y credenciales básicas (OpenAI, Slack/SMTP, NewsAPI). Validación: ejecutar un test de robots.txt contra todos los dominios.
- Semana 1, Día 5: Implementación del flujo básico en n8n: Cron -> Set (lista) -> SplitInBatches -> HTTP Request -> HTML Extract -> Function -> OpenAI -> Slack/Email. Prueba end-to-end con 2 competidores.
- Semana 2: Ajustes operativos: afinado de selectores, establecimiento de límites de tokens, archivo de evidencias en S3 y creación de runbook de errores. Activar envío automátco a canal de dirección al finalizar las pruebas.
Checklist rápido:
- Lista de competidores validada
- Credenciales de APIs en n8n
- Política de scraping aprobada por legal
- Canal Slack y lista de correo configurados
Si desea, puedo generar los nodos n8n exportables (JSON) con la estructura base y los prompts listos para pegar en la configuración de OpenAI/Slack. Indique: 1) número de competidores y 2) preferencia de modelo (OpenAI/Claude).