{ "id": "7i2RqqCYaKHUt4n3", "meta": { "instanceId": "fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a" }, "name": "Google Site Index - sitemap.xml example", "tags": [], "nodes": [ { "id": "4da50fbf-7707-42ea-badc-6748c4ee30db", "name": "When clicking \"Test workflow\"", "type": "n8n-nodes-base.manualTrigger", "position": [ -927, 472 ], "parameters": {}, "typeVersion": 1 }, { "id": "9e5bd6c8-a056-462b-b746-60d86bfbe398", "name": "Split Out", "type": "n8n-nodes-base.splitOut", "position": [ 480, 360 ], "parameters": { "options": {}, "fieldToSplitOut": "urlset.url" }, "typeVersion": 1 }, { "id": "0d4acf98-31c5-4a0d-bb29-c1d045c0705c", "name": "Check status", "type": "n8n-nodes-base.httpRequest", "onError": "continueErrorOutput", "position": [ 1540, 400 ], "parameters": { "url": "=https://indexing.googleapis.com/v3/urlNotifications/metadata?url={{ encodeURIComponent($json.loc) }}", "options": { "response": { "response": { "fullResponse": true } } }, "authentication": "predefinedCredentialType", "nodeCredentialType": "googleOAuth2Api" }, "credentials": { "googleOAuth2Api": { "id": "K8Cz9Dy3TR68udv2", "name": "Google account" } }, "retryOnFail": false, "typeVersion": 4.1 }, { "id": "eee0eba6-3aa3-4841-9d48-8407db1212e2", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "position": [ 1340, 360 ], "parameters": { "options": {} }, "typeVersion": 3 }, { "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 }, { "id": "9f1bf72e-8ecd-4239-b96f-b77be4c86b18", "name": "URL Updated", "type": "n8n-nodes-base.httpRequest", "position": [ 1840, 400 ], "parameters": { "url": "=https://indexing.googleapis.com/v3/urlNotifications:publish", "method": "POST", "options": {}, "sendBody": true, "authentication": "predefinedCredentialType", "bodyParameters": { "parameters": [ { "name": "url", "value": "={{ $('Loop Over Items').item.json.loc }}" }, { "name": "type", "value": "URL_UPDATED" } ] }, "nodeCredentialType": "googleOAuth2Api" }, "credentials": { "googleOAuth2Api": { "id": "K8Cz9Dy3TR68udv2", "name": "Google account" } }, "typeVersion": 4.1 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "id": "e7aa9728-eb9b-454d-a710-561d76841d7a", "name": "Convert sitemap to JSON", "type": "n8n-nodes-base.xml", "position": [ -440, 360 ], "parameters": { "options": {} }, "typeVersion": 1 }, { "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 }, { "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](https://www.sitemaps.org/protocol.html).\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 }, { "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 }, { "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 }, { "id": "f5cc1725-955c-4eb2-a66f-93153ebf35d1", "name": "Get sitemap.xml", "type": "n8n-nodes-base.httpRequest", "position": [ -620, 360 ], "parameters": { "url": "https://wordpress.org/sitemap.xml", "options": {} }, "typeVersion": 4.1 }, { "id": "789076f0-4aa1-469b-afac-af717c0b03c3", "name": "Get content of each sitemap", "type": "n8n-nodes-base.httpRequest", "position": [ -60, 360 ], "parameters": { "url": "={{ $json.loc }}", "options": { "batching": { "batch": { "batchSize": 1, "batchInterval": 150 } } } }, "typeVersion": 4.1 }, { "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 } ], "active": false, "pinData": {}, "settings": { "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": "6", "executionOrder": "v1", "saveManualExecutions": true, "saveDataSuccessExecution": "all" }, "versionId": "5c21ebb6-67df-4bde-9aea-6cc9a7621fc0", "connections": { "Sort": { "main": [ [ { "node": "Assign mandatiry sitemap fields", "type": "main", "index": 0 } ] ] }, "Wait": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "is new?": { "main": [ [ { "node": "URL Updated", "type": "main", "index": 0 } ], [ { "node": "Wait", "type": "main", "index": 0 } ] ] }, "Split Out": { "main": [ [ { "node": "Sort", "type": "main", "index": 0 } ] ] }, "URL Updated": { "main": [ [ { "node": "Wait", "type": "main", "index": 0 } ] ] }, "Check status": { "main": [ [ { "node": "is new?", "type": "main", "index": 0 } ], [ { "node": "URL Updated", "type": "main", "index": 0 } ] ] }, "Get sitemap.xml": { "main": [ [ { "node": "Convert sitemap to JSON", "type": "main", "index": 0 } ] ] }, "Loop Over Items": { "main": [ [], [ { "node": "Check status", "type": "main", "index": 0 } ] ] }, "Schedule Trigger": { "main": [ [ { "node": "Get sitemap.xml", "type": "main", "index": 0 } ] ] }, "Convert sitemap to JSON": { "main": [ [ { "node": "Get content-specific sitemaps", "type": "main", "index": 0 } ] ] }, "Force urlset.url to array": { "main": [ [ { "node": "Split Out", "type": "main", "index": 0 } ] ] }, "convert page data to JSON": { "main": [ [ { "node": "Force urlset.url to array", "type": "main", "index": 0 } ] ] }, "Get content of each sitemap": { "main": [ [ { "node": "convert page data to JSON", "type": "main", "index": 0 } ] ] }, "Get content-specific sitemaps": { "main": [ [ { "node": "Get content of each sitemap", "type": "main", "index": 0 } ] ] }, "When clicking \"Test workflow\"": { "main": [ [ { "node": "Get sitemap.xml", "type": "main", "index": 0 } ] ] }, "Assign mandatiry sitemap fields": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] } } }