Blog · · 5 min de lectura

Cómo vigilar precios y cambios en webs de la competencia con n8n e IA

Guía paso a paso para que n8n revise cada día una página, detecte si cambia un precio o un texto y la IA te explique el cambio en un aviso por Telegram o email. Sin programar.

Mirar a mano la web de tus competidores cada semana es de esas tareas que nadie hace. Y justo cuando bajan un precio, sacan una oferta o cambian un servicio, te enteras tarde.

En esta guía montarás en n8n un flujo que visita una o varias páginas cada día, saca el dato que te interesa (un precio, un titular, una tabla de tarifas), lo compara con el de la última vez y, si ha cambiado, te avisa con un resumen escrito por la IA. Funciona igual para vigilar precios, condiciones de envío, menús, horarios o cualquier texto público.

Qué vas a construir

Un flujo de seis piezas:

  1. Schedule Trigger: arranca el flujo cada día a la hora que elijas.
  2. Google Sheets (Get Rows): lee la lista de páginas a vigilar y el último valor guardado.
  3. HTTP Request: descarga cada página.
  4. HTML (Extract HTML Content): saca solo el trozo que te interesa con un selector CSS.
  5. IF: compara el valor nuevo con el guardado.
  6. Basic LLM Chain + aviso: si cambió, la IA redacta qué ha cambiado y te lo manda por Telegram, Slack o email. Después se guarda el valor nuevo en la hoja.

Si ya montaste el informe diario con IA, la estructura te sonará: un horario, unos datos y la IA que los resume.

Antes de empezar: vigila con respeto

Vigilar una web pública una vez al día no es lo mismo que machacarla. Tres reglas sencillas:

  • Revisa las condiciones de uso de la web y su archivo robots.txt. Si prohíben el acceso automatizado, no lo hagas.
  • Pide una página cada vez y pocas veces al día. Para precios, una o dos veces al día es más que suficiente.
  • Usa solo información pública y para tu propio análisis. No copies contenidos ni datos personales.

Paso 1: la hoja con las páginas a vigilar

Crea una hoja de Google Sheets con estas columnas: nombre, url, selector, ultimo_valor y fecha_cambio. Cada fila es una página. Por ejemplo, «Competidor A – tarifa básica», la URL de su página de precios y el selector del elemento donde aparece el precio.

Así puedes añadir o quitar páginas sin tocar el flujo.

Paso 2: Schedule Trigger

Añade un Schedule Trigger con intervalo diario y la hora que te venga bien (por ejemplo, a las 8:00). Comprueba la zona horaria en los ajustes del flujo para que no se dispare a una hora rara.

Paso 3: leer la lista con Google Sheets

Conecta un nodo Google Sheets → Get Row(s) a tu hoja. Cada fila saldrá como un elemento, y n8n repetirá los siguientes pasos para cada una automáticamente.

Paso 4: descargar la página con HTTP Request

Añade un HTTP Request con método GET y la URL desde la hoja ({{ $json.url }}). En las opciones, pide la respuesta como texto, porque lo que quieres es el HTML.

Si vigilas varias páginas de la misma web, activa Batching en las opciones del nodo para espaciar las peticiones. Y activa Retry On Fail: a veces una web tarda en responder.

Paso 5: sacar el dato con el nodo HTML

Añade el nodo HTML con la operación Extract HTML Content. Indica el campo que trae el HTML, un nombre para el valor (por ejemplo, valor_nuevo) y el selector CSS de la hoja.

¿Cómo encuentras el selector? Abre la página en Chrome, haz clic derecho sobre el precio, pulsa Inspeccionar y fíjate en la clase o el identificador del elemento (por ejemplo, .price o #plan-basic .amount). Prueba el flujo con Execute step hasta que salga justo el texto que buscas.

Ojo: algunas webs cargan los precios con JavaScript después de abrir la página. Si el nodo HTML devuelve vacío aunque el selector sea correcto, esa página no se puede leer con un HTTP Request simple. En ese caso, elige otra página (a veces la versión de producto o la de comparación sí trae el precio en el HTML) o vigila otro dato.

Paso 6: ¿ha cambiado? Nodo IF

Antes de comparar, limpia el texto con un Edit Fields (Set): quita espacios sobrantes con {{ $json.valor_nuevo.trim() }}. Luego añade un IF que compruebe si valor_nuevo no es igual a ultimo_valor de la hoja.

  • Rama verdadera: hubo cambio, sigue al paso 7.
  • Rama falsa: no pasa nada y el flujo termina para esa página.

La primera vez, ultimo_valor estará vacío y todo contará como cambio. Ejecuta el flujo una vez para rellenar la hoja y a partir de ahí solo avisará de cambios reales.

Paso 7: la IA explica el cambio

En la rama de cambio, añade un Basic LLM Chain con tu modelo de IA y una instrucción como esta:

Eres un analista de mercado. Compara el valor anterior y el nuevo de esta página de un competidor. Explica en 2 o 3 frases qué ha cambiado y qué podría significar para un pequeño negocio que compite con él. No inventes datos que no aparezcan en el texto. Página: {{ nombre }}. Antes: {{ ultimo_valor }}. Ahora: {{ valor_nuevo }}.

La IA no adivina la estrategia del competidor, pero sí te ahorra leer dos bloques de texto y te pone el cambio en una frase clara. Lo de «no inventes datos» es importante: así el aviso se queda en lo que de verdad ha cambiado.

Paso 8: aviso y guardar el valor nuevo

Añade un nodo de Telegram, Slack o Gmail con el resumen de la IA, el valor anterior, el nuevo y el enlace a la página. Después, un Google Sheets → Update Row que escriba valor_nuevo en ultimo_valor y la fecha en fecha_cambio, usando la URL o el número de fila para localizar la fila correcta.

Así la hoja se convierte también en un historial: con el tiempo verás cada cuánto cambian los precios de cada competidor.

Ideas para ir más allá

  • Resumen semanal: en vez de un aviso por cambio, junta todo con Aggregate y manda un resumen los lunes, como en el análisis de opiniones de clientes.
  • Vigilar tus propias páginas: el mismo flujo te avisa si tu web deja de mostrar un precio o un botón por un error.
  • Errores controlados: si una página cambia de diseño, el selector dejará de funcionar. Monta un aviso cuando el valor salga vacío, como explicamos en errores en n8n: avisos y reintentos.

Coste y límites

  • Coste: el flujo solo llama a la IA cuando hay un cambio, así que el gasto suele ser pequeño. Depende de cuántas páginas vigiles y del modelo; consulta los precios actuales de tu proveedor de IA y de n8n.
  • Límites: no sirve para webs que exigen iniciar sesión ni para las que cargan todo con JavaScript. Para esas hacen falta otras herramientas.
  • Mantenimiento: revisa los selectores cada cierto tiempo. Las webs cambian de diseño y el flujo tiene que adaptarse.

Empieza con plantillas listas

Si quieres ahorrarte la configuración base, descarga gratis el agente de WhatsApp o mira el pack AgentKiosk: 8 agentes listos para importar en n8n, con la parte de IA ya configurada.