两条命令搭好自己的微信公众号 RSS:wewe-rss 私有化部署实测
【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss
每天打开微信,服务通知堆得厚厚一层,真正想读的公众号文章被十几条推送压在最底下。前阵子我把这批公众号的更新挪进了 RSS 阅读器,现在每天固定时间扫一眼就行。我用的工具叫 wewe-rss,它把微信公众号文章转换成 RSS 订阅源,部署在自己的服务器上。
wewe-rss 是干什么的
公众号文章关在微信生态里,你手里的 RSS 阅读器拿不到它们,wewe-rss 解决的就是这个问题。它不走公众号页面抓取,而是通过微信读书接口拉取公众号的历史文章,后台定时刷新,文章存进你自己的数据库,再输出成标准 RSS。私有化部署意味着订阅列表和文章数据都落在自己服务器上,不经过任何第三方服务。
后端是 NestJS 服务,前端是一个 React 管理页,一个 compose 文件全部拉起。Feed 接口支持.rss、.atom、.json三种格式输出,所有订阅源还能整体导出 OPML。
两条命令跑起来
git clone https://gitcode.com/GitHub_Trending/we/wewe-rss cd wewe-rss && docker-compose up -d默认 compose 会同时拉起一个 MySQL 8.3 容器,库名和连接地址都写在 docker-compose.yml 里,等容器健康检查通过后,浏览器打开http://localhost:4000就是管理界面。不想带数据库的话,仓库里还有 docker-compose.sqlite.yml,用 SQLite,更轻,但 README 里标注它不推荐用于生产。
启动后通常不用改配置,几个值得知道的环境变量:
AUTH_CODE:服务端接口请求授权码,留空即不启用,/feeds路径不受它影响SERVER_ORIGIN_URL:外网访问时填服务器公网 IP 或域名,用来生成 feed 里的完整 RSS 路径CRON_EXPRESSION:定时更新周期,默认35 5,17 * * *,即每天 5:35 和 17:35 各更新一次FEED_MODE:设为fulltext输出全文,占内存、响应变慢,默认是摘要MAX_REQUEST_PER_MINUTE:每分钟最大请求次数,默认 60
第一次订阅的三步
绑定微信读书账号。打开"账号管理"页,点"添加读书账号",用微信扫码登录微信读书。扫码时别勾选"24小时后自动退出",否则登录态每天过期,得反复重绑。
通过文章链接添加公众号。切到"公众号源"页点"添加",粘贴该公众号任意一篇文章的分享链接(形如https://mp.weixin.qq.com/s/...)。系统从链接里解析出公众号信息,随后抓取它的历史文章。别短时间猛加,频率高了账号容易被封控。
获取RSS订阅地址。公众号出现在列表里后,每个都有独立 feed 地址:http://localhost:4000/feeds/{公众号ID}.rss;所有公众号合并成一个源则用http://localhost:4000/feeds/all.rss。后缀换成.atom或.json就是对应格式,填进 RSS 阅读器即可。
值得留意的两个细节
按标题关键词过滤 feed
feed 接口支持title_include和title_exclude两个查询参数,各自多个关键词用竖线|分隔,可以组合使用。比如只想看标题带"AI"、排除带"招聘"的文章,就写?title_include=AI&title_exclude=招聘。过滤发生在文章取出之后,all聚合源和单个公众号源都适用。想限制条数或翻页,limit和page也能用,单个源默认取 10 条,聚合源默认 30 条。
全文模式是笔双刃剑
默认 feed 里只有文章摘要,正文不跟。想要全文有两条路:全局设FEED_MODE=fulltext环境变量,或者单次请求在 URL 后加?mode=fulltext,这个参数优先级高于全局设置。抓全文时服务会去原文页面拉 HTML,放进一个 5000 条上限的 LRU 缓存,同一篇第二次读取就不会再请求原文页。代价也直观:每篇文章多一次外部请求,响应变慢、内存上涨,公众号数量多时我们建议保持摘要模式。真要开全文,可以顺手设ENABLE_CLEAN_HTML=true,把原文里的内联样式清理掉。
生成逻辑的核心都在 apps/server/src/feeds/feeds.service.ts,想扩展过滤条件或加新的输出格式,从这个文件入手。
踩坑提醒
- 账号状态显示"今日小黑屋"→ 请求频率过高被微信读书封控 → 等第二天自动恢复,或重启服务容器清除封控记录
- 文章只有一两行摘要→ 默认就是摘要模式 → 设
FEED_MODE=fulltext后重启容器 - 外网访问 RSS 链接指向 localhost→ 没配
SERVER_ORIGIN_URL→ 填公网 IP 或域名后重启 - 添加公众号频繁被拦→ 添加频率过高 → 24 小时后自动解封,一次加几个,别批量灌
适合谁用
如果你本来就用 RSS 阅读器(Feedly、Inoreader、Reeder 都行),想把公众号内容纳入自己的阅读流,又不想把订阅数据放在第三方服务上,wewe-rss 值得花十分钟部署一次。完全不用阅读器的话,这套东西对你意义不大。完整环境变量清单和账号状态说明见 README.md。
【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考