← 返回 Skill 列表
extension
分类: 数据与分析需要 API Key

公众号数据复盘(付费版)

【零一数科·出品】公众号数据复盘(付费版)。拿后台导出的表格做一次数据复盘。容错解析(编码探测/模糊列名/多文件合并去重)+解析预览确认+选题归纳+阅读互动趋势与异常点+账号自身滚动基准对比+高低表现文章对照+可落地策略建议;可选 HTML 报告。输入是后台导出的 Excel/CSV(单个、多个或一个文件夹)。洞察一步约 30 点,解析与归纳不扣点。触发词:数据复盘、后台导出、Excel、CSV、阅读趋势、基准线、高低表现、帮我复盘这份数据。

person作者: u_c19e970chubenterprise

公众号数据复盘

版本:v1.1.0 · 作者:零一数科

后台导出表格一键复盘:解析预览确认 → 选题归纳确认 → 统计洞察五区块 → 可选 HTML 报告。

解析、统计、归纳、洞察、报告渲染全部在远端服务完成。脚本 scripts/wx_analyze.py 负责全部 HTTP 调用, 接口说明见 references/api.md。你的职责是:收集表格文件、在交互节点等用户确认、把服务端返回的 预览与结论讲给用户听。

执行流程

  1. 读配置(任何命令之前先做):读技能目录下 config.json;文件不存在就把包内 config.json.example 复制成 config.json 再读(模板里 BASE_URL 已是生产地址 https://service.lingyishuke.com,一般不用改,只需补 LY_API_KEY)。若 config.json 里 BASE_URL 仍是旧地址 https://claw.lingyishuke.com/services,就地改成新地址——域名已迁移,且 config.json 优先级高于 config.json.example,升级新包不会自动改它。
  2. 取 API Key:读技能目录下 config.json 的 LY_API_KEY(回退环境变量)。缺失按「鉴权」引导获取写入。BASE_URL 同文件配置(生产地址 https://service.lingyishuke.com),缺失时脚本退出码 2。
  3. 收集文件:单个/多个 .xlsx/.csv 路径,或一个文件夹(Glob 仅顶层扫描 *.xlsx、*.csv;检测到子目录提示"如需分析请单独指定",不自动递归)。其它输入形式明确告知"暂不支持,请提供 Excel(.xlsx) 或 CSV(.csv) 文件路径"。边界说明:公开接口能拿到文章级互动指标(阅读、在看、分享、收藏、评论),但阅读数超过 10 万只给封顶值 100001,且涨粉、流量来源构成、菜单点击、完读率这些私域口径完全拿不到。数据复盘要的正是精确阅读数与这些私域指标,所以本链路仍以用户上传后台导出表格为准,不能用公众号名字/账号直连替代上传。用户只想按公众号名字看内容体系(选题结构/更新频率/定位一致性)时,改走 wx-account-diagnose——那条链路的全量层可由服务端自动获取。
  4. 上传解析:data-review submit(同步返回确认预览,本步不扣点)。脚本内部走「申请上传票据 → 表格直传对象存储 → 确认落库 → 只提交上传凭证」,已自动处理,命令与用户操作都不变。
  5. 确认预览:向用户完整展示预览并等待明确确认(见「节点 1」)。
  6. 选题归纳:data-review groupings,展示归类表并问是否调整(见「节点 2」)。
  7. 扣点确认:告知「生成复盘洞察预计扣 30 点,实际以服务端为准」,等用户明确同意。
  8. 洞察结论:data-review insights,五区块一次性输出(见「节点 3」)。
  9. 报告:固定问「要生成包含趋势图/月度聚合/错位象限散点图的 HTML 报告吗?」,确认后 data-review report。
  10. 收尾:告知实际扣点(WX_ANALYZE_POINTS_USED)与报告路径。

脚本定位(任何命令之前先做这一步)

后文命令里的 "$SKILL" 指本技能的安装目录。已知部分运行时(WorkBuddy)不注入 CLAUDE_SKILL_DIR,所以必须按以下顺序解析(成功一级即停,marker 是 scripts/wx_analyze.py):

SN=wx-data-review
SKILL=""
if [ -n "$CLAUDE_SKILL_DIR" ] && [ -f "$CLAUDE_SKILL_DIR/scripts/wx_analyze.py" ]; then
  SKILL="$CLAUDE_SKILL_DIR"
else
  D="$PWD"
  while [ "$D" != "/" ]; do
    case "$D" in */$SN|*/"$SN"__skillhub) [ -f "$D/scripts/wx_analyze.py" ] && { SKILL="$D"; break; };; esac
    D=$(dirname "$D")
  done
  if [ -z "$SKILL" ]; then
    SKILL=$(find "$HOME/.claude" "$HOME/.codebuddy" "$HOME/.workbuddy" -maxdepth 9 -type d \
      \( -name "$SN" -o -name "$SN"__skillhub \) 2>/dev/null | while read -r d; do
        [ -f "$d/scripts/wx_analyze.py" ] && echo "$d"; done | head -1)
  fi
fi
[ -n "$SKILL" ] && echo "SKILL=$SKILL" || echo "SKILL_DIR_UNRESOLVED"

打印 SKILL_DIR_UNRESOLVED 时:如实告诉用户无法定位技能安装目录并停止。 绝对禁止:猜路径、自行重写脚本逻辑、绕过脚本直接拼 HTTP 请求。 config.json 固定读技能目录,报告默认写到当前工作目录。

鉴权

API Key 取技能目录下 config.json 的 LY_API_KEY 字段,回退环境变量 LY_API_KEY。 脚本请求头使用 Authorization: <api_key>,裸 key,不带 Bearer。config.json 形如:

{ "LY_API_KEY": "你的密钥", "BASE_URL": "https://service.lingyishuke.com" }
  1. 检查是否已有 key。 读 config.json;没有则看环境变量。任一有值即视为就绪。
  2. 缺失则引导用户获取。 提示用户前往 https://claw.lingyishuke.com/webapps/01claw-auth/index.html?source=workbuddy 获取 API Key 并发给你。拿到前不要运行脚本。
  3. 记录用户发来的 key。 写入 config.json 的 LY_API_KEY 字段(保留其它内容),该文件已被 .gitignore 忽略。
  4. 鉴权失败(退出码 3)时。 引导用户重新获取并覆盖写入,不要反复用失效 key 重跑。

SSL 证书错误(CERTIFICATE_VERIFY_FAILED 等)可设 LY_SKIP_SSL_VERIFY=1 后重试,仅限受控环境临时使用。


工作流 · 交互节点

节点 1 · 确认预览(必须等确认)

python3 "$SKILL/scripts/wx_analyze.py" data-review submit --files '导出1.xlsx' '导出2.csv'

脚本会逐个文件在 stderr 打一行上传进度(· 上传 导出1.xlsx (123 KB) → 已确认),这是脚本内部的上传流程, 不需要用户做任何额外操作,也不必转述给用户。

同步返回 preview,向用户完整展示以下内容后,必须等待用户明确确认(如"开始"/"继续"/"确认") 才可进入选题归纳,不得跳过或默认确认:

  • 列映射表(Markdown 表格):原始列名 → 标准字段 → 匹配方式(exact/keyword/fuzzy)。非 exact 的行标注"(请核对)"。
  • 各文件行数与合并后总行数;检测到跨文件数值差异时提示"已取较大值合并"。
  • 时间范围:起止日期。
  • 未识别列与缺失的可选字段:未识别列为空则说明"全部列均已识别";缺失可选字段(在看/转发/评论等)时说明"对应分析项将自动跳过并标注,不影响其余分析"。
  • 已有评分产物匹配情况:匹配数 > 0 时列出匹配到的文章标题,说明"这些文章将直接复用已有 7 维评分参与高低对照,无需重新评分"。

min_viable 为 false 时:按 missing_required_fields 列出具体缺失字段(标题/发布时间/阅读量), 提示"该导出文件缺少 {字段} 列,无法满足最低分析门槛,请确认导出的是『内容分析』明细表而非其他报表"。 本轮流程到此结束,不强行继续。

用户要求剔除个别文件或指出列映射错误时,据此调整文件列表重新 submit,或提示用户修正导出文件后重新提交,不强行继续。

节点 2 · 选题归纳与调整

python3 "$SKILL/scripts/wx_analyze.py" data-review groupings --task-id <id>

服务端归纳出 3-8 个选题类型并为每篇文章打标签。用一张 Markdown 表格(列:选题类型 / 篇数)展示归类结果,并询问用户:"以上选题归类是否需要调整?"

  • 用户提出修正意见时:把调整后的完整归类写成 JSON 文件({"topics": [{"key","label"}...], "article_tags": [{"title","topic_key"}...]}),再执行 data-review groupings --task-id <id> --adjust 调整.json(PUT 覆盖,服务端校验类目数量与标签引用)。
  • 用户确认或未提出异议:直接进入下一步。不强制等待逐字回复,但归类表格必须完整展示过一次,不得省略。

节点 3 · 洞察结论(一次性产出,先扣点确认)

洞察这一步扣 30 点,运行前完成扣点确认。

python3 "$SKILL/scripts/wx_analyze.py" data-review insights --task-id <id>

读结果 JSON,在同一次响应中按固定顺序输出全部五个区块:

  1. 概览行:共 {篇数} 篇 · 时间范围 {起}~{止} · 基准质量:{中文}。基准质量映射:full → "充分"、limited → "样本较少仅供参考"、insufficient → "不充分"。为 insufficient 时必须明确提示:"当前 {N} 篇文章样本不足以计算滚动基准,以下仅提供描述性统计,不做异常判定",不得假装有可靠基准。
  2. 异常点列表:表格列为「标题 / 指标 / 倍数 / 方向 / 选题类型」。倍数格式化为"是近期均值的 {ratio} 倍";指标区分"阅读"/"互动率";方向显示"偏高"/"偏低"。异常为空时注明"未检测到显著异常波动",不留空区块。
  3. 高低对照表 + 错位文章:高/低两组文章标题+阅读量表格及标题层面的差异归纳;已匹配评分的文章额外展示其完整七维分数表;未匹配的注明"如需完整 7 维对照,可用 wx-article-score 为高低组文章补充正文评分"。存在四象限数据时展示"高读低互"/"低读高互"错位文章列表。服务端标记跳过时原样展示其原因文案。
  4. 选题类型表现表:列为「选题类型 / 篇数 / 平均阅读 / 相对基准倍数」,选题用中文名展示。
  5. 策略建议:逐条展示 strategy_suggestions 的 conclusion/evidence/action 三段式,用编号列表呈现,逐字引用不改写——evidence 里的数字与来源是服务端算好的,不心算、不估算、不换措辞。

节点 4 · HTML 报告(每次都问)

五区块之后固定问:"要生成包含趋势图/月度聚合/错位象限散点图的 HTML 报告吗?"——回答"不要"直接结束,不追问第二次。确认后:

python3 "$SKILL/scripts/wx_analyze.py" data-review report --task-id <id> [--out 目录或文件]

报告为服务端渲染的单文件自包含 HTML,断网可打开,区块与对话结论五段式一一对应。

结果讲解边界

  • 只讲产物字段:五区块内容全部逐字引用服务端返回。
  • 涉及评分维度时只说:"7 个维度加权、每维证据定档、总分由服务端计算,evidence 与升档差距就是可直接复述的归因。"不展开权重数值与评分方法论细节。

输出交付

成功时 stdout 形如:

WX_ANALYZE_TASK_ID=<任务 ID>
WX_ANALYZE_POINTS_USED=<本次实际扣点,可能为空>
WX_ANALYZE_REPORT_FILE=<报告文件绝对路径>
=== WX_ANALYZE_RESULT_START ===
<结构化结果 JSON>
=== WX_ANALYZE_RESULT_END ===
  1. 讲结论:按节点顺序讲预览/归类/五区块,不把 JSON 原样丢给用户。
  2. 告知实际扣点:WX_ANALYZE_POINTS_USED 非空时说「本次任务实际扣除 {点数} 点」;为空时说「本次约扣 30 点(实际以服务端为准,可在 01Claw 账户查看)」。
  3. 告知报告查看方式:路径见 WX_ANALYZE_REPORT_FILE,可直接双击打开。

退出码处理

| 码 | 含义 | 处理 | |---|---|---| | 0 | 成功 | 按「输出交付」处理。 | | 2 | 输入/配置错误 | 文件缺失或为空、非 .xlsx/.csv、调整 JSON 非法、未配置 BASE_URL。改正后重试,不扣点。 | | 3 | 缺 key 或鉴权失败 | 按「鉴权」流程引导用户获取新 key 写入 config.json 再重试。不扣点。 | | 4 | 发起失败,含点数不足 | 展示服务端 message;点数不足时引导用户前往 https://claw.lingyishuke.com/webapps/01claw-auth/index.html?source=workbuddy 充值。不扣点。 | | 5 | 服务端把任务判为失败 | 转述 stderr 里的 error_message(如表格解析失败、跳步调用)。 | | 6 | 网络 / 限流 / 服务不可用(含表格直传失败) | 告知网络原因失败,附 stderr 信息,询问是否重试。上传阶段失败时任务尚未发起,不扣点,重跑同一条 submit 即可。 | | 7 | 完成但结果为空 | 表格可能没有有效数据行,建议核对导出文件后重新提交。 | | 124 | 轮询超时 | 本链路均为同步接口,正常不出现;若出现附 task_id 重试对应命令即可,不重复扣点。 |

未知状态不要自行判定失败;脚本会原样透出服务端状态,继续按结果处理。

硬性要求

  1. 不得编造或改动任何分数与统计数字。 基准、倍数、分组、表现对照全部来自服务端返回,不心算、不估算、不改写措辞。
  2. 报告一律来自服务端渲染。 唯一合法产出方式是 data-review report;绝不自行用 Write 手写 HTML/CSS/图表。
  3. 不跳过交互节点。 确认预览未确认不进归纳;归类表格必须完整展示过一次;扣点未确认不跑 insights;报告每次都问。
  4. 样本不足时不假装有基准。 insufficient 的提示语必须原样给出。
  5. 评分解释只用固定话术,不展开维度权重与方法论细节。