by tmwgsicp
一款完全开源的微信公众号文章获取、 RSS 订阅API服务,支持IP代理池反风控,支持mcp接入各种Agent工具。
# Add to your Claude Code skills
git clone https://github.com/tmwgsicp/wechat-download-apiGuides for using ai agents skills like wechat-download-api.
Last scanned: 7/10/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-07-10T07:34:09.864Z",
"npmAuditRan": true,
"pipAuditRan": false,
"promptInjectionRan": true
}wechat-download-api is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by tmwgsicp. 一款完全开源的微信公众号文章获取、 RSS 订阅API服务,支持IP代理池反风控,支持mcp接入各种Agent工具。. It has 790 GitHub stars.
Yes. wechat-download-api passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/tmwgsicp/wechat-download-api" and add it to your Claude Code skills directory (see the Installation section above).
wechat-download-api is primarily written in Python. It is open-source under tmwgsicp on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh wechat-download-api against similar tools.
No comments yet. Be the first to share your thoughts!
完全开源 | 免费部署 | RSS 订阅 | 文章抓取 | 反风控
100% 开源,100% 免费。 代码完全公开,私有化部署无任何限制,不搞"开源"之名行收费之实。
最快速的部署方式,无需配置 Python 环境,一键启动:
# 方式一:使用 docker-compose(推荐)
git clone https://github.com/tmwgsicp/wechat-download-api.git
cd wechat-download-api
cp env.example .env
# 编辑 .env 设置 SITE_URL 为实际访问地址
docker-compose up -d
# 方式二:直接运行
docker run -d \
-p 5000:5000 \
-v $(pwd)/data:/app/data \
-v $(pwd)/.env:/app/.env \
--name wechat-api \
tmwgsicp/wechat-download-api:latest
服务启动后访问 http://localhost:5000/login.html 扫码登录即可使用。
支持多架构:linux/amd64 / linux/arm64(Apple Silicon、树莓派、ARM 服务器)
不想折腾部署?30 秒注册即可使用 👉 wechatrss.waytomaster.com
搜索公众号名称,拿到 RSS 链接,丢进你的阅读器——Feedly、Inoreader、NetNewsWire 全部兼容。
本工具需要通过微信公众平台后台的登录凭证来调用接口,因此使用前需要:
.env 文件,有效期约 4 天,过期后需重新扫码登录后即可通过 API 获取任意公众号的公开文章(不限于自己的公众号)。
本地电脑可以直接使用! 不需要公网服务器——在本地启动服务后通过
localhost访问即可完成扫码登录和全部功能。只有当你需要从其他设备(如手机 RSS 阅读器)远程访问时,才需要公网服务器或内网穿透。
# 1. 克隆项目
git clone https://github.com/tmwgsicp/wechat-download-api.git
cd wechat-download-api
# 2. 配置环境变量
cp env.example .env
# 编辑 .env,设置 SITE_URL 为实际访问地址(如 http://your-domain.com)
# 3. 启动服务
docker-compose up -d
# 4. 查看日志
docker-compose logs -f
第一步:克隆项目
git clone https://github.com/tmwgsicp/wechat-download-api.git
cd wechat-download-api
第二步:一键启动
bash start.sh # Linux/macOS
# 或
start.bat # Windows
脚本会自动完成环境检查、虚拟环境创建、依赖安装和服务启动。
第三步:扫码登录
访问 http://localhost:5000/login.html,用公众号管理员微信扫码登录。
| 地址 | 说明 |
|---|---|
| http://localhost:5000 | 管理面板 |
| http://localhost:5000/login.html | 扫码登录 |
| http://localhost:5000/api/docs | Swagger API 文档 |
| http://localhost:5000/api/health | 健康检查 |
start.sh 脚本在 Linux 上以 sudo 运行时,会自动注册 systemd 服务并启用开机自启:
sudo bash start.sh
之后可通过以下命令管理服务:
# 查看运行状态
bash status.sh
# 停止服务
bash stop.sh
# 手动操作
sudo systemctl restart wechat-download-api
sudo systemctl status wechat-download-api
如需通过域名或 HTTPS 访问,配置 Nginx 反向代理到 localhost:5000:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
复制 env.example 为 .env 并按需修改:
cp env.example .env
主要配置项参见 env.example 中的注释说明。
POST /api/article — 解析微信公众号文章,返回标题、正文、图片等结构化数据
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url |
string | 是 | 微信文章链接(https://mp.weixin.qq.com/s/...) |
请求示例:
curl -X POST http://localhost:5000/api/article \
-H "Content-Type: application/json" \
-d '{"url": "https://mp.weixin.qq.com/s/xxxxx"}'
返回字段:title 标题、content HTML 正文、plain_content 纯文本正文、author 作者、publish_time 发布时间戳、images 图片列表
GET /api/public/searchbiz — 按关键词搜索微信公众号,获取 FakeID
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | 是 | 搜索关键词(公众号名称) |
请求示例:
curl "http://localhost:5000/api/public/searchbiz?query=公众号名称"
返回字段:list[] 公众号列表,每项包含 fakeid、nickname、alias、round_head_img
GET /api/public/accountinfo — 获取公众号的认证主体、认证状态、原创文章数等信息
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
fakeid |
string | 是 | 公众号的 FakeID(从搜索接口获取) |
请求示例:
curl "http://localhost:5000/api/public/accountinfo?fakeid=YOUR_FAKEID"
返回示例:
{
"success": true,
"data": {
"identity_name": "腾讯科技(深圳)有限公司",
"is_verify": 2,
"original_article_count": 15234
}
}
返回字段:
identity_name — 认证主体名称(公司/机构名称)is_verify — 认证状态(0=未认证, 1=微信认证, 2=新媒体认证)original_article_count — 原创文章总数GET /api/public/articles — 获取指定公众号的文章列表,支持分页
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
fakeid |
string | 是 | 目标公众号的 FakeID(从搜索接口获取) |
begin |
int | 否 | 偏移量,默认 0 |
count |
int | 否 | 获取数量,默认 10,最大 100 |
keyword |
string | 否 | 在该公众号内搜索关键词 |
请求示例:
# 获取前 50 篇
curl "http://localhost:5000/api/public/articles?fakeid=YOUR_FAKEID&begin=0&count=50"
# 获取第 51-100 篇
curl "http://localhost:5000/api/public/articles?fakeid=YOUR_FAKEID&begin=50&count=50"
GET /api/public/articles/search — 在指定公众号内按关键词搜索文章
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
fakeid |
string | 是 | 目标公众号的 FakeID |
query |
string | 是 | 搜索关键词 |
begin |
int | 否 | 偏移量,默认 0 |
count |
int | 否 | 获取数量,默认 10,最大 100 |
请求示例:
curl "http://localhost:5000/api/public/articles/search?fakeid=YOUR_FAKEID&query=关键词"
GET /api/rss/{fakeid} — 获取指定公众号的 RSS 2.0 订阅源
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
fakeid |
string(路径) | 是 | 公众号 FakeID |
limit |
int(查询) | 否 | 返回文章数量上限,默认 20 |
使用方式:
# 1. 搜索公众号获取 fakeid
curl "http://localhost:5000/api/public/searchbiz?query=人民日报"
# 返回 fakeid: MzA1MjM1ODk2MA==
# 2. 添加订阅
curl -X POST http://localhost:5000/api/rss/subscribe \
-H "Content-Type: application/json" \
-d '{"fakeid": "MzA1MjM1ODk2MA==", "nickname": "人民日报"}'
# 3. 手动触发一次轮询(立即拉取文章)
curl -X POST http://localhost:5000/api/rss/poll
# 4. 获取 RSS 源(把这个地址添加到 RSS 阅读器)
curl "http://localhost:5000/api/rss/MzA1MjM1ODk2MA=="
也可以通过管理面板的 RSS 订阅 页面可视化管理,搜索公众号一键订阅并复制 RSS 地址。
关于 RSS 内容: RSS 源包含完整文章内容(图文混排),您可以直接在 RSS 阅读器中阅读全文。
系统使用 SOCKS5 代理池 + Chrome TLS 指纹模拟技术获取文章内容,有效规避微信风控。
扫码登录后,系统会自动将微信凭证用于内容获取,无需手动配置。如需禁用完整内容获取(仅保留标题和摘要),可在
.env中设置RSS_FETCH_FULL_CONTENT=false。
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/api/rss/subscribe |
添加 RSS 订阅 |
DELETE |
/api/rss/subscribe/{fakeid} |
取消 RSS 订阅 |
GET |
/api/rss/subscriptions |
获取订阅列表 |
POST |
/api/rss/poll |
手动触发轮询 |
GET |
/api/rss/status |
轮询器状态 |
把已抓取的文章拉成 markdown(带 YAML frontmatter),可直接导入 Obsidian / Logseq 等工具。
GET /api/feed/articles.json — 列出本地已抓取的文章元数据(含文章 id),按时间游标增量同步
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
since |
int(查询) | 否 | Unix 时间戳,返回 publish_time > since 的文章;首次传 0 |
fakeid |
string(查询) | 否 | 只看某个公众号 |
limit |
int(查询) | 否 | 单次返回条数(1-200),默认 50 |
响应含 next_since(本批最后一篇的发布时间),作为下次 since 循环调用,拉到 articles 为空即同步完成;之后用保存的 next_since 做每日增量。
GET /api/feed/article/{id}.md — 按 id 获取单篇文章的 markdown 正文(带 title / author / nickname / fakeid / publish_time / source_url 等 frontmatter)
# 1. 拉文章列表拿 id(循环 since 直到返回空)
curl "http://localhost:5000/api/feed/articles.json?since=0&limit=200"
# 2. 按 id 下载某篇 markdown(浏览器 / 下载工具会自动存成「标题.md」)
curl -OJ "http://localhost:5000/api/feed/article/1.md"
状态码:200 正文 / 404 不存在 / 422 内容尚未抓取完成(稍后重试)。
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/api/image?url=IMG_URL |
图片代理(仅限微信 CDN 域名) |
GET |
/api/health |
健康检查 |
GET |
/api/stats |
限频统计 |
POST |
/api/login/session/{id} |
初始化登录会话 |
GET |
/api/login/getqrcode |
获取登录二维码 |
GET |
/api/login/scan |
检查扫码状态 |
POST |
/api/login/bizlogin |
完成登录 |
GET |
/api/login/info |
获取登录信息 |
GET |
/api/admin/status |
查询登录状态 |
POST |
/api/admin/logout |
退出登录 |
完整的接口文档请访问 http://localhost:5000/api/docs
复制 env.example 为 .env,登录后凭证会自动保存:
cp env.example .env
| 配置项 | 说明 | 默认值 |
|---|---|---|
WECHAT_TOKEN |
微信 Token(登录后自动填充) | - |
WECHAT_COOKIE |
微信 Cookie(登录后自动填充) | - |
WECHAT_FAKEID |
公众号 FakeID(登录后自动填充) | - |
WECHAT_EXPIRE_TIME |
凭证过期时间(登录后自动填充) | - |
WEBHOOK_URL |
Webhook 通知地址(支持企业微信机器人) | 空 |
WEBHOOK_NOTIFICATION_INTERVAL |
同一事件通知最小间隔(秒) | 300 |
RATE_LIMIT_GLOBAL |
全局每分钟请求上限 | 10 |
RATE_LIMIT_PER_IP |
单 IP 每分钟请求上限 | 5 |
RATE_LIMIT_ARTICLE_INTERVAL |
文章请求最小间隔(秒) | 3 |
RSS_POLL_INTERVAL |
RSS 轮询间隔(秒) | 3600 |
RSS_FETCH_FULL_CONTENT |
RSS 是否获取完整内容(true/false) | true |
PROXY_URLS |
SOCKS5 代理池地址(强烈建议配置,避免账号风控) | 空 |
| `SI |