Workflow: Scheduletrigger Workflow
Integrations: code, googleSheets, markdown, rssFeedRead, scheduleTrigger, set, splitInBatches, stickyNote, stopAndError, wait

{"meta": {"instanceId": "workflow-a756c4f9", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:58.909029", "updatedAt": "2025-09-29T07:07:58.909089", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "nodes": [{"id": "cfb41f0c-9dd3-46c8-aae1-2f6caaf1a1e3", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [-2440, 220], "parameters": {"rule": {"interval": [{}]}}, "typeVersion": 1.2, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "07d78dcb-1a2d-45f4-b595-734e301c25ee", "name": "Edit Fields", "type": "n8n-nodes-base.set", "onError": "continueRegularOutput", "position": [-1440, 220], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "f3530e8d-0694-4b73-bd9f-f4ce763c059b", "name": "id", "type": "string", "value": "={{ $json.link }}"}, {"id": "e829100d-7301-4ee3-9e8e-782b476b98c3", "name": "title", "type": "string", "value": "={{ $json.title }}"}, {"id": "637000e7-a294-4656-b3b2-36d3ff42ce8d", "name": "output", "type": "string", "value": "={{ $json.content }}"}, {"id": "6626b922-4ac9-4a04-a55d-d02cebeee7f2", "name": "pubDate", "type": "string", "value": "={{ $json.pubDate }}"}, {"id": "134b45eb-3048-40c8-9c1c-2b9d45959de4", "name": "tags", "type": "string", "value": "={{ $json.categories }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "7c7d0915-dfc2-4041-ae0f-6af6e008eab1", "name": "Code", "type": "n8n-nodes-base.code", "onError": "continueRegularOutput", "position": [-1180, 220], "parameters": {"jsCode": "const now = new Date();\nconst setdays = 3; // Edit the Days, if you need the News from more the 3 Days\nconst cutoffDate = new Date();\ncutoffDate.setDate(now.getDate() - setdays); \nreturn $input.all().filter(item => {\n    const pubDate = new Date(Date.parse(item.json.pubDate));\n    return !isNaN(pubDate.getTime()) && pubDate >= cutoffDate;\n});"}, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "d5ac9f75-60a4-4bde-b4c1-ccb2f940d5f8", "name": "Markdown", "type": "n8n-nodes-base.markdown", "onError": "continueRegularOutput", "position": [-900, 460], "parameters": {"html": "={{ $json.output }}", "options": {}, "destinationKey": "YOUR_CREDENTIAL_HERE"}, "typeVersion": 1, "notes": "This markdown node performs automated tasks as part of the workflow."}, {"id": "e7ec484d-f667-4123-acb4-60e0cbdb62e0", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "onError": "continueRegularOutput", "position": [-920, 220], "parameters": {"options": {}}, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "0065ce76-9840-48b2-860c-c4a2928479a8", "name": "Wait", "type": "n8n-nodes-base.wait", "onError": "continueRegularOutput", "position": [-900, 880], "webhookId": "85941a4b-202f-4368-a331-dbfdf018326b", "parameters": {"amount": 2.5}, "typeVersion": 1.1, "alwaysOutputData": true, "notes": "This wait node performs automated tasks as part of the workflow."}, {"id": "06edc173-5352-4810-bc9f-cc24cc263ee6", "name": "Loop Over Items1", "type": "n8n-nodes-base.splitInBatches", "onError": "continueRegularOutput", "position": [-1820, 220], "parameters": {"options": {}}, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "069bc633-9273-471c-a2c7-1559c62eb370", "name": "RSS", "type": "n8n-nodes-base.rssFeedRead", "onError": "continueRegularOutput", "position": [-1800, 480], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}}, "typeVersion": 1.1, "notes": "This rssFeedRead node performs automated tasks as part of the workflow."}, {"id": "6575e570-0a1b-49db-b0b1-938dd2732dd6", "name": "Code1", "type": "n8n-nodes-base.code", "onError": "continueRegularOutput", "position": [-100, 220], "parameters": {"jsCode": "const now = new Date();\nconst setdays = 3; // Edit the Days, if you need the News from more the 3 Days\nconst cutoffDate = new Date();\ncutoffDate.setDate(now.getDate() - setdays);  \n\nconst oldRows = $input.all().filter(item => {\n    const pubDate = new Date(item.json.pubDate);\n    return pubDate < cutoffDate;\n});\noldRows.sort((a, b) => b.json.row_number - a.json.row_number);\nreturn oldRows.map(item => ({ json: { rowNumber: item.json.row_number } }));\n"}, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "d68a46d3-58ea-4cc7-a1f7-ef014f600908", "name": "Loop Over Items2", "type": "n8n-nodes-base.splitInBatches", "onError": "continueRegularOutput", "position": [240, 220], "parameters": {"options": {}}, "typeVersion": 3, "alwaysOutputData": true, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "ed132a67-67fa-42e1-9f73-0b645005a332", "name": "Wait1", "type": "n8n-nodes-base.wait", "onError": "continueRegularOutput", "position": [260, 680], "webhookId": "69b1b17d-85d1-4681-8887-85e2644f4752", "parameters": {"amount": 25}, "typeVersion": 1.1, "notes": "This wait node performs automated tasks as part of the workflow."}, {"id": "61d7aae8-2d3f-4425-9e4b-247aa5fd2cea", "name": "Wait2", "type": "n8n-nodes-base.wait", "onError": "continueRegularOutput", "position": [-660, 220], "webhookId": "69b1b17d-85d1-4681-8887-85e2644f4752", "parameters": {"unit": "minutes", "amount": 1}, "executeOnce": true, "typeVersion": 1.1, "notes": "This wait node performs automated tasks as part of the workflow."}, {"id": "8cf26c46-a2e1-4ea0-8c8b-a948bb77e286", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [-2480, -120], "parameters": {"width": 500, "height": 1340, "content": "## Timer starts the Update every 24 hours and Read the Links out of a Google Sheets File (RSS-Links)"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "b7eb361f-7ff1-436c-82d1-0c348e652a26", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [-1960, -120], "parameters": {"width": 440, "height": 1340, "content": "## Each individual link is scanned and retrieved"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "2037525d-afbe-4aba-9dd4-b00df8560706", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-1500, -120], "parameters": {"width": 480, "height": 1340, "content": "## Everything older than 3 days is removed"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "0e7eff1a-10e0-4f7a-8e2d-4046248878bc", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [-1000, -120], "parameters": {"width": 300, "height": 1340, "content": "## Each entry is saved individually with a waiting time in the Google Sheets file (RSS-Feeds), the waiting time is necessary as Google Sheets would otherwise receive too many hits and block access!"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "8cd16f67-ebc8-4009-81a1-54da9aac47ef", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [-680, -120], "parameters": {"width": 420, "height": 1340, "content": "## Reading the saved entries in the Google Sheets file (RSS-Feeds)"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "ed9d8dc7-e8e7-4441-a43c-8c86a7e0be52", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [-240, -120], "parameters": {"width": 360, "height": 1340, "content": "## Everything that is younger than 3 days will be removed, as we only want to delete the older entries!"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "fbb3391c-bac7-4e2c-8231-a8f48d70c21c", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [140, -120], "parameters": {"width": 360, "height": 1340, "content": "## All entries older than 3 days are deleted here, again with a timer to prevent a Google API block! (RSS-Feeds)"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "3a800065-971b-4f37-bc3f-9c8ade78217e", "name": "Delete News", "type": "n8n-nodes-base.googleSheets", "onError": "continueRegularOutput", "position": [260, 460], "parameters": {"operation": "delete", "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tabellenblatt1"}, "documentId": {"__rl": true, "mode": "list", "value": "1iFwBIRDfUEZFACoL4bXfeT4Ot2i5vWfEew69fYRfz0A", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "RSS-Feeds"}, "startIndex": "={{ $json.rowNumber }}"}, "credentials": {"googleSheetsOAuth2Api": {"id": "pmmVpF25NsJia8r0", "name": "Google Sheets account"}}, "typeVersion": 4.5, "alwaysOutputData": false, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "31d13f16-c9ad-4b08-b129-bb5ed51d4657", "name": "Read News", "type": "n8n-nodes-base.googleSheets", "onError": "continueErrorOutput", "position": [-440, 220], "parameters": {"options": {"outputFormatting": {"values": {"date": "FORMATTED_STRING", "general": "FORMATTED_VALUE"}}, "dataLocationOnSheet": {"values": {"rangeDefinition": "detectAutomatically"}}}, "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tabellenblatt1"}, "documentId": {"__rl": true, "mode": "list", "value": "1iFwBIRDfUEZFACoL4bXfeT4Ot2i5vWfEew69fYRfz0A", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "RSS-Feeds"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "pmmVpF25NsJia8r0", "name": "Google Sheets account"}}, "typeVersion": 4.5, "alwaysOutputData": false, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "13bb0584-96bb-4184-9698-509b34f6be25", "name": "Save News", "type": "n8n-nodes-base.googleSheets", "onError": "continueRegularOutput", "position": [-900, 680], "parameters": {"columns": {"value": {"id": "={{ $json.id }}", "title": "={{ $json.title }}", "output": "={{ $json.output }}", "pubDate": "={{ $json.pubDate }}", "Category": "={{ $json.tags }}"}, "schema": [{"id": "id", "type": "string", "display": true, "removed": false, "required": false, "displayName": "id", "defaultMatch": true, "canBeUsedToMatch": true}, {"id": "title", "type": "string", "display": true, "required": false, "displayName": "title", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "output", "type": "string", "display": true, "required": false, "displayName": "output", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "pubDate", "type": "string", "display": true, "required": false, "displayName": "pubDate", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Category", "type": "string", "display": true, "required": false, "displayName": "Category", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "defineBelow", "matchingColumns": ["id"], "attemptToConvertTypes": false, "convertFieldsToString": false}, "options": {"useAppend": true}, "operation": "appendOrUpdate", "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tabellenblatt1"}, "documentId": {"__rl": true, "mode": "list", "value": "1iFwBIRDfUEZFACoL4bXfeT4Ot2i5vWfEew69fYRfz0A", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "RSS-Feeds"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "pmmVpF25NsJia8r0", "name": "Google Sheets account"}}, "typeVersion": 4.5, "alwaysOutputData": true, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "d3224fc9-d7a7-47c1-9db2-8615499e1124", "name": "Read Links", "type": "n8n-nodes-base.googleSheets", "onError": "continueErrorOutput", "position": [-2200, 220], "parameters": {"options": {"outputFormatting": {"values": {"date": "FORMATTED_STRING", "general": "FORMATTED_VALUE"}}, "dataLocationOnSheet": {"values": {"rangeDefinition": "detectAutomatically"}}}, "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Tabellenblatt1"}, "documentId": {"__rl": true, "mode": "list", "value": "12p3M0Umh_Xlpm4Y04IpOFqE8YOJcCd97wPJNv80X8u4", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "RSS-Links"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "pmmVpF25NsJia8r0", "name": "Google Sheets account"}}, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "error-6418472a", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [1000, 400], "parameters": {"message": "Workflow execution error", "options": {}}}], "pinData": {}, "connections": {"3a800065-971b-4f37-bc3f-9c8ade78217e": {"main": [[{"node": "error-handler-3a800065-971b-4f37-bc3f-9c8ade78217e-d13f657a", "type": "main", "index": 0}]]}, "31d13f16-c9ad-4b08-b129-bb5ed51d4657": {"main": [[{"node": "error-handler-31d13f16-c9ad-4b08-b129-bb5ed51d4657-38ba7a48", "type": "main", "index": 0}]]}, "13bb0584-96bb-4184-9698-509b34f6be25": {"main": [[{"node": "error-handler-13bb0584-96bb-4184-9698-509b34f6be25-a4c9527a", "type": "main", "index": 0}]]}, "d3224fc9-d7a7-47c1-9db2-8615499e1124": {"main": [[{"node": "error-handler-d3224fc9-d7a7-47c1-9db2-8615499e1124-d05360f6", "type": "main", "index": 0}]]}}, "name": "Scheduletrigger Workflow", "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "description": "Automated workflow: Scheduletrigger Workflow. This workflow integrates 10 different services: stickyNote, markdown, wait, code, scheduleTrigger. It contains 27 nodes and follows best practices for error handling and security.", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "notes": "Excellent quality workflow: Scheduletrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}