# 客服知识库Skill化流水线
候选 id:`kefu-doc-skillization-pipeline`
## Before / After\n\n| 阶段 | Before | After |\n| --- | --- | --- |\n| 输入 | 临时从 kefu 表格、wiki 列表或浏览器页面手动判断哪些文档要转。 | 用 `manifest.xlsx/csv` 明确 `knowledgeId/url/title/domain/scope`,并生成 `scope_decision.md`。 |\n| 抽取 | 依赖一次性脚本和页面状态,debug Chrome 没跑或旧快照失效时容易卡住。 | `extract_skill_blocks.py` 先解析本地富文本 HTML,浏览器只负责活体验证和补源。 |\n| 生成 | 人工约定“前两列描述、后两列正文”,每批都重新解释。 | `kefu-doc-skillizer/SKILL.md` 固化列合成规则、slug 规则、输出目录和保留原文原则。 |\n| 校验 | 生成后才发现第 112 个 description 里 `<=` 破坏 frontmatter。 | `validate_skill_pack.py` 批量检查 YAML、description、source、重复 slug 和空正文,失败报告直接定位文件与字段。 |\n| 口径 | 商品域出现 20/44/22 篇多个范围,需要靠人工追溯。 | 流水线要求先产出 scope audit:采用窄口径时记录命中规则、排除规则和最终 URL 数。 |\n\n### 示例命令\n\n```bash\npython /Users/bytedance/.codex/skills/kefu-doc-skillizer/scripts/extract_skill_blocks.py \\\n --manifest /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/kefu-skillize/input/商品域知识清单.xlsx \\\n --html-dir /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/kefu-skillize/raw_html \\\n --out /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/kefu-skillize/generated_skills\n\npython /Users/bytedance/.codex/skills/kefu-doc-skillizer/scripts/validate_skill_pack.py \\\n --skills-dir /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/kefu-skillize/generated_skills \\\n --report /Users/bytedance/Documents/job-bu/data-analysis-workspace/projects/kefu-skillize/validation_report.json\n```\n\n### 成功信号\n\n- `validation_report.json` 中 `failed=0`。\n- `manifest.generated.csv` 的文档数、skill 数、source_url 和 knowledgeId 都可追溯。\n- 抽样打开 3-5 个 Edge 活页后,正文结构与本地 HTML 拆分一致。\n- 若存在 20/44/22 这类范围分歧,`scope_decision.md` 能解释最终为什么生成 22 篇对应的 261 个 SKILL.md。