最近稍微深入了解了下 rss ,对于这个古早就有的内容,一直以来都没关注,才发现之前的自己是多么无知。
先看效果
![]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"
}
}
本文作者:beq
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!