{ "id": 89, "name": "Post RSS feed items from yesterday to Slack", "nodes": [ { "name": "Build our message", "type": "n8n-nodes-base.function", "position": [ 1160, 400 ], "parameters": { "functionCode": "// Create our Slack message\n// This will output a list of RSS items in the following format\n// Title - Description\nlet message = \"*:new: Posts from yesterday :new:*\\n\\n\";\n\n// Loop the input items\nfor (item of items) {\n message += \"*<\" + item.json.link + \"|\" + item.json.title + \">*\\n\" + item.json.contentSnippet + \"\\n\\n\"; \n}\n\n// Return our message\nreturn [{json: {message}}];" }, "typeVersion": 1, "id": "02d94495-39a8-4e5b-b062-8fa23314984f", "notes": "This function node performs automated tasks as part of the workflow." }, { "name": "Every Morning", "type": "n8n-nodes-base.cron", "position": [ 380, 420 ], "parameters": { "triggerTimes": { "item": [ { "hour": 8 } ] } }, "typeVersion": 1, "id": "04f11124-a075-4b47-a7da-3436aa6b2f44", "notes": "This cron node performs automated tasks as part of the workflow." }, { "name": "Get Yesterdays Date", "type": "n8n-nodes-base.dateTime", "position": [ 560, 420 ], "parameters": { "value": "={{Date()}}", "action": "calculate", "options": {}, "duration": 1, "operation": "subtract" }, "typeVersion": 1, "id": "e1e7f17b-4078-438a-b5c0-e131459c0e24", "notes": "This dateTime node performs automated tasks as part of the workflow." }, { "name": "Get the RSS Feed", "type": "n8n-nodes-base.rssFeedRead", "position": [ 740, 420 ], "parameters": { "url": "{{ $env.WEBHOOK_URL }}" }, "typeVersion": 1, "id": "d5deffba-9276-42b5-b511-aeae5fb832d9", "notes": "This rssFeedRead node performs automated tasks as part of the workflow." }, { "name": "If it was published after yesterday", "type": "n8n-nodes-base.if", "position": [ 940, 420 ], "parameters": { "conditions": { "dateTime": [ { "value1": "={{$item(0).$node[\"Get Yesterdays Date\"].json.data}}", "value2": "={{$json[\"pubDate\"]}}", "operation": "before" } ] } }, "typeVersion": 1, "continueOnFail": true, "id": "f34862d9-a439-4e92-a070-de8f8491e3d5", "notes": "This if node performs automated tasks as part of the workflow." }, { "name": "Post to Slack", "type": "n8n-nodes-base.slack", "position": [ 1340, 400 ], "parameters": { "text": "={{$json[\"message\"]}}", "channel": "#news", "blocksUi": { "blocksValues": [] }, "attachments": [], "otherOptions": {} }, "credentials": { "slackApi": { "id": "{{ $credentials.slackApi.id }}", "name": "Slack Access Token" } }, "typeVersion": 1, "id": "1cc94ad9-db4f-49bc-923d-eb41ffcfecde", "notes": "This slack node performs automated tasks as part of the workflow." }, { "id": "error-4eb90417", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "active": false, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "connections": {}, "description": "Automated workflow: Post RSS feed items from yesterday to Slack. This workflow processes data and performs automated tasks.", "meta": { "instanceId": "workflow-207c0eb6", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:51.801347", "updatedAt": "2025-09-29T07:07:51.801425", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Post RSS feed items from yesterday to Slack. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }