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
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 →