N
n8n Store
Workflow Market
Weekly Website Link Checker with Auto Alerts for Broken URLs

Weekly Website Link Checker with Auto Alerts for Broken URLs

by oneclick-ai0 views

Description

Categories

🚀 DevOps

Nodes Used

n8n-nodes-base.ifn8n-nodes-base.cronn8n-nodes-base.noOpn8n-nodes-base.slackn8n-nodes-base.functionn8n-nodes-base.stickyNoten8n-nodes-base.httpRequest
PriceFree
Views0
Last Updated11/28/2025
workflow.json
{
  "id": "KtRHK31mHsMCH2kS",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "Weekly Website Link Checker with Auto Alerts for Broken URLs",
  "tags": [],
  "nodes": [
    {
      "id": "db1cc570-15ce-4adf-90f2-b9379a4b1a69",
      "name": "Weekly Cron Trigger",
      "type": "n8n-nodes-base.cron",
      "notes": "This node triggers the workflow every Tuesday at midnight to perform a weekly scan of the blog.",
      "position": [
        -1040,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9698442f-e596-47a0-9710-ac3737ab6923",
      "name": "Scan Blog with HTTP",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "This node sends an HTTP request to the blog sitemap or API (e.g., Screaming Frog) to fetch all links for scanning.",
      "position": [
        -820,
        300
      ],
      "parameters": {
        "url": "https://yourblog.com/sitemap.xml",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "962d6578-f7da-47f1-ac7c-a3ea48bffbc5",
      "name": "Filter Broken Links",
      "type": "n8n-nodes-base.if",
      "notes": "This IF node filters links with a 404 status code to identify broken links.",
      "position": [
        -600,
        300
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "{{$node['Scan Blog with HTTP'].json['status']}}",
              "value2": 404,
              "operation": "equal"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "871fabc3-338f-4255-ac7c-45cc657db203",
      "name": "Create Broken Links List",
      "type": "n8n-nodes-base.function",
      "notes": "This node processes the filtered data and creates a list of broken URLs for reporting.",
      "position": [
        -380,
        200
      ],
      "parameters": {
        "functionCode": "const brokenLinks = [];\nfor (let item of $input.all()) {\n  if (item.json.status === 404) {\n    brokenLinks.push(item.json.url);\n  }\n}\nreturn [{ json: { brokenLinks: brokenLinks } }];\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a4252cb9-0238-4de2-bff8-2bad0013120b",
      "name": "Send Slack Alert",
      "type": "n8n-nodes-base.slack",
      "notes": "This node sends a Slack message to the 'dev-team' channel with the list of broken URLs.",
      "position": [
        -160,
        200
      ],
      "parameters": {
        "text": "🚨 Broken Links Report:\nFound {{ $node['Create Broken Links List'].json['brokenLinks'].length }} broken links:\n{{ $node['Create Broken Links List'].json['brokenLinks'].join('\\n') }}",
        "channel": "dev-team",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "MQ0fgwuS8AzfwFvy",
          "name": "Slack account - test "
        }
      },
      "typeVersion": 1
    },
    {
      "id": "da4eb42b-d2ae-470f-9877-24702ff74978",
      "name": "No Action for Valid Links",
      "type": "n8n-nodes-base.noOp",
      "notes": "This node is a placeholder for valid links (non-404), where no action is taken.",
      "position": [
        -380,
        400
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "cfb5f7ad-4810-4745-ae62-6bda885e9d6b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1020,
        -120
      ],
      "parameters": {
        "color": 5,
        "width": 820,
        "height": 280,
        "content": "## System Architecture\n- **Link Checking Pipeline**:\n  - **Weekly Cron Trigger**: Schedules the workflow to run weekly.\n  - **Scan Blog with HTTP**: Performs HTTP GET requests to check website links.\n- **Alert and Tracking Flow**:\n  - **Filter Broken Links**: Identifies and separates broken links.\n  - **Send Slack Alert**: Notifies the team via Slack about broken URLs.\n  - **Create Broken Links List**: Compiles a list of broken links.\n- **Non-Critical Handling**:\n  - **No Action for Valid Links**: Skips valid links with no further action."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f625694c-fab9-4337-8889-340026af49d7",
  "connections": {
    "Filter Broken Links": {
      "main": [
        [
          {
            "node": "Create Broken Links List",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Action for Valid Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scan Blog with HTTP": {
      "main": [
        [
          {
            "node": "Filter Broken Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly Cron Trigger": {
      "main": [
        [
          {
            "node": "Scan Blog with HTTP",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Broken Links List": {
      "main": [
        [
          {
            "node": "Send Slack Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

相关工作流