用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/TeamWiseFlow/xiaobei --skill wx-mp-engagement命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
口播类视频(口播/演讲/访谈/直播)的轻剪辑——ASR 转写拿逐字时间戳,去口气词/结巴/静音,或识别高光段剪成集锦。仅做基于人声的轻剪辑,不出脚本不烧字幕;纯画面类素材的集锦剪辑走 video-edit。
搜索、筛选并下载 ccMixter 免版税背景音乐(仅 CC BY / CC BY-SA,商用安全), 自动生成 TASL 署名。支持关键词搜索、5 套场景预设、按主题自动选曲、按 ID 下载。 纯客户端,无需 API key。
视频制作全能工具,两种用法——(A) 端到端生产:从零做一支完整视频,出脚本、分镜、机位一致性、素材匹配、闸门、渲染、自检、交付;(B) 给定素材剪辑:已有几个片段要拼一下、给一个片段配音合成、剪辑烧字幕等,直接用 Stage 12 工具箱(assemble/clip-trim/audio-mix/timeline-compose/scene-compose/add-silent-audio/make-outro)。
基于 SOC 职业分类
正在显示 SKILL.md
| name | wx-mp-engagement |
| description | 微信公众号已发布作品数据抓取,写入 published-track的 pub_wx_mp 表。wx_mp session 登录。 |
| metadata | {"openclaw":{"emoji":"📈","requires":{"bins":["python3","camoufox-cli","sqlite3"]}}} |
通过 camoufox-cli + 本技能自管的 wx_mp 持久化 session + 创作者中心列表页爬虫,从公众号后台「发表记录」页抓已发布文章的阅读/点赞/评论/分享/收藏,写入 published-track 的 pub_wx_mp 表。
思路:创作者中心后台的「发表记录」页面把每篇已发布文章的阅读/点赞/评论/分享/收藏列在行内,走「发表记录页 → 解析 innerText → 按标题匹配 → 提行内数字」,不需要打开单篇分析页。
限制:仅支持用户自己有后台权限的号(创作者中心用公众号账号登录)。竞品号拿不到——这是产品约束,不是技术约束。
wx-mp-engagement 自管 camoufox 持久化 session wx_mp,camoufox-cli 命令统一 --session wx_mp --persistent,登录态在 session profile 里已就位即可,不导出 cookie/UA/token。
登录态判断(不再会话前探活):直接 camoufox 打开创作者中心首页,看 redirect URL:
/cgi-bin/home?...&token=xxx = 登录就位login / scanloginqrcode = 失效,需重登失效重登流程(走本技能自己):
wx-mp-engagement login # camoufox 无头截 QR PNG 落 /tmp/qr-wx-mp.png
# (发 QR PNG 给用户 -> 用户扫码后 -> 主会话回复"已扫码")
wx-mp-engagement login-confirm # 验登录就位 + close session(不导出 cookie/UA/token)
退出码:
0 成功1 通用错误(参数错 / row 找不到 / 标题未匹配)2 session 失效(创作者中心首页跳登录页)ls ~/.openclaw/workspace-main/db/published_track.db
# 初始化(如未建)
~/.openclaw/workspace-main/skills/published-track/scripts/init-db.sh
# dump 创作者中心 DOM + 截图 + 解析出的文章列表 JSON
wx-mp-engagement probe
# 产物落在 ./wx-mp-engagement-probe/:01_center.png / 02_list.png / 02_list.html / 03_articles.json
# 列出后台所有文章 + 行内 metrics
wx-mp-engagement list
# 抓单篇(按 row.title 在列表页匹配)
wx-mp-engagement fetch --row-id <pub_wx_mp.id>
# 批量抓取最近 N 天未更新(reads=0)的所有 wx_mp 记录
wx-mp-engagement fetch-all --days 7
发表记录页 URL:https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&begin=0&count=20&token=<TOKEN>&lang=zh_CN
appmsg?action=list(那是草稿箱)count=20 是有意设计,不是 bug:只抓最近 20 篇的 engagement。发布超过 ~30 天的老文章数据已稳定,每天重抓无收益只增风控暴露。老内容不在列表里自然跳过,不要加翻页逻辑去补抓。复盘如需老内容数据,用 DB 里已有的历史值。Token 来源:camoufox 打开首页后从 redirect URL 实时提 token(首页自动重定向到 /cgi-bin/home?...&token=xxx)。token 与 wx_mp session 同寿命,失效则一并失效(首页跳登录页 → 走本技能重登流)。
Cookie 导入禁忌:⚠️ 严禁 camoufox-cli cookies import 造会话(浏览器方案严禁 cookie 导入)。本技能自管 wx_mp 持久化 session,camoufox-cli 命令统一 --session wx_mp --persistent,登录态在 session profile 里已就位,不开独立 session、不 import cookie。撞 fail-first 队列(同 session 正被占用)就等占用方完成再串行接力,不自动 close 正在跑的 session。
数据提取方式:不依赖 selector,直接用 document.body.innerText 解析。页面 innerText 结构清晰:
06月30日
已发表
文章标题
转载/原创/视频号
<阅读数> <赞> <分享> <喜欢(爱心icon)> <评论(留言)> <划线> <投票> <额外?>
1. camoufox 打开创作者中心首页
├─ redirect URL 跳 login/scanloginqrcode → exit 2(调用方触发本技能 login + login-confirm)
└─ redirect URL 跳 /cgi-bin/home?token=xxx → 继续
2. lookup_published_row(row_id) -> 拿 title / publish_url
3. 复用 wx_mp 持久化 session(不开独立 session、不 import cookie):
camoufox-cli --session wx_mp --persistent --json open "https://mp.weixin.qq.com/"
4. 读 redirect URL 拿 token(open 首页自动重定向到 /cgi-bin/home?...&token=xxx):
camoufox-cli --session wx_mp --json url
5. camoufox-cli --session wx_mp --persistent --json open "https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&begin=0&count=20&token=<TOKEN>&lang=zh_CN" -> 发表记录页
6. camoufox-cli --session wx_mp --json eval <innerText 解析 JS> -> [{title, metrics}, ...]
7. match_article(rows, row.title) -> 按标题归一化匹配
8. update-metrics.sh --platform wx_mp --id <row_id> ... -> 写 pub_wx_mp
9. finally: close session(登录态在磁盘 profile,不留进程占内存;下次 fetch 按需重起无头 session,profile 桥接登录态)
{
"ok": true,
"row_id": 42,
"title": "测试文章",
"publish_url": "https://mp.weixin.qq.com/s?__biz=xxx&mid=123",
"session": "wx_mp",
"metrics": {
"reads": 576,
"likes": 10,
"comments": 16,
"shares": 6,
"favorites": 1
},
"update": {"ok": true, "action": "updated"}
}
wx_mp 的互动数据抓取不走 fetch-and-update-metrics.sh——后者只管 xhs/bilibili/douyin/kuaishou 四个纯 HTTP+cookie 平台(login-manager 探活 → fetch-retro-data.ts → update-metrics.sh)。wx_mp 走 camoufox 抓创作者中心,机制完全不同,由本 skill 独立承担,agent 直调本 skill wrapper:
wx-mp-engagement fetch --row-id <rowid>
本 skill 内部流程:
./skills/published-track/scripts/update-metrics.sh --platform wx_mp --id <rowid> ... 写 pub_wx_mp
update-metrics.sh是 published-track 的纯写库脚本,本 skill 写库就走它(不经过 fetch-and-update-metrics.sh)。fetch-and-update-metrics.sh收到--platform wx_mp会直接 exit 1 报错提示走本 skill,两条链路独立、不耦合。
wx_mp 持久化 session,fail-first 队列串行接力,不自动 close 正在跑的 sessionlogin + login-confirm 重登(重登后登录态在 profile 里就位),再 camoufox 打开首页拿新 token 拼列表页 URLwx-mp-publisher 的 AppID/AppSecretprobe 命令检查 02_list.html 确认页面结构,调整解析逻辑login + login-confirm 重登流(重登后登录态在 profile 里就位),再用新 token 拼列表页 URL/cgi-bin/home?...&token=xxx),再拼列表页 URLupdate-metrics.sh --reads ... --likes ... --comments ... 手动填)--session wx_mp --persistent(本技能自管的持久化 session),headless 是默认行为;token 从 session 内 redirect URL 实时拿publish_url 是否为空)自行归因。token 从首页 redirect URL 提取,与 publish_url 无关——publish_url 仅用于输出 JSON,不参与抓取逻辑