SuperAPI AI 工具集

zsxq-homework-likes-export

数据与分析

查看项目

更新于 10-16 08:22

技能介绍

用途

本技能用于将知识星球的作业/任务点赞数据导出为 CSV 统计文件。适用于用户希望按某个作业标签或课程,导出包含全部作业题、全部学员提交的点赞统计场景。

主要能力

  • 抓取每个作业题的真实提交列表,并基于每条 solution 携带的父作业 task_uid 进行归属判断。
  • 生成两类输出文件:
    • <prefix>_likes_by_student.csv:学员汇总表,含总点赞数、提交数、每个作业题下点赞数。
    • <prefix>_submission_likes_detail.csv:提交明细表,含作业题、学员、提交主题、点赞数、评论数、浏览数、链接、摘要。
  • 提供校验环节,通过 Python 脚本核对明细表与汇总表的行数与点赞总数是否一致。
  • 抓取结束后清理临时 Cookie 与 XAduid 文件。

使用方式

  1. 准备任务配置 JSON,可复制 references/tasks.example.json,填入自己的 group_id、作业题 topic_id 和标题。配置格式示例:
{
  "group_id": "123456789012",
  "output_prefix": "course_homework",
  "tasks": [
    {"id": "11111111111111111", "title": "示例作业 01:第一次作业"}
  ]
}

如需更换星球、标签或刷新任务列表,先用 zsxq-cli group +list、zsxq-cli group +hashtags、zsxq-cli api call get_hashtag_topics 获取 task 列表,再写成同样结构。

  1. 打开本地可见浏览器并登录:
agent-browser --headed --session zsxq-homework open 'https://wx.zsxq.com/'

由用户在浏览器中完成登录,并确认能看到目标星球内容。

  1. 导出临时登录态:
agent-browser --session zsxq-homework cookies --json > /tmp/zsxq_homework_cookies.json
agent-browser --session zsxq-homework eval "localStorage.getItem('XAduid') || ''" > /tmp/zsxq_homework_xaduid.txt
  1. 抓取每个作业题的真实提交列表:
SKILL_DIR="$HOME/.codex/skills/zsxq-homework-likes-export"
node "$SKILL_DIR/scripts/fetch_zsxq_task_solutions_signed.mjs" \
  "$SKILL_DIR/references/tasks.example.json" \
  /tmp/zsxq_homework_cookies.json \
  /tmp/zsxq_homework_xaduid.txt \
  outputs/course_homework_task_solutions_raw_signed.json
  1. 生成 CSV:
SKILL_DIR="$HOME/.codex/skills/zsxq-homework-likes-export"
python3 "$SKILL_DIR/scripts/build_homework_likes_csv.py" \
  outputs/course_homework_task_solutions_raw_signed.json \
  outputs
  1. 校验并清理临时凭证:
python3 - <<'PY'
import csv
detail=list(csv.DictReader(open('outputs/course_homework_submission_likes_detail.csv', encoding='utf-8-sig')))
summary=list(csv.DictReader(open('outputs/course_homework_likes_by_student.csv', encoding='utf-8-sig')))
print(len(detail), len(summary))
print(sum(int(r['likes']) for r in detail), sum(int(r['total_likes']) for r in summary))
PY
rm -f /tmp/zsxq_homework_cookies.json /tmp/zsxq_homework_xaduid.txt

核心原则

  • 优先使用网页端真实接口 https://api.zsxq.com/v2/topics/{task_id}/solutions,因为返回的每条 solution 带有父作业 task_uid。
  • 不要用关键词或时间窗口推断作业归属,除非用户明确接受粗略统计。
  • 不要要求用户粘贴 Cookie。打开本地可见浏览器让用户登录,再用 agent-browser cookies --json 导出到 /tmp 临时文件。
  • 临时 Cookie、XAduid 只用于本地抓取,完成后立即删除。不要在终端或最终回答里打印凭证。

适用场景

适合需要以作业题或课程为单位,统计知识星球学员作业点赞、提交数量与明细数据的运营或教学场景。

限制与常见问题

  • code=1059:通常是缺少网页端 X-Signature 等请求头,必须使用本 skill 的签名抓取脚本,不要直接 fetch。
  • 401 Unauthorized:网页登录态失效,需让用户在可见浏览器里重新登录。
  • CSV 准确度不足:应确认使用的是 *_raw_signed.json 生成的精确 CSV,而不是旧的关键词匹配脚本输出。
  • 关于支持的知识星球版本、运行环境依赖、并发或速率限制等,暂未提供。