AutomationFlowsGeneral › Automated SEO Indexing with IndexNow & XML Sitemap

Automated SEO Indexing with IndexNow & XML Sitemap

Original n8n title: Automated SEO Indexing via Indexnow & XML Sitemap

Automated SEO Indexing via IndexNow & XML Sitemap. Uses scheduleTrigger, httpRequest, xml, splitOut. Scheduled trigger; 9 nodes.

Cron / scheduled trigger★★★★☆ complexity9 nodesHTTP RequestXML
General Trigger: Cron / scheduled Nodes: 9 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → XML 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
{
  "name": "Automated SEO Indexing via IndexNow & XML Sitemap",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        0,
        0
      ],
      "id": "9b6fb884-d2f3-4664-922a-aabbd6222b3f",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "url": "={{ $('Configuration').item.json.sitemap_url }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        448,
        0
      ],
      "id": "ebf4d0c8-33fb-408e-95bd-f9515094fb53",
      "name": "Read Sitemap"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.xml",
      "typeVersion": 1,
      "position": [
        672,
        0
      ],
      "id": "5116fe05-5619-4cfd-9b2c-50dbd539aab2",
      "name": "Parse XML"
    },
    {
      "parameters": {
        "fieldToSplitOut": "urlset.url",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        896,
        0
      ],
      "id": "5945d668-0608-4e87-b85d-3323f094b296",
      "name": "Split Out URLs"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "dffb9dd9-e69c-4302-872d-a257d649dda4",
              "leftValue": "={{ $json.lastmod }}",
              "rightValue": "={{ $('Configuration').item.json.modified_after }}",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.3,
      "position": [
        1120,
        0
      ],
      "id": "6917f50d-8471-4240-af25-c7ddfbc092ad",
      "name": "Filter Last Modified Pages"
    },
    {
      "parameters": {
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "loc",
              "renameField": true,
              "outputFieldName": "urlList"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        1344,
        0
      ],
      "id": "093a6adb-d208-4cf9-b255-595c8a4f9e2f",
      "name": "Aggregate URLs"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.indexnow.org/indexnow",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "host",
              "value": "={{ $('Configuration').item.json.sitemap_url.extractDomain() }}"
            },
            {
              "name": "key",
              "value": "={{ $('Configuration').item.json.indexnow_key }}"
            },
            {
              "name": "keyLocation",
              "value": "=https://{{ $('Configuration').item.json.sitemap_url.extractDomain() }}/{{ $('Configuration').item.json.indexnow_key }}.txt"
            },
            {
              "name": "urlList",
              "value": "={{ $json.urlList }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        1568,
        0
      ],
      "id": "1c45c4f1-dcbc-42ab-9425-a68cb6207b92",
      "name": "Send URLs to IndexNow"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "c842ea3f-a4b1-43a5-b517-87573ef7f7eb",
              "name": "sitemap_url",
              "value": "https://example.com/sitemap.xml",
              "type": "string"
            },
            {
              "id": "fa030335-3323-47bc-ae4f-a5bdc06c0e53",
              "name": "modified_after",
              "value": "={{ $now.minus(1, 'week').toISO() }}",
              "type": "string"
            },
            {
              "id": "55ff9efe-e537-4bc9-bdd2-764495fbeb01",
              "name": "indexnow_key",
              "value": "4262631fe57245bd9bd1cef01d1c3fa4",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        224,
        0
      ],
      "id": "0f3a430b-fd33-42e2-b963-5eda88c55fd0",
      "name": "Configuration"
    },
    {
      "parameters": {
        "content": "## Automated SEO Indexing via IndexNow & XML Sitemap\n\nStop waiting for search engines to discover your content updates. This workflow automates the process of notifying search engines (Bing, Yandex, etc.) about new or updated pages using the IndexNow protocol.\n\nBy parsing your XML sitemap and filtering for pages modified within a specific timeframe (e.g., the last week), it ensures your crawl budget is used efficiently and your latest content appears in search results almost instantly.\n\n### How to Configure:\n\n1. **Host your Key:** Generate an IndexNow key and upload the `.txt` file to your website's root directory.\n2. **Setup Configuration Node:**\n   * Enter your `sitemap_url` (e.g., https://yoursite.com/sitemap.xml).\n   * Enter your `indexnow_key`.\n   * Set the `modified_after` variable to define your lookback window (e.g., -7d or a specific ISO date).\n3. **Schedule:** Adjust the Schedule Trigger to your preferred frequency (default is daily).\n4. **Activate:** Once configured, turn the workflow on to start proactive indexing.\n\n\nFor a deep dive into how this workflow works and why it's a game-changer for your SEO strategy, check out our full guide on n8nplaybook.com.\n[Read the full Playbook Article here](https://n8nplaybook.com/post/2026/02/automate-indexnow-seo-n8n-workflow/)",
        "height": 448,
        "width": 1664
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -480
      ],
      "typeVersion": 1,
      "id": "e415a830-b8ec-4dd1-8e96-1ce54205862d",
      "name": "Sticky Note"
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Sitemap": {
      "main": [
        [
          {
            "node": "Parse XML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse XML": {
      "main": [
        [
          {
            "node": "Split Out URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out URLs": {
      "main": [
        [
          {
            "node": "Filter Last Modified Pages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Last Modified Pages": {
      "main": [
        [
          {
            "node": "Aggregate URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate URLs": {
      "main": [
        [
          {
            "node": "Send URLs to IndexNow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "Read Sitemap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false
  },
  "versionId": "a587b137-1795-47ca-bb60-792d63830b31",
  "id": "Sw8xHiqCCaMYwY5c1ejxb",
  "tags": []
}
Pro

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

About this workflow

Automated SEO Indexing via IndexNow & XML Sitemap. Uses scheduleTrigger, httpRequest, xml, splitOut. Scheduled trigger; 9 nodes.

Source: https://github.com/vklepikovskiy/n8nplaybook-public/blob/main/workflows/automate-indexnow-sitemap-sync.json — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Smart google indexing: sitemap filter and url inspection. Uses httpRequest, xml, splitOut, scheduleTrigger. Scheduled trigger; 13 nodes.

HTTP Request, XML
General

backup. Uses googleDrive, httpRequest. Scheduled trigger; 15 nodes.

Google Drive, HTTP Request
General

Yourang - Complete Workflow Example. Uses n8n-nodes-yourang, httpRequest. Scheduled trigger; 10 nodes.

N8N Nodes Yourang, HTTP Request
General

Arenza — Monthly Competitor Comparison Email. Uses httpRequest, emailSend. Scheduled trigger; 6 nodes.

HTTP Request, Email Send
General

Politician Research Pipeline. Uses httpRequest, emailSend. Scheduled trigger; 9 nodes.

HTTP Request, Email Send