| name | wechat-gzh-analyzer |
| description | 分析微信公众号后台数据,包括文章阅读量、评论、点赞等统计。当用户需要分析微信公众号数据、导出公众号文章统计报表时调用此技能。 |
微信公众号数据分析器 (Playwright 版)
自动登录微信公众平台,分析文章数据并生成 Excel 报告和可视化图表。
📋 完整工作流程
步骤 1: 运行脚本(后台模式)
当用户请求分析公众号数据时,AI 助手必须以后台模式执行脚本:
⚠️ 关键:不要用 & 后台化! Hermes terminal 工具不支持 & 后台化(会报错 command uses '&' backgrounding),正确方式是用 background=true 参数:
terminal(background=true, command="cd /root/.hermes/skills/openclaw-wxgzh/scripts && python3 wechat_spiderb.py -t week -p 1")
python3 wechat_spiderb.py -t week -p 1 &
参数示例:
-t week -p 1 → 一周内数据,最多 1 页
-t month -p 3 → 一月内数据,最多 3 页
步骤 2: 发送登录二维码(⚠️ 关键步骤,需等待 10 秒,并发送提示消息:二维码正在生成,请稍后请用微信扫码登录。)
二维码文件生成需要约 10 秒,AI 助手必须按以下流程操作:
2.1 等待 + 检查(循环最多 4 次)
sleep 10 && ls -la /tmp/wxgzh_screenshots/login_qrcode.png
sleep 5 && ls -la /tmp/wxgzh_screenshots/login_qrcode.png
sleep 5 && ls -la /tmp/wxgzh_screenshots/login_qrcode.png
2.2 文件存在后立即发送
在响应中嵌入 MEDIA:/absolute/path 即可发送图片:
MEDIA:/tmp/wxgzh_screenshots/login_qrcode.png
⚠️ 重要:
- 二维码文件 不是立即生成 的,脚本需要时间启动浏览器、打开页面、截图
- 首次检查必须等待至少 10 秒(之前 6 秒太短,文件还没生成)
- 如果文件不存在,不要放弃,继续每 5 秒重试一次,最多 4 次
- 总等待时间可能达到 20-25 秒,这是正常的
- 提示消息必须先发:在等二维码的 10 秒内,先发消息"二维码正在生成,请稍后请用微信扫码登录。",让用户提前知道要扫码。
2.3 完整检查流程示例
sleep 10
if [ -f /tmp/wxgzh_screenshots/login_qrcode.png ]; then
echo "二维码已生成,发送给用户"
else
echo "二维码还未生成,再等 5 秒"
sleep 5
fi
步骤 3: 用户扫码登录
用户使用微信扫描二维码,并在手机上确认登录。
步骤 4: 等待数据抓取完成
AI 助手需要轮询检查报告是否生成:
sleep 30 && ls -la /tmp/wxgzh_reports/
预期结果:
- 报告生成前:目录为空
- 报告生成后:
wechat_stats_YYYYMMDD_HHMMSS_[week|month].xlsx
步骤 5: 发送 Excel 报告
检测到报告文件后,立即发送到当前微信会话(⚠️ 不要发文字说明,直接发文件):
MEDIA:/tmp/wxgzh_reports/wechat_stats_20260501_141720_week.xlsx
步骤 6: 运行数据分析并生成图表
发送 Excel 后,立即运行数据分析脚本生成可视化图表:
terminal(background=true, command="cd /root/.hermes/skills/openclaw-wxgzh/scripts && python3 data_analyzer.py")
6.1 等待图表生成(约 30 秒)
(启动命令同上:用 background=true 后台运行)
sleep 30 && ls -la /tmp/wxgzh_analysis.png
重要:图表渲染需要约25秒(加载ECharts + 等待20秒渲染),请耐心等待。
6.2 验证图表完整性
ls -la /tmp/wxgzh_analysis.png
6.3 图表生成后立即发送
MEDIA:/tmp/wxgzh_analysis.png
图表说明:
| 图表 | 文件 | 内容 |
|---|
| 合并分析图 | /tmp/wxgzh_analysis.png | 包含阅读数柱状图 + 互动数据堆叠折线图 + 最大值饼图 |
⚠️ 消息发送顺序规则(重要)
正确做法:
- ✅ 发送 Excel 文件 → 不附带文字说明
- ✅ 发送图表文件 → 不附带文字说明
- ✅ 所有文件发送完毕后 → 最后发一条完成消息
错误做法:
- ❌ 发文字"报告已生成,正在发送..." → 再发文件(文字延迟到达)
- ❌ 发文件时附带文字说明(文字会延迟)
- ❌ 每个步骤都发文字通知(造成消息混乱)
消息发送格式(严格按此顺序):
# 消息1a (T+0秒,启动脚本后立即发送):提示用户等待
二维码正在生成,请稍后请用微信扫码登录。
# 消息1b (T+10秒,二维码生成后):发送二维码图片(无文字)
MEDIA:/tmp/wxgzh_screenshots/login_qrcode.png
# 消息2 :仅 Excel 文件,无文字
MEDIA:/tmp/wxgzh_reports/wechat_stats_xxx.xlsx
# 消息3 :图表 + 完成消息(同一条消息,MEDIA 图片先发,文字随后)
MEDIA:/tmp/wxgzh_analysis.png
✅完成!📊 Excel 报告已发送 📈 数据分析图表已发送
⚠️ 总共 3 条消息: 提示文字、二维码图片、Excel 文件各自单独发送。图表和完成消息合并为一条发送。
🛠️ 相关命令
cd ~/.hermes/skills/openclaw-wxgzh/scripts
python3 wechat_spiderb.py -t month -p 3
python3 data_analyzer.py
python3 data_analyzer.py -f /tmp/wxgzh_reports/wechat_stats_xxx.xlsx
python3 data_analyzer.py -o /tmp
📊 参数说明
wechat_spiderb.py
| 参数 | 说明 | 默认值 |
|---|
-p, --pages | 要爬取的最大页数 | 10 |
-t, --time | 时间筛选:week=一周内, month=一月内 | 无 |
data_analyzer.py
| 参数 | 说明 | 默认值 |
|---|
-f, --file | Excel 文件路径(默认自动查找最新的) | 自动查找 |
-o, --output | 图表输出目录 | /tmp |
📁 输出文件
| 文件 | 路径 | 说明 |
|---|
| 登录二维码 | /tmp/wxgzh_screenshots/login_qrcode.png | 登录二维码截图,AI 助手必须发送给用户 |
| Excel 报告 | /tmp/wxgzh_reports/wechat_stats_*.xlsx | 文章统计数据,AI 助手必须发送给用户 |
| 合并分析图表 | /tmp/wxgzh_analysis.png | 柱状图+折线图+饼图合并图片 |
📈 Excel 报告内容
报告包含以下字段:
| 字段 | 说明 |
|---|
| 标题 | 文章标题 |
| 发布时间 | 文章发布时间 |
| 阅读数 | 文章阅读量 |
| 点赞数 | 文章点赞数 |
| 分享数 | 文章分享数 |
| 推荐数 | 文章推荐数(好看数) |
| 留言数 | 文章留言数 |
| 链接 | 文章链接 |
| 爬取时间 | 数据爬取时间 |
⚠️ arm64 平台注意: 脚本需要 chromium_headless_shell 而非普通 Chromium。
安装头壳浏览器(下载可能超时,需加长超时时间):
PLAYWRIGHT_BROWSERS_DOWNLOAD_TIMEOUT=120000 playwright install chromium-headless-shell
验证安装:
ls -la /root/.cache/ms-playwright/chromium_headless_shell-*/chrome-linux/headless_shell
⚙️ 环境要求
- Python 3.7+
- Playwright 已安装
- pandas, openpyxl, pyecharts, pillow (PIL) 库
📦 安装依赖
pip install playwright pandas openpyxl pyecharts pillow
⚠️ Chromium 安装(关键)
脚本依赖 chromium_headless_shell(非普通 chromium),安装命令:
PLAYWRIGHT_BROWSERS_DOWNLOAD_TIMEOUT=120000 playwright install chromium-headless-shell
playwright install chromium
安装后路径:
/root/.cache/ms-playwright/chromium_headless_shell-1208/(必需 ~275MB)
/root/.cache/ms-playwright/chromium-1208/(可选 ~430MB)
/root/.cache/ms-playwright/ffmpeg-1011/(可选 ~1.6MB)
⚠️ 常见陷阱
- 系统清理会误删 Chromium — 清理垃圾时容易删除
/root/.cache/ms-playwright/ 目录,导致脚本报错 "BrowserType.launch: Executable doesn't exist"。如果出现该错误,重新执行 playwright install chromium-headless-shell 即可。
- arm64 下载超时 — 默认 30s 超时不够,必须设置
PLAYWRIGHT_BROWSERS_DOWNLOAD_TIMEOUT=120000 或更高。
⚠️ 重要注意事项
1. 必须使用脚本生成的二维码
用户必须扫描 /tmp/wxgzh_screenshots/login_qrcode.png 这个文件中的二维码。
- ❌ 不要让 AI 助手通过浏览器工具打开登录页后截图
- ❌ 不要让用户自己打开微信公众平台截图
- ✅ 必须等待脚本生成二维码后,AI 助手发送
/tmp/wxgzh_screenshots/login_qrcode.png 给用户
原因:如果 AI 助手和用户各自打开不同的浏览器会话,用户扫码登录的是自己的会话,脚本无法检测到登录状态。
2. AI 助手的责任(⚠️ 时序要求)
当用户请求分析公众号数据时,AI 助手必须按以下时序执行:
| 时间点 | 操作 | 说明 |
|---|
| T+0 秒 | 启动爬虫脚本 + 发送提示消息 | terminal(background=true, ...) → "二维码正在生成…" |
| T+10 秒 | 第 1 次检查二维码 | sleep 10 && ls ... |
| T+15 秒 | 如无,第 2 次检查 | 再等 5 秒重试 |
| T+20 秒 | 如无,第 3 次检查 | 再等 5 秒重试 |
| T+25 秒 | 如仍无,检查脚本进程 | ps aux | grep wechat_spider |
| 二维码生成 | 发送二维码图片 | 不要延迟 |
| 发二维码后 | 立即轮询报告,每 30 秒 | 不等用户回复"已扫码" |
| Excel 生成 | 直接发送 Excel 文件(不发文字) | 不要延迟 |
| Excel 发送后 | 运行数据分析脚本 | terminal(background=true, ...) python3 data_analyzer.py |
| 30 秒后 | 检查图表文件 | sleep 30 && ls /tmp/wxgzh_analysis.png |
| 图表生成 | 直接发送图表文件(不发文字) | 不要延迟 |
| 所有文件发送后 | 发一条完成消息 | ✅完成!📊 Excel 报告已发送 📈 数据分析图表已发送 |
具体操作:
- ✅ 后台运行爬虫脚本 → 避免阻塞后续检查
- ✅ 10 秒后首次检查 → 文件可能还未生成,耐心等待
- ✅ 循环检查 → 最多 4 次,每次间隔 5 秒
- ✅ 指定 channel 发送 →
channel="openclaw-weixin"
- ✅ 直接发送 Excel 文件 → 不要附带文字说明
- ✅ 发送 Excel 后立即运行数据分析 →
python3 data_analyzer.py &
- ✅ 等待 30 秒后检查图表 → 渲染需要时间
- ✅ 验证文件大小 > 100KB → 确保图表完整
- ✅ 直接发送图表文件 → 不要附带文字说明
- ✅ 所有文件发送后发完成消息
3. 用户的责任
- ✅ 收到二维码后,用微信扫码
- ✅ 在手机上确认登录
- ✅ 等待 AI 助手发送 Excel 报告和数据分析图表
4. 不要使用 OpenClaw 浏览器工具
- ❌ 不要使用 OpenClaw 的
browser 工具
- ✅ 必须让脚本自己管理 Playwright 浏览器会话
脚本已经内置了完整的浏览器管理逻辑,使用 OpenClaw 浏览器工具会导致会话冲突。
5. 快速执行清单(AI 助手必读)
terminal(background=true, command="cd /root/.hermes/skills/openclaw-wxgzh/scripts && python3 wechat_spiderb.py -t month -p 3")
发送:"二维码正在生成,请稍后请用微信扫码登录。"
sleep 10 && ls -la /tmp/wxgzh_screenshots/login_qrcode.png
sleep 30 && ls -la /tmp/wxgzh_reports/
python3 /root/.hermes/skills/openclaw-wxgzh/scripts/data_analyzer.py &
sleep 30 && ls -la /tmp/wxgzh_analysis.png
✅完成!📊 Excel 报告已发送 📈 数据分析图表已发送
关键检查点:
- ⏱️ 首次检查等待 10 秒(不是 6 秒!浏览器启动需要时间)
- 🔄 最多重试 3-4 次,总等待时间可能 20-25 秒
- 📤 文件生成后 立即发送,不要等待用户询问
- 📊 用户扫码后 2 分钟内 应该生成报告
- 📈 Excel 发送后立即运行 data_analyzer.py
- 🖼️ 图表生成约需 30 秒(渲染需要时间),检查后立即发送
- 🔍 验证文件大小 > 100KB,确保图表完整
- 🔍 如果超时,检查脚本进程:
ps aux | grep wechat_spider
6. 减少 Token 消耗(重要)
为避免不必要的 token 消耗,AI 助手应:
必须做:
- ✅ 发送登录二维码图片(
/tmp/wxgzh_screenshots/login_qrcode.png)
- ✅ 发送生成的 Excel 报告(
/tmp/wxgzh_reports/wechat_stats_*.xlsx)
- ✅ 发送数据分析图表(
/tmp/wxgzh_analysis.png)
- ✅ 等待脚本运行完成后发送文件
不要做:
- ❌ 不要读取和分析 Excel 文件内容
- ❌ 不要解读脚本运行过程和日志输出
- ❌ 不要统计文章数量、列出文章标题等详细说明
- ❌ 不要重复脚本已经输出的统计信息
简洁回复模板:
✅完成!📊 Excel 报告已发送 📈 数据分析图表已发送
🔧 故障排查
问题 1: 脚本运行后没有生成二维码
- 检查
/tmp/wxgzh_screenshots/ 目录是否存在
- 确保脚本有权限写入该目录
- 查看脚本输出日志
- 检查脚本进程是否存活:
ps aux | grep wechat_spider
问题 2: 扫码后脚本没有继续执行
- 确认扫码的是脚本生成的二维码(路径:
/tmp/wxgzh_screenshots/login_qrcode.png)
- 确认在手机上点击了"确认登录"
- 检查浏览器是否被其他进程关闭
- 轮询检查报告目录:每 30 秒
ls -la /tmp/wxgzh_reports/
问题 3: 数据抓取失败
- 检查是否成功登录到公众号后台
- 检查网络连接是否正常
- 查看脚本输出的错误信息
问题 4: 数据分析图表生成失败
- 确认已安装 Playwright:
pip install playwright pillow && playwright install chromium
- 检查
/tmp/ 目录是否有写入权限
- 查看 data_analyzer.py 的输出日志排查具体错误
问题 5: 二维码文件生成慢(预期行为)
- 现象:脚本启动后 6 秒检查,文件不存在
- 原因:浏览器启动 + 打开页面 + 截图 需要约 10 秒
- 解决:
- 第 1 次检查:等待 10 秒(不是 6 秒!)
- 如不存在,再等 5 秒重试,最多 3-4 次
- 总等待时间 20-25 秒是正常的
- 检查命令:
sleep 10 && ls -la /tmp/wxgzh_screenshots/login_qrcode.png
问题 6: message 工具发送失败