返回作品列表

网友作品 #000190 · 提交于 2026/08/24

SkillHub技能清单导出工具:多维筛选一键导出Excel

★★★★★程序员水平AI 编程工具国内顶级模型python

作品作者

李伟坚-Excel催化剂&EasyShu作者程序员水平微信号liweijian08可加好友交流
开发工具
AI 编程工具
AI 模型
国内顶级模型
使用 Skill
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。

  1. 筛选条件:输入关键词,按需选择分类 / 来源 / 排序 / API Key 筛选
  2. 保存位置:默认桌面,可点「浏览…」修改
  3. 点「开始导出」,完成后自动打开 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