V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
IndexOutOfBounds
V2EX  ›  分享创造

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

  •  
  •   IndexOutOfBounds · 3 天前 · 21908 次点击

    一个月前画的饼: https://www.v2ex.com/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].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

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

    欢迎 V 友提需求

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

    预览图片补录

    x x

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

    不能使用大写的 PWD
    第 4 条附言  ·  2 天前
    29 条回复    2025-04-23 21:15:20 +08:00
    SGL
        1
    SGL  
       3 天前   ❤️ 1
    可以,很强。
    IndexOutOfBounds
        2
    IndexOutOfBounds  
    OP
       3 天前
    @SGL 感谢佬的鼓励
    set
        3
    set  
       3 天前   ❤️ 1
    支持!这项目满足需求
    shot
        4
    shot  
       3 天前   ❤️ 1
    大赞!

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

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

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

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

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

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

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

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

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

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

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

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

    我也在犹豫要不要做一个 App ,还不确确定市场规模
    IndexOutOfBounds
        27
    IndexOutOfBounds  
    OP
       1 天前 via Android
    @liaocaoxuezhe 我理解这个产品上对应的功能就是信息监控,设置自己的关注点。可能我一下怼了太多功能,大家好像都没咋注意到
    liaocaoxuezhe
        28
    liaocaoxuezhe  
       1 天前
    @IndexOutOfBounds #27 还不是产品,只是我的想法,通过设置自己关注点,也是通过向量搜索和标签过滤来筛选内容。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:17 · PVG 23:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.