WeRSS 微信公众号订阅助手 — 全功能 API Skill
连接信息
| 项目 | 值 |
|---|
| 网站地址 | http://150.158.112.193:8001 |
| 登录账号 | admin |
| 登录密码 | admin@123 |
| API 基础路径 | /api/v1/wx |
| API 文档 | http://150.158.112.193:8001/api/docs |
| 公众号总数 | 161 |
| 文章总数 | ~28,677 (含转载) / ~25,229 (排除转载后) |
认证
# 获取 Token(有效期 259200 秒 = 3 天)
TOKEN=$(curl -s -X POST "http://150.158.112.193:8001/api/v1/wx/auth/login" \
-d "username=admin&password=admin@123" \
-H "Content-Type: application/x-www-form-urlencoded" | python -c "import sys,json; print(json.load(sys.stdin)['data']['access_token'])")
# 后续请求携带
curl -s "..." -H "Authorization: Bearer $TOKEN"
注意: 如果 token 过期返回 401,重新登录即可。账号密码永久有效。
一、文章管理 /api/v1/wx/articles
| 方法 | 路径 | 说明 |
|---|
| GET | /articles | 获取文章列表,支持 ?limit=&offset=&mp_id=&status= |
| POST | /articles | 获取文章列表(POST 方式,body 带筛选条件) |
| GET | /articles/{article_id} | 获取文章详情 |
| DELETE | /articles/{article_id} | 删除文章 |
| POST | /articles/{article_id}/refresh | 刷新单篇文章(重新抓取内容) |
| PUT | /articles/{article_id}/read | 标记已读/未读 |
| PUT | /articles/{article_id}/favorite | 收藏/取消收藏 |
| GET | /articles/{article_id}/next | 下一篇文章 |
| GET | /articles/{article_id}/prev | 上一篇文章 |
| DELETE | /articles/clean | 清理无效文章(MP_ID 不存在于 Feeds) |
| DELETE | /articles/clean-old | 清理指定天数前的旧文章 |
| DELETE | /articles/clean_duplicate_articles | 清理重复文章 |
| GET | /articles/refresh/tasks/{task_id} | 查询文章刷新任务状态 |
二、公众号管理 /api/v1/wx/mps
| 方法 | 路径 | 说明 |
|---|
| GET | /mps | 获取公众号列表 ?limit=&offset=&kw= |
| POST | /mps | 添加公众号 |
| GET | /mps/{mp_id} | 获取公众号详情(含 sync_time、article_count) |
| PUT | /mps/{mp_id} | 更新公众号信息 |
| DELETE | /mps/{mp_id} | 删除公众号 |
| GET | /mps/update/{mp_id} | 刷新公众号文章(核心)支持 ?start_page=&end_page= |
| GET | /mps/search/{kw} | 搜索公众号 |
| POST | /mps/by_article | 通过文章链接获取公众号详情 |
| POST | /mps/featured/article | 添加精选文章 |
刷新所有公众号
# 获取所有公众号 ID 并逐个刷新
for offset in 0 30 60 90 120 150; do
curl -s "http://150.158.112.193:8001/api/v1/wx/mps?limit=30&offset=$offset" \
-H "Authorization: Bearer $TOKEN" | \
python -c "import sys,json;[print(a['id']) for a in json.load(sys.stdin)['data']['list']]"
done | while read mp_id; do
curl -s "http://150.158.112.193:8001/api/v1/wx/mps/update/$mp_id" \
-H "Authorization: Bearer $TOKEN" > /dev/null
echo "refreshed $mp_id"
done
三、消息任务(定时刷新)/api/v1/wx/message_tasks
这是实现定时刷新公众号的核心机制。
接口
| 方法 | 路径 | 说明 |
|---|
| GET | /message_tasks | 消息任务列表 ?limit=&offset=&status= |
| POST | /message_tasks | 创建消息任务 |
| GET | /message_tasks/{task_id} | 获取任务详情 |
| PUT | /message_tasks/{task_id} | 更新任务 |
| DELETE | /message_tasks/{task_id} | 删除任务 |
| GET | /message_tasks/{task_id}/run | 手动执行一次任务 |
| POST | /message_tasks/message/test/{task_id} | 测试消息推送 |
| PUT | /message_tasks/job/fresh | 重载调度器(修改任务后必须调用!) |
工作原理
cron 触发 → add_job() → 遍历 mps_id 中的公众号 → 加入主队列
→ do_job() → WxGather.get_Articles() → 真正抓取微信文章
→ web_hook() → 发送通知(副作用)
mps_id: "[]" (空数组)= 覆盖全部 155 个公众号
mps_id: '[{"id":"MP_WXS_xxx","name":"xxx"}]' = 指定特定公众号
- 每个公众号增量检查耗时约 5-20 秒
- 全部 155 个完成一轮约 30 分钟
创建定时刷新任务
# 创建任务
curl -s -X POST "http://150.158.112.193:8001/api/v1/wx/message_tasks" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "定时刷新全部公众号",
"message_type": 1,
"message_template": "{\"msg\":\"refresh\"}",
"web_hook_url": "http://127.0.0.1:8001/api/v1/wx/sys/article/refresh",
"mps_id": "[]",
"cron_exp": "0 */8 * * *",
"status": 1
}'
# 重载调度器以生效(必须!)
curl -s -X PUT "http://150.158.112.193:8001/api/v1/wx/message_tasks/job/fresh" \
-H "Authorization: Bearer $TOKEN"
Cron 表达式参考
| 表达式 | 含义 |
|---|
0 */6 * * * | 每 6 小时(0:00, 6:00, 12:00, 18:00) |
0 */8 * * * | 每 8 小时(0:00, 8:00, 16:00) |
0 1 * * * | 每天凌晨 1:00 |
0 2 * * 0 | 每周日凌晨 2:00 |
当前已配置的任务
- ID:
7ca37bac-846b-40ac-9c1a-267daf40c9a8
- Cron:
0 */6 * * * (每 6 小时)
- 覆盖: 全部 155 个公众号
- Web UI 管理:
http://150.158.112.193:8001/message-tasks
网页端配置路径
- 打开
http://150.158.112.193:8001/message-tasks/add
- 填写:任务名称、类型选「WebHook」、消息模板填
{"msg":"refresh"}
- WebHook 地址填
http://127.0.0.1:8001/api/v1/wx/sys/article/refresh
- Cron 表达式选择
- 公众号:不选 = 全部
- 状态:启用
四、任务队列 /api/v1/wx/task-queue
| 方法 | 路径 | 说明 |
|---|
| GET | /task-queue/status | 总览 |
| GET | /task-queue/main/status | 主队列状态(公众号抓取) |
| GET | /task-queue/content/status | 内容补抓队列状态 |
| GET | /task-queue/history | 任务执行历史 ?limit=&offset= |
| GET | /task-queue/scheduler/jobs | 查看当前定时任务 |
| GET | /task-queue/scheduler/status | 调度器运行状态 |
| POST | /task-queue/clear | 清空任务队列 |
| POST | /task-queue/history/clear | 清空任务历史 |
监控示例
# 查看主队列(是否有积压)
curl -s "http://150.158.112.193:8001/api/v1/wx/task-queue/main/status" \
-H "Authorization: Bearer $TOKEN" | python -m json.tool
# 查看定时任务(确认调度器工作正常)
curl -s "http://150.158.112.193:8001/api/v1/wx/task-queue/scheduler/jobs" \
-H "Authorization: Bearer $TOKEN" | python -m json.tool
Web UI: http://150.158.112.193:8001/task-queue
五、系统信息 /api/v1/wx/sys
| 方法 | 路径 | 说明 |
|---|
| GET | /sys/info | 系统信息(OS、Python 版本、微信 Token 到期时间) |
| GET | /sys/resources | 系统资源(CPU、内存、磁盘、进程) |
| GET | /sys/base_info | 常规信息 |
| POST | /sys/article/refresh | 手动刷新文章统计 |
| GET | /env-exception/stats | 环境异常统计 |
| GET | /env-exception/today | 今日环境异常 |
检查微信 Token 到期时间
curl -s "http://150.158.112.193:8001/api/v1/wx/sys/info" \
-H "Authorization: Bearer $TOKEN" | \
python -c "import sys,json; d=json.load(sys.stdin)['data']['wx']['expiry']; print(f'到期: {d[\"expiry_time\"]} (剩余 {d[\"remaining_seconds\"]/3600:.0f}h)')"
注意: 微信扫码会话约 3 天过期,需在网页端重新扫码续期。
六、配置管理 /api/v1/wx/configs
| 方法 | 路径 | 说明 |
|---|
| GET | /configs | 所有配置项 |
| POST | /configs | 创建配置 |
| GET | /configs/{config_key} | 单个配置 |
| PUT | /configs/{config_key} | 更新配置 |
| DELETE | /configs/{config_key} | 删除配置 |
关键配置项
| 配置 Key | 当前值 | 说明 |
|---|
server.enable_job | True | 任务调度是否启用 |
server.threads | 1 | 处理线程数 |
interval | 10 | 抓取间隔(秒) |
gather.content_auto_check | True | 是否自动检查文章内容 |
gather.content_auto_interval | 59 | 内容检查间隔(分钟) |
gather.model | web | 抓取模式 |
cascade.enabled | False | 级联/分布式部署 |
rss.page_size | 500 | RSS 每页数量 |
token_expire_minutes | 4320 | API Token 有效期(3天) |
七、认证管理 /api/v1/wx/auth
| 方法 | 路径 | 说明 |
|---|
| POST | /auth/login | 账号密码登录 |
| POST | /auth/logout | 注销 |
| POST | /auth/refresh | 刷新 Token |
| GET | /auth/verify | 验证 Token 有效性 |
| POST | /auth/ak/create | 创建 Access Key |
| GET | /auth/ak/list | Access Key 列表 |
| PUT | /auth/ak/{ak_id} | 更新 Access Key |
| DELETE | /auth/ak/{ak_id} | 删除 Access Key |
| POST | /auth/ak/{ak_id}/deactivate | 停用 Access Key |
| GET | /auth/qr/code | 获取登录二维码 |
| GET | /auth/qr/image | 获取二维码图片 |
| GET | /auth/qr/status | 获取扫码状态 |
| GET | /auth/qr/over | 扫码完成 |
| POST | /auth/switch | 切换微信账号 |
| POST | /auth/password/reset | 重置密码 |
八、RSS 订阅源(公开,无需认证)
| 方法 | 路径 | 说明 |
|---|
| GET | /rss | RSS 订阅列表(155 个公众号) |
| GET | /rss/fresh | 更新并获取 RSS 列表 |
| GET | /rss/{feed_id} | 获取指定公众号文章 RSS |
| GET | /rss/{feed_id}/fresh | 更新并获取指定公众号文章 |
| GET | /rss/{feed_id}/api | 特定 RSS 源详情 |
| GET | /rss/content/{content_id} | 缓存的文章内容 |
| GET | /feed/{feed_id}.{ext} | 公众号文章源(xml/json/html) |
| GET | /feed/tag/{tag_id}.{ext} | 按标签获取文章源 |
| GET | /feed/search/{kw}/{feed_id}.{ext} | 搜索公众号文章源 |
九、标签管理 /api/v1/wx/tags
| 方法 | 路径 | 说明 |
|---|
| GET | /tags | 标签列表 |
| POST | /tags | 创建标签 |
| GET | /tags/{tag_id} | 标签详情 |
| PUT | `/ | |