[开源] AI 版 RSS 阅读器;信息监控; MCP 查询分析;每日简报.... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
IndexOutOfBounds
V2EX    分享创造

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

  •  
      IndexOutOfBounds 173 天前 27553 次点击
    这是一个创建于 173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个月前画的饼: t/1119444

    https://github.com/glidea/zenfeed

    简单预览

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

    详细介绍

    Go Report Card

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

    Zenfeed

    For RSS 老司机

    • zenfeed 可以是你的 AI 版 RSS 阅读器(配合 zenfeed-web
    • RSSHubMCP Server
    • 可自定义可信 RSS 数据源,且速度超快的 AI 搜索引擎
    • Feedly AI 类似

    For 万物追踪 替代品寻觅者

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

    • "zenfeed" 是 "zen" 和 "feed" 的组合,意为在 feed (信息洪流)中,愿你保持 zen (禅定)
    • 如果你对时不时地刷信息流感到焦虑疲惫,这是因为上下文切换的成本比想象得高,同时也妨碍了你进入心流。推荐你试试简报功能,每天固定时间收到对应时间段的简报邮件,从而一次性地,快速地,总览地完成阅读。啊哈有点文艺复兴的意味是吗

    For AI 内容处理的探索者

    • zenfeed 有一种对内容进行管道化处理的自定义机制,类似 Prometheus Relabeling
    • 每篇内容都被抽象成一个标签集合(比如标题,来源,正文... 都是标签),在管道的每一个节点,可以基于自定义 Prompt 对特定标签值进行处理(比如评分、分类、摘要、过滤、添加新标签等...),而后基于标签查询过滤,路由展示... See Rewrite Rules
    • 重要的是你可以灵活的编排这一切,这赋予了 zenfeed 浓重的工具化,个性化色彩。欢迎通过 Push API 集成私有数据,探索更多的可能性

    安装

    替换下方 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].provier = \"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

    • P0 (大概率会做)
      • 支持生成播客,男女对话,类似 NotebookLM
      • 更多数据源
        • 邮件
        • 网页剪藏 Chrome 插件
    • P1 (可能)
      • 关键词搜索
      • 支持搜索引擎作为数据源
      • APP ?
      • 以下是由于版权风险,暂时不推进。懂法的佬友可以给我科普下
        • 支持 Webhook 通知(不想成为制造内容农场的工具)
        • 爬虫

    欢迎 V 友提需求

    第 1 条附言    173 天前
    图咋挂了,CleanShot 也太坑了
    第 2 条附言    173 天前

    预览图片补录

    x x

    第 3 条附言    172 天前
    更正,Linux 的安装命令第二行改为
    -v "$(pwd):/app" \

    不能使用大写的 PWD
    第 4 条附言    172 天前
    30 条回复    2025-04-26 03:28:32 +08:00
    SGL
        1
    SGL  
       173 天前   1
    可以,很强。
    IndexOutOfBounds
        2
    IndexOutOfBounds  
    OP
       173 天前
    @SGL 感谢佬的鼓励
    set
        3
    set  
       173 天前   1
    支持!这项目满足需求
    shot
        4
    shot  
       173 天前   1
    大赞!

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

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

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

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

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

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

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

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

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

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

    不过如果你是说每天发的简报邮件,支持多篇文章一起总结的话,目前倒是没支持,不过是个好的功能点
    v2er119
        12
    v2er119  
       173 天前
    很受启发,我的简阅 rss 项目,有了更大的想象空间,太赞了!
    IndexOutOfBounds
        13
    IndexOutOfBounds  
    OP
       173 天前
    @v2er119 哈哈很高兴对你有启发,也欢迎基于 zenfeed API 改造你的简阅 rss 项目。
    现在我这前端很草台,期待更多第三方选择
    lc4t
        14
    lc4t  
       173 天前   1
    好!
    xajh87
        15
    xajh87  
       173 天前   1
    支持一波,一定好好体验。大厂的就是给小白网民降至的。
    monosolo1on1
        16
    monosolo1on1  
       173 天前   1
    好!
    IndexOutOfBounds
        17
    IndexOutOfBounds  
    OP
       173 天前
    @monosolo1on1 @lc4t 多么朴实无华的赞美
    hellopz
        18
    hellopz  
       173 天前
    我有点没看懂,RSS 小白,请问下信息源在哪里,是本地部署本地发 RSS 吗,此外 ai 有没有公共 ak ,一定要用个人的 ak 吗(没注册过,懒 hhh
    hanangellove
        19
    hanangellove  
       173 天前
    有点意思
    IndexOutOfBounds
        20
    IndexOutOfBounds  
    OP
       173 天前
    @hellopz RSS 大合集: https://docs.rsshub.app/routes/popular
    ak 得个人的,不是现成产品,是得好好折腾一番
    playniuniu
        21
    playniuniu  
       172 天前
    非常需要,已 star
    IndexOutOfBounds
        22
    IndexOutOfBounds  
    OP
       172 天前
    更新了更简单的安装方式: https://github.com/glidea/zenfeed?tab=readme-ov-file#1-%E5%AE%89%E8%A3%85

    只要你有硅基流动 APIKey ,一分钟跑起来!!!
    fengyn
        23
    fengyn  
       172 天前
    @IndexOutOfBounds 已经使用感觉不错,op 要不要考虑把这段设置作为默认设置,感觉更符合开箱即用。
    IndexOutOfBounds
        24
    IndexOutOfBounds  
    OP
       171 天前
    @fengyn token 嗯好建议可以考虑作为默认设置,不过 Token 消耗量很大的
    所以可能有 默认设置 1 ,2..
    liaocaoxuezhe
        25
    liaocaoxuezhe  
       171 天前   1
    AI + RSS 是一个很好的方向,去年我开始关注到这个赛道的应用。
    之前写了一篇文章,博主可以看下,里面提到了一个基于用户兴趣进行相似性排序的方案,看看您是否感兴趣。
    https://sspai.com/post/89494
    IndexOutOfBounds
        26
    IndexOutOfBounds  
    OP
       171 天前
    @liaocaoxuezhe 感兴趣,先 mark 了,吃完饭仔细看下。
    最近也看到了一款类似的应用,“语鲸”

    我也在犹豫要不要做一个 App ,还不确确定市场规模
    IndexOutOfBounds
        27
    IndexOutOfBounds  
    OP
       171 天前 via Android
    @liaocaoxuezhe 我理解这个产品上对应的功能就是信息监控,设置自己的关注点。可能我一下怼了太多功能,大家好像都没咋注意到
    liaocaoxuezhe
        28
    liaocaoxuezhe  
       171 天前
    @IndexOutOfBounds #27 还不是产品,只是我的想法,通过设置自己关注点,也是通过向量搜索和标签过滤来筛选内容。
    LnTrx
        30
    LnTrx  
       168 天前   1
    像论文一样先综述已有产品、指出自己创新的模式值得推广
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2651 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:45 PVG 21:45 LAX 06:45 JFK 09:45
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86