网友作品 #000190 · 提交于 2026/08/24
SkillHub技能清单导出工具:多维筛选一键导出Excel
★★★★★程序员水平AI 编程工具国内顶级模型python

作品简介
SkillHub(skillhub.cn)官网的搜索常混有大量不相关结果,把数据下载到 Excel 里再精确筛选反而更高效。本工具从 SkillHub 官方接口抓取技能(Skill)清单,按筛选条件导出为带样式的 Excel 文件,提供 GUI 界面与免安装单文件 exe,双击就能用。
核心亮点
- 多维筛选:支持关键词、分类(13 个分类)、来源(ClawHub / SkillHub)、排序方式(下载量 / 最近上新 / 收藏数)、是否需要 API Key
- 全量抓取:自动绕过服务端 200 条翻页深度限制——score 排序超限时自动切换 downloads 排序抓全,再本地按 score 降序重排,保持用户排序意图
- Excel 导出:13 列字段(名称、简介、链接、收藏数、下载量、来源、作者、版本、分类、子分类、更新时间、上游链接等),带表头样式、冻结首行、自动筛选
- 体验顺畅:实时进度条 + 状态提示,后台线程抓取不卡界面;保存位置默认桌面可改,完成后自动打开所在目录
- 稳健可靠:单页失败自动重试 3 次、翻页间隔 0.2 秒;日志按日期滚动留存,自动清理 30 天前的旧日志
技术与工具
- Python 3.12(uv 管理环境)+ requests 抓取 + openpyxl 写 Excel + Tkinter 图形界面
- PyInstaller 打包 onefile exe;项目带 pytest 单元测试与 ruff、mypy 代码检查
- 开发使用 AI 编程工具搭配国内顶级模型,由 AI 自主分析网页与接口并设计抓取方案
开发过程
- 作者因官网搜索结果不精准,萌生自己抓取数据的想法
- 开发中让 AI 自主分析网页、自行想办法实现,整体耗时稍长;AI 给出的方案不全是最优解,需要作者在关键处纠正
适用场景
- 职场技能检索与整理:把平台上分散的技能清单落成可筛选、可排序的表格
- 挑选与整合通用知识 skill,制作自己的专用 skill 时批量对比候选
- 行业资源批量导出与个人技能库搭建
原始提交内容(点开查看,可复制全文去问 AI)
官方网站上的搜索很扯,一大堆不相关的结果,下载下来在Excel里自己再精确搜索下很有必要性。于是就想到自己抓取下数据。
SkillHub 技能清单导出工具
从 SkillHub 抓取技能(Skill)清单,按筛选条件导出为 Excel 文件。提供 GUI 界面和免安装的单文件 exe。
功能特性
- 关键词搜索:输入关键词(如
python)即可抓取全部匹配技能 - 多维筛选:分类、来源、排序方式、是否需要 API Key
- 全量抓取:自动绕过服务端翻页深度限制,最多可获取数千条结果
- Excel 导出:13 列字段,带表头样式、冻结首行、自动筛选
- 进度反馈:实时进度条 + 状态提示,后台线程抓取不卡界面
- 日志留存:按日期滚动,自动清理 30 天前的旧日志
使用方法
exe 版(推荐)
双击 dist\SkillHubExporter.exe,无需安装 Python。
- 筛选条件:输入关键词,按需选择分类 / 来源 / 排序 / API Key 筛选
- 保存位置:默认桌面,可点「浏览…」修改
- 点「开始导出」,完成后自动打开 Excel 所在目录
源码运行
# 初始化 uv 环境(Python 3.12)
uv sync
# 启动 GUI
uv run skillhub-exporter
Excel 导出字段
| 列 | 说明 |
|---|---|
| 序号 | 行号 |
| 名称 | 技能名称 |
| 简介 | 中文简介优先,无则用英文 |
| 链接 | SkillHub 详情页链接 |
| 收藏数 | stars 数量 |
| 下载量 | downloads 数量 |
| 来源 | clawhub / skillhub |
| 作者 | 技能所有者 |
| 版本 | 当前版本号 |
| 分类 | 主分类(如 开发编程) |
| 子分类 | 子分类列表(顿号分隔) |
| 更新时间 | 最近更新时间 |
| 上游链接 | 上游仓库地址(如有) |
筛选条件说明
| 条件 | 选项 | 对应 API 参数 |
|---|---|---|
| 关键词 | 任意文本 | keyword |
| 排序 | 默认排序 / 下载量 / 最近上新 / 收藏数 | sortBy |
| 分类 | 全部 + 13 个分类 | category |
| 来源 | 全部 / ClawHub / SkillHub | source |
| API Key | 不限 / 需要 / 无需 | labels=requires_api_key:* |
技术架构
数据接口
GET https://api.skillhub.cn/api/skills
参数:keyword / category / source / sortBy / labels / page / pageSize(每页最多 50 条)。返回 data.skills(列表)+ data.total(总条数)。需携带浏览器 User-Agent。
抓取策略
服务端对 score 排序有 200 条翻页深度限制(4 页 × 50 条),其余排序(downloads / stars / updated_at)可完整翻页。
应对方案:
- 总数 200 或非 score 排序 直接翻页取全
- score 排序且总数 > 200 自动切换 downloads 排序翻页抓全,再本地按 score 降序重排,保持用户排序意图
- 单页失败自动重试 3 次,翻页间隔 0.2 秒
项目结构
skillhub-exporter/
src/skillhub_exporter/
main.py # 程序入口
core.py # API 抓取 + Excel 导出核心逻辑
logging_setup.py # 日志(按日期+大小滚动,保留 30 天)
ui/app.py # Tkinter GUI
tests/test_core.py # 单元测试
assets/app_icon.png # 应用图标
dist/SkillHubExporter.exe # 打包产物
pyproject.toml
开发说明
# 运行测试
uv run pytest -q
# 代码检查
uv run ruff check .
uv run mypy src
# 打包 exe(onefile + 窗口模式 + 图标)
& "d:\开发项目\skillhub下载\python-dev\scripts\build_windows_exe.ps1" `
-ProjectRoot . `
-EntryScript .\src\skillhub_exporter\main.py `
-AppName SkillHubExporter `
-BuildMode onefile `
-Windowed `
-IconPath .\assets\app_icon.png
依赖:requests(HTTP 请求)、openpyxl(Excel 写入)、python-dotenv(环境变量)。
已知限制
- 服务端偶尔返回条数与报告总数略有偏差(如 2176/2178),属正常现象,日志中有 warning 记录
- 关键词为模糊搜索,精确度以 SkillHub 网站搜索行为为准
- 若网站接口变更导致抓取失败,查看 exe 同目录
logs\下的日志定位
日志位置
- exe 运行:exe 同目录
logs\app-YYYY-MM-DD.log - 源码运行:项目根目录
logs\app-YYYY-MM-DD.log