n8n | Website Uptime Monitoring

n8n-workflow

Análisis Detallado del Workflow “Website Uptime Monitoring” en n8n

Este workflow está diseñado para monitorear el estado y el contenido de la web https://microagencia.com y enviar alertas por correo electrónico si detecta problemas, además de registrar el estado en Notion.

Aquí está el desglose paso a paso:

  1. Schedule check cada 5 Minutos (ID: 4a46397c…)
    • Tipo de Nodo: n8n-nodes-base.scheduleTrigger (Disparador de Horario)
      • Configuración: minutesInterval: 240 (esto significa que se ejecuta cada 240 minutos, es decir, cada 4 horas). Nota: Aunque el nombre del nodo dice “Every 5 Minutes”, la configuración actual es cada 4 horas.
      • Qué hace: Este es el punto de inicio del workflow. Se activa automáticamente en el intervalo de tiempo configurado, iniciando todo el proceso de monitoreo.
  2. 1. Get Website Content (ID: a9488570…)
    • Tipo de Nodo: n8n-nodes-base.httpRequest (Solicitud HTTP)
    • Configuración:
      • url: https://microagencia.com
      • User-Agent: n8n-monitor/1.0 (Esto identifica la solicitud como proveniente del monitor de n8n).
      • timeout: 15000 (15 segundos para la respuesta).
    • Qué hace: Una vez activado por el nodo “Schedule”, este nodo realiza una solicitud GET a la URL https://microagencia.com. Intenta obtener el contenido HTML de la página. Si hay redirecciones, seguirá hasta 5.
  3. 2. Está caído? (ID: 0a480693…)
    • Tipo de Nodo: n8n-nodes-base.if (Condicional)
    • Conexiones: Tiene dos ramas de salida: una para True (si la condición se cumple) y otra para False (si la condición no se cumple).
    • Condición: statusCode es igual a "200".
    • Qué hace: Este nodo verifica el código de estado HTTP de la respuesta del nodo anterior (“1. Get Website Content”).
      • Si el statusCode es diferente de “200” (rama True): Significa que el sitio está caído o no responde con un “OK”. El flujo se dirige hacia el nodo “Send CRITICAL Alert – Site DOWN”.
      • Si el statusCode es “200” (rama False): Significa que el sitio está respondiendo correctamente. El flujo continúa hacia el nodo “3. Content Cleaner”.
  4. Envía Alert – Sitio DOWN (ID: f717236f…)
    • Tipo de Nodo: n8n-nodes-base.emailSend (Enviar Correo Electrónico)
    • Configuración:
      • fromEmail: microagenciaia@gmail.com
      • toEmail: microagenciaia@gmail.com
      • subject: 🚨 CRITICAL: Website DOWN - microagencia.com
      • text: Un mensaje indicando que el sitio está caído, incluyendo el código de estado HTTP y la marca de tiempo.
    • Qué hace: Se activa si el sitio no devuelve un código de estado 200 (está caído). Envía una alerta crítica por correo electrónico a la dirección especificada.
  5. 3. Limpia contenidos (ID: 18cdf8d6…)
    • Tipo de Nodo: n8n-nodes-base.code (Código JavaScript)
    • Qué hace: Este nodo ejecuta un script JavaScript para “limpiar” el contenido HTML obtenido. La función cleanHtml realiza lo siguiente:
      • Elimina scripts, estilos, encabezados (<head>), y metaetiquetas.
      • Elimina atributos inline como style, onclick, onerror, onload.
      • Elimina todas las etiquetas HTML, dejando solo el texto.
      • Normaliza los espacios (quita múltiples espacios y saltos de línea).
      • Convierte todo el texto a minúsculas.
    • Salida: Este nodo produce un nuevo objeto con el cleanedContent (contenido HTML limpio y en minúsculas), el originalBody, la url y el statusCode.
  6. 4. Validador de contenido dinámico (ID: 11508db1…)
    • Tipo de Nodo: n8n-nodes-base.code (Código JavaScript)
    • Qué hace: Este es otro nodo de código que valida el contenido “limpio” del nodo anterior.
      • keywordToFind = 'microagencia': Define una palabra clave específica (microagencia) que se buscará en el contenido de la página.
      • hasCustomKeyword: Verifica si la keywordToFind está presente en el cleanedContent.
      • isNotEmpty: Comprueba si la longitud del contenido es mayor a 100 caracteres (un umbral de robustez).
      • passed = validationResults.isNotEmpty && validationResults.hasCustomKeyword: Esta es la validación crítica. El sitio se considera que “pasó” las validaciones de contenido si NO está vacío (más de 100 caracteres) Y contiene la palabra clave 'microagencia'.
      • Salida: Genera un objeto con url, statusCode, validations (incluyendo hasCustomKeyword, contentLength, isNotEmpty), passed (booleano indicando si la validación de contenido fue exitosa), checkedKeyword, timestamp, y un debug (con una vista previa del contenido y shouldSendAlert que será true si passed es false).
  7. 5. Check de validación de contenido (ID: 5d5fdb12…)
    • Tipo de Nodo: n8n-nodes-base.if (Condicional)
    • Conexiones: También tiene dos ramas de salida.
    • Condición: ={{ $json.passed }} es igual a false.
    • Qué hace: Este nodo revisa el resultado de la validación del contenido del nodo anterior.
      • Si passed es false (rama True): Significa que la validación de contenido falló (el contenido está vacío o no contiene la palabra clave 'microagencia'). El flujo se dirige hacia el nodo “Send WARNING Alert – Health Issue”.
      • Si passed es true (rama False): Significa que el contenido del sitio pasó las validaciones (no está vacío y contiene la palabra clave). El flujo se dirige hacia el nodo “Create a database page”.
  8. Envia WARNING Alert & Health Issue (ID: 82e91768…)
    • Tipo de Nodo: n8n-nodes-base.emailSend1 (Enviar Correo Electrónico)
    • Configuración:
      • fromEmail: microagenciaia@gmail.com
      • toEmail: microagenciaia@gmail.com
      • subject: ⚠️ WARNING: Website Health Issue – microagencia.com
      • text: Un mensaje de advertencia detallando los problemas de validación (URL, palabra clave buscada, si el contenido no está vacío y la marca de tiempo).
    • Qué hace: Se activa si el sitio responde con un 200 OK, pero el contenido no cumple con los criterios de validación (por ejemplo, falta la palabra clave 'microagencia' o el contenido es demasiado corto). Envía una alerta de advertencia por correo electrónico.
  9. Crea pagina de database (ID: 69ca771d…)
    • Tipo de Nodo: n8n-nodes-base.notion (Notion)
    • Configuración: Crea una nueva página en una base de datos de Notion llamada “Website Monitoring” (ID: 231ad6e7...).
    • Propiedades de la página de Notion:
      • Nombre: microagencia
      • URL: La URL del sitio ({{ $json.url }})
      • keyword: La palabra clave que se revisó ({{ $json.checkedKeyword }})
      • passed: Un checkbox que se marca como true.
    • Qué hace: Se activa si el sitio está funcionando y el contenido pasa todas las validaciones. Registra un nuevo elemento en una base de datos de Notion, indicando que el monitoreo fue exitoso para microagencia.com.