Automatización con IA

Generación de Informes Semanales

Compila métricas de negocio y genera informes con insights automáticamente

Flujo 03: Generación de Informes Semanales

El problema

El informe semanal de negocio ocupa entre 2 y 4 horas cada viernes: abrir cuatro hojas de cálculo, copiar KPIs, calcular variaciones, escribir el resumen ejecutivo, formatearlo y distribuirlo. Si quien lo hace está de vacaciones o enfermo, el informe no sale. Este flujo lo entrega automáticamente cada viernes a las 17:00, con análisis narrativo generado por Claude a partir de los datos reales de Google Sheets.

Herramientas necesarias

Nodo n8n Función
Schedule Trigger Dispara el flujo cada viernes a las 17:00
Google Sheets Lee los KPIs de la semana actual y la anterior
Set Consolida los datos en un único objeto JSON
HTTP Request Llama a Claude API para generar el análisis
Gmail Envía el informe por email a los stakeholders

Servicios externos:

  • Google Sheets con datos de KPIs actualizados
  • API Key de Anthropic (console.anthropic.com)
  • Cuenta Gmail con OAuth2 en n8n Credentials

Configuración paso a paso

Nodo 1: Schedule Trigger

  • Trigger Interval: Weeks
  • Weeks Between Triggers: 1
  • Trigger on Weekdays: Friday
  • Trigger at Hour: 17
  • Trigger at Minute: 0

Nodo 2: Google Sheets — Leer KPIs semana actual

Añade el nodo Google Sheets y configura:

  • Operation: Read Rows
  • Document ID: ID de tu hoja (extraído de la URL de Google Sheets)
  • Sheet Name: KPIs_Semanales
  • Filters:
    • Column: Semana
    • Value: ={{ $now.toFormat('kkkk-WW') }} (ej: 2025-W14)
  • Return All Columns: ON

Estructura esperada de la hoja KPIs_Semanales:

Semana Ventas_€ Pedidos Ticket_Medio Clientes_Nuevos Satisfaccion_% Tickets_Soporte
2025-W14 42500 87 488 12 94 23
2025-W13 38200 79 483 9 91 31

Nodo 3: Google Sheets — Leer KPIs semana anterior

Clona el nodo anterior. Cambia el filtro de semana a la semana previa usando la expresión: ={{ $now.minus({ weeks: 1 }).toFormat('kkkk-WW') }}

Nodo 4: Set — Consolidar datos

Añade un nodo Set con estos campos:

  • ventas_actual: ={{ $('Semana actual').item.json.Ventas_€ }}
  • ventas_anterior: ={{ $('Semana anterior').item.json.Ventas_€ }}
  • pedidos_actual: ={{ $('Semana actual').item.json.Pedidos }}
  • ticket_medio: ={{ $('Semana actual').item.json.Ticket_Medio }}
  • clientes_nuevos: ={{ $('Semana actual').item.json.Clientes_Nuevos }}
  • satisfaccion: ={{ $('Semana actual').item.json.Satisfaccion_% }}
  • tickets_soporte: ={{ $('Semana actual').item.json.Tickets_Soporte }}
  • variacion_ventas: ={{ Math.round(($('Semana actual').item.json.Ventas_€ - $('Semana anterior').item.json.Ventas_€) / $('Semana anterior').item.json.Ventas_€ * 100) }}

Nodo 5: HTTP Request — Claude API

  • Method: POST
  • URL: https://api.anthropic.com/v1/messages
  • Authentication: Header Auth
    • x-api-key: tu API Key de Anthropic
  • Headers adicionales:
    • anthropic-version: 2023-06-01
    • content-type: application/json
  • Body (JSON):
{
  "model": "claude-3-5-haiku-20241022",
  "max_tokens": 1200,
  "messages": [
    {
      "role": "user",
      "content": "={{ $json.prompt_informe }}"
    }
  ]
}

Crea el campo prompt_informe en el nodo Set anterior con este valor:

Eres el analista de negocio de [EMPRESA]. Genera el informe semanal ejecutivo
para el equipo directivo. Escribe en español, con datos precisos y lenguaje directo.

DATOS DE LA SEMANA {{ $now.toFormat('dd/MM/yyyy') }}:
- Ventas totales: {{ $json.ventas_actual }}€ (semana anterior: {{ $json.ventas_anterior }}€, variación: {{ $json.variacion_ventas }}%)
- Número de pedidos: {{ $json.pedidos_actual }}
- Ticket medio: {{ $json.ticket_medio }}€
- Nuevos clientes: {{ $json.clientes_nuevos }}
- Satisfacción cliente: {{ $json.satisfaccion }}%
- Tickets de soporte abiertos: {{ $json.tickets_soporte }}

Estructura el informe con estas secciones:
1. RESUMEN EJECUTIVO (máximo 3 frases)
2. ANÁLISIS DE VENTAS (variación vs semana anterior con interpretación)
3. PUNTOS POSITIVOS (máximo 3 bullets)
4. ÁREAS DE ATENCIÓN (máximo 3 bullets con dato concreto)
5. ACCIÓN PRIORITARIA PARA LA PRÓXIMA SEMANA (1 recomendación concreta)

Nodo 6: Gmail — Enviar informe

  • Operation: Send Email
  • To: equipo-directivo@tuempresa.com (o múltiples emails separados por comas)
  • Subject: =Informe Semanal {{ $now.toFormat('dd/MM/yyyy') }} — [EMPRESA]
  • Message (expresión):
={{ $json.content[0].text }}

---
Informe generado automáticamente por el sistema de BI de [EMPRESA].
Datos extraídos de Google Sheets a las {{ $now.toFormat('HH:mm') }} del {{ $now.toFormat('EEEE dd/MM/yyyy') }}.
  • Message Type: Text (puedes cambiar a HTML añadiendo etiquetas básicas)

Ejemplo de prompt IA

Eres el analista de negocio de Acme Corp.

DATOS DE LA SEMANA 18/04/2025:
- Ventas totales: 42.500€ (semana anterior: 38.200€, variación: +11,3%)
- Número de pedidos: 87
- Ticket medio: 488€
- Nuevos clientes: 12
- Satisfacción cliente: 94%
- Tickets de soporte abiertos: 23

Estructura el informe con estas secciones:
1. RESUMEN EJECUTIVO
2. ANÁLISIS DE VENTAS
3. PUNTOS POSITIVOS
4. ÁREAS DE ATENCIÓN
5. ACCIÓN PRIORITARIA

Fragmento de la respuesta de Claude:

RESUMEN EJECUTIVO
Semana sólida: ventas +11,3% respecto a la anterior, impulsadas por un incremento
en el ticket medio y un récord de nuevos clientes (12). La satisfacción se mantiene
en máximos históricos con un 94%.

ANÁLISIS DE VENTAS
42.500€ en ventas (+4.300€ vs semana anterior). El ticket medio sube a 488€ (+1%),
lo que sugiere que los clientes están contratando servicios de mayor valor. Con 87
pedidos, la conversión por cliente es la más alta del mes.

PUNTOS POSITIVOS
• Captación de 12 nuevos clientes: +33% respecto a la media mensual de 9/semana
• Satisfacción en 94%: segundo máximo histórico consecutivo
• Reducción de tickets soporte: de 31 a 23 (-26%), indicador de estabilidad del producto

Ahorro estimado

Tarea Antes Con automatización
Recopilar KPIs de 4 hojas 45 min/semana 0 min
Calcular variaciones 30 min/semana 0 min
Redactar resumen ejecutivo 60 min/semana 0 min
Formatear y distribuir 30 min/semana 0 min
Total semanal 2,75 h/semana ~10 min (revisión)

Ahorro neto: ~2,5 horas/semana = 130 horas/año. Coste de Claude por informe: ~€0,003.