api-harvester
从网站抓包自动生成 Claude Code skill 的 meta-skill。
四阶段工作流
Capture(抓包)→ Analyze(分析)→ Select(选择)→ Generate(生成)
Phase 1: Capture(抓包)
模式路由
- 用户提供了 HAR 文件 → 模式 A(推荐)
- 用户提供了 URL 但没有 HAR → 询问:"导出 HAR 更简单,还是我实时抓包?"
- 用户说"帮我实时抓包" → 模式 B
模式 A:HAR 文件导入(推荐,零依赖)
# 直接分析 HAR 文件
python3 ~/.claude/skills/api-harvester/scripts/analyze_har.py <har_file_path>
HAR 导出指引(当用户需要时提供):
- 打开 Chrome → F12 → Network 标签
- 勾选 "Preserve log"
- 在网站上正常操作(搜索、翻页、点击功能等),操作越多样,捕获的 API 越全面
- 右键请求列表 → "Save all as HAR with content"
- 把文件路径告诉我
模式 B:CDP 实时抓包
参见 references/cdp-capture-guide.md。
使用 chrome-devtools skill 启动抓包,或用 playwright-cli tracing:
playwright-cli open https://target-site.com
playwright-cli tracing-start
# 用户操作网站...
playwright-cli tracing-stop
# 提取网络数据
python3 ~/.claude/skills/api-harvester/scripts/extract_trace_network.py .playwright-cli/trace.zip
Phase 2: Analyze(分析)
python3 ~/.claude/skills/api-harvester/scripts/analyze_har.py <har_or_json_file>
脚本输出评分后的端点列表,包含:
- 端点路径、HTTP 方法
- 评分(基于响应大小、JSON 内容、频率)
- 推断的功能描述
- 检测到的 auth 模式(Bearer token、Cookie、自定义 header)
- 请求/响应 schema 摘要
Phase 3: Select(选择)
分析完成后,向用户展示结构化结果:
发现 23 个 API 端点,按资源分组:
[用户相关] (3个)
★★★ GET /api/user/profile → 获取用户资料
★★★ GET /api/user/settings → 获取用户设置
★★ POST /api/user/update → 更新用户信息
[内容相关] (8个)
★★★ GET /api/posts → 获取帖子列表
★★★ GET /api/posts/{id} → 获取帖子详情
...
请选择要封装的端点(输入编号,逗号分隔,或 'all'):
技能名称:
Phase 4: Generate(生成)
python3 ~/.claude/skills/api-harvester/scripts/generate_skill.py \
--endpoints selected_endpoints.json \
--skill-name <name> \
--output ~/.claude/skills/<name>/
生成完整 skill 目录:
~/.claude/skills/<skill-name>/
├── SKILL.md # 触发词、命令列表
├── scripts/
│ └── api_client.py # 每个端点对应一个子命令
└── references/
└── endpoints.md # 端点文档 + schema
Auth 处理
如果捕获到 auth token,skill 会:
- 在
api_client.py中读取环境变量(如SITE_AUTH_TOKEN) - 在
references/endpoints.md中说明如何获取 token - 如果 token 已过期,提示用户重新从浏览器提取
从运行中的 Chrome 提取 token:
# 使用 browser-use 连接运行中的 Chrome
browser-use connect --cdp-url http://localhost:9222
# 或使用 chrome-devtools skill 提取 cookies