编辑
2025-07-10
n8n 案例
00

最近稍微深入了解了下 rss ,对于这个古早就有的内容,一直以来都没关注,才发现之前的自己是多么无知。

先看效果 image.png

image.png ![]https://www.beqlee.icu/static/img/bdd7e98b52fc058ceda4c9082afad50f.image.webp)

碎片化信息获取占用我接近20%,这让我很烦恼,时不时都会去关注有没有人发布什么赚钱的项目,去不同的网站找活路

今天也是接入了n8n-mcp-server,结合 cursor 和小样式示例,对话了两次就实现了我想要的效果,这个工作流对我目前来言很有价值

这里使用了 rsshub 去获取信息,在 rssHub 上,为了「万物皆可rss」这一宏大目标,数不清的开发者贡献了自己的脚本,给哪些没有内置rss的网站都加上了 rss, rsshub 的原理就是使用puppeteer 去抓取网站,然后生成 xml 格式的数据。这种标准化的数据,处理起来就很方便了,尤其n8n 内置了rss节点。数据处理的成本接近于0.

后续扩展网站只需要添加 rss 源就好了,几乎所有网站的信息都能整理。不过这里不能交互,rsshub 只做了读,不过读写分离本身也是优秀设计。

这里是处理过的信息,需要做下去重处理,唯一值我用的是链接,相同链接就跳过 https://jpcpk71wr7.feishu.cn/base/P0FAbSzK8a21ofsKT1CccLEinSP?table=tblO8If4fQPxWfgN&view=vewLeGGebp

感兴趣的可以去我的新网站看看,还在备案中,目前只有 ip 访问 http://8.145.50.107:8/

这里贴下工作流

json
{ "nodes": [ { "parameters": { "rule": { "interval": [ { "field": "hours" } ] } }, "id": "schedule-trigger", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [ -1920, 120 ] }, { "parameters": { "assignments": { "assignments": [ { "id": "title", "name": "标题", "value": "={{ $json.title }}", "type": "string" }, { "id": "content", "name": "内容", "value": "={{ $json['content:encodedSnippet'] || $json.content || $json.description }}", "type": "string" }, { "id": "link", "name": "链接", "value": "={{ $json.link }}", "type": "string" }, { "id": "category", "name": "分类", "value": "外包工作", "type": "string" }, { "id": "source", "name": "来源", "value": "V2EX", "type": "string" }, { "id": "c45ae990-6a7e-4e25-b929-63b5c6802a8e", "name": "isRepeat", "value": "={{ $('Code1').item.json.existingLinks.includes($json.link) }}", "type": "boolean" } ] }, "options": {} }, "id": "data-formatter", "name": "格式化工作信息", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ -440, -160 ] }, { "parameters": { "promptType": "define", "text": "=请分析以下外包工作信息,提取关键信息并整理格式:\n标题:{{ $json['标题'] }}\n内容:{{ $json['内容'] }}\n链接:{{ $json['链接'] }}\n请提取:技术栈、项目类型、预算范围(如有)、工期要求(如有)、联系方式等关键信息", "hasOutputParser": true, "batching": {} }, "id": "ai-analyzer", "name": "AI工作信息分析", "type": "@n8n/n8n-nodes-langchain.chainLlm", "typeVersion": 1.7, "position": [ 1720, 220 ] }, { "parameters": { "options": {} }, "id": "deepseek-model", "name": "DeepSeek AI模型", "type": "@n8n/n8n-nodes-langchain.lmChatDeepSeek", "typeVersion": 1, "position": [ 1420, 760 ], "credentials": { "deepSeekApi": { "id": "PvA78rsxLjwZhIvR", "name": "DeepSeek account" } } }, { "parameters": { "jsonSchemaExample": "{\n \"标题\": \"项目标题\",\n \"技术栈\": \"Vue3, Node.js等\",\n \"项目类型\": \"前端开发/后端开发/全栈等\",\n \"预算范围\": \"5k-15k或面议\",\n \"工期要求\": \"3-4周\",\n \"联系方式\": \"微信/QQ等\",\n \"评估分数\":80,\n \"链接\": \"https://www.v2ex.com/t/xxx\",\n \"分析摘要\": \"项目简要描述\"\n}" }, "id": "output-parser", "name": "结构化输出解析", "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ 2020, 400 ] }, { "parameters": { "method": "POST", "url": "https://open.feishu.cn/open-apis/bot/v2/hook/ec0a3959-81ce-4ad6-b97a-95a0abc1e9bf", "sendBody": true, "specifyBody": "json", "jsonBody": "={\n \"receive_id\": \"YOUR_CHAT_ID\",\n \"msg_type\": \"interactive\",\n \"card\": {\n \"schema\": \"2.0\",\n \"config\": {\n \"update_multi\": true,\n \"style\": {\n \"text_size\": {\n \"normal_v2\": {\n \"default\": \"normal\",\n \"pc\": \"normal\",\n \"mobile\": \"heading\"\n }\n }\n }\n },\n \"body\": {\n \"direction\": \"vertical\",\n \"padding\": \"12px 12px 12px 12px\",\n \"elements\": [\n {\n \"tag\": \"markdown\",\n \"content\": \"**📋 项目标题:** {{ $json.output['标题'] }}\\n\\n**💰 预算范围:** {{ $json.output['预算范围'] || '未提及' }}\\n\\n**🛠 技术栈:** {{ $json.output['技术栈'] || '未提及' }}\\n\\n**⏰ 工期要求:** {{ $json.output['工期要求'] || '未提及' }}\\n\\n**📊 AI评估分数:** {{ $json.output['评估分数'] || 0 }}分\\n\\n**✅ 推荐理由:** {{ $json.output['评估理由'] || '待分析' }}\\n\\n**📝 项目详情:**\\n{{ $json.output['分析摘要'] }}\\n\\n**🔗 查看详情:** [点击访问]({{ $json.output['链接'] }})\",\n \"text_align\": \"left\",\n \"text_size\": \"normal_v2\",\n \"margin\": \"0px 0px 0px 0px\"\n }\n ]\n },\n \"header\": {\n \"title\": {\n \"tag\": \"plain_text\",\n \"content\": \"🎯 V2EX外包机会\"\n },\n \"subtitle\": {\n \"tag\": \"plain_text\",\n \"content\": \"{{ new Date().toISOString().slice(0, 10) }}\"\n },\n \"template\": \"blue\",\n \"padding\": \"12px 12px 12px 12px\"\n }\n }\n}", "options": {} }, "id": "http-save", "name": "保存到飞书表格", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 2560, 220 ] }, { "parameters": { "url": "http://localhost:1200/v2ex/tab/jobs", "options": { "ignoreSSL": true } }, "id": "v2ex-rss", "name": "V2EX酷工作RSS", "type": "n8n-nodes-base.rssFeedRead", "typeVersion": 1.2, "position": [ -600, -120 ] }, { "parameters": { "promptType": "define", "text": "=作为一个专业的外包项目评估师,请分析以下信息,判断是否值得关注:\n\n标题:{{ $json['标题'] }}\n内容:{{ $json['内容'] }}\n链接:{{ $json['链接'] }}\n\n## 评估标准(请严格按照以下标准判断):\n\n### ✅ 值得关注的机会:\n1. **明确预算范围**:提到具体金额(如5k-20k、10万+等)\n2. **技术栈匹配**:涉及主流技术,我会的node/python/react/vue/小程序/web/mobile,不是TS/js系列的得分为0\n3. **项目规模合理**:不是过于简单的小任务,也不是超大型项目\n4. **需求描述清晰**:有具体的功能需求说明\n5. **联系方式明确**:提供微信/QQ/邮箱等联系方式\n6. **时间要求合理**:工期在1-8周之间\n7. **正规项目**:企业/团队发布,非个人小需求\n\n### ❌ 不值得关注的情况:\n1. **无预算信息**:只说\"价格私聊\"、\"预算面议\"且无其他吸引点\n2. **技术栈过时**:PHP老版本、jQuery等过时技术\n3. **需求模糊**:只说\"做个网站\"、\"开发APP\"没有具体需求\n4. **明显低价**:预算明显低于市场价(如全栈项目<3k)\n5. **无联系方式**:没有提供任何联系方式\n6. **时间过急**:要求1-2天完成复杂项目\n7. **非技术项目**:纯设计、文案、运营等非开发类\n\n## 输出格式(严格按照以下JSON格式):\n```json\n{\n \"worthy\": true,\n \"score\": 85,\n \"reasons\": [\"明确预算10-15k\", \"Vue3+Node.js技术栈主流\", \"需求描述详细\"],\n \"budget_range\": \"10k-15k\",\n \"tech_stack\": [\"Vue3\", \"Node.js\", \"MySQL\"],\n \"project_type\": \"前端+后端开发\",\n \"urgency\": \"3周\",\n \"contact_info\": \"微信:xxx\"\n}\n```\n\n请务必返回有效的JSON格式,worthy字段决定是否继续处理该项目。", "hasOutputParser": true, "batching": {} }, "id": "opportunity-filter", "name": "机会价值评估", "type": "@n8n/n8n-nodes-langchain.chainLlm", "typeVersion": 1.7, "position": [ 280, 160 ] }, { "parameters": { "jsonSchemaExample": "{\n \"worthy\": true,\n \"score\": 85,\n \"reasons\": [\"明确预算10-15k\", \"Vue3+Node.js技术栈主流\"],\n \"budget_range\": \"10k-15k\",\n \"tech_stack\": [\"Vue3\", \"Node.js\", \"MySQL\"],\n \"project_type\": \"前端+后端开发\",\n \"urgency\": \"3周\",\n \"contact_info\": \"微信:xxx\"\n}" }, "id": "filter-parser", "name": "机会评估解析器", "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ 1120, 400 ] }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "loose", "version": 2 }, "conditions": [ { "id": "worthy-condition", "leftValue": "={{ $json['值得关注'] }}", "rightValue": true, "operator": { "type": "boolean", "operation": "equals" } } ], "combinator": "and" }, "looseTypeValidation": true, "options": {} }, "id": "worthy-filter", "name": "值得关注过滤器", "type": "n8n-nodes-base.filter", "typeVersion": 2.2, "position": [ 1920, -40 ] }, { "parameters": { "assignments": { "assignments": [ { "id": "original-title", "name": "标题", "value": "={{ $('useful').item.json['标题'] }}", "type": "string" }, { "id": "original-content", "name": "内容", "value": "={{ $('useful').item.json['内容'] }}", "type": "string" }, { "id": "original-link", "name": "链接", "value": "={{$('useful').item.json['链接'] }}", "type": "string" }, { "id": "original-category", "name": "分类", "value": "={{ $('useful').item.json['分类'] }}", "type": "string" }, { "id": "original-source", "name": "来源", "value": "={{ $('useful').item.json['来源'] }}", "type": "string" }, { "id": "evaluation-worthy", "name": "值得关注", "value": "={{ $json.output.worthy }}", "type": "boolean" }, { "id": "evaluation-score", "name": "评估分数", "value": "={{ $json.output.score }}", "type": "number" }, { "id": "evaluation-reasons", "name": "评估理由", "value": "={{ $json.output.reasons ? $json.output.reasons.join('; ') : '' }}", "type": "string" }, { "id": "evaluation-budget", "name": "预算范围", "value": "={{ $json.output.budget_range || '' }}", "type": "string" }, { "id": "evaluation-tech", "name": "技术栈", "value": "={{ $json.output.tech_stack ? $json.output.tech_stack.join(', ') : '' }}", "type": "string" }, { "id": "evaluation-type", "name": "项目类型", "value": "={{ $json.output.project_type || '' }}", "type": "string" }, { "id": "evaluation-urgency", "name": "工期要求", "value": "={{ $json.output.urgency || '' }}", "type": "string" }, { "id": "evaluation-contact", "name": "联系方式", "value": "={{ $json.output.contact_info || '' }}", "type": "string" } ] }, "options": {} }, "id": "merge-evaluation", "name": "合并评估信息", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 840, -160 ] }, { "parameters": { "resource": "bitable", "operation": "bitable:table:record:search", "app_toke": "P0FAbSzK8a21ofsKT1CccLEinSP", "table_id": "tblO8If4fQPxWfgN", "body": "={\n \"filter\": {\n \"conjunction\": \"or\",\n \"conditions\": [\n {\n \"field_name\": \"日期\",\n \"operator\": \"is\",\n \"value\": [\"Today\"]\n },\n {\n \"field_name\": \"日期\",\n \"operator\": \"is\",\n \"value\": [\"Yesterday\"]\n }\n ]\n }\n}" }, "type": "n8n-nodes-feishu-lite.feishuNode", "typeVersion": 1, "position": [ -1440, 300 ], "id": "8b80ad2f-c083-4732-aa2e-7e5cdc83060b", "name": "Bitable:table:record:search bitable", "credentials": { "feishuCredentialsApi": { "id": "aBAsZlRhZM648zbt", "name": "Feishu Credentials account" } } }, { "parameters": { "jsCode": "// 提取飞书表格中已存在的链接\nconst existingLinks = new Set();\n\nif ($input.first().json.data && $input.first().json.data.items) {\n $input.first().json.data.items.forEach(item => {\n const link = item;\n if (link) {\n existingLinks.add(link);\n }\n });\n}\n\n// 将已存在的链接数组传递给下一个节点\nreturn [{\n existingLinks: Array.from(existingLinks),\n totalExisting: existingLinks.size\n}];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -1120, 360 ], "id": "45f2a5e0-6321-4e5d-a932-504ea91a8d99", "name": "Code1" }, { "parameters": { "resource": "bitable", "operation": "bitable:table:record:add", "app_toke": "P0FAbSzK8a21ofsKT1CccLEinSP", "table_id": "tblO8If4fQPxWfgN", "body": "={\n\"fields\":{\n \"标题\":\"{{ $json[\"标题\"] }}\",\n \"内容\":\"{{ $json['技术栈'] }}\",\n\"分类\":\"{{ $json['项目类型'] }}\",\n\"预算\":\"{{$json['预算范围']}} | {{ $json['工期要求'] }} | {{ $json['联系方式'] }}\",\n \"链接\":\"{{ $json['链接'] }}\"\n}\n} " }, "type": "n8n-nodes-feishu-lite.feishuNode", "typeVersion": 1, "position": [ 1160, -240 ], "id": "85c1d4d5-646b-4ef9-8c29-3d0cc247e1d5", "name": "Bitable:table:record:add bitable", "credentials": { "feishuCredentialsApi": { "id": "aBAsZlRhZM648zbt", "name": "Feishu Credentials account" } } }, { "parameters": { "jsCode": "\nreturn $('合并评估信息').all()" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 1520, -300 ], "id": "a7683d49-aaeb-4d9e-816f-833c3a65e164", "name": "Code" }, { "parameters": { "assignments": { "assignments": [ { "id": "title", "name": "标题", "value": "={{ $json.title }}", "type": "string" }, { "id": "content", "name": "内容", "value": "={{ $json['content:encodedSnippet'] || $json.content || $json.description }}", "type": "string" }, { "id": "link", "name": "链接", "value": "={{ $json.link }}", "type": "string" }, { "id": "category", "name": "分类", "value": "={{ $json.categories.join('/') }}", "type": "string" }, { "id": "source", "name": "来源", "value": "电鸭社区", "type": "string" }, { "id": "c45ae990-6a7e-4e25-b929-63b5c6802a8e", "name": "isRepeat", "value": "={{ $('Code1').item.json.existingLinks.includes($json.link) }}", "type": "boolean" } ] }, "options": {} }, "id": "d088a5c0-0bd1-4629-9a11-427b42cd450f", "name": "格式化工作信息1", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ -560, 720 ] }, { "parameters": {}, "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ -340, 300 ], "id": "729105ca-d687-453f-983b-f3f363330c35", "name": "Merge" }, { "parameters": { "url": "http://localhost:1200/eleduck/jobs", "options": {} }, "type": "n8n-nodes-base.rssFeedRead", "typeVersion": 1.2, "position": [ -760, 460 ], "id": "426486a9-87b9-444f-92a3-b7aa41542172", "name": "电鸭社区" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "51048509-18b3-4791-a880-ee66bf0d1ae2", "leftValue": "={{ $json.isRepeat }}", "rightValue": "false", "operator": { "type": "boolean", "operation": "false", "singleValue": true } } ], "combinator": "and" }, "options": {} }, "type": "n8n-nodes-base.filter", "typeVersion": 2.2, "position": [ -80, 300 ], "id": "31470735-bac5-47fb-983b-613af094c06a", "name": "useful" } ], "connections": { "Schedule Trigger": { "main": [ [ { "node": "Bitable:table:record:search bitable", "type": "main", "index": 0 } ] ] }, "格式化工作信息": { "main": [ [ { "node": "Merge", "type": "main", "index": 0 } ] ] }, "AI工作信息分析": { "main": [ [ { "node": "保存到飞书表格", "type": "main", "index": 0 } ] ] }, "DeepSeek AI模型": { "ai_languageModel": [ [ { "node": "AI工作信息分析", "type": "ai_languageModel", "index": 0 }, { "node": "机会价值评估", "type": "ai_languageModel", "index": 0 } ] ] }, "结构化输出解析": { "ai_outputParser": [ [ { "node": "AI工作信息分析", "type": "ai_outputParser", "index": 0 } ] ] }, "V2EX酷工作RSS": { "main": [ [ { "node": "格式化工作信息", "type": "main", "index": 0 } ] ] }, "机会价值评估": { "main": [ [ { "node": "合并评估信息", "type": "main", "index": 0 } ] ] }, "机会评估解析器": { "ai_outputParser": [ [ { "node": "机会价值评估", "type": "ai_outputParser", "index": 0 } ] ] }, "值得关注过滤器": { "main": [ [ { "node": "AI工作信息分析", "type": "main", "index": 0 } ] ] }, "合并评估信息": { "main": [ [ { "node": "Bitable:table:record:add bitable", "type": "main", "index": 0 } ] ] }, "Bitable:table:record:search bitable": { "main": [ [ { "node": "Code1", "type": "main", "index": 0 } ] ] }, "Code1": { "main": [ [ { "node": "V2EX酷工作RSS", "type": "main", "index": 0 }, { "node": "电鸭社区", "type": "main", "index": 0 } ] ] }, "Bitable:table:record:add bitable": { "main": [ [ { "node": "Code", "type": "main", "index": 0 } ] ] }, "Code": { "main": [ [ { "node": "值得关注过滤器", "type": "main", "index": 0 } ] ] }, "格式化工作信息1": { "main": [ [ { "node": "Merge", "type": "main", "index": 1 } ] ] }, "Merge": { "main": [ [ { "node": "useful", "type": "main", "index": 0 } ] ] }, "电鸭社区": { "main": [ [ { "node": "格式化工作信息1", "type": "main", "index": 0 } ] ] }, "useful": { "main": [ [ { "node": "机会价值评估", "type": "main", "index": 0 } ] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "b3a8e0e1f9ab1bfe3a36f231f676f78bb30a519d2b21e6c530c0eee8ebb4a5d0" } }
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:beq

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!