把微信公众号变成 RSS:wewe-rss 私有化部署完整指南
【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss
wewe-rss 是一款基于微信读书接口、把微信公众号文章转成标准 RSS/Atom/JSON 订阅源的自托管工具,适合想把订阅号内容统一管进阅读器的人。跟着下面四步走,15 分钟内你手里就有了一条自己的聚合订阅流。
把服务跑起来
最短路径是 Docker Compose,一条命令把服务和数据库一起拉起来:
git clone https://gitcode.com/GitHub_Trending/we/wewe-rss cd wewe-rss docker compose up -d服务默认监听 4000 端口,浏览器打开http://localhost:4000就能进管理界面。不想用 Docker 的话,装好 Node 20 环境后执行pnpm install && pnpm run -r build && pnpm run start:server也能跑起来,只是数据库要自己准备。
💡 提示:不想维护 MySQL 时,把启动文件换成docker-compose.sqlite.yml就是轻量 SQLite 版本,单人自用足够;想给/feeds之外的后台接口加一道授权,可以在 compose 里设置AUTH_CODE。
从账号到第一条内容
- 添加读书账号:进入账号管理,点添加读书账号,用要抓取的微信读书账号扫二维码登录。登录成功的凭证保存在服务端,只用来拉取公众号文章。 ⚠️ 扫码时千万别勾选"24 小时后自动退出",否则账号隔一天就失效,得重新扫码。
- 添加公众号源:切到公众号源标签页,点左上角添加,在弹窗里粘贴一篇该公众号的文章链接(微信里分享一条出来复制即可),点确定。系统会自动识别公众号身份,并把它发布过的历史文章一并抓回来。别一口气加太多号,频率过高会被封控,封了要等 24 小时才恢复;账号状态里出现"今日小黑屋"同理,等一天即可。
- 复制订阅地址:添加成功后每个公众号都会生成独立 feed,把地址贴进你的阅读器就算完成。
# 单个公众号 http://localhost:4000/feeds/{公众号ID}.rss # 全部公众号聚合 http://localhost:4000/feeds/all.rss⚠️ 打算把服务放到公网给别人用的话,务必在环境变量里把SERVER_ORIGIN_URL设成服务器公网 IP 或域名,不然生成链接里的路径会指向 localhost,别人打开全是 404。
把信息流调到合身
过滤全部走查询参数,在订阅地址后拼上即可,阅读器端一行都不用改:
| 参数 | 作用 | 默认值 / 取值 |
|---|---|---|
title_include | 只保留标题命中关键词的文章,多词用竖线\|分隔 | 可选 |
title_exclude | 剔除标题命中关键词的文章,同样竖线分隔 | 可选 |
limit/page | 单次拉取条数 / 页码 | 聚合流 30,单源 10 |
mode=fulltext | 单次请求输出全文,立即生效 | 默认摘要 |
update=true | 手动触发单个 feed 立即更新 | false |
组合起来的例子:http://localhost:4000/feeds/all.atom?title_include=AI\|机器学习&title_exclude=招聘&limit=20
控制整体节奏的是环境变量,写在 compose 里:
| 变量 | 作用 | 默认值 |
|---|---|---|
FEED_MODE | 置为fulltext后持续输出全文,响应会变慢、更吃内存 | 摘要模式 |
CRON_EXPRESSION | 定时抓取新文章的 Cron 表达式 | 35 5,17 * * *(每天两次) |
MAX_REQUEST_PER_MINUTE | feed 接口限流 | 60 |
UPDATE_DELAY_TIME | 连续更新之间的延迟,降低被风控概率 | 60s |
输出格式看 URL 后缀:.rss兼容性最好,.atom规格更严格,.json留给脚本消费。
走出阅读器
钉钉群推送。wewe-rss-dingtalk/目录里自带一个独立服务,每 4 小时查一次数据库里最近 12 小时的新文章,经机器人 Webhook 推成卡片消息。在main.py里填好access_token和secret就能跑,公众号一发文,群里就收到。
喂给自动化脚本。聚合流本身就是标准 JSON Feed,任何语言直接消费。比如只挑 AI 相关标题:
import requests resp = requests.get("http://localhost:4000/feeds/all.json", params={"limit": 20, "title_include": "AI"}) for item in resp.json()["items"][:5]: print(item["title"])把它挂进定时任务,接邮件、飞书或你自己的告警都行。feed 的生成与过滤逻辑集中在 feeds.service.ts,想加一种输出格式或过滤规则,从这里下手最顺。
跑通之后,再做这三件事
- 先只订 2~3 个你天天看的公众号,跑一周再回头调
title_include和CRON_EXPRESSION,哪些配置真有用会一目了然; - 每隔几天瞄一眼账号状态,"失效"就重新扫码、"小黑屋"就等一天,别反复重试;
- 动手改功能前,先读一遍
handleGenerateFeed的参数流转,改起来比想象中短。
服务跑起来之后,那些在订阅号列表里被刷到第三屏的文章,会安安静静躺在你的阅读器里等你。
【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考