Etiqueta: workflow

  • n8n | Website Uptime Monitoring

    n8n | Website Uptime Monitoring

    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.