一个月前画的饼: https://www.v2ex.com/t/1119444
https://github.com/glidea/zenfeed
有兴趣再左键点击阅读全文;右键标记已读,彻底从列表消失,减少焦虑
zenfeed 是你的智能信息助手。它自动收集、筛选并总结关注的新闻或话题,然后发送给你。但我们可不是又造了一个 "今日头条"... 🤔
For RSS 老司机 🚗
For 万物追踪 替代品寻觅者 🔍
For 信息焦虑症患者(比如我) 😌
For AI 内容处理的探索者 🔬
替换下方 APIKey 等参数,并完整复制到终端一键执行。注意:
provider
除了硅基还支持 openai, openrouter, deepseek, gemini, volc (火山(keng)引擎)。也可自定义,参考 配置文档。需要自定义其它参数的大佬也可参考
llms[0].model
默认会用来总结内容,相对耗费 Token ,一般 Qwen/Qwen2.5-7B-Instruct (免费!!!)足够,当然米够的话越强越好
想完全自定义部署的,参考 https://github.com/glidea/zenfeed/tree/main/install
docker run --rm \
-v "$(PWD):/app" \
-w /app \
--entrypoint sh \
mikefarah/yq -c '
set -e
mkdir -p zenfeed/config && cd zenfeed
TEMPLATE_URL="https://raw.githubusercontent.com/glidea/zenfeed/main/install/config-template.yaml"
COMPOSE_URL="https://raw.githubusercontent.com/glidea/zenfeed/main/install/docker-compose.yml"
CONFIG_OUTPUT="config/config.yaml"
COMPOSE_OUTPUT="docker-compose.yml"
wget -qO- "$TEMPLATE_URL" | yq \
".timezone = \"Asia/Shanghai\" |
.llms[0].provider = \"siliconflow\" |
.llms[0].model = \"Qwen/Qwen2.5-7B-Instruct\" |
.llms[0].api_key = \"your_api_key\" | # <<<--- 替换 API Key! 其它参数按需选择
.llms[1].provider = \"siliconflow\" |
.llms[1].embedding_model = \"Pro/BAAI/bge-m3\" |
.llms[1].api_key = \"your_api_key\" | # <<<--- 替换 API Key!
.storage.feed.rewrites[0].transform.to_text.prompt = \"{{.summary_html_snippet}}使用中文回复\"" \
> "$CONFIG_OUTPUT"
wget -qO "$COMPOSE_OUTPUT" "$COMPOSE_URL"
' && cd zenfeed && docker compose up -d --wait
docker run --rm `
-v "${PWD}:/app" `
-w /app `
--entrypoint sh `
mikefarah/yq -c '
set -e
mkdir -p zenfeed/config && cd zenfeed
TEMPLATE_URL="https://raw.githubusercontent.com/glidea/zenfeed/main/install/config-template.yaml"
COMPOSE_URL="https://raw.githubusercontent.com/glidea/zenfeed/main/install/docker-compose.yml"
CONFIG_OUTPUT="config/config.yaml"
COMPOSE_OUTPUT="docker-compose.yml"
wget -qO- "$TEMPLATE_URL" | yq \
".timezone = \"Asia/Shanghai\" |
.llms[0].provider = \"siliconflow\" |
.llms[0].model = \"Qwen/Qwen2.5-7B-Instruct\" |
.llms[0].api_key = \"your_api_key\" | # <<<--- 替换 API Key! 其它参数按需选择
.llms[1].provider = \"siliconflow\" |
.llms[1].embedding_model = \"Pro/BAAI/bge-m3\" |
.llms[1].api_key = \"your_api_key\" | # <<<--- 替换 API Key!
.storage.feed.rewrites[0].transform.to_text.prompt = \"{{.summary_html_snippet}}使用中文回复\"" \
> "$CONFIG_OUTPUT"
wget -qO "$COMPOSE_OUTPUT" "$COMPOSE_URL"
' ; cd zenfeed; docker compose up -d --wait
💐恭喜 V 友安装成功!!
关于后续如何使用现成的 Web 端,配置 Cherry Studio MCP 参考 README。也就几分钟的事情
顺便帮忙点个 Star ,防止我太监掉 💐
https://github.com/glidea/zenfeed
欢迎 V 友提需求
预览图片补录
![]() |
1
SGL 3 天前 ![]() 可以,很强。
|
2
IndexOutOfBounds OP @SGL 感谢佬的鼓励
|
![]() |
3
set 3 天前 ![]() 支持!这项目满足需求
|
![]() |
4
shot 3 天前 ![]() 大赞!
请问是否有计划做一个插件系统:通过执行自定义插件,对 RSS 内容进行标记/过滤/增强/…… 如果要支持插件,也许我也能贡献绵薄之力。 我去年就整理了 RSS 阅读器的一些需求,主要关注插件支持能力。但是一直拖延着没动手…… https://github.com/users/HuangJian/projects/1/views/1 |
5
IndexOutOfBounds OP 每篇内容都被抽象成一个标签集合(比如标题,来源,正文... 都是标签),在管道的每一个节点,可以基于自定义 Prompt 对特定标签值进行处理(比如评分、分类、摘要、过滤、添加新标签等...),而后基于标签查询过滤,路由,展示... See Rewrite Rules
@shot 你看这个符合需求不,安装后在前端的“高级设置”中自定义 https://github.com/glidea/zenfeed/blob/main/docs/config-zh.md#%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E9%85%8D%E7%BD%AE-storagefeedrewrites For example: ```yaml rewrites: - skip_too_short_threshold: 0 match_re: ^[\s\S]{0,300}$ # 丢掉 300 字以内的短文 action: drop_feed - skip_too_short_threshold: 0 transform: to_text: llm: qwen-small prompt: "{{ .score }}" # 给内容打分(使用内置 Prompt ) label: score - source_label: score # 引用刚刚的分数 skip_too_short_threshold: 0 match_re: ^[0-6]$ # 6 分及以下丢掉 action: drop_feed - transform: to_text: llm: qwen-small prompt: "{{ .category }}" # 给内容分类,后续你可以根据分类 Group by 查询,或者一个分类一个邮件... label: category - transform: to_text: llm: qwen-small prompt: | {{ .tags }} 使用中文回复 # 打 tags 。在内置 Prompt 的基础上补充要求 label: tags - transform: to_text: llm: qwen-small prompt: | {{ .summary_html_snippet }} # 总结成可视化的 html ,也就是上面预览看到的内容 label: summary_html_snippet ``` |
![]() |
6
Pipecraft 3 天前 ![]() 非常棒的项目
|
![]() |
7
shot 3 天前 ![]() @IndexOutOfBounds #5
> - skip_too_short_threshold: 0 > match_re: ^[\s\S]{0,300}$ # 丢掉 300 字以内的短文 > action: drop_feed 如果我理解正确的话,这是通过 yaml 来配置和启用“系统内置”的插件。 已经有了初步的插件化支持。👍 我更期望后继能扩展到支持用户自己编写插件、上传系统、沙盒执行。 比如说我订阅了 V2EX 的 RSS 源,希望有一个功能:在主题发布两天后统计它的回复数,感谢数和红心数。 这可能是一个非常小众的需求,不一定会内置在系统里。那就只能既往插件机制来支持用户自行编写。 |
![]() |
8
luofeiff6666 3 天前 ![]() 很有想法,直击痛点。
|
9
IndexOutOfBounds OP @shot 如果 RSS 内容本身就有 “回复数,感谢数和红心数” 通过上面的配置写自定义 Prompt 让模型提取也是可以的,或者可以简单分析出来
但至于说 “两天后” 这个目前就得靠 rss 源自己适配了,爬到 v2 帖子后,攒两天评论再暴露成 feed |
![]() |
10
Akagi201 3 天前 ![]() 我用 rust 实现了类似的, 没有 op 功能丰富, rsshub mcp server 很受启发, 感谢分享.
op 有没有想过结合 AI + 搜索. 采集下来的 rss 内容(title + description + link) 进行向量化存储, 形成一个垂直领域知识库的产品? 另外, 我没考虑做实时监控, 基本用作每天采集汇总一次消息 + AI 分析. 太少的内容 AI 也没啥可分析的. 单个文章 AI 分析我感觉这个场景价值不大, 重点还是整体的分析. 比如汇总一天金融新闻, 对整体行情进行分析. |
11
IndexOutOfBounds OP @Akagi201 现在就是向量化存储哦,支持搜索的
“比如汇总一天金融新闻, 对整体行情进行分析.” 这个通过 MCP chat 可以实现时间范围 & 语义查询并分析,可以看下上面的预览图 不过如果你是说每天发的简报邮件,支持多篇文章一起总结的话,目前倒是没支持,不过是个好的功能点 |
12
v2er119 3 天前
很受启发,我的简阅 rss 项目,有了更大的想象空间,太赞了!
|
13
IndexOutOfBounds OP @v2er119 哈哈很高兴对你有启发,也欢迎基于 zenfeed API 改造你的简阅 rss 项目。
现在我这前端很草台,期待更多第三方选择 |
![]() |
14
lc4t 3 天前 ![]() 好!
|
15
xajh87 3 天前 ![]() 支持一波,一定好好体验。大厂的就是给小白网民降至的。
|
16
monosolo1on1 3 天前 ![]() 好!
|
17
IndexOutOfBounds OP @monosolo1on1 @lc4t 多么朴实无华的赞美
|
![]() |
18
hellopz 3 天前
我有点没看懂,RSS 小白,请问下信息源在哪里,是本地部署本地发 RSS 吗,此外 ai 有没有公共 ak ,一定要用个人的 ak 吗(没注册过,懒 hhh
|
![]() |
19
hanangellove 3 天前
有点意思
|
20
IndexOutOfBounds OP |
![]() |
21
playniuniu 3 天前
非常需要,已 star
|
22
IndexOutOfBounds OP 更新了更简单的安装方式: https://github.com/glidea/zenfeed?tab=readme-ov-file#1-%E5%AE%89%E8%A3%85
只要你有硅基流动 APIKey ,一分钟跑起来!!! |
![]() |
23
fengyn 2 天前
@IndexOutOfBounds 已经使用感觉不错,op 要不要考虑把这段设置作为默认设置,感觉更符合开箱即用。
|
24
IndexOutOfBounds OP @fengyn token 嗯好建议可以考虑作为默认设置,不过 Token 消耗量很大的
所以可能有 默认设置 1 ,2.. |
25
liaocaoxuezhe 1 天前 ![]() AI + RSS 是一个很好的方向,去年我开始关注到这个赛道的应用。
之前写了一篇文章,博主可以看下,里面提到了一个基于用户兴趣进行相似性排序的方案,看看您是否感兴趣。 https://sspai.com/post/89494 |
26
IndexOutOfBounds OP |
27
IndexOutOfBounds OP @liaocaoxuezhe 我理解这个产品上对应的功能就是信息监控,设置自己的关注点。可能我一下怼了太多功能,大家好像都没咋注意到
|
28
liaocaoxuezhe 1 天前
@IndexOutOfBounds #27 还不是产品,只是我的想法,通过设置自己关注点,也是通过向量搜索和标签过滤来筛选内容。
|