ByteNoteByteNote

字节笔记本

2026年7月5日

weixin-rss · 微信公众号 RSS 聚合 + AI 总结,单二进制自托管

API中转
¥120

微信公众号是个封闭的内容生态,订阅多了之后想集中追踪更新并不容易。weixin-rss 是 ByteNote 自部署的一个微信公众号 RSS 聚合服务:读取 OPML 订阅列表,并发抓取最新文章,提供分页列表、单篇正文、AI 总结的网页界面。单二进制部署,纯 Go 实现,无外部运行时依赖。

weixin-rss 是什么

weixin-rss 是 ByteNote 出品的一个自托管 RSS 聚合服务,核心场景是聚合微信公众号文章。你只需要维护一份 OPML 订阅文件,服务会自动并发抓取所有订阅号的最新文章,存到本地 SQLite,通过一个简洁的网页界面提供分页列表、单篇正文阅读,以及可选的 AI 总结功能。

整个项目编译后是单个二进制文件,没有 Python、Node 之类的外部运行时依赖,SQLite 也用的是纯 Go 驱动(CGO_ENABLED=0),scp 上服务器就能跑。

线上地址:https://rss.bytenote.net

核心特性

  • OPML 驱动 — 维护一份 feeds.opml 就能管理全部订阅源,导入导出标准格式
  • 并发抓取 — 后台并发抓取所有订阅号的最新文章,首次启动约 1-2 分钟完成全量拉取
  • 分页列表 + 单篇正文 — 网页端浏览所有最新文章,点进去看正文,无需跳转微信
  • AI 总结 — 接 Anthropic 兼容端点(默认 Claude Haiku 4.5),给每篇文章生成简短总结
  • 限流保护 — 总结接口有 RPM 限流(默认 18 RPM)和并发度控制(默认 1),不滥用 API
  • ADMIN_TOKEN 保护 — refresh / summarize 这类管理接口可用 token 加锁
  • 定时任务 — 自动定时抓取新文章、定时生成 AI 总结,按 Asia/Shanghai 时区调度
  • 全局读限流 — 默认 50 RPM、burst 100,防止爬虫把服务打挂
  • 单二进制部署 — 纯 Go,CGO_ENABLED=0,交叉编译到 Linux ARM64 / AMD64 直接跑

怎么用

打开 https://rss.bytenote.net,首页就是聚合后的文章列表,按发布时间倒序排列。

  1. 浏览:在首页翻页看所有订阅号的最新文章
  2. 读正文:点开任意一篇,直接在站内阅读正文,不用跳转微信
  3. 看 AI 总结:每篇文章可生成简短 AI 总结,快速判断是否值得细读
  4. 刷新(管理员):调用 /refresh 接口立刻抓取最新文章
  5. 生成总结(管理员):调用 /summarize 接口批量为新文章生成 AI 总结

适合什么场景

  • 长期订阅大量微信公众号,想要一个统一聚合视图
  • 想在电脑上读公众号长文,不愿一直盯着手机
  • 想给公众号文章做 AI 总结,快速过滤信息流
  • 团队内部共享一份订阅源,统一阅读入口
  • 自托管控数据,不想把订阅记录交给第三方 RSS 服务

技术实现

整个项目用 Go 1.25 写,Web 框架是 Gin,RSS 解析用 gofeed,数据库用 modernc.org/sqlite(纯 Go 驱动,无需 CGO),前端静态资源用 embed.FS 嵌进二进制。

  • 抓取层:并发拉取所有订阅源,gofeed 解析 RSS/Atom
  • 存储层:SQLite,纯 Go 驱动,单文件部署
  • AI 总结:Anthropic 兼容 API(默认走 relay.bytenote.net 中转),支持 RPM 限流 + 并发度控制 + 自定义 prompt 模板热加载
  • 调度层:内置 cron,定时抓取 + 定时总结,时区跟随 TZ 环境变量
  • 部署:部署脚本自动探测架构、交叉编译、scp、原子替换、/api/health 健康检查(失败自动回滚)

整个服务无前端构建依赖(静态资源在编译时嵌入),无数据库服务依赖(SQLite 是文件),真正一个二进制 + 一份 OPML 起飞。

上手试试

如果你也在大量追公众号文章,又想要一个聚合视图加 AI 总结,rss.bytenote.net 是个现成的参考。直接打开就能用,也可以参考它的部署方式自己跑一份。

线上地址:https://rss.bytenote.net

分享: