This workflow follows the Discord → HTTP Request recipe pattern — see all workflows that pair these two integrations.
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": "RSS Summary",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-3696,
-464
],
"id": "3095d78f-75ed-4683-817d-e544e7048e71",
"name": "Schedule Trigger"
},
{
"parameters": {
"jsCode": "function isDayBefore(dateString, day = 0) {\n const inputDate = new Date(dateString);\n const today = new Date();\n\n const exceptDay = new Date(today);\n exceptDay.setDate(today.getDate() - day);\n\n return (\n inputDate.getFullYear() === exceptDay.getFullYear() &&\n inputDate.getMonth() === exceptDay.getMonth() &&\n inputDate.getDate() === exceptDay.getDate()\n );\n}\n\n// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nconst DAY_BEFORE_COUNT = 0;\nconst result = [];\nfor (const item of $input.all()) {\n const itemPubDate = item.json.pubDate;\n if(isDayBefore(itemPubDate, DAY_BEFORE_COUNT)){\n result.push(item)\n }\n}\n\nreturn result;"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-2224,
-448
],
"id": "5d3a4716-8cc7-4438-b306-f55c5703b480",
"name": "FilterByPubDate",
"alwaysOutputData": true,
"notesInFlow": true,
"notes": "TODO: improve date control by node instead value in script"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a38f3172-8a9b-40d1-b1e1-de3491ee5027",
"name": "contentSnippet",
"value": "={{ $json['content:encodedSnippet'] }}",
"type": "string"
}
]
},
"includeOtherFields": true,
"include": "selected",
"includeFields": "title,link,pubDate,contentSnippet",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1520,
-544
],
"id": "edc26071-c588-439a-82f1-199702cc208e",
"name": "MappingWithEncodeContent"
},
{
"parameters": {
"assignments": {
"assignments": []
},
"includeOtherFields": true,
"include": "selected",
"includeFields": "title,link,pubDate,contentSnippet",
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1520,
-368
],
"id": "cbabbd1b-2b72-432b-ab70-9e1820d4738e",
"name": "MappingContent"
},
{
"parameters": {},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
-1296,
-448
],
"id": "8994ed5c-1344-4ec0-9fc0-44b8e6ef0542",
"name": "Merge1"
},
{
"parameters": {
"operation": "toText",
"sourceProperty": "choices[0].message.content",
"options": {
"fileName": "=tech-summary-{{$today.minus(1,'day').format('yyyy-MM-dd')}}.md"
}
},
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
-560,
-448
],
"id": "309ebd50-a6e6-49c0-a792-077e11c00b29",
"name": "Convert to File1",
"retryOnFail": true,
"alwaysOutputData": true
},
{
"parameters": {
"resource": "file",
"owner": {
"__rl": true,
"value": "ZLRWeb",
"mode": "list",
"cachedResultName": "ZLRWeb",
"cachedResultUrl": "https://github.com/ZLRWeb"
},
"repository": {
"__rl": true,
"value": "zlrweb.github.io",
"mode": "list",
"cachedResultName": "zlrweb.github.io",
"cachedResultUrl": "https://github.com/ZLRWeb/zlrweb.github.io"
},
"filePath": "=blog/tech-info/summary_{{ $today.format('yyyy-MM-dd') }}.md",
"binaryData": true,
"commitMessage": "=feat: add summary_{{ $today.format('yyyy-MM-dd') }}.md"
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
-400,
-448
],
"id": "8c1e0fe5-9b7c-4f3a-87ab-65d26f92f93c",
"name": "GitHub1",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"authentication": "webhook",
"content": "\u4eca\u65e5\u6c92\u6709\u65b0\u6587\u7ae0\uff01",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-1520,
-176
],
"id": "391e4798-eece-4ce1-91c6-6c49de1c5e87",
"name": "Discord",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"authentication": "webhook",
"content": "=\u4eca\u65e5\u7e3d\u7d50\uff1ahttps://notes.zerolr.net/tech-info/tech-summary-{{$today.minus(1,'day').format('yyyy-MM-dd') }}",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-240,
-448
],
"id": "24fae270-c42c-4fdc-bfaf-16fce4298ca5",
"name": "Discord1",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4.1-nano",
"mode": "list",
"cachedResultName": "GPT-4.1-NANO"
},
"messages": {
"values": [
{
"content": "\u8acb\u6839\u64da\u4ee5\u4e0b\u6307\u793a\u751f\u6210 Markdown \u6280\u8853\u6458\u8981\uff1a\n\n1. \u5168\u6587\u4ee5\u7e41\u9ad4\u4e2d\u6587\u64b0\u5beb\uff0c\u4e26\u5728\u958b\u982d\u8a2d\u7f6e\u6b63\u78ba\u7684 YAML Frontmatter\uff08slug\u3001title\u3001authors: openai\u3001\u4f9d\u64da\u5167\u5bb9\u81ea\u52d5\u751f\u6210\u82f1\u6587 tags\uff09\u3002\n2. \u6bcf\u500b\u4e3b\u984c\u4ee5\u4e8c\u7d1a\u6a19\u984c\uff08##\uff09\u5448\u73fe\uff0c\u6a19\u984c\u9700\u7cbe\u7c21\u660e\u78ba\u3002\n3. \u6bcf\u500b\u4e3b\u984c\u6bb5\u843d\u524d\u52a0\u5165\u9069\u5408\u8a72\u5167\u5bb9\u7684 emoji\uff0c\u8b93\u5206\u6bb5\u66f4\u6e05\u6670\u3002\n4. \u6bcf\u500b\u4e3b\u984c\u4e0b\u65b9\u52a0\u5165\u4f86\u6e90\u7db2\u5740\uff08**Source:**\uff09\uff0c\u4e26\u4ee5\u689d\u5217\u5f0f\u7e3d\u7d50\u8a72\u6bb5\u5167\u5bb9\u91cd\u9ede\u3002\u7e3d\u7d50\u9700\u6db5\u84cb\u90e8\u5206\u539f\u59cb\u7bc4\u4f8b\u7684\u4e0a\u4e0b\u6587\uff0c\u5305\u62ec\u7a0b\u5f0f\u78bc\u7247\u6bb5\u548c\u5716\u7247\uff08\u4ee5 Markdown \u8a9e\u6cd5\u63d2\u5165\uff09\u3002\n5. \u689d\u5217\u91cd\u9ede\u9700\u5177\u9ad4\u3001\u7c21\u660e\uff0c\u5305\u542b\u6280\u8853\u4eae\u9ede\u3001\u7bc4\u4f8b\u61c9\u7528\u3001\u5be6\u4f5c\u6d41\u7a0b\u7b49\u3002\n6. summary \u5167\u5bb9\u4fdd\u7559\u90e8\u5206\u7bc4\u4f8b\u4e0a\u4e0b\u6587\u3001\u7a0b\u5f0f\u78bc\u53ca\u5716\u7247\u3002\n7. \u6bcf\u7bc7\u6587\u7ae0\u6700\u5f8c\u4e00\u6bb5\u9700\u7528 `<!-- truncate -->` \u6a19\u7c64\u5206\u9694\uff0c\u4e4b\u5f8c\u518d\u5217\u51fa\u5f8c\u7e8c\u4e3b\u984c\u3002\n8. tags \u5fc5\u9808\u4f9d\u64da\u6bcf\u500b\u4e3b\u984c\u5167\u5bb9\u81ea\u52d5\u751f\u6210\uff0c\u4e26\u4ee5\u82f1\u6587\u8868\u793a\u3002\n9. \u8acb\u4f9d\u64da\u4ee5\u4e0b\u7bc4\u4f8b\u683c\u5f0f\u8f38\u51fa(\u4e0d\u5305\u542b ```markdown)\uff1a\n\n```markdown\n---\nslug: tech-summary-2025-06-16\ntitle: TechSummary 2025-06-16\nauthors: openai\ntags: [AI, Technology, Summary]\n---\n\n# TechSummary 2025-06-16\n\n## \u6a19\u984c\u4e00 \ud83d\ude80\n\n**Source:** https://example.com\n\n- \u91cd\u9ede1\n- \u7bc4\u4f8b\u7a0b\u5f0f\u78bc\u7247\u6bb5\n ```python\n print(\"Hello World\")\n ```\n- \u5716\u7247\u8aaa\u660e \n\n<!-- truncate -->\n\n## \u6a19\u984c\u4e8c \ud83d\udca1\n\n**Source:** https://example.com\n\n- \u91cd\u9ede2\n- \u76f8\u95dc\u6280\u8853\u89e3\u6790\n- \u5be6\u4f5c\u5efa\u8b70\n```\n\n**What Changed:** \n\u2022 \u660e\u78ba\u5206\u6b65\u8aaa\u660e\uff0c\u6613\u65bc\u7406\u89e3\u8207\u64cd\u4f5c \n\u2022 \u7d71\u4e00\u683c\u5f0f\u8207\u689d\u5217\u5f0f\u91cd\u9ede\uff0c\u6a19\u6e96\u5316 emoji \u5206\u6bb5 \n\u2022 \u5f37\u5316 tags \u8207 Frontmatter \u81ea\u52d5\u5316\u751f\u6210\u908f\u8f2f \n\u2022 \u660e\u78ba\u8981\u6c42\u7bc4\u4f8b\u7a0b\u5f0f\u78bc\u53ca\u5716\u7247\u5d4c\u5165 \n\u2022 \u689d\u5217\u5f0f\u5448\u73fe summary\uff0c\u63d0\u5347\u91cd\u9ede\u805a\u7126 \n\u2022 \u56b4\u8b39\u7d50\u69cb\uff0c\u4fbf\u65bc\u591a\u4e3b\u984c\u62d3\u5c55\u8207\u5f8c\u7e8c\u7dad\u8b77\n\n**Techniques Applied:** \n\u2022 Constraint-based structuring \n\u2022 Output spec layering \n\u2022 Example-rich, context-preserving formatting\n\n**Pro Tip:** \n\u53ef\u76f4\u63a5\u7528\u65bc ChatGPT \u6216 Claude\uff0c\u8b93 AI \u81ea\u52d5\u5316\u751f\u6210\u9ad8\u54c1\u8cea\u7e41\u4e2d\u6280\u8853\u6458\u8981\uff0c\u9069\u5408\u5468\u5831\u3001\u6280\u8853\u90e8\u843d\u683c\u3001\u7522\u54c1\u66f4\u65b0\u7b49\u5834\u666f\u3002",
"role": "system"
},
{
"content": "- \u4f60\u662f\u4e00\u4f4d\u5c08\u696d\u4e14\u7d93\u9a57\u8c50\u5bcc\u7684 Tech Leader\n- \u64c5\u9577\u4ee5\u689d\u5217\u5f0f\u65b9\u5f0f\u6574\u7406\u6587\u7ae0\n- \u64c5\u9577\u4ee5\u8868\u683c\u4f86\u6bd4\u8f03\u4e0d\u540c\u5dee\u7570\n- \u6703\u5f9e\u5176\u4ed6\u9762\u5411\u601d\u8003\u554f\u984c\n- \u6703\u6839\u64da\u6587\u7ae0\u5167\u5bb9\uff0c\u7522\u751f\u6a19\u984c\n- \u6703\u5728\u6587\u7ae0\u958b\u982d\u6703\u5beb\u4e00\u5c0f\u6bb5\u5167\u5bb9\u7c21\u4ecb\n- \u6703\u5728\u6587\u7ae0\u672b\u7aef\u52a0\u4e0a\u81ea\u5df1\u7684\u770b\u6cd5\n- \u6703\u5728\u6587\u7ae0\u672b\u7aef\u52a0\u4e0a\u53c3\u8003\u4f86\u6e90\u9023\u7d50",
"role": "assistant"
},
{
"content": "={{ $json.toJsonString() }}"
}
]
},
"simplify": false,
"options": {
"maxToolsIterations": 5
}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
-880,
-448
],
"id": "fb5db581-f123-4dca-b978-d88de8cd512e",
"name": "SummaryAssistant",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "=https://raw.githubusercontent.com/ZLRWeb/zlrweb.github.io/refs/heads/main/blog/tech-info/summary_{{ $today.format('yyyy-MM-dd') }}.md",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-3456,
-464
],
"id": "9898f2fe-83a7-4212-987f-f828d42d3fcf",
"name": "CheckIsSummaryExists",
"alwaysOutputData": false,
"retryOnFail": false,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"authentication": "webhook",
"content": "\u4eca\u65e5\u6587\u7ae0\u5df2\u5b58\u5728\uff01",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-2608,
-864
],
"id": "e23f78a1-3c85-4c89-adbc-db9e49fae04b",
"name": "Discord2",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "7155d172-e49c-43aa-b0fe-f9bf7e9075fb",
"leftValue": "={{ $json.error.status }}",
"rightValue": 404,
"operator": {
"type": "number",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-2976,
-464
],
"id": "8a6eabf5-2c86-40a2-b2d2-89f629444ffd",
"name": "IsSummaryNotFound",
"alwaysOutputData": true
},
{
"parameters": {
"authentication": "webhook",
"content": "=\u672a\u77e5\u932f\u8aa4: {{$json.toJsonString()}}",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-2608,
-704
],
"id": "47e49e99-33db-4e2d-b7b0-80e6f36b5899",
"name": "Discord3",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"resource": "file",
"operation": "delete",
"owner": {
"__rl": true,
"value": "ZLRWeb",
"mode": "list",
"cachedResultName": "ZLRWeb",
"cachedResultUrl": "https://github.com/ZLRWeb"
},
"repository": {
"__rl": true,
"value": "zlrweb.github.io",
"mode": "list",
"cachedResultName": "zlrweb.github.io",
"cachedResultUrl": "https://github.com/ZLRWeb/zlrweb.github.io"
},
"filePath": "=blog/tech-info/summary_{{ $today.format('yyyy-MM-dd') }}.md",
"commitMessage": "=chore: remove summary_{{ $today.format('yyyy-MM-dd') }}.md"
},
"type": "n8n-nodes-base.github",
"typeVersion": 1.1,
"position": [
-3360,
-144
],
"id": "b90ea7bf-9142-43ad-ace3-7b47893f8c33",
"name": "GitHub",
"credentials": {
"githubApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"authentication": "webhook",
"content": "\u5df2\u522a\u9664\u4eca\u65e5\u6587\u7ae0\uff01",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-3168,
-144
],
"id": "5ea5cf4b-ff4e-4ce0-8e05-754531f91118",
"name": "Discord4",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "let result = \"\";\nconst now = new Date();\nconst tody = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`;\nresult += `# TechSummary ${tody}\\n\\n`\n\n// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n const json = item.json;\n const title = json.title;\n const link = json.link;\n const contentSnippet = json.contentSnippet;\n\n result += `## ${title}\\n\\n`;\n result += `**Source:** ${link}\\n\\n`;\n result += `**Content:** ${contentSnippet}\\n\\n`;\n}\n\nreturn [{data: result}]"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-1104,
-448
],
"id": "bdc3b86a-da55-4ac2-9c5d-ea2ef4ab4ae1",
"name": "MarkdownFormat"
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"leftValue": "={{ $json.keys() }}",
"rightValue": "content:encoded",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
},
"id": "6e846b77-ff26-43d2-aefe-1e90fc7a77f5"
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "content:encoded"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "04159c84-cfd4-4f51-a2a9-584142e65e69",
"leftValue": "={{ $json.keys() }}",
"rightValue": "content",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "content"
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
-1856,
-448
],
"id": "273ca944-f7de-410f-b227-759ee12ab696",
"name": "Switch"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "a96d1df6-c62a-4915-bee9-4b2a988b8e57",
"leftValue": "={{ $json.error.keys() }}",
"rightValue": "status",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-3200,
-464
],
"id": "e9b27db3-ddbf-489d-bcd5-226f6821507a",
"name": "hasErrorStatus",
"alwaysOutputData": false
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "4a9de9c0-9c3c-421b-a1cb-5b739a054ba4",
"leftValue": "={{ $json.isEmpty() }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-2064,
-448
],
"id": "2fb1bf20-f2f5-4803-9dc3-0bbeb79f12c9",
"name": "hasItem"
},
{
"parameters": {
"fieldToSplitOut": "body.rss",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
-2608,
-288
],
"id": "b4f4904f-7428-4cb0-87c1-290e3e021d63",
"name": "Split Out"
},
{
"parameters": {
"url": "https://raw.githubusercontent.com/zeroLR/rss-summary-workflow/refs/heads/main/rss/feed.json",
"options": {
"response": {
"response": {
"fullResponse": true,
"responseFormat": "json"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-2816,
-288
],
"id": "15ab4d3b-d7bf-448a-b528-caa55a57cd0f",
"name": "GetMyRssList",
"alwaysOutputData": false,
"retryOnFail": false,
"executeOnce": true,
"onError": "continueErrorOutput"
},
{
"parameters": {
"url": "={{$json['body.rss']}}",
"options": {}
},
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
-2400,
-288
],
"id": "5cb662e0-4855-4c76-acd0-d7d5261c7c81",
"name": "RSS",
"alwaysOutputData": true,
"retryOnFail": true
},
{
"parameters": {
"authentication": "webhook",
"content": "=GetGithubRssListResponse: {{ $json.toJsonString() }}",
"options": {
"username": "RSS_Summary",
"wait": true
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [
-2608,
-448
],
"id": "52e989eb-9f82-4df7-a727-e88d93da93f7",
"name": "Discord6",
"alwaysOutputData": true,
"retryOnFail": true,
"credentials": {
"discordWebhookApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-flash",
"mode": "list",
"cachedResultName": "models/gemini-2.5-flash"
},
"messages": {
"values": [
{
"content": "\u8acb\u6839\u64da\u4ee5\u4e0b\u6307\u793a\u751f\u6210 Markdown \u6280\u8853\u6458\u8981\uff1a\n\n1. \u5168\u6587\u4ee5\u7e41\u9ad4\u4e2d\u6587\u64b0\u5beb\uff0c\u4e26\u5728\u958b\u982d\u8a2d\u7f6e\u6b63\u78ba\u7684 YAML Frontmatter\uff08slug\u3001title\u3001authors: gemini\u3001\u4f9d\u64da\u5167\u5bb9\u81ea\u52d5\u751f\u6210\u82f1\u6587 tags\uff09\u3002\n2. \u6bcf\u500b\u4e3b\u984c\u4ee5\u4e8c\u7d1a\u6a19\u984c\uff08##\uff09\u5448\u73fe\uff0c\u6a19\u984c\u9700\u7cbe\u7c21\u660e\u78ba\u3002\n3. \u6bcf\u500b\u4e3b\u984c\u6bb5\u843d\u524d\u52a0\u5165\u9069\u5408\u8a72\u5167\u5bb9\u7684 emoji\uff0c\u8b93\u5206\u6bb5\u66f4\u6e05\u6670\u3002\n4. \u6bcf\u500b\u4e3b\u984c\u4e0b\u65b9\u52a0\u5165\u4f86\u6e90\u7db2\u5740\uff08**Source:**\uff09\uff0c\u4e26\u4ee5\u689d\u5217\u5f0f\u7e3d\u7d50\u8a72\u6bb5\u5167\u5bb9\u91cd\u9ede\u3002\u7e3d\u7d50\u9700\u6db5\u84cb\u90e8\u5206\u539f\u59cb\u7bc4\u4f8b\u7684\u4e0a\u4e0b\u6587\uff0c\u5305\u62ec\u7a0b\u5f0f\u78bc\u7247\u6bb5\uff08\u4ee5 Markdown \u8a9e\u6cd5\u63d2\u5165\uff09\u3002\n5. \u689d\u5217\u91cd\u9ede\u9700\u5177\u9ad4\u3001\u7c21\u660e\uff0c\u5305\u542b\u6280\u8853\u4eae\u9ede\u3001\u7bc4\u4f8b\u61c9\u7528\u3001\u5be6\u4f5c\u6d41\u7a0b\u7b49\u3002\n6. summary \u5167\u5bb9\u4fdd\u7559\u90e8\u5206\u7bc4\u4f8b\u4e0a\u4e0b\u6587\u3001\u7a0b\u5f0f\u78bc\u53ca\u5716\u7247\u3002\n7. \u6bcf\u7bc7\u6587\u7ae0\u6700\u5f8c\u4e00\u6bb5\u9700\u7528 `<!-- truncate -->` \u6a19\u7c64\u5206\u9694\uff0c\u4e4b\u5f8c\u518d\u5217\u51fa\u5f8c\u7e8c\u4e3b\u984c\u3002\n8. tags \u5fc5\u9808\u4f9d\u64da\u6bcf\u500b\u4e3b\u984c\u5167\u5bb9\u81ea\u52d5\u751f\u6210\uff0c\u4e26\u4ee5\u82f1\u6587\u8868\u793a\u3002\n9. \u8acb\u4f9d\u64da\u4ee5\u4e0b\u7bc4\u4f8b\u683c\u5f0f\u8f38\u51fa(\u4e0d\u5305\u542b ```markdown)\uff1a\n\n---\nslug: tech-summary-2025-06-16\ntitle: TechSummary 2025-06-16\nauthors: gemini\ntags: [AI, Technology, Summary]\n---\n\n# TechSummary 2025-06-16\n\n## \u6a19\u984c\u4e00 \ud83d\ude80\n\n**Source:** https://example.com\n\n- \u91cd\u9ede1\n- \u7bc4\u4f8b\u7a0b\u5f0f\u78bc\u7247\u6bb5\n ```python\n print(\"Hello World\")\n ```\n\n<!-- truncate -->\n\n## \u6a19\u984c\u4e8c \ud83d\udca1\n\n**Source:** https://example.com\n\n- \u91cd\u9ede2\n- \u76f8\u95dc\u6280\u8853\u89e3\u6790\n- \u5be6\u4f5c\u5efa\u8b70\n```\n\n**What Changed:** \n\u2022 \u660e\u78ba\u5206\u6b65\u8aaa\u660e\uff0c\u6613\u65bc\u7406\u89e3\u8207\u64cd\u4f5c \n\u2022 \u7d71\u4e00\u683c\u5f0f\u8207\u689d\u5217\u5f0f\u91cd\u9ede\uff0c\u6a19\u6e96\u5316 emoji \u5206\u6bb5 \n\u2022 \u5f37\u5316 tags \u8207 Frontmatter \u81ea\u52d5\u5316\u751f\u6210\u908f\u8f2f \n\u2022 \u660e\u78ba\u8981\u6c42\u7bc4\u4f8b\u7a0b\u5f0f\u78bc\n\u2022 \u689d\u5217\u5f0f\u5448\u73fe summary\uff0c\u63d0\u5347\u91cd\u9ede\u805a\u7126 \n\u2022 \u56b4\u8b39\u7d50\u69cb\uff0c\u4fbf\u65bc\u591a\u4e3b\u984c\u62d3\u5c55\u8207\u5f8c\u7e8c\u7dad\u8b77\n\n**Techniques Applied:** \n\u2022 Constraint-based structuring \n\u2022 Output spec layering \n\u2022 Example-rich, context-preserving formatting\n\n**Pro Tip:** \n\u53ef\u76f4\u63a5\u7528\u65bc Gemini \u6216 Claude\uff0c\u8b93 AI \u81ea\u52d5\u5316\u751f\u6210\u9ad8\u54c1\u8cea\u7e41\u4e2d\u6280\u8853\u6458\u8981\uff0c\u9069\u5408\u5468\u5831\u3001\u6280\u8853\u90e8\u843d\u683c\u3001\u7522\u54c1\u66f4\u65b0\u7b49\u5834\u666f\u3002",
"role": "model"
},
{
"content": "={{ $json.toJsonString() }}"
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
-880,
-240
],
"id": "fd495b15-1cbf-4b31-8c5d-17511b72f6fb",
"name": "Message a model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "toText",
"sourceProperty": "content.parts[0].text",
"options": {
"fileName": "=tech-summary-{{$today.minus(1,'day').format('yyyy-MM-dd')}}.md"
}
},
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
-560,
-240
],
"id": "418cff46-06b3-4ce7-b6af-b643bbf57ce4",
"name": "Convert to File",
"retryOnFail": true,
"alwaysOutputData": true
}
],
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "CheckIsSummaryExists",
"type": "main",
"index": 0
}
]
]
},
"FilterByPubDate": {
"main": [
[
{
"node": "hasItem",
"type": "main",
"index": 0
}
]
]
},
"MappingWithEncodeContent": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"MappingContent": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Convert to File1": {
"main": [
[
{
"node": "GitHub1",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "MarkdownFormat",
"type": "main",
"index": 0
}
]
]
},
"GitHub1": {
"main": [
[
{
"node": "Discord1",
"type": "main",
"index": 0
}
]
]
},
"SummaryAssistant": {
"main": [
[
{
"node": "Convert to File1",
"type": "main",
"index": 0
}
]
]
},
"CheckIsSummaryExists": {
"main": [
[
{
"node": "Discord2",
"type": "main",
"index": 0
}
],
[
{
"node": "hasErrorStatus",
"type": "main",
"index": 0
}
]
]
},
"IsSummaryNotFound": {
"main": [
[
{
"node": "GetMyRssList",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord3",
"type": "main",
"index": 0
}
]
]
},
"GitHub": {
"main": [
[
{
"node": "Discord4",
"type": "main",
"index": 0
}
]
]
},
"MarkdownFormat": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "MappingWithEncodeContent",
"type": "main",
"index": 0
}
],
[
{
"node": "MappingContent",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord",
"type": "main",
"index": 0
}
]
]
},
"hasErrorStatus": {
"main": [
[
{
"node": "IsSummaryNotFound",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord3",
"type": "main",
"index": 0
}
]
]
},
"hasItem": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "RSS",
"type": "main",
"index": 0
}
]
]
},
"GetMyRssList": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
},
{
"node": "Discord6",
"type": "main",
"index": 0
}
],
[
{
"node": "Discord3",
"type": "main",
"index": 0
}
]
]
},
"RSS": {
"main": [
[
{
"node": "FilterByPubDate",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "GitHub1",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "7dd2f5d2-c28c-42bc-a1de-2663f888b638",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "SrSPrfrl8FV5qzD3",
"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.
discordWebhookApigithubApigooglePalmApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
RSS Summary. Uses github, discord, openAi, httpRequest. Scheduled trigger; 26 nodes.
Source: https://github.com/zeroLR/rss-summary-workflow/blob/4b9c0c768e99df7cf40472a154dae1b159496a7d/rss_summary_workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AI Institutional Stock Valuation Engine with Risk Scoring & Scenario Targets
Overview This is a production-grade, fully automated stock analysis system built entirely in n8n. It combines institutional-level financial analysis, dual AI model consensus, and a self-improving back
This comprehensive n8n automation template orchestrates a complete end-to-end workflow for generating engaging short-form Point-of-View (POV) style videos using multiple AI services and automatically
A professional AI equity analysis automation built on n8n that transforms structured financial data and real-time news into disciplined, risk-adjusted price targets and actionable BUY/HOLD/SELL signal
This workflow helps you repurpose your YouTube videos across multiple social media platforms with zero manual effort. It’s designed for creators, businesses, and marketers who want to maximize reach w