智能 RSS 源监控:AI 过滤、Baserow 存储与 Slack 提醒
高级
这是一个Market Research, AI Summarization领域的自动化工作流,包含 28 个节点。主要使用 Xml, Code, Slack, Baserow, SplitOut 等节点。 具备 AI 过滤、Baserow 存储和 Slack 提醒的智能 RSS 源监控
前置要求
- •Slack Bot Token 或 Webhook URL
- •可能需要目标 API 的认证凭证
- •OpenAI API Key
使用的节点 (28)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "26f5531eecf6499e7c422aeb73185f0be958efc5f46695f90de5f82808ede6ac"
},
"nodes": [
{
"id": "8fb7a0bb-cb4e-43ed-a07c-b21f918331b9",
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
800,
272
],
"webhookId": "16638567-cb86-46f1-8922-ecca04819257",
"parameters": {
"text": "=Title : {{ $('Clean JSON').item.json.title }}\nContent : {{ $('Clean JSON').item.json.content }}\nLink : {{ $('Clean JSON').item.json.link }}",
"select": "channel",
"blocksUi": "={{ $json }}",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C091X7ZNW4V",
"cachedResultName": "upwork"
},
"messageType": "block",
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "66b6cfe0-5709-459b-9695-1d3828856402",
"name": "AI 代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
64,
272
],
"parameters": {
"text": "=\n\n\n\nYou receive a JSON object with two properties:\n\n- input: an array of articles. Each article has the following properties: title, link, guid, and content.\n- alreadyProcessedGuids: an array containing the guids of the articles that have already been processed.\n\nHere is the object to process:\n{{ JSON.stringify($json) }}\n\n🎯 Your task:\nLoop through the input array and return only the articles whose guid is **not** included in alreadyProcessedGuids: \n{{ JSON.stringify($json.alreadyProcessedGuids) }}\n📤 Output format:\nReturn a **valid JSON array** (not a string) containing only the new, unprocessed articles, with only these properties: title, link, guid, and content.\n\nIf all articles were already processed, return exactly: `[]`\n\n❌ Do NOT return anything else: \nNo text, no explanation, no markdown, no key like `\"output\"`, no wrapping object.\n\n⚠️ The output must be raw JSON and must end with `}]`, not `}]}`.\n\nExample of correct output:\n[\n {\n \"title\": \"Sample title\",\n \"link\": \"https://example.com\",\n \"guid\": \"https://example.com\",\n \"content\": \"Some text\"\n }\n]\n\n❌ Example of wrong output:\n[{...}]}\n{\"output\": \"[{...}]\"}\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "b2c24cce-ccb3-4126-a654-e77f8edb34f4",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-16,
432
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"typeVersion": 1.2
},
{
"id": "4c60efd4-9834-4f4c-9a5d-1306ae7b0b93",
"name": "简单记忆",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
112,
400
],
"parameters": {
"sessionKey": "=alreadyProcessedGuids",
"sessionIdType": "customKey",
"contextWindowLength": 50
},
"typeVersion": 1.3
},
{
"id": "a2fb91ac-6793-4b0e-b333-73029195ccce",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
288,
464
],
"parameters": {
"jsonSchemaExample": "\n{\n\"title\": \n\"\",\n\"link\": \n\"\",\n\"guid\": \n\"\",\n \"content\":\"\"\n}"
},
"typeVersion": 1.2
},
{
"id": "81cf4f31-2552-48e3-b76c-9f8f564fb056",
"name": "拆分输出",
"type": "n8n-nodes-base.splitOut",
"position": [
320,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "rssLink"
},
"typeVersion": 1
},
{
"id": "13724965-1d7a-42e9-873f-8a467e2b892a",
"name": "读取 RSS 链接",
"type": "n8n-nodes-base.baserow",
"position": [
160,
0
],
"parameters": {
"tableId": 579115,
"returnAll": true,
"databaseId": 243547,
"additionalOptions": {}
},
"executeOnce": true,
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "92e9980c-b0dc-4b0b-890f-5805f02b3349",
"name": "保存已查看产品",
"type": "n8n-nodes-base.baserow",
"position": [
608,
272
],
"parameters": {
"tableId": 578089,
"fieldsUi": {
"fieldValues": [
{
"fieldId": 4655790,
"fieldValue": "={{ $json.link }}"
}
]
},
"operation": "create",
"databaseId": 243547
},
"typeVersion": 1
},
{
"id": "f05017f3-7f71-45a5-b5b3-fc411d18feda",
"name": "清理 JSON",
"type": "n8n-nodes-base.code",
"position": [
400,
272
],
"parameters": {
"jsCode": "// Step 1: Get the raw JSON string from the input\nconst raw = $input.first().json.output;\n\nlet articles;\n\n articles = JSON.parse(raw);\n\n\n// Step 3: Return each article as a separate item in n8n format\nreturn articles.map(article => ({ json: article }));"
},
"typeVersion": 2
},
{
"id": "6a4d7f50-3e4e-480b-a4a5-e918bf479272",
"name": "编辑数据结构",
"type": "n8n-nodes-base.code",
"position": [
1040,
0
],
"parameters": {
"jsCode": "/**\nreturn $('XML Converter').first().json.rss.channel.item;\n */\n\n\nconst articles = $('XML Converter').first().json.rss.channel.item.map(item => ({\n title: item.title,\n link: item.link,\n content: item.description\n}));\n\n// Pour l'exemple, on définit ici un tableau d'alreadyProcessedGuids\n// En vrai, récupère ce tableau depuis ta mémoire, ta base ou un autre noeud\nconst alreadyProcessedGuids = $input.all().map(item => item.json.Nom);\n\n// Retourner un objet contenant les deux tableaux\nreturn [\n {\n json: {\n input: articles,\n alreadyProcessedGuids:alreadyProcessedGuids\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "a2d81bd3-53e9-4b35-8e5c-96d40c3a36ab",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1120,
-736
],
"parameters": {
"color": 5,
"width": 1008,
"height": 2384,
"content": "# 📰 RSS 源到 Slack 通知器工作流"
},
"typeVersion": 1
},
{
"id": "9dbfcd34-071d-48f1-9d28-f29960f0297a",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-96
],
"parameters": {
"color": 5,
"width": 150,
"height": 80,
"content": "从 Baserow 表中检索所有 RSS 源 URL。"
},
"typeVersion": 1
},
{
"id": "beb101f3-4f5d-41ce-8c2c-0ff12cdc4981",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
-128
],
"parameters": {
"color": 5,
"width": 150,
"height": 112,
"content": "获取“读取 Rss 链接”的输出,并将每一行拆分为单独的项目。"
},
"typeVersion": 1
},
{
"id": "8da80169-36d4-4b07-9559-d120ef4a37f1",
"name": "获取HTML",
"type": "n8n-nodes-base.httpRequest",
"position": [
480,
0
],
"parameters": {
"url": "={{ $json.rssLink }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "fb0fa089-3062-42bd-ad41-1a060834b3dd",
"name": "便签 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-112
],
"parameters": {
"color": 5,
"width": 150,
"height": 96,
"content": "从每个 RSS 源 URL 获取原始 XML 内容。"
},
"typeVersion": 1
},
{
"id": "4a972c2e-0256-487f-8375-d385c5730896",
"name": "XML 转换器",
"type": "n8n-nodes-base.xml",
"position": [
640,
0
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "f0a38201-e008-44c2-b164-2450f20fb00c",
"name": "便签 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
-112
],
"parameters": {
"color": 5,
"width": 150,
"height": 96,
"content": "将原始 XML 内容解析为结构化的 JSON 对象。"
},
"typeVersion": 1
},
{
"id": "a38d4bc8-f76b-4461-a376-840f52220c10",
"name": "便签 5",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
-112
],
"parameters": {
"color": 5,
"width": 150,
"height": 96,
"content": "从 Baserow 表中检索所有先前已查看的文章链接。"
},
"typeVersion": 1
},
{
"id": "80173c28-db72-4657-bee6-7867de66cedc",
"name": "获取已查看产品",
"type": "n8n-nodes-base.baserow",
"position": [
800,
0
],
"parameters": {
"tableId": 578089,
"returnAll": true,
"databaseId": 243547,
"additionalOptions": {}
},
"executeOnce": true,
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "6743d642-91a1-4dfb-bee3-8f59a7f893ba",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1008,
-144
],
"parameters": {
"color": 5,
"width": 150,
"height": 128,
"content": "通过构建新文章和先前已查看的文章 GUID 来为 AI Agent 准备数据。"
},
"typeVersion": 1
},
{
"id": "30e955c8-ee4f-42bb-88e9-ea6efc2171f3",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
176
],
"parameters": {
"color": 5,
"width": 230,
"height": 80,
"content": "使用 AI 过滤新文章,仅返回之前未查看过的文章。"
},
"typeVersion": 1
},
{
"id": "94ee1b33-9bb1-49fc-840e-099eea2c5330",
"name": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
608
],
"parameters": {
"color": 5,
"width": 150,
"height": 112,
"content": "确保 AI Agent 的输出符合预定义的 JSON 结构。"
},
"typeVersion": 1
},
{
"id": "b43d5393-405d-4928-9979-0b95d598393a",
"name": "### 替换 Airtable 连接",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
416
],
"parameters": {
"color": 5,
"width": 150,
"height": 80,
"content": "解析 AI Agent 的 JSON 字符串输出。"
},
"typeVersion": 1
},
{
"id": "a860323f-31fb-4555-949d-9cb4b9e63491",
"name": "便签10",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
432
],
"parameters": {
"color": 5,
"width": 150,
"height": 112,
"content": "将新处理文章的链接保存到 Baserow 的“已查看产品”表中。"
},
"typeVersion": 1
},
{
"id": "7fe68866-da49-4545-a7d0-d757932508e1",
"name": "便签11",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
432
],
"parameters": {
"color": 5,
"width": 150,
"height": 96,
"content": "向 Slack 频道发送包含新文章详情的通知。"
},
"typeVersion": 1
},
{
"id": "448de534-bb3b-4548-8419-3c8e53f2700a",
"name": "点击开始",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5eca38d7-de00-4231-bb50-5ce0a7b9fe9d",
"name": "便签12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-96
],
"parameters": {
"color": 5,
"width": 150,
"height": 80,
"content": "触发工作流。"
},
"typeVersion": 1
},
{
"id": "998a48c5-b88c-4fc9-ba9e-b9e689562571",
"name": "便签13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
560
],
"parameters": {
"color": 5,
"width": 150,
"height": 80,
"content": "为 Agent 提供 AI 模型。"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Clean JSON",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Fetch HTML",
"type": "main",
"index": 0
}
]
]
},
"Clean JSON": {
"main": [
[
{
"node": "Save seen products",
"type": "main",
"index": 0
}
]
]
},
"Fetch HTML": {
"main": [
[
{
"node": "XML Converter",
"type": "main",
"index": 0
}
]
]
},
"Read Rss Link": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"XML Converter": {
"main": [
[
{
"node": "Get Seen Products",
"type": "main",
"index": 0
}
]
]
},
"Click to Start": {
"main": [
[
{
"node": "Read Rss Link",
"type": "main",
"index": 0
}
]
]
},
"Get Seen Products": {
"main": [
[
{
"node": "Edit data structure",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save seen products": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
},
"Edit data structure": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 市场调研, AI 摘要总结
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
基于Bright Data、OpenAI和Redis的高级多源AI研究
使用Bright Data、OpenAI和Redis进行高级多源AI研究
If
Set
Code
+15
43 节点Daniel Shashko
市场调研
AI驱动的Meta广告周度PDF报告 - 发送至Slack或邮箱
使用GPT-4洞察生成Meta广告周度性能报告并通过Slack发送
Set
Code
Slack
+8
14 节点Marcelo Abreu
市场调研
使用GPT-5 nano和Google Sheets抓取网站并回答问题
使用GPT-5 nano和Google Sheets抓取网站并回答问题
If
Set
Xml
+17
44 节点Oriol Seguí
市场调研
使用GPT-4洞察和Slack交付自动化每周SEO报告
通过GPT-4洞察和Slack交付自动化每周SEO报告
Set
Code
Merge
+8
42 节点Marcelo Abreu
市场调研
使用 Bright Data API 和 AI 抓取分析 Google 广告并发送邮件报告
使用 Bright Data API 和 AI 抓取分析 Google 广告并发送邮件报告
Set
Code
Gmail
+15
45 节点Zacharia Kimotho
市场调研
新抓取器_TechCrunch新闻-AI1
TechCrunch AI文章抓取与分类器,使用GPT-4.1-nano到Sheets和Telegram
Set
Code
Html
+12
18 节点Mujahid Kabae
市场调研
工作流信息
难度等级
高级
节点数量28
分类2
节点类型12
作者
Daniel Shashko
@tomaxAI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.
外部链接
在 n8n.io 查看 →
分享此工作流