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 →
{
"name": "Smart google indexing: sitemap filter and url inspection",
"nodes": [
{
"parameters": {
"url": "={{ $('Configuration').item.json.sitemap_url }}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
448,
0
],
"id": "98a54b6b-b291-41a7-9606-f6caab843610",
"name": "Read Sitemap"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
672,
0
],
"id": "2de4a639-32e0-4574-8a1f-a1e0a9180582",
"name": "Parse XML"
},
{
"parameters": {
"fieldToSplitOut": "urlset.url",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
896,
0
],
"id": "229273f1-204b-42f1-89c5-83a3de0817aa",
"name": "Split Out URLs"
},
{
"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"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
224,
0
],
"id": "cccf0bfb-1aa8-4cb7-b79a-ec4e155ff526",
"name": "Configuration"
},
{
"parameters": {
"method": "POST",
"url": "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleApi",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "inspectionUrl",
"value": "={{ $json.loc }}"
},
{
"name": "siteUrl",
"value": "=sc-domain:{{ $('Configuration').item.json.sitemap_url.extractDomain() }}"
}
]
},
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
1344,
0
],
"id": "54eeab98-1d4c-47d7-9364-48d9ca592943",
"name": "Inspect URLs",
"credentials": {
"googleApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://indexing.googleapis.com/v3/urlNotifications:publish",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleApi",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $('Split Out URLs').item.json.loc }}"
},
{
"name": "type",
"value": "URL_UPDATED"
}
]
},
"options": {
"batching": {
"batch": {
"batchSize": 1
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
1792,
0
],
"id": "4c8b950b-4516-4258-8e4b-209c82bc4c14",
"name": "Publish URLs",
"credentials": {
"googleApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "17259208-b6ae-4299-89c1-a6d96a378bca",
"leftValue": "={{ $json.inspectionResult.indexStatusResult.verdict }}",
"rightValue": "NEUTRAL",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.filter",
"typeVersion": 2.3,
"position": [
1568,
0
],
"id": "9448e217-6039-46e8-a95a-ada17d381372",
"name": "Filter NEUTRAL Verdict"
},
{
"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": "a85f086f-ceb5-49fe-a197-c1c46382cea4",
"name": "Filter Last Modified Pages"
},
{
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
0,
0
],
"id": "f6db303c-52dc-4bbd-9660-a024ba174944",
"name": "Trigger Daily"
},
{
"parameters": {
"content": "### 0. Setup & Prerequisites\nThis workflow selectively indexes pages by filtering for recent updates and checking live status.\n\n**Preparation:**\n1. Enable Search Console & Indexing APIs in Google Cloud.\n2. Add Service Account JSON to n8n credentials.\n3. Verify Service Account email as 'Owner' in GSC.\n4. Set your sitemap URL in the 'Configuration' node.",
"height": 416,
"width": 432
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-256
],
"typeVersion": 1,
"id": "da99b4d2-0fac-473c-a426-015ac2b21b5e",
"name": "Sticky Note"
},
{
"parameters": {
"content": "### 1. Sitemap Processing\nFetches the XML sitemap, parses it to JSON, and splits it into individual URL objects for item-by-item processing.",
"height": 416,
"width": 672,
"color": 2
},
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
-256
],
"typeVersion": 1,
"id": "47bfebf4-cc07-4c3b-a3de-c2312f2ce274",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "### 2. Efficiency Logic\n**Step A:** Filters for pages modified in the last 7 days.\n**Step B:** Inspects current status via GSC API. Only 'NEUTRAL' (not yet indexed or pending) pages proceed to save API quota.",
"height": 416,
"width": 672,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-256
],
"typeVersion": 1,
"id": "9bc87619-c5b1-4e49-a572-cf5f5ddea4da",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "### 3. Google Indexing API\nSends the final list of filtered URLs to Google for priority crawling. \n*Note: This signals Google to crawl, but doesn't guarantee instant indexing.*",
"height": 416,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
1728,
-256
],
"typeVersion": 1,
"id": "e3f7ef4e-9271-49c2-a5a7-d29c63fe119c",
"name": "Sticky Note3"
}
],
"connections": {
"Read Sitemap": {
"main": [
[
{
"node": "Parse XML",
"type": "main",
"index": 0
}
]
]
},
"Parse XML": {
"main": [
[
{
"node": "Split Out URLs",
"type": "main",
"index": 0
}
]
]
},
"Configuration": {
"main": [
[
{
"node": "Read Sitemap",
"type": "main",
"index": 0
}
]
]
},
"Split Out URLs": {
"main": [
[
{
"node": "Filter Last Modified Pages",
"type": "main",
"index": 0
}
]
]
},
"Inspect URLs": {
"main": [
[
{
"node": "Filter NEUTRAL Verdict",
"type": "main",
"index": 0
}
]
]
},
"Filter NEUTRAL Verdict": {
"main": [
[
{
"node": "Publish URLs",
"type": "main",
"index": 0
}
]
]
},
"Filter Last Modified Pages": {
"main": [
[
{
"node": "Inspect URLs",
"type": "main",
"index": 0
}
]
]
},
"Trigger Daily": {
"main": [
[
{
"node": "Configuration",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "89001494-5318-46f5-a1b0-e41eddbf5aa8",
"id": "WS6NJkfgRr7MZHZA",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates the process of filtering your sitemap to identify URLs likely to be indexed by Google, using URL inspection to prioritise fresh or updated content for faster visibility in search results. It's ideal for website owners, SEO specialists, or digital marketers managing content-heavy sites who want to streamline indexing without manual checks. The key step involves parsing the sitemap XML via the XML node, extracting URLs with the Split Out node, then inspecting them through Google's API using httpRequest to filter out neutral verdicts and focus on recently modified pages for targeted submission.
Use this workflow for regularly scheduled sitemap updates on sites with dynamic content, such as blogs or e-commerce platforms, to ensure new pages get indexed promptly without overwhelming Google's servers. Avoid it for static sites with infrequent changes or if you lack access to the Google Search Console API, as it relies on authentication. Common variations include adding email notifications for inspection results or integrating with Google Sheets to log filtered URLs for ongoing monitoring.
About this workflow
Smart google indexing: sitemap filter and url inspection. Uses httpRequest, xml, splitOut, scheduleTrigger. Scheduled trigger; 13 nodes.
Source: https://github.com/vklepikovskiy/n8nplaybook-public/blob/main/workflows/smart-google-indexing.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Automated SEO Indexing via IndexNow & XML Sitemap. Uses scheduleTrigger, httpRequest, xml, splitOut. Scheduled trigger; 9 nodes.
backup. Uses googleDrive, httpRequest. Scheduled trigger; 15 nodes.
Yourang - Complete Workflow Example. Uses n8n-nodes-yourang, httpRequest. Scheduled trigger; 10 nodes.
Arenza — Monthly Competitor Comparison Email. Uses httpRequest, emailSend. Scheduled trigger; 6 nodes.
Politician Research Pipeline. Uses httpRequest, emailSend. Scheduled trigger; 9 nodes.