下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/xh-ai--skillhub-team-report.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @xh-ai/skillhub-team-report。【SkillHub团队报表】Skill:用于抓取自己团队在 SkillHub(https://www.skillhub.cn)上各技能的每日下载情况,并生成可视化看板(排名表 + 近7天总下载走势 + 每技能每日走势小图 + 下载日历 + 下载走势/周环比对比标签化切换,点击可跳转单独技能的大图折线页)。当用户希望统计团队 Skill 的下载数据、生成每日/定期下载报表、批量查看多个 SkillHub 技能详情页的下载次数,或提到「SkillHub 团队报表」「团队技能报表」「技能下载统计」「skillhub 下载次数」「下载报表」时使用。
触发后:先收集至少一个 SkillHub 技能详情页完整链接与数据保存文件夹,再抓取每个页面下载数字(SkillHub 走官方 API),将 {skillName, id, downloadCount, time} 追加写入 group_skill_statics.json(每日时序),最后生成看板与每技能单独页。
阅读全文 (展开查看完整说明)
概述
_抓取团队在 SkillHub 上的技能下载数据,沉淀为 JSON 时序,并输出一份按下载次数排序的 HTML 报表。_ _Scrape your team's SkillHub skill download data into a JSON time-series and render a download-ranked HTML report._
始终使用与用户相同的语言回复(中文环境用简体中文)。
何时使用 / When to use
- 用户想统计团队在 SkillHub 上的技能下载情况、生成每日/定期下载报表。
- 用户给出形如
https://www.skillhub.cn/skills/xxx/xxx的技能详情页链接,要求批量抓取下载数。 - 用户提到「团队报表」「SkillHub 团队报表」「技能下载统计」「下载次数报表」等关键词。
运行环境与安装引导 / Environment & Setup
跨平台 / Cross-platform:脚本仅依赖 Python 3 标准库,无任何第三方依赖与平台耦合(无 subprocess / 系统命令 / 硬编码路径,路径统一 os.path.join,读写显式 UTF-8),Windows / macOS / Linux / HarmonyOS 均可运行——唯一前提是环境中存在 Python 3(HarmonyOS 基于 Linux 内核,安装 Python 3 后同样可用;脚本输出文件名不含 Windows 非法字符)。
本 Skill 的抓取脚本基于 Python 3 标准库实现,运行前需确认环境中存在 python3。触发后、执行抓取命令前,务必先校验 Python 是否可用:
python3 --version || python --version- 若命令成功输出版本号(如
Python 3.x.x),继续「主流程」步骤 2。 - 若报错
command not found/不是内部或外部命令,说明未安装 Python 3,请按用户所在系统给出下方对应安装引导,
并把安装步骤回显给用户,不要直接以「脚本无法运行」结束。
各系统安装引导(缺失时给出 / Install guide per OS)
- macOS:通常已自带
python3。若缺失,二选一:- 安装 Homebrew 后执行
brew install python - 或到 https://www.python.org/downloads/macos/ 下载官方安装包
- 安装 Homebrew 后执行
- Windows:
- 推荐用包管理器:
winget install Python.Python.3.12(或到 https://www.python.org/downloads/windows/ 下载) - 务必勾选安装界面的 "Add python.exe to PATH",否则命令行仍找不到命令
- 安装后重新打开终端,用
python --version验证(Windows 上命令常叫python而非python3)
- 推荐用包管理器:
- Linux(Debian/Ubuntu):
sudo apt update && sudo apt install -y python3 - Linux(CentOS/RHEL):
sudo yum install -y python3或sudo dnf install -y python3
说明:脚本本身仅用 Python 标准库、无任何第三方依赖,装好 Python 3 即可直接运行,
无需
pip install任何包。唯一额外前提是运行环境能访问api.skillhub.cn(抓取 SkillHub 数据所需)。
主流程 / Workflow
步骤 1 · 初始化:收集链接与保存文件夹(必须 / Required)
进入本 Skill 后,先完成两项初始化采集,再开始抓取:
- 收集 SkillHub 链接:向用户索取至少一个 SkillHub 技能详情页完整链接
(格式如 https://www.skillhub.cn/skills/xxx/xxx)。提取页面下载数据的唯一依据是页面上的「次下载」文字,链接需指向技能详情页(而非列表页),否则抓取不到下载数字。用户可一次提供多个链接,逐个抓取。
- 采集话术示例:
> 请提供至少一个 SkillHub 技能详情页的完整链接(形如 https://www.skillhub.cn/skills/xxx/xxx),> 可一次给多个,我会逐个统计「次下载」之前的数字。
- 询问保存文件夹:向用户确认数据保存到哪个本地文件夹。
- 采集话术示例:
> 这些统计数据要保存在哪个文件夹下?(例如 /Users/jake/workspace/skill_factory_space/skillhub-data)> 我会把 group_skill_statics.json 和 HTML 报告写到这里。
- 若用户未指定,给出默认建议并请其确认,不要擅自写入系统/个人敏感目录。
两项都拿到后,进入步骤 2。
步骤 2 · 执行抓取并写入 JSON
本 Skill 自带抓取脚本,用 Python 标准库实现(无需安装依赖)。运行前请先按上文「运行环境与安装引导」校验 python3 是否可用,缺失则先引导安装再继续。<skill_dir> 指本 Skill 所在目录(即 SKILL.md 所在的目录;在 WorkBuddy 中调用方已知该绝对路径,请用真实路径替换)。
运行命令(将链接与文件夹替换为实际值):
python3 "<skill_dir>/scripts/scrape_skillhub.py"
--out-dir "<第1步确认的保存文件夹>"
"<URL1>" ["<URL2>" "<URL3>" ...]脚本对每个 URL 自动完成:
- 抓取页面:用浏览器 UA 请求详情页,兼容 UTF-8 / GBK 解码。
- 解析字段(SkillHub 走 API,其他站点走 HTML / SkillHub uses API, others use HTML):
- SkillHub 详情页是 JS 渲染的 SPA,静态 HTML 里不含「次下载」文字;脚本优先调用官方 API
https://api.skillhub.cn/api/v1/skills/<slug>?namespace=<handle>(<slug> = URL 末尾路径段,<handle> = URL 倒数第二段命名空间),直接读取 skill.stats.downloads——这正是页面上展示为「次下载」的那个数字。注意:/skills/<ns>/<slug> 双段 URL 必须带 namespace 参数请求——同名 slug 可能存在于多个命名空间(如团队发布版与 ClawHub 同步版),不带 namespace 会命中错误对象(曾导致 knowledge-card 误抓成@clawhub_jackyken 的 647 次,实际 @xh-ai 版为 0)。单段 URL(/skills/<slug>)无 namespace 时维持原行为。
- 非 SkillHub 站点 / API 不可用时,回退为从页面静态 HTML 提取「次下载」之前的数字,
支持千分位逗号与「万」单位(如 1.2万次下载 → 12000)。
skillName(技能名):API 取skill.displayName;HTML 回退优先og:title→<title>(去「 – SkillHub」后缀)→<h1>。id(技能 ID):取 URL 末尾路径段并做 URL 解码(如.../skills/xh-ai/yyy→yyy)。namespace(命名空间):取 URL 倒数第二段(如.../skills/xh-ai/yyy→xh-ai),单段 URL 为null,随记录写入 JSON 便于溯源。time(统计时间):抓取时的本地时间,格式YYYY-MM-DD HH:MM:SS。- 写入 JSON:将本批记录追加到
<保存文件夹>/group_skill_statics.json
(文件不存在则新建;已存在则在原数组后追加,形成每日时序)。该文件为一个 JSON 数组,每项结构见下方「数据格式」。
可选参数:
--reset:覆盖已有 JSON(不从历史追加),用于重新统计。--urls-file urls.txt:从文本文件读取 URL(每行一个,# 开头为注释)。--json-name:自定义 JSON 文件名(默认group_skill_statics.json)。--report-only:仅基于已有 JSON 重新生成看板与所有单独页,不抓取任何页面(见步骤 4 回退场景)。- 主看板文件名规则:
group_skill_report_{yyyyMMdd}.html,当天重复运行自动覆盖当日文件。
步骤 3 · 生成并交付 HTML 看板(排名 + 7 天走势)
脚本在写 JSON 的同时,自动生成一份自包含、无外部依赖(纯 SVG,可离线打开)的时序看板:
- 主看板
<保存文件夹>/group_skill_report_{yyyyMMdd}.html(按生成日期命名,当天多次运行覆盖同名文件):- 顶部卡片:技能数、总下载、统计天数。
- 总下载走势(近 7 天):折线图,纵轴为每日各技能下载数之和(缺失天前向填充)。
- 技能排名表:按当前下载次数从高到低排序(同一
id取最新一天的值),技能名可点击跳转单独页。 - 每个技能每日走势对比(标签化切换):位于同一 section,顶部两个标签:
- 「下载走势图」:每个技能一张小折线图(点击「查看大图」跳转单独页)。
- 「周环比对比图」:每个技能一张周环比小折线图——本周每日增量(实线,技能配色)vs 上周同日增量(灰色虚线),可直观对比本周与上周同期的下载动能(数据不足 14 天时上周虚线部分缺失属正常冷启动)。
- 下载日历:位于走势网格下方;周日起始(日/一/二/三/四/五/六),上方可切换年份与月份(默认进入为当年当月),每个日期格显示当天总下载数(全历史聚合,无记录日期显示 —,「今天」金色高亮)。
- 每技能单独页
<保存文件夹>/group_skill_report_<id>.html:- 每日走势对比(同样标签化切换):「下载走势图」为近 7 天每日下载大折线图;「周环比对比图」为本周每日增量 vs 上周同日增量大图;下方为每日明细表 + 「返回总看板」链接。
走势口径:所有记录按 id 聚合为「每天一条」——每天取该技能当天 time 最新一条的 downloadCount(下载数只增不减,取最新即为当日终值);图表展示最近 7 天窗口,不足 7 天时显示已有天数。
交付:将 group_skill_report_{yyyyMMdd}.html(当天主看板)与对应的 group_skill_report_<id>.html 通过 present_files打开预览交给用户,并在对话中说明本次技能数、总下载、是否有页面解析失败。
想让报表持续更新?可建一个每 2 小时的 recurring 自动化,固定调用本 Skill 脚本对上述链接
追加抓取(不
--reset),看板会随真实天数累积出 7 天走势。见末尾「自动出报」。
步骤 4 · 失败回退(页面为 JS 动态渲染时 / Fallback)
若某 URL 返回 downloadCount: null(脚本会打印 [WARN] 并标注「页面可能为 JS 动态渲染」),用 WebFetch 作为回退抓取该页面:
- 提示词示例:
请提取这个 SkillHub 技能页面的:技能名、技能 ID、以及「次下载」前面的下载次数数字。
按 skillName=… / id=… / downloadCount=… 返回。
拿到数值后,直接编辑 group_skill_statics.json 把对应记录的 downloadCount 补上(或新增一条记录),再运行以下命令仅重新生成报告(不重复抓取):
python3 "<skill_dir>/scripts/scrape_skillhub.py"
--out-dir "<保存文件夹>" --report-only数据格式 / Data schema
group_skill_statics.json 内容为一个 JSON 数组,每项结构如下:
[
{
"skillName": "技能名",
"id": "技能ID",
"namespace": "命名空间(可选,双段 URL 才有)",
"downloadCount": 1234,
"time": "2026-08-20 15:37:35"
}
]skillName:技能名 / skill nameid:技能 ID(取自 URL 末尾路径段)/ skill id from URLnamespace:命名空间(取自 URL 倒数第二段,单段 URL 为null,v1.1+ 写入)/ namespace from URL (null for single-segment URLs, written since v1.1)downloadCount:下载次数(整数;抓取失败时为null)/ download count (int; null on failure)time:本次统计的本地时间 / local time of this statistic
资源清单 / Resources
| 文件 | 用途 |
|---|---|
scripts/scrape_skillhub.py | 抓取 + 解析 + 写 JSON + 生成看板与每技能单独页的 Python 脚本(仅用标准库,图表为纯 SVG) |
LICENSE.txt | MIT 许可证 |
自动出报 / Scheduled reporting
为获得「近 7 天走势」,需要多次运行让数据跨天累积。推荐建一个 recurring 自动化,每 2 小时运行一次:
- 调度:
scheduleType=recurring,rrule=FREQ=HOURLY;INTERVAL=2(每 2 小时;当天多次运行会刷新当天记录,跨天后自然形成每日序列)。 - 任务提示词(自包含,需写明链接与输出目录):
使用 skillhub-team-report Skill 的脚本,对以下团队 SkillHub 链接执行一次抓取与看板更新(追加模式,不要 –reset):
<把 10 个链接贴在此处>
输出目录固定为
<保存文件夹>。脚本路径:<skill_dir>/scripts/scrape_skillhub.py。命令示例:
python3 <skill_dir>/scripts/scrape_skillhub.py --out-dir <保存文件夹> <URL1> ... <URL10>完成后简要回报本次新增/更新的记录数与看板路径。