8
n8n 中文网amn8n.com

RSS AI 新闻 Slack 自动化 v010925

中级

这是一个AI Summarization, Multimodal AI领域的自动化工作流,包含 13 个节点。主要使用 If, Code, Slack, HttpRequest, ChainLlm 等节点。 基于 DeepSeek AI 与 Slack 通知的智能 RSS 新闻提醒系统

前置要求
  • Slack Bot Token 或 Webhook URL
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "cZqsFsT0dT7XJO3K",
  "meta": {
    "instanceId": "4655497243705f66b47991d9dbe9a9222e8444b5c2782e466f572ff93867cb4c",
    "templateCredsSetupCompleted": true
  },
  "name": "RSS AI 新闻 Slack 自动化 v010925",
  "tags": [
    {
      "id": "7ASMGI4lVr4Eo8rL",
      "name": "tuguidragos.com",
      "createdAt": "2025-08-23T19:10:40.177Z",
      "updatedAt": "2025-08-23T19:10:40.177Z"
    },
    {
      "id": "KBQZBD4R6LVuuFK2",
      "name": "slack-alerts",
      "createdAt": "2025-09-01T16:14:22.027Z",
      "updatedAt": "2025-09-01T16:14:22.027Z"
    },
    {
      "id": "NtEM4qJBPpIvfcPu",
      "name": "automation",
      "createdAt": "2025-08-31T21:12:32.130Z",
      "updatedAt": "2025-08-31T21:12:32.130Z"
    },
    {
      "id": "kcwb9hV3Q0yE899g",
      "name": "ai-analysis",
      "createdAt": "2025-09-01T16:14:14.257Z",
      "updatedAt": "2025-09-01T16:14:14.257Z"
    },
    {
      "id": "n3yKbZ1k0G32PsQK",
      "name": "rss",
      "createdAt": "2025-09-01T16:14:02.175Z",
      "updatedAt": "2025-09-01T16:14:02.175Z"
    },
    {
      "id": "t2EcIvqmhXhIFZHS",
      "name": "news",
      "createdAt": "2025-09-01T16:14:05.043Z",
      "updatedAt": "2025-09-01T16:14:05.043Z"
    }
  ],
  "nodes": [
    {
      "id": "1ef0840b-0b56-4f2e-911f-2c125ec88860",
      "name": "DeepSeek 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek",
      "position": [
        1672,
        -672
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "deepSeekApi": {
          "id": "c3q3l8gevH6a1NCj",
          "name": "DeepSeek Test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1bb5f3f8-d8b7-4804-a80e-4dadb448acbb",
      "name": "标准化和哈希处理",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        -896
      ],
      "parameters": {
        "jsCode": "function fnv1a(str) {\n  let h = 0x811c9dc5;\n  for (let i = 0; i < str.length; i++) {\n    h ^= str.charCodeAt(i);\n    h += (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24);\n  }\n  return (h >>> 0).toString(16);\n}\n\nreturn items.map(item => {\n  const url = item.json.link || item.json.url || '';\n  const title = item.json.title || '';\n  const content = (item.json.content || item.json['content:encoded'] || item.json.contentSnippet || '').toString();\n\n  const text = [title, content]\n    .join('\\n')\n    .replace(/<[^>]+>/g, ' ')\n    .replace(/\\s+/g, ' ')\n    .trim();\n\n  item.json.url = url;\n  item.json.title = title;\n  item.json.text_rss = text.slice(0, 6000);\n  item.json.url_hash = fnv1a(String(url).toLowerCase());\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "f3f640db-0c04-42ca-9cb7-fb5e8e24a8af",
      "name": "解析 HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        704,
        -896
      ],
      "parameters": {
        "jsCode": "const keepDays = 14;\nconst maxEntries = 800;\nconst now = Date.now();\n\nconst store = $getWorkflowStaticData('global');\nif (!store.seen) store.seen = {};\n\nreturn items.map(item => {\n  const key = item.json.url_hash;\n  const isNew = !store.seen[key];\n  store.seen[key] = now;\n\n  for (const [k, t] of Object.entries(store.seen)) {\n    if (now - t > keepDays * 86400000) delete store.seen[k];\n  }\n  const entries = Object.entries(store.seen);\n  if (entries.length > maxEntries) {\n    entries.sort((a,b) => a[1] - b[1]);\n    for (let i = 0; i < entries.length - maxEntries; i++) delete store.seen[entries[i][0]];\n  }\n\n  item.json._isNew = isNew;\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "9ce66c28-7b0e-49e9-bf49-5f0086b4a127",
      "name": "新文章?",
      "type": "n8n-nodes-base.if",
      "position": [
        928,
        -896
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1ae4fafc-43ff-41d7-8796-d26fe6ba33e7",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{$json[\"_isNew\"]}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "880f6698-0a30-4e65-8401-7d64ac043fe4",
      "name": "获取文章",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1152,
        -896
      ],
      "parameters": {
        "url": "={{$json[\"url\"]}}",
        "options": {
          "timeout": 8000,
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cf2066e8-5f49-4688-a5a0-2c0d7c191d36",
      "name": "使用 LLM 分析",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1600,
        -896
      ],
      "parameters": {
        "text": "=You are a precise news triager. Summarize (<=120 words), sentiment (positive|negative|neutral), up to 6 keywords, flags from [funding, acquisition, partnership, product_launch, regulation, hiring].\n\nTITLE: {{ $('parse HTML').item.json.title }}\nURL: {{ $('parse HTML').item.json.link }}\nTEXT: {{$json[\"text_for_llm\"]}}\n\nReturn JSON only:\n{\"summary\":\"\",\"sentiment\":\"\",\"keywords\":[],\"flags\":[]}",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "ae6ca7e3-efac-4bb7-a161-423739d1ec83",
      "name": "解析 LLM JSON",
      "type": "n8n-nodes-base.code",
      "position": [
        1952,
        -896
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const raw = item.json.text || item.json.data || item.json.output || '';\n  let o = {};\n  try { o = typeof raw === 'string' ? JSON.parse(raw) : raw; } catch {}\n  item.json.summary   = o.summary || '';\n  item.json.sentiment = (o.sentiment || 'neutral').toLowerCase();\n  item.json.keywords  = Array.isArray(o.keywords) ? o.keywords : [];\n  item.json.flags     = Array.isArray(o.flags) ? o.flags : [];\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "ccec8360-a00f-486e-a3c6-ef482a04b68c",
      "name": "相关内容?",
      "type": "n8n-nodes-base.if",
      "position": [
        2176,
        -896
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "ef132948-33d8-475a-b876-a7c4cf1ac302",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{$json[\"sentiment\"]}}",
              "rightValue": "neutral"
            },
            {
              "id": "dd76bbc8-a056-4f58-a75f-1d5a38220224",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{$json[\"flags\"].join(\",\")}}",
              "rightValue": "acquisition"
            },
            {
              "id": "1f015b50-723d-4e58-943e-7cda07bd25f1",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{$json[\"flags\"].join(\",\")}}",
              "rightValue": "funding"
            },
            {
              "id": "5db4476c-c8ee-475d-9d0e-1b267b362fa3",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{$json[\"flags\"].join(\",\")}}",
              "rightValue": "product_launch"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "be7cd945-61aa-4512-9d3d-28f8ce4cbfad",
      "name": "发送到 Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2400,
        -896
      ],
      "webhookId": "0ba75e6f-2e55-4b08-b7de-51f40ebcf281",
      "parameters": {
        "text": "=*News Alert* 📰  \n*{{ $('RSS Feed').item.json.title }}*  \n{{$json[\"summary\"]}}  \n\nSentiment: {{$json[\"sentiment\"]}}  \nFlags: {{ $json[\"flags\"].join(\", \") || \"—\" }}  \n\n<{{ $('RSS Feed').item.json.link }}>",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "ID"
        },
        "otherOptions": {
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "id": "XuUwy2Lth9glqHbY",
          "name": "Slack Test"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.3
    },
    {
      "id": "44220e76-0e66-43e3-8c4d-f4b0ae6d16e1",
      "name": "RSS 订阅源",
      "type": "n8n-nodes-base.rssFeedReadTrigger",
      "position": [
        256,
        -896
      ],
      "parameters": {
        "feedUrl": "https://techcrunch.com/feed/",
        "pollTimes": {
          "item": [
            {
              "hour": 9
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "80032ebb-5641-4c04-8aed-ee82e7b23f9a",
      "name": "准备 LLM 输入",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        -896
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const html = item.json.data || item.json.body || '';\n  const plain = html\n    .replace(/<script[\\s\\S]*?<\\/script>/gi, ' ')\n    .replace(/<style[\\s\\S]*?<\\/style>/gi, ' ')\n    .replace(/<[^>]+>/g, ' ')\n    .replace(/\\s+/g, ' ')\n    .trim();\n\n  const txt = (plain && plain.length > 500 ? plain : item.json.text_rss).slice(0, 9000);\n  item.json.text_for_llm = txt;\n  item.json.data = txt;\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "bd11a1a1-ad63-46ec-89d7-f07e3fc2b501",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        -1104
      ],
      "parameters": {
        "color": 4,
        "width": 432,
        "content": "## 工作原理"
      },
      "typeVersion": 1
    },
    {
      "id": "94b2ba0e-3e3d-4a65-8ce8-276a106f4f16",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        -736
      ],
      "parameters": {
        "color": 4,
        "width": 432,
        "content": "## 设置步骤"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6fb7c8f1-01e6-4fa3-9ba6-71f70ab0d242",
  "connections": {
    "New?": {
      "main": [
        [
          {
            "node": "fetch article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed": {
      "main": [
        [
          {
            "node": "normalize & hash",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Relevant?": {
      "main": [
        [
          {
            "node": "send to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parse HTML": {
      "main": [
        [
          {
            "node": "New?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fetch article": {
      "main": [
        [
          {
            "node": "Prepare LLM Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send to Slack": {
      "main": [
        []
      ]
    },
    "parse LLM JSON": {
      "main": [
        [
          {
            "node": "Relevant?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "analyze with LLM": {
      "main": [
        [
          {
            "node": "parse LLM JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "normalize & hash": {
      "main": [
        [
          {
            "node": "parse HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare LLM Input": {
      "main": [
        [
          {
            "node": "analyze with LLM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DeepSeek Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "analyze with LLM",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - AI 摘要总结, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量13
分类2
节点类型8
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Țugui Dragoș

Țugui Dragoș

@tuguidragos

Automation consultant focused on revenue workflows with n8n, GoHighLevel, and AI. Specializing in voice bots, lead generation & follow-up systems.

外部链接
在 n8n.io 查看

分享此工作流