[开源] AI 版 RSS 阅读器;信息监控; MCP 查询分析;每日简报....

148 天前
 IndexOutOfBounds

一个月前画的饼: https://www.v2ex.com/t/1119444

https://github.com/glidea/zenfeed

简单预览

有兴趣再左键点击阅读全文;右键标记已读,彻底从列表消失,减少焦虑

详细介绍

zenfeed 是你的智能信息助手。它自动收集、筛选并总结关注的新闻或话题,然后发送给你。但我们可不是又造了一个 "今日头条"... 🤔

For RSS 老司机 🚗

For 万物追踪 替代品寻觅者 🔍

For 信息焦虑症患者(比如我) 😌

For AI 内容处理的探索者 🔬

安装

替换下方 APIKey 等参数,并完整复制到终端一键执行。注意:

  1. provider 除了硅基还支持 openai, openrouter, deepseek, gemini, volc (火山(keng)引擎)。也可自定义,参考 配置文档。需要自定义其它参数的大佬也可参考

  2. llms[0].model 默认会用来总结内容,相对耗费 Token ,一般 Qwen/Qwen2.5-7B-Instruct (免费!!!)足够,当然米够的话越强越好

  3. 想完全自定义部署的,参考 https://github.com/glidea/zenfeed/tree/main/install

Mac/Linux

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

Windows

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

Roadmap

欢迎 V 友提需求

27402 次点击
所在节点    分享创造
30 条回复
SGL
148 天前
可以,很强。
IndexOutOfBounds
148 天前
@SGL 感谢佬的鼓励
set
148 天前
支持!这项目满足需求
shot
148 天前
大赞!

请问是否有计划做一个插件系统:通过执行自定义插件,对 RSS 内容进行标记/过滤/增强/……
如果要支持插件,也许我也能贡献绵薄之力。

我去年就整理了 RSS 阅读器的一些需求,主要关注插件支持能力。但是一直拖延着没动手……
https://github.com/users/HuangJian/projects/1/views/1
IndexOutOfBounds
148 天前
每篇内容都被抽象成一个标签集合(比如标题,来源,正文... 都是标签),在管道的每一个节点,可以基于自定义 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
```
Pipecraft
148 天前
非常棒的项目
shot
148 天前
@IndexOutOfBounds #5

> - skip_too_short_threshold: 0
> match_re: ^[\s\S]{0,300}$ # 丢掉 300 字以内的短文
> action: drop_feed

如果我理解正确的话,这是通过 yaml 来配置和启用“系统内置”的插件。
已经有了初步的插件化支持。👍

我更期望后继能扩展到支持用户自己编写插件、上传系统、沙盒执行。

比如说我订阅了 V2EX 的 RSS 源,希望有一个功能:在主题发布两天后统计它的回复数,感谢数和红心数。
这可能是一个非常小众的需求,不一定会内置在系统里。那就只能既往插件机制来支持用户自行编写。
luofeiff6666
148 天前
很有想法,直击痛点。
IndexOutOfBounds
148 天前
@shot 如果 RSS 内容本身就有 “回复数,感谢数和红心数” 通过上面的配置写自定义 Prompt 让模型提取也是可以的,或者可以简单分析出来

但至于说 “两天后” 这个目前就得靠 rss 源自己适配了,爬到 v2 帖子后,攒两天评论再暴露成 feed
Akagi201
148 天前
我用 rust 实现了类似的, 没有 op 功能丰富, rsshub mcp server 很受启发, 感谢分享.

op 有没有想过结合 AI + 搜索. 采集下来的 rss 内容(title + description + link) 进行向量化存储, 形成一个垂直领域知识库的产品?

另外, 我没考虑做实时监控, 基本用作每天采集汇总一次消息 + AI 分析. 太少的内容 AI 也没啥可分析的. 单个文章 AI 分析我感觉这个场景价值不大, 重点还是整体的分析. 比如汇总一天金融新闻, 对整体行情进行分析.
IndexOutOfBounds
148 天前
@Akagi201 现在就是向量化存储哦,支持搜索的

“比如汇总一天金融新闻, 对整体行情进行分析.” 这个通过 MCP chat 可以实现时间范围 & 语义查询并分析,可以看下上面的预览图

不过如果你是说每天发的简报邮件,支持多篇文章一起总结的话,目前倒是没支持,不过是个好的功能点
v2er119
148 天前
很受启发,我的简阅 rss 项目,有了更大的想象空间,太赞了!
IndexOutOfBounds
148 天前
@v2er119 哈哈很高兴对你有启发,也欢迎基于 zenfeed API 改造你的简阅 rss 项目。
现在我这前端很草台,期待更多第三方选择
lc4t
148 天前
好!
xajh87
148 天前
支持一波,一定好好体验。大厂的就是给小白网民降至的。
monosolo1on1
148 天前
好!
IndexOutOfBounds
148 天前
@monosolo1on1 @lc4t 多么朴实无华的赞美
hellopz
148 天前
我有点没看懂,RSS 小白,请问下信息源在哪里,是本地部署本地发 RSS 吗,此外 ai 有没有公共 ak ,一定要用个人的 ak 吗(没注册过,懒 hhh
hanangellove
148 天前
有点意思
IndexOutOfBounds
148 天前
@hellopz RSS 大合集: https://docs.rsshub.app/routes/popular
ak 得个人的,不是现成产品,是得好好折腾一番

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1126882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX