# 头条（头条号 tou_tiao_hao）接口台账（接口文档撰写岗 D — 次级平台）

> 唯一证据来源：`/tmp/aiddit_captures/toutiao_search.json`、`/tmp/aiddit_captures/toutiao_search_retry.json`。host：`http://crawler.aiddit.com`。
> **平台级关键发现：整平台失败（blocked）。** 两次抓包（含一次去掉 `content_type` 的重试）**均返回 `code=10000 / msg="未知错误" / data=null`**，未拿到任何真实 item、字段或翻页结构。本平台**当前不可用**，下游不应接入。

平台仅一个接口（失败）：

- `PLT_TOUTIAO_KEYWORD` — 关键词搜索（**blocked ⛔**，code=10000 两次失败）

---

## 接口：头条号关键词搜索 `PLT_TOUTIAO_KEYWORD`

### ① 身份
| 项 | 值 |
|---|---|
| source_id | `PLT_TOUTIAO_KEYWORD` |
| display_name | Crawapi 头条号关键词搜索 |
| 平台 channel | 头条号（tou_tiao_hao） |
| 接口路径 | `/crawler/tou_tiao_hao/keyword` |
| 状态 | **blocked ⛔**（`toutiao_search.json` + `toutiao_search_retry.json` 均 `code=10000`，`data=null`） |
| 用途 | 关键词 → 内容列表（**当前整平台不可用**） |

### ② 请求标准
- **method**：POST
- **path**：`http://crawler.aiddit.com/crawler/tou_tiao_hao/keyword`
- **鉴权**：抓包 `request_body` 无 token / key（同其它平台走 crawler 网关，base_url 由 `CONTENTFIND_API_CRAWAPI_BASE_URL` 提供）。
- **Content-Type**：`application/json`

| 参数 | 类型 | 必填 | 含义 | 抓包真值 |
|---|---|---|---|---|
| `keyword` | string | 是 | 搜索关键词 | `"彩虹"` |
| `content_type` | string | 否 | 内容类型（首抓传 `video`，重试已去掉） | `"video"`（重试未传） |
| `page` | int | 否 | 页码 | `0` |

### ③ 真实 curl
```bash
# 首次（带 content_type）—— 返回 code=10000
curl -X POST 'http://crawler.aiddit.com/crawler/tou_tiao_hao/keyword' \
  -H 'Content-Type: application/json' \
  -d '{"keyword":"彩虹","content_type":"video","page":0}'

# 重试（去掉 content_type）—— 仍返回 code=10000
curl -X POST 'http://crawler.aiddit.com/crawler/tou_tiao_hao/keyword' \
  -H 'Content-Type: application/json' \
  -d '{"keyword":"彩虹","page":0}'
```

### ④ 响应信封 + 翻页
信封：`{ code, msg, data }`。两次抓包均为失败信封：
```
code = 10000
msg  = "未知错误"
data = null
```
**翻页规则**：无（`data=null`，无 `has_more` / `next_cursor`，无任何成功结构可记录）。

### ⑤ 字段台账表（raw 名）
**无可用字段** —— 两次响应 `data=null`，未返回任何 item，内容 id / 标题 / 作者 / url / tag / 翻页字段**全部未知**，不予编造。待平台修复（返回 `code=0`）后补抓再登记。

| 字段名(raw) | 类型 | 含义 | 提取标注 | 真实示例值 |
|---|---|---|---|---|
| —（无） | — | 平台失败，无字段 | — | `data=null` |

### ⑥ 提取与后处理规则
不适用 —— 无成功响应。平台修复后再补。

### ⑦ 边界与失败
- **整平台 blocked**：`/crawler/tou_tiao_hao/keyword` 经两次真实请求（`toutiao_search.json` 带 `content_type=video`、`toutiao_search_retry.json` 去掉 `content_type`）**均返回 `code=10000 / msg="未知错误"`**。
- 失败与参数无关（去掉 `content_type` 后仍 10000），判定为**平台/接口侧不可用**，非调用方参数问题。
- 限流：统一约束请求间隔 **≥ 15s**（即便修复后亦适用）。
- 处置：下游链路**跳过头条平台**；不要把它当作可用内容源；待 crawler 侧修复并复抓到 `code=0` 后再解锁登记。

### ⑧ 落点（canonical + 游走边）
- **无落点**：无内容数据，不产生 canonical `platform_content_id` / `platform_author_id` / `tags`，也不产生 `search_page_to_content` / `video_to_author` / `video_to_hashtag` 任何游走边。
- registry 状态置 `blocked`，待修复后再定义映射。
