AutomationFlowsWeb Scraping › SEO On-site Audit

SEO On-site Audit

ByJacob @jacobgad on n8n.io

Automated SEO Audit in n8n – Your All-in-One Website Optimization Tool!

Webhook trigger★★★★☆ complexityAI-powered25 nodesHTTP RequestHtml ExtractEmail SendLm Chat Deep SeekChain Llm
Web Scraping Trigger: Webhook Nodes: 25 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #5106 — we link there as the canonical source.

This workflow follows the Chainllm → Emailsend recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "5hGK8AtGnDY7uwZK",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "SEO Audit",
  "tags": [],
  "nodes": [
    {
      "id": "f8927c6f-dfe9-4f07-a3cf-8096a25c9b31",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -208,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "65c73183-c68e-4b17-85d3-db2339069154",
      "name": "HTTP Request - Get Page",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        384,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a55e0a44-cdd7-4295-8229-6e6b968e700b",
      "name": "HTML Extract",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        544,
        320
      ],
      "parameters": {},
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "35d30004-9859-4d9e-8a88-a9c3de88ac58",
      "name": "PageSpeed API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        768,
        1104
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6c9a1496-80f2-484c-a735-36fde73cb695",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2352,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f5416c60-7053-4d76-8ad4-ebb9d6768196",
      "name": "Generate HTML REPORT",
      "type": "n8n-nodes-base.html",
      "position": [
        2112,
        320
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "7a6f39cc-1478-41c9-934a-f667f2a05c72",
      "name": "FUnctions to report",
      "type": "n8n-nodes-base.code",
      "position": [
        1872,
        320
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5ee2b5c8-6b5c-4888-9483-51638c64b808",
      "name": "Check Image",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        432
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "fac001d4-75b6-4973-b323-79804ce39775",
      "name": "Links",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        112
      ],
      "parameters": {},
      "retryOnFail": false,
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "a289e805-e403-4dae-a4bc-5e9732f6f5ed",
      "name": "DeepSeek Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "position": [
        880,
        512
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "80463d6f-b336-4501-a668-59d716c381b4",
      "name": "Title Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        992,
        -224
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "7bfac124-951a-465b-9500-e70e54e7f5f3",
      "name": "Description Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        992,
        -64
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "87220a68-c5a2-44b5-ae57-df8e82f29411",
      "name": "Title",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        -224
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "85506ef5-16fb-4534-884d-66607fcb3ad9",
      "name": "Description",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        -64
      ],
      "parameters": {},
      "typeVersion": 2,
      "alwaysOutputData": false
    },
    {
      "id": "eea293a2-ed3c-404d-97bd-74a06fb7b031",
      "name": "Alts Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        992,
        432
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "24100f61-7e8b-4cc7-a03e-d29d9583e6a6",
      "name": "Density Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        992,
        272
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "f774850c-ef86-4755-9bfb-9971ba188893",
      "name": "Keyword Density",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        272
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "c5118540-2d6e-4c89-a40e-84dd3dc7dbb2",
      "name": "Content Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        992,
        112
      ],
      "parameters": {},
      "typeVersion": 1.7
    },
    {
      "id": "9d707223-f77a-4c9f-9bc8-1acce061004a",
      "name": "Domain",
      "type": "n8n-nodes-base.code",
      "position": [
        432,
        768
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "103435c7-2d14-4363-bfb8-5a73c6d46d0e",
      "name": "Robots.txt",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        592,
        768
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "a28dc3af-7b67-428e-b274-1034b615c07f",
      "name": "Code Analysis",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        608
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "98d22fce-2280-4e94-b6f6-0731ab040034",
      "name": "Sitemap",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        592,
        944
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "e5e4e812-40d2-4931-a798-2bfcfd3fa14f",
      "name": "Robots Analysis",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        768
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "567a8e4a-ae16-49c5-9be5-21c63fb845f3",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        768,
        944
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "b4820ce3-c72b-4237-9ec1-f0d46540484b",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1568,
        160
      ],
      "parameters": {},
      "typeVersion": 3.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "478f199f-124b-47c3-b0be-b90fd88aa848",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 8
          }
        ]
      ]
    },
    "Links": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "FUnctions to report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Title": {
      "main": [
        [
          {
            "node": "Title Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Domain": {
      "main": [
        [
          {
            "node": "Robots.txt",
            "type": "main",
            "index": 0
          },
          {
            "node": "Sitemap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sitemap": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "HTTP Request - Get Page",
            "type": "main",
            "index": 0
          },
          {
            "node": "Domain",
            "type": "main",
            "index": 0
          },
          {
            "node": "PageSpeed API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Robots.txt": {
      "main": [
        [
          {
            "node": "Robots Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        []
      ]
    },
    "Check Image": {
      "main": [
        [
          {
            "node": "Alts Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Description": {
      "main": [
        [
          {
            "node": "Description Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML Extract": {
      "main": [
        [
          {
            "node": "Keyword Density",
            "type": "main",
            "index": 0
          },
          {
            "node": "Links",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check Image",
            "type": "main",
            "index": 0
          },
          {
            "node": "Title",
            "type": "main",
            "index": 0
          },
          {
            "node": "Description",
            "type": "main",
            "index": 0
          },
          {
            "node": "Content Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Alts Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "Code Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 6
          }
        ]
      ]
    },
    "PageSpeed API": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 9
          }
        ]
      ]
    },
    "Title Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Keyword Density": {
      "main": [
        [
          {
            "node": "Density Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Robots Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 7
          }
        ]
      ]
    },
    "Content Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "Density Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "DeepSeek Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Title Analysis",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Description Analysis",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Density Analysis",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Alts Analysis",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Content Analysis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "FUnctions to report": {
      "main": [
        [
          {
            "node": "Generate HTML REPORT",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Description Analysis": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Generate HTML REPORT": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request - Get Page": {
      "main": [
        [
          {
            "node": "HTML Extract",
            "type": "main",
            "index": 0
          },
          {
            "node": "Code Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automated SEO Audit in n8n – Your All-in-One Website Optimization Tool!

Source: https://n8n.io/workflows/5106/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Animal advocates & campaigners who want a weekly briefing on animal-related bills with clear, actionable steps—no manual research needed.

OpenRouter Chat, HTTP Request, Information Extractor +3
Web Scraping

Automate your n8n community job board monitoring with this intelligent workflow that scrapes, analyzes, and delivers opportunities straight to your inbox. Perfect for freelancers, agencies, and develo

HTTP Request, Output Parser Structured, OpenRouter Chat +2
Web Scraping

The workflow is well-designed for CRM analysis with a robust quality control mechanism. The dual-AI approach ensures reliable results, while the webhook integration makes it production-ready for real-

HTTP Request, Chain Llm, Lm Chat Deep Seek
Web Scraping

Receive new messages via a webhook. Retrieve conversation history. Process the message history into a format suitable for an LLM. Demonstrate an AI Assistant processing a user's query. Send the AI Ass

HTTP Request, OpenRouter Chat, Chain Llm
Web Scraping

Track Changes Of Product Prices. Uses htmlExtract, functionItem, httpRequest, writeBinaryFile. Scheduled trigger; 25 nodes.

Html Extract, Function Item, HTTP Request +5