ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

10分钟从零跑通微信公众号RSS订阅:wewe-rss私有化部署与使用全记录

10分钟从零跑通微信公众号RSS订阅:wewe-rss私有化部署与使用全记录 10分钟从零跑通微信公众号RSS订阅wewe-rss私有化部署与使用全记录【免费下载链接】wewe-rss更优雅的微信公众号订阅方式支持私有化部署、微信公众号RSS生成基于微信读书项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss你关注的技术公众号更新散落在微信消息流里旧文很难翻排版和广告还干扰阅读。如果能把它们变成标准 RSS就能在熟悉的阅读器里统一阅读、归档和搜索。wewe-rss 就是一个可私有化部署的微信公众号 RSS 订阅服务这篇文章带你从零把它跑起来。项目速览wewe-rss 的思路是借助微信读书的接口你扫码登录一次自己的微信读书账号之后它就能按账号拉取你关注的公众号文章包括历史文章定时抓取更新再输出成 RSS 2.0、Atom、JSON Feed 三种格式。整个过程数据存在你自己的服务器和数据库里不依赖任何第三方 SaaS。它适合两类人一是想摆脱碎片化阅读、把公众号内容纳入 RSS 工作流的个人读者二是想给团队做一个内容聚合入口的开发者。下面的主界面截图展示了整体布局重点看左侧的订阅源列表和右侧的文章明细界面信息很直接左侧是已订阅的公众号列表选中某个源后右侧列出它的文章标题和发布时间顶部还有立即更新开关、删除按钮和 RSS 入口右上角可切换深色主题。核心特性概括基于微信读书订阅公众号可拉取公众号历史文章后台定时自动更新内容输出 rss、atom、json 三种格式支持全文内容与标题过滤全部订阅源可导出 OPML代码组织上是一个前后端分离的 monorepo核心逻辑集中在 feeds.service.ts 里负责定时抓取和 RSS 生成apps/ ├── server/ # NestJS 后端抓取、RSS 生成、定时任务 │ └── src/feeds/ # 核心逻辑 ├── web/ # React 管理界面 └── wewe-rss-dingtalk/ # 钉钉推送模块动手搭建Docker Compose 部署步骤仓库里自带了两份 compose 文件docker-compose.ymlMySQL 版推荐和docker-compose.sqlite.ymlSQLite 版单容器更轻但官方标注不推荐。下面按 MySQL 版走SQLite 版后面一句话带过。第一步克隆仓库并进入目录# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/we/wewe-rss # 进入项目目录 cd wewe-rss第二步打开docker-compose.yml先做一件事把MYSQL_ROOT_PASSWORD和DATABASE_URL里两处默认密码123456改成你自己的强密码两处要一致。改完保存。第三步启动全部服务# 后台启动 MySQL 和 wewe-rss 应用 docker-compose up -d执行后用docker-compose ps查看预期结果是两个容器都在运行且db容器状态为 healthy应用会等数据库健康检查通过才启动。等几十秒后访问http://localhost:4000能看到带公众号源 / 账号管理两个导航的管理界面说明服务已就绪。如果机器资源紧张也可以直接跑单容器的 SQLite 版docker-compose -f docker-compose.sqlite.yml up -d数据库文件会落在本地的./data目录记得把这个目录做备份。服务起来后按部署习惯再配几个环境变量在app.environment下追加environment: - DATABASE_URLmysql://root:你的密码db:3306/wewe-rss?schemapublicconnect_timeout30pool_timeout30socket_timeout30 - AUTH_CODE一串复杂随机码 # 接口授权码生产环境强烈建议设置 - FEED_MODEfulltext # 开启全文输出响应会变慢、更吃内存 - CRON_EXPRESSION0 */4 * * * # 覆盖默认每天两次改为每4小时更新 - SERVER_ORIGIN_URLhttp://你的域名:4000 # 外网访问时必填配置项都来自 README 的环境变量表其中CRON_EXPRESSION默认值是35 5,17 * * *每天 5:35 和 17:35 各更新一次UPDATE_DELAY_TIME默认 60 秒用于控制连续更新单个源之间的间隔降低被风控的概率。核心功能逐个拆解绑定微信读书账号拿到内容的前提所有抓取的起点是微信读书账号因为 wewe-rss 走的是微信读书的接口。操作路径访问http://localhost:4000→ 顶部导航点账号管理 → 点右上角添加读书账号 → 手机微信扫码登录。账号管理界面长这样重点看右上角的添加入口和列表里的状态列登录后列表里会出现一条账号记录包含 ID、用户名、状态、更新时间和删除操作。状态有三种正常启用、今日小黑屋被风控等一天自动恢复账号正常时重启容器可清除记录、失效登录态过期需重新扫码。添加公众号源把一条分享链接变成订阅源账号绑定后到公众号源页点左上角添加在弹窗里粘贴一条该公众号的任意文章分享链接即可不用手动填公众号 ID。添加弹窗就是下面这个样子只需填分享链接一个字段确认后系统会自动识别公众号信息并开始抓取该号的历史文章稍等片刻左侧列表就会出现这个源。注意一点短时间连续添加多个源容易被风控触发后等 24 小时解封所以建议分批添加。生成 RSS三种格式直接喂给阅读器每个订阅源都会生成独立地址全部源则有聚合地址{ORIGIN}是你的服务地址# 单个公众号rss/atom/json 三选一 {ORIGIN}/feeds/{feedId}.rss # 全部公众号聚合 {ORIGIN}/feeds/all.rss {ORIGIN}/feeds/all.atom {ORIGIN}/feeds/all.jsonfeedId可以在公众号源列表里从 RSS 入口获取或在 feeds.controller.ts 对应的路由里确认参数结构。把all.rss这一条地址加进 Feedly、Inoreader 之类的阅读器所有公众号更新就会自动同步进去。标题过滤与手动更新只留你想看的内容聚合地址支持查询参数做过滤和分页常用组合# 只保留标题含指定关键词的文章多关键词用 | 分隔 {ORIGIN}/feeds/all.atom?title_includeAI|机器学习 # 排除特定关键词 限制条数 翻页 {ORIGIN}/feeds/MP_WXS_123.json?limit30title_exclude广告|推广page2另外给单个源地址加上?updatetrue可以手动触发一次该源的更新不用等定时任务{ORIGIN}/feeds/MP_WXS_123.rss?updatetrue过滤和更新的参数解析都在 feeds.controller.ts 里生成逻辑在 feeds.service.ts想扩展新的过滤维度比如按发布时间可以从这两个文件入手。实战场景场景一把关注列表搬进 RSS 阅读器按动手搭建完成部署访问http://localhost:4000。账号管理里扫码绑定微信读书账号。公众号源里粘贴 3 个常用公众号的文章链接逐一添加等待历史文章拉取完成。把{ORIGIN}/feeds/all.rss添加到你的阅读器以 Inoreader 为例添加订阅源 → 粘贴地址 → 确认。到下一个更新时间点或点列表顶部的立即更新刷新阅读器能看到各公众号的最新文章按时间排列点击标题直达原文。场景二把新文章推送到团队钉钉群仓库自带的 wewe-rss-dingtalk/ 模块会定期查库并把最近的新文章以 Markdown 卡片形式发到钉钉群适合技术团队共享优质内容用钉钉自定义机器人建群机器人加签模式拿到access_token和secret。进入wewe-rss-dingtalk目录编辑main.py把两个空值填上。打开根目录docker-compose.yml把db服务下被注释的ports: - 13306:3306取消注释——推送脚本默认连localhost:13306不暴露这个端口它会连不上库。在wewe-rss-dingtalk目录执行docker-compose up -d。每 4 小时一个周期群里会收到一条卡片消息包含公众号名称、文章标题、原文链接和发布时间。场景三给专题内容做一条独立信息流假设你同时关注大量杂号只想要 AI 方向的内容构造过滤地址{ORIGIN}/feeds/all.atom?title_includeAI|机器学习|大模型。浏览器打开这个地址确认输出的条目都是你想要的主题。把这个带参数的完整 URL 作为独立订阅源添加到阅读器和all.rss并存。之后每天就能在阅读器里同时看到全量流和AI 专题流两条更新互不干扰。踩坑与排错问题原因解决账号刚绑定就显示失效扫码时勾选了24 小时后自动退出登录态被主动缩短重新扫码登录这次不要勾选该选项账号进入今日小黑屋源不更新添加源或请求频率过高触发风控等 24 小时自动恢复账号正常时可重启服务/容器清除记录调大UPDATE_DELAY_TIME降低频率外网能打开页面但 RSS 里文章链接是 404 或打不开没设SERVER_ORIGIN_URL生成的条目 URL 用的是内网地址将其设为服务器公网 IP 或域名含端口重启容器生效钉钉推送脚本连不上数据库、取不到数据默认 compose 没有暴露 MySQL 的 13306 端口而脚本按localhost:13306连接在docker-compose.yml的db服务下取消注释ports: - 13306:3306开启FEED_MODEfulltext后接口明显变慢、内存上涨全文模式会抓取并清洗每篇文章的完整正文占用更多内存源少时可以开源多时保持默认不设为 fulltext用摘要模式接口任何人都能调用AUTH_CODE为空或不设置时鉴权是关闭的/feeds路径本身不需要设置一串复杂随机码作为AUTH_CODE写在最后wewe-rss 的价值在于把公众号内容从微信生态里解耦出来历史文章可查、更新定时自动、格式标准且可过滤而整套数据都落在你自己的数据库里。它不复杂但也正因此稳定——你真正要管理的只有两件小事账号登录态和请求节奏。下一步建议先跑通 MySQL 版部署添加 3 个左右常读源观察一两个更新周期确认文章入库正常后再考虑开 fulltext 或接钉钉推送。 NestJS Prisma 后端MySQL / SQLite 双数据库支持⚛️ React Vite TypeScript 管理界面 Docker Compose 一条命令部署含健康检查 自带钉钉机器人推送模块【免费下载链接】wewe-rss更优雅的微信公众号订阅方式支持私有化部署、微信公众号RSS生成基于微信读书项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表