# API Harvester

> api-harvester

- Skill: `ralfnick/api-harvester` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add ralfnick/api-harvester`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ralfnick/api-harvester/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: RalfNick (https://skillmd.com/u/ralfnick)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ralfnick/api-harvester

---


# api-harvester

从网站抓包自动生成 Claude Code skill 的 meta-skill。

## 四阶段工作流

**Capture（抓包）→ Analyze（分析）→ Select（选择）→ Generate（生成）**

---

## Phase 1: Capture（抓包）

### 模式路由

- 用户提供了 HAR 文件 → **模式 A**（推荐）
- 用户提供了 URL 但没有 HAR → 询问："导出 HAR 更简单，还是我实时抓包？"
- 用户说"帮我实时抓包" → **模式 B**

### 模式 A：HAR 文件导入（推荐，零依赖）

```bash
# 直接分析 HAR 文件
python3 ~/.claude/skills/api-harvester/scripts/analyze_har.py <har_file_path>
```

**HAR 导出指引**（当用户需要时提供）：
1. 打开 Chrome → F12 → Network 标签
2. 勾选 "Preserve log"
3. 在网站上正常操作（搜索、翻页、点击功能等），操作越多样，捕获的 API 越全面
4. 右键请求列表 → "Save all as HAR with content"
5. 把文件路径告诉我

### 模式 B：CDP 实时抓包

参见 `references/cdp-capture-guide.md`。

使用 `chrome-devtools` skill 启动抓包，或用 playwright-cli tracing：

```bash
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（分析）

```bash
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（生成）

```bash
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 会：
1. 在 `api_client.py` 中读取环境变量（如 `SITE_AUTH_TOKEN`）
2. 在 `references/endpoints.md` 中说明如何获取 token
3. 如果 token 已过期，提示用户重新从浏览器提取

从运行中的 Chrome 提取 token：
```bash
# 使用 browser-use 连接运行中的 Chrome
browser-use connect --cdp-url http://localhost:9222
# 或使用 chrome-devtools skill 提取 cookies
```

