## Before
一次性人工操作:先从商品领域标签里临时想 10 个问题关键词,再进 `kefu.bytedance.net` 搜索。遇到 SSO、Chrome 登录态、浏览器连接重置或搜索无结果时,只能临场切工具、改搜索词、手动把结果整理成 Markdown 表。
## After
新增 `kefu_search_capture.py` 后,同类任务变成可恢复采集流程:
```bash
python /Users/bytedance/Documents/job-bu/data-analysis-workspace/tools/kefu_search_capture.py \
--input /Users/bytedance/Documents/job-bu/data-analysis-workspace/inputs/product_scene_keywords.csv \
--limit 10 \
--out-dir /Users/bytedance/Documents/job-bu/data-analysis-workspace/runs/kefu-search-capture/2026-05-13
```
输出包含两层证据:
| 层级 | 内容 | 用途 |
| --- | --- | --- |
| 页面搜索结果 | query、结果标题、页面可见推荐方案 | 证明客服工作台当前召回什么 |
| 本地知识库补全 | knowledgeId/本地 Markdown 路径、正文摘要、证据句 | 补足页面不稳定或正文难抓的问题 |
失败也被结构化:
| status | 含义 | 下一步 |
| --- | --- | --- |
| captured | 已采到结果和正文 | 进入最终表 |
| no_result | 原词无召回 | 走 query rewrite 再试 |
| login_blocked | 登录态阻塞 | 切 Chrome 或 computer-use |
| control_reset | 浏览器控制中断 | 从 checkpoint 继续跑小批次 |
这样后续不再只是“跑了前 10 个关键词”,而是可以稳定扩展到 50/100 个商品场景,并保留每个推荐方案的来源、召回词和失败原因。