关于 process-faq
process-faq 是将 FAQ 文件整理为适用于 RAG 的结构化内容的技能,结合 Claude 进行内容检查与扩写,并通过脚本完成格式转换和 Excel 规范化。
主要功能
- 01Excel、Word、PDF、TXT 转 Markdown
- 02检查矛盾、重复和缺失信息
- 03拆分问题并扩写答案
- 04设计分类并整理问答
- 05生成关键词并规范 Excel 格式
适用场景
- 01将现有 FAQ 整理为 RAG 输入
- 02从长答案提取独立知识点
- 03发现并处理 FAQ 中的信息冲突
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ joneqian/ claude-skills-suite --skill process-faq安装后在 Claude Code 中输入/process-faq确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdrequirements.txtscripts/convert_to_markdown.pygenerate_rag_faq.py详细介绍
Process FAQ - FAQ 知识库处理器
将原始 FAQ 文档转换为经过 RAG 优化的结构化格式,并通过智能扩展和分析丰富内容。
此技能的功能
此技能可帮助你:
- 转换:将 FAQ 文档转换为易读的 Markdown 格式(脚本)
- 分析:分析 FAQ 内容并找出可扩展之处(Claude)
- 扩展:扩展内容:拆分复杂问题、改写答案(Claude)
- 标准化:统一格式并自动生成关键词(脚本)
支持的输入格式
- Excel(.xlsx)
- Word(.docx)
- PDF(.pdf)
- 文本(.txt)
工作流概览(3 步流程)
Step 1: Convert → Markdown (script)
Step 2: Expand → Enhanced FAQ (Claude - THIS IS THE KEY STEP!)
Step 3: Standardize → Final RAG format (script)
新工作流(Claude + 脚本协作)
步骤 1:转换为 Markdown(脚本)
首先,将输入文件转换为 Markdown,以便 Claude 阅读和分析:
python process-faq/scripts/convert_to_markdown.py <input_file>
这会创建一个包含结构化 FAQ 内容的 *_for_analysis.md 文件。
为什么使用 Markdown?
- Claude 可以直接读取并理解内容
- 相比只检查格式,更适合分析内容质量
- 支持细致、智能的分析
步骤 2:Claude 分析并扩展内容(重要!)
这是最重要的一步,也是你(Claude)创造价值的地方!
阅读 Markdown 文件,并进行深入的内容分析和扩展:
阶段 A:内容质量分析(质量检查)
重要:请在扩展内容之前完成此步骤!
找出并记录问题:
-
逻辑问题
- 矛盾:不同答案是否提供了相互冲突的信息?
- 示例:Q1 表示“支持退货”,但 Q2 表示“不支持退货”
- 不一致:相似问题的答案是否不同?
- 示例:“配送时间 3 天”与“配送时间 5-7 天”
- 过时信息:是否提及旧产品、价格或政策?
- 矛盾:不同答案是否提供了相互冲突的信息?
-
重复/冗余内容
- 完全重复:同一问题出现多次
- 语义重复:“如何登录?”与“怎么登录?”(含义相同)
- 答案重叠:多个问题的答案有 80% 以上内容相同
-
信息缺失或不完整
- 答案不完整:过于简短,缺少关键步骤或细节
- 缺少上下文:默认用户了解其可能并不了解的信息
- 逻辑不通:答案实际上没有回答问题
-
表达问题
- 问题不明确:过于含糊(“支持什么?”)
- 术语含糊:未定义的行话或缩写
- 结构不佳:没有格式的长篇文字
所需操作:记录发现的所有问题,并作出决定:
- ✅ 修复:解决矛盾、合并重复内容、澄清歧义
- ⚠️ 标记:注明需要用户澄清的问题
- ❌ 移除:删除确实无用或错误的内容
阶段 B:内容扩展策略
目标:将小型常见问题解答扩展为全面、高质量的知识库
重要:必须先完成质量分析,再进行扩展!
关键扩展技巧:
-
先解决问题(基于阶段 A 的发现)
- 修正矛盾:选定正确的信息,并向用户说明不确定之处
- 合并重复项:将语义相同的问题合并为一个最佳版本
- 补全不完整内容:补充缺失步骤,添加上下文
- 澄清歧义:改写含糊的问题,使其更加具体
-
拆分复杂问题
- 如果一个问题(例如“如何使用产品?”)包含多个子主题
- 将其拆分为具体问题:“如何安装?”、“如何配置?”、“如何维护?”
-
从较长的回答中提取知识点
- 如果某个回答超过 500 个字符且涵盖多个主题
- 找出每个独立的知识点
- 为每个知识点创建专门的问答
- 但是:确保提取的每个知识点准确且一致
-
找出常见问题中的缺失项
- 根据领域,用户通常会问什么?
- 补充应该存在但目前缺失的问题
- 考虑用户旅程:购买前 → 购买 → 使用 → 故障排查
-
改写回答,使其更清晰
- 让每个回答简洁且聚焦
- 如不合适,删除营销话术
- 添加结构(编号列表、项目符号)
- 确保与其他相关回答一致
示例:质量分析 + 扩展
原始内容(存在问题):
Q1: 你们是怎么调理睡眠的?
A1: [500字,包含:产品介绍、使用流程、手环说明、"手环180元"、售后政策等]
Q2: 先用后付是什么意思?
A2: [与Q1相同的500字回答]
Q3: 华为手环多少钱?
A3: 手环200元左右
阶段 A 分析——发现的问题:
- ❌ 矛盾:Q1 说“手环 180 元”,Q3 说“手环 200 元左右”
- ❌ 重复:Q1 和 Q2 的回答完全相同
- ⚠️ 重叠:三个问题都提到了手环,信息杂乱
阶段 B 扩展——修正后:
Q1: 你们是怎么调理睡眠的?
A1: 我们通过太赫兹能量睡垫来调理睡眠,能帮助疏通经络、改善气血循环...
[简洁,只讲核心调理原理,不再包含价格等无关信息]
Q2: 先用后付是什么意思?
A2: 先用后付就是您可以先把产品拿回家免费体验,有效果再付款...
[独立回答,不再重复Q1的内容]
Q3: 华为手环多少钱?
A3: 华为手环180元左右(已统一价格,解决矛盾)
Q4: 为什么要用华为手环测睡眠?
A4: 手环能精准测出入睡时间、深睡时长等数据...
[新增问题,补充手环相关信息]
Q5: 手环怎么使用?
A5: 充电后戴在手腕上,连接手机APP即可...
[新增问题,完善手环知识点]
总结:
- 修正了 1 处矛盾(统一价格)
- 合并了 1 处重复项(Q1 和 Q2)
- 将 3 个常见问题扩展为 5 个(提取知识点)
- 每个回答现在都重点明确且内容一致
阶段 C:分类
设计清晰的分类结构:
- 将相关问题归为一组
- 使用符合领域特点的分类名称
- 建议设置 5-10 个主要分类
步骤 3:征询用户意见(可选)
如果需要澄清以下内容,请使用 AskUserQuestion 工具:
- 特定领域术语
- 语气偏好(正式还是随意)
- 是否保留营销话术
- 优先扩展的主题
大多数情况下,你可以根据分析直接进行步骤 4。
步骤 4:生成扩展后的常见问题解答(Excel)
重要:实际的内容扩展就在这一步进行!
创建一个包含扩展后常见问题解答内容的新 Excel 文件:
文件命名:<original_name>_expanded.xlsx
必需列:
分类(类别)问题(问题)回答(回答)
可选列(如果缺失,脚本会自动生成):
关键词(关键词)——可留空,脚本会自动生成
文件创建方法:
重要(跨平台兼容性):
- 不要使用
python -c "..."运行内联 Python 代码——这会导致 Windows 上的引号转义问题 - 始终先使用 Write 工具创建
.py脚本文件,然后运行python script.py
分步操作:
- 首先,使用 Write 工具创建一个 Python 脚本(例如
create_faq.py):
# create_faq.py - Use Write tool to create this file
import pandas as pd
data = [
{
"分类": "睡眠问题咨询",
"问题": "你们是怎么调理睡眠的?",
"回答": "我们通过太赫兹能量睡垫来调理睡眠..."
},
{
"分类": "睡眠问题咨询",
"问题": "我总是入睡困难怎么办?",
"回答": "入睡困难通常和气血不畅有关..."
},
# ... 添加所有扩展后的FAQ
]
df = pd.DataFrame(data)
df.to_excel("filename_expanded.xlsx", index=False)
print("Successfully created filename_expanded.xlsx")
- 然后使用 Bash 运行脚本:
python create_faq.py
- 使用后清理临时脚本:
rm create_faq.py # or 'del create_faq.py' on Windows CMD
保存前的质量检查清单:
- 每个问题都具体且聚焦
- 每个回答都简洁(通常为 50-200 个字符)
- 问题按逻辑类别分组
- 涵盖所有重要知识点
- 没有冗余或重复的问题
步骤 5:使用脚本统一格式
使用脚本处理扩展后的文件:
python process-faq/scripts/generate_rag_faq.py <expanded_file> <final_output_file>
脚本功能:
- 使用 jieba TF-IDF 自动生成关键词
- 应用专业的 Excel 格式
- 设置合适的列宽和样式
- 执行最终重复项检查
- 创建经过 RAG 优化的最终知识库
示例:
python process-faq/scripts/generate_rag_faq.py 申花太赫兹_expanded.xlsx 申花太赫兹_RAG_优化版.xlsx
完整工作流示例
用户:“请处理 申花太赫兹知识库.xlsx,并将其转换为 RAG 格式”
你(Claude):
步骤 1:转换为 Markdown
python process-faq/scripts/convert_to_markdown.py 申花太赫兹知识库.xlsx
步骤 2:阅读并分析
- 使用 Read 工具读取生成的
申花太赫兹知识库_for_analysis.md - 分析:“我发现原有的 7 个常见问题的答案都很长(每个超过 500 个字符)”
- 确认:“每个答案实际上都涵盖了 3–5 个不同的主题”
步骤 3:扩展内容
- 从长答案中提取知识点
- 为每个知识点创建专门的问答
- 示例:将 1 个关于“如何调理睡眠”的问题扩展为:
- 你们是怎么调理睡眠的?(调理原理)
- 我总是入睡困难怎么办?(具体症状)
- 先用后付是什么意思?(购买政策)
- 为什么要用华为手环?(设备说明)
- 手环怎么使用?(使用指南)
- 等等……
步骤 4:生成扩展后的 Excel
使用 pandas 创建 申花太赫兹知识库_expanded.xlsx,包含 31 个重点明确的常见问题(原来有 7 个)
步骤 5:标准化格式
python process-faq/scripts/generate_rag_faq.py 申花太赫兹知识库_expanded.xlsx 申花太赫兹知识库_RAG_优化版.xlsx
步骤 6:报告结果
- “已成功将 7 个常见问题扩展为 31 个重点明确的条目”
- “已整理为 8 个类别”
- “已为所有条目自动生成关键词”
- “最终文件已准备好,可供 RAG 系统使用”
关键原则
1. 扩展内容是关键
你提供的主要价值在于:
- 扩展简单的常见问题,构建全面的知识库
- 从长答案中提取知识点
- 创建重点明确、具体的问答对
- 而不只是清理格式或删除重复内容
2. 重质量,而非数量(但通常越多越好)
- 每个常见问题都应重点明确、具体
- 与其保留 5 个很长的问题,不如整理出 30 个重点明确的问题
- 每个答案最好为 50–200 个字符
- 长答案(500 个字符以上)应拆分为多个常见问题
3. 像 RAG 系统一样思考
- 用户会如何搜索这类信息?
- 他们会提出哪些具体问题?
- 语义搜索能找到这个答案吗?
- 问题是否足够具体,能匹配用户意图?
4. 分工
Claude 负责(创造性工作):
- 理解内容
- 提取知识点
- 拆分问题并改写措辞
- 改写答案
- 设计类别
脚本负责(机械性工作):
- 提取关键词(jieba TF-IDF)
- 标准化格式
- 设置 Excel 样式
- 最终重复项检查
质量分析与扩展检查清单
阶段 A:质量分析(必须先做!)
- 检查矛盾之处:不同的常见问题是否提供了相互冲突的信息?
- 识别重复项:完全重复或语义重复(含义相同,措辞不同)
- 查找不一致之处:相似问题的答案是否不同(例如,价格或时间范围不同)
- 找出不完整的信息:答案是否缺少关键步骤或背景信息?
- 标记不明确的内容:问题含糊、术语有歧义、行话未定义
- 标注过时信息:提及旧产品、政策或价格的内容
**操作:**记录所有问题,并制定解决计划
阶段 B:扩展内容(修正质量问题后!)
- 已解决矛盾:统一相互冲突的信息
- 已合并重复项:合并语义相同的问题
- 已拆分长答案:任何超过 300 个字符且涵盖多个主题的答案
- 每组问答重点明确:一个问题 = 一个具体主题
- 已提取所有知识点:未遗漏原始内容中的任何信息
- 问题具体明确:避免“如何使用?”这类含糊的问题
- 答案简洁:每个答案通常为 50–200 个字符
- 答案前后一致:相关常见问题提供的信息一致
- 类别清晰:根据领域划分为 5–10 个逻辑类别
- 已补充常见问题:预先考虑用户可能自然提出的问题
- 结构恰当:在适当之处使用列表、编号或项目符号
输出格式
最终的 Excel 文件将包含:
| 分类 | 问题 | 回答 | 关键词 |
|---|---|---|---|
| 分类 | 问题 | 回答 | 关键词 |
示例:
| 分类 | 问题 | 回答 | 关键词 |
|---|---|---|---|
| 账户管理 | 如何重置密码? | 1. 点击"忘记密码"\n2. 输入邮箱\n3. 查收重置链接 | 密码,重置,账户 |
| 支付问题 | 支持哪些支付方式? | 我们支持:\n- 支付宝\n- 微信支付\n- 银行卡 | 支付,方式,支付宝 |
最佳实践
- 始终先转换:不要尝试直接分析二进制文件
- 仔细阅读:实际阅读 Markdown 文件,了解其领域
- 先保证质量,再扩充:先分析问题,再扩充
- 不要扩充有问题的内容——先修复!
- 创建更多 FAQ 前先解决矛盾
- 拆分较长回答前先合并重复内容
- 检查逻辑问题:
- 不同 FAQ 之间的信息是否矛盾
- 对相似问题的回答是否一致
- 是否缺少前提条件或上下文
- 提取知识点:识别长回答中的每个不同主题
- 确保一致性:相关 FAQ 应提供一致且不冲突的信息
- 创建主题明确的 FAQ:每个问答应涵盖一个具体主题
- 站在用户角度思考:用户会搜索什么?会提出哪些问题?
- 生成中间文件:运行脚本前先创建
*_expanded.xlsx - 让脚本处理关键词:不要手动生成关键词,交给 jieba 处理
常见扩充场景
场景 1:包含多个主题的长回答
原始内容:
Q: 你们的产品怎么样?
A: 我们的产品质量好、价格实惠、支持30天退货、全国包邮、还有24小时客服...
扩充后:
Q1: 你们的产品质量如何?
A1: 产品经过严格质检,质量可靠...
Q2: 产品价格贵吗?
A2: 价格实惠,性价比高...
Q3: 支持退货吗?
A3: 支持30天无理由退货...
Q4: 包邮吗?
A4: 全国包邮,无需额外运费...
Q5: 有客服支持吗?
A5: 提供24小时在线客服...
场景 2:问题过于模糊,需要具体化
原始内容:
Q: 如何使用?
A: [Long explanation covering installation, configuration, daily use, troubleshooting...]
扩充后:
Q1: 如何安装产品?
A1: [Installation steps]
Q2: 如何进行初始配置?
A2: [Configuration guide]
Q3: 日常使用注意事项有哪些?
A3: [Daily usage tips]
Q4: 遇到问题怎么排查?
A4: [Troubleshooting steps]
场景 3:矛盾和不一致
原始内容(存在逻辑问题):
Q1: 配送需要多久?
A1: 一般3-5个工作日送达
Q2: 什么时候能收到货?
A2: 通常7天内送达
Q3: 支持退货吗?
A3: 支持7天无理由退货
Q4: 可以退款吗?
A4: 不支持退款,只能换货
发现的问题:
- ❌ 矛盾:Q1 说 3-5 天,Q2 说 7 天
- ❌ 矛盾:Q3 支持退货,Q4 说不支持退款
- ⚠️ 语义重复:Q1 和 Q2 问的是同一件事
修正并扩充后:
Q1: 配送需要多久?
A1: 一般3-5个工作日送达(偏远地区可能需要7天)
[统一时间信息,说明例外情况]
Q2: 支持退货吗?
A2: 支持7天无理由退货退款
[解决矛盾:统一退货和退款政策]
Q3: 如何申请退货?
A3: 联系客服说明原因,获得退货地址后寄回即可
[新增:补充退货流程]
Q4: 退货运费谁承担?
A4: 质量问题我们承担,非质量问题需您承担
[新增:补充退货细节]
总结:
- 解决了 2 处矛盾
- 合并了 1 处语义重复
- 新增了 2 个相关问题
- 所有信息现在都保持一致
场景 4:缺少明显的问题
**原始内容:**只有“如何注册账户?”
还应添加:
- 注册需要提供哪些信息?
- 可以用手机号注册吗?
- 忘记密码怎么办?
- 如何修改个人信息?
- 如何注销账户?
错误处理
如果转换失败:
- 检查是否支持该文件格式
- 确认文件没有损坏
- 先尝试手动打开文件
- 检查文件编码(应为 UTF-8)
如果内容结构不清晰:
- Markdown 中会显示原始文本
- 需要手动识别问答对
- 建议重新组织源文档
依赖项
所需的 Python 包:
- pandas(数据处理)
- openpyxl(Excel 支持)
- python-docx(Word 支持)
- PyPDF2(PDF 支持)
- jieba(中文文本处理)
使用以下命令安装:
pip install -r process-faq/requirements.txt