## 诊断流程样例
### 输入
```bash
crawl-hub doctor getnote-url 'https://xhslink.com/xxxx'
```
### Step 1:账号与 OpenAPI 权限
| 检查项 | 成功信号 | 失败信号 | 处理 |
|---|---|---|---|
| `getnote auth status` | 已登录,能拿到当前账号状态 | 未登录或 token 失效 | 引导重新登录 |
| `quota` / `kbs` / `search` | 均返回正常数据 | `403 / code 10201 / not_member` | 判定账号没有 OpenAPI 会员权限,停止 URL 抓取重试 |
| 临时笔记 create/read/delete | 可创建、读回、删除 | create 成功但 read 失败 | 记录 note_id 与 API 返回体,进入接口层排查 |
### Step 2:URL 路由
| URL 类型 | 预期 provider | 关键检查 |
|---|---|---|
| B站 | `getnote-url` | 普通 URL 可 save,异步等待后能回读视频笔记 |
| 公众号 | `getnote-url` | dry-run 能识别并走 Get笔记底层能力 |
| 小宇宙 | `getnote-url` | dry-run 能自动路由 |
| 小红书短链 `xhslink.com` | `getnote-url` | 短链解析等待可被识别,不重复提交 |
### Step 3:异步等待与回读
1. 第一次 save 后记录返回体里的 `id` 和 `note_id`。
2. 后续统一使用字符串型 `note_id` 查询。
3. 如果平台提示仍在处理,按固定间隔轮询 task 或最近笔记。
4. 超时后先查最近笔记确认是否已创建,避免重复写入。
### 结果示例
```text
PASS auth: logged in
PASS openapi: quota/kbs/search ok
PASS route: xhslink.com -> getnote-url
WAIT save: short link still processing
PASS note: note_id=1910122117177947056, content readable
```
失败时应输出明确归因,例如:
```text
FAIL openapi: 403 code=10201 reason=not_member
建议:账号需要开通 Get笔记 OpenAPI 会员权限;当前不是 CLI 登录问题,也不是 crawl hub provider 问题。
```