{ "id": "7i2RqqCYaKHUt4n3", "meta": { "instanceId": "workflow-8f739a79", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:59.091467", "updatedAt": "2025-09-29T07:07:59.091486", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Google Site Index - sitemap.xml example", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "4da50fbf-7707-42ea-badc-6748c4ee30db", "name": "When clicking \"Test workflow\"", "type": "n8n-nodes-base.manualTrigger", "position": [ -927, 472 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "9e5bd6c8-a056-462b-b746-60d86bfbe398", "name": "Split Out", "type": "n8n-nodes-base.splitOut", "position": [ 480, 360 ], "parameters": { "options": {}, "fieldToSplitOut": "urlset.url" }, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow." }, { "id": "0d4acf98-31c5-4a0d-bb29-c1d045c0705c", "name": "Check status", "type": "n8n-nodes-base.httpRequest", "onError": "continueErrorOutput", "position": [ 1540, 400 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": { "response": { "response": { "fullResponse": true } } }, "authentication": "{{ $credentials.predefinedCredentialType }}", "nodeCredentialType": "YOUR_CREDENTIAL_HERE" }, "credentials": { "googleOAuth2Api": { "id": "K8Cz9Dy3TR68udv2", "name": "Google account" } }, "retryOnFail": false, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "eee0eba6-3aa3-4841-9d48-8407db1212e2", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "position": [ 1340, 360 ], "parameters": { "options": {} }, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow." }, { "id": "47745d33-8358-45a8-a67d-60f9f0574bae", "name": "Wait", "type": "n8n-nodes-base.wait", "position": [ 2080, 400 ], "webhookId": "44364241-e54b-4b44-aaa1-0d8121a7f497", "parameters": { "unit": "seconds", "amount": "={{ Math.min(1.5,0.3+3*Math.random()).toFixed(2) }}" }, "typeVersion": 1, "notes": "This wait node performs automated tasks as part of the workflow." }, { "id": "9f1bf72e-8ecd-4239-b96f-b77be4c86b18", "name": "URL Updated", "type": "n8n-nodes-base.httpRequest", "position": [ 1840, 400 ], "parameters": { "url": "{{ $env.BASE_URL }}", "method": "POST", "options": {}, "sendBody": true, "authentication": "{{ $credentials.predefinedCredentialType }}", "bodyParameters": { "parameters": [ { "name": "url", "value": "={{ $('Loop Over Items').item.json.loc }}" }, { "name": "type", "value": "URL_UPDATED" } ] }, "nodeCredentialType": "YOUR_CREDENTIAL_HERE" }, "credentials": { "googleOAuth2Api": { "id": "K8Cz9Dy3TR68udv2", "name": "Google account" } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "629eaf34-ef3c-4e9c-9537-69a03310dd9c", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [ -927, 272 ], "parameters": { "rule": { "interval": [ { "triggerAtHour": 2, "triggerAtMinute": 5 } ] } }, "typeVersion": 1.1, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow." }, { "id": "2f95065c-fdc9-4773-87b0-37007ae4f9a5", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -87, 192 ], "parameters": { "width": 851.3475816949383, "height": 340.39627039627067, "content": "## Collect list of URLs\n\nThis part extracts all pages from all sitemaps and sorts by the last modified date `lastmod` (from newest to oldest)" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "33798da1-4fd3-43dc-9ff4-753bae798535", "name": "is new?", "type": "n8n-nodes-base.if", "position": [ 1700, 280 ], "parameters": { "options": { "looseTypeValidation": true }, "conditions": { "options": { "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "and", "conditions": [ { "id": "c8566fc4-57cf-4272-841e-014bb354a37d", "operator": { "type": "dateTime", "operation": "after" }, "leftValue": "={{ $('Loop Over Items').item.json.lastmod }}", "rightValue": "={{ $json.body.latestUpdate.notifyTime }}" } ] } }, "typeVersion": 2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "b5d538ec-d7bc-40ac-9b9e-e5ead9378387", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 1500, 121.07782938758908 ], "parameters": { "width": 504.2424242424241, "height": 431.1089918072487, "content": "## Check URL metadata and update, if:\n* Google returns error (404 error means that this URL was not previously added)\n* Date of article update is after the date of last request to re-index" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "2cc0b088-b09f-4dc2-8027-9e0ff442576b", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ -640, 196.4335593220339 ], "parameters": { "width": 515.8058994999984, "height": 335.72259887005646, "content": "## Get sitemap.xml\nVarious CMS systems often have multiple sitemaps for different content (posts, tags, pages etc). Need to fetch all sitemaps first and then extract all pages from all sitemaps.\n### Remember to update the real sitemap URL!" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "d8dc3b65-0d47-49a7-9042-33dbc5a2e245", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -662.5490981963931, 120.2098305084748 ], "parameters": { "color": 6, "width": 1458.468937875752, "height": 453.3292476478371, "content": "## Feel free to adapt this part depending on your website CMS\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "a763f582-500c-4cc8-b780-672ebc3d0845", "name": "Get content-specific sitemaps", "type": "n8n-nodes-base.splitOut", "position": [ -260, 360 ], "parameters": { "options": {}, "fieldToSplitOut": "sitemapindex.sitemap" }, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow." }, { "id": "e7aa9728-eb9b-454d-a710-561d76841d7a", "name": "Convert sitemap to JSON", "type": "n8n-nodes-base.xml", "position": [ -440, 360 ], "parameters": { "options": {} }, "typeVersion": 1, "notes": "This xml node performs automated tasks as part of the workflow." }, { "id": "496366d7-0d4e-401c-a375-8ca8882e8a32", "name": "Force urlset.url to array", "type": "n8n-nodes-base.set", "position": [ 320, 360 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "8d16114b-1d1a-4522-a550-6c799a44538a", "name": "=urlset.url", "type": "array", "value": "={{ $json.urlset.url[0] ? $json.urlset.url : [$json.urlset.url] }}" } ] } }, "typeVersion": 3.3, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "3a8e00a6-2fa4-4903-943d-890e0078181e", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 820, 120 ], "parameters": { "color": 3, "width": 459.2224448897797, "height": 451.39712985292624, "content": "## Update the `lastmod` and `loc` fields\nThese are pre-defined fields according to [the XML schema for the Sitemap protocol]({{ $env.WEBHOOK_URL }}\n\nIf your CMS system has different field names, please rename them here:\n* the last modified field `lastmod`\n* URL of the page in `loc` field" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "9d841026-ede6-4396-a67b-e1787ffe9a17", "name": "Assign mandatiry sitemap fields", "type": "n8n-nodes-base.set", "position": [ 1000, 360 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "bb0e1337-6fda-4a22-9963-d0b1271fc2a6", "name": "lastmod", "type": "string", "value": "={{ $json.lastmod }}" }, { "id": "e7517c23-f989-4d75-9078-d82c75e51c65", "name": "loc", "type": "string", "value": "={{ $json.loc }}" } ] } }, "typeVersion": 3.3, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "99787654-f554-4650-afc0-c4fa65392c2b", "name": "convert page data to JSON", "type": "n8n-nodes-base.xml", "position": [ 120, 360 ], "parameters": { "options": { "explicitArray": false } }, "typeVersion": 1, "notes": "This xml node performs automated tasks as part of the workflow." }, { "id": "f5cc1725-955c-4eb2-a66f-93153ebf35d1", "name": "Get sitemap.xml", "type": "n8n-nodes-base.httpRequest", "position": [ -620, 360 ], "parameters": { "url": "{{ $env.WEBHOOK_URL }}", "options": {} }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "789076f0-4aa1-469b-afac-af717c0b03c3", "name": "Get content of each sitemap", "type": "n8n-nodes-base.httpRequest", "position": [ -60, 360 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": { "batching": { "batch": { "batchSize": 1, "batchInterval": 150 } } } }, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "b0bdc6d6-1306-4c0c-bec2-7e59d587db69", "name": "Sort", "type": "n8n-nodes-base.sort", "position": [ 640, 360 ], "parameters": { "options": {}, "sortFieldsUi": { "sortField": [ { "order": "descending", "fieldName": "lastmod" } ] } }, "typeVersion": 1, "notes": "This sort node performs automated tasks as part of the workflow." } ], "active": false, "pinData": {}, "settings": { "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "executionOrder": "v1", "saveManualExecutions": true, "saveDataSuccessExecution": "all", "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "5c21ebb6-67df-4bde-9aea-6cc9a7621fc0", "connections": { "0d4acf98-31c5-4a0d-bb29-c1d045c0705c": { "main": [ [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-3d4429a8", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-914313a7", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-7dd736fb", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-10289e2f", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-36ea1c00", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-af75b960", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-6a42159f", "type": "main", "index": 0 } ], [ { "node": "error-handler-0d4acf98-31c5-4a0d-bb29-c1d045c0705c-3381cca0", "type": "main", "index": 0 } ] ] }, "9f1bf72e-8ecd-4239-b96f-b77be4c86b18": { "main": [ [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-83c33d5d", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-5d1c77f1", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-4daea1a1", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-94d884d1", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-de847ced", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-cd895dc1", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-393b9fab", "type": "main", "index": 0 } ], [ { "node": "error-handler-9f1bf72e-8ecd-4239-b96f-b77be4c86b18-231c727e", "type": "main", "index": 0 } ] ] }, "f5cc1725-955c-4eb2-a66f-93153ebf35d1": { "main": [ [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-83ac3bee", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-16115b96", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-acd43999", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-e6b8be46", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-a517ac1f", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-8e5ff7de", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-f236b15b", "type": "main", "index": 0 } ], [ { "node": "error-handler-f5cc1725-955c-4eb2-a66f-93153ebf35d1-316bc762", "type": "main", "index": 0 } ] ] }, "789076f0-4aa1-469b-afac-af717c0b03c3": { "main": [ [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-5a40f1f1", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-0d16756b", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-c75561bb", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-0e80ac28", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-5fe85ef5", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-601b8d8e", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-36bcfc0c", "type": "main", "index": 0 } ], [ { "node": "error-handler-789076f0-4aa1-469b-afac-af717c0b03c3-2e78075b", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Google Site Index - sitemap.xml example. This workflow integrates 12 different services: stickyNote, httpRequest, wait, scheduleTrigger, splitOut. It contains 29 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Google Site Index - sitemap.xml example. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }