mcpField
P
process-faq

process-faq

github.com/joneqian文档处理3255 次安装37 周前更新
代码仓库

关于 process-faq

process-faq 是将 FAQ 文件整理为适用于 RAG 的结构化内容的技能,结合 Claude 进行内容检查与扩写,并通过脚本完成格式转换和 Excel 规范化。

主要功能

  1. 01Excel、Word、PDF、TXT 转 Markdown
  2. 02检查矛盾、重复和缺失信息
  3. 03拆分问题并扩写答案
  4. 04设计分类并整理问答
  5. 05生成关键词并规范 Excel 格式

适用场景

  1. 01将现有 FAQ 整理为 RAG 输入
  2. 02从长答案提取独立知识点
  3. 03发现并处理 FAQ 中的信息冲突

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/joneqian/claude-skills-suite --skill process-faq

安装后在 Claude Code 中输入/process-faq确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
requirements.txt
scripts/
convert_to_markdown.py
generate_rag_faq.py

详细介绍

Process FAQ - FAQ 知识库处理器

将原始 FAQ 文档转换为经过 RAG 优化的结构化格式,并通过智能扩展和分析丰富内容。

此技能的功能

此技能可帮助你:

  1. 转换:将 FAQ 文档转换为易读的 Markdown 格式(脚本)
  2. 分析:分析 FAQ 内容并找出可扩展之处(Claude)
  3. 扩展:扩展内容:拆分复杂问题、改写答案(Claude)
  4. 标准化:统一格式并自动生成关键词(脚本)

支持的输入格式

  • 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:内容质量分析(质量检查)

重要:请在扩展内容之前完成此步骤!

找出并记录问题:

  1. 逻辑问题

    • 矛盾:不同答案是否提供了相互冲突的信息?
      • 示例:Q1 表示“支持退货”,但 Q2 表示“不支持退货”
    • 不一致:相似问题的答案是否不同?
      • 示例:“配送时间 3 天”与“配送时间 5-7 天”
    • 过时信息:是否提及旧产品、价格或政策?
  2. 重复/冗余内容

    • 完全重复:同一问题出现多次
    • 语义重复:“如何登录?”与“怎么登录?”(含义相同)
    • 答案重叠:多个问题的答案有 80% 以上内容相同
  3. 信息缺失或不完整

    • 答案不完整:过于简短,缺少关键步骤或细节
    • 缺少上下文:默认用户了解其可能并不了解的信息
    • 逻辑不通:答案实际上没有回答问题
  4. 表达问题

    • 问题不明确:过于含糊(“支持什么?”)
    • 术语含糊:未定义的行话或缩写
    • 结构不佳:没有格式的长篇文字

所需操作:记录发现的所有问题,并作出决定:

  • ✅ 修复:解决矛盾、合并重复内容、澄清歧义
  • ⚠️ 标记:注明需要用户澄清的问题
  • ❌ 移除:删除确实无用或错误的内容
阶段 B:内容扩展策略

目标:将小型常见问题解答扩展为全面、高质量的知识库

重要:必须先完成质量分析,再进行扩展!

关键扩展技巧:

  1. 先解决问题(基于阶段 A 的发现)

    • 修正矛盾:选定正确的信息,并向用户说明不确定之处
    • 合并重复项:将语义相同的问题合并为一个最佳版本
    • 补全不完整内容:补充缺失步骤,添加上下文
    • 澄清歧义:改写含糊的问题,使其更加具体
  2. 拆分复杂问题

    • 如果一个问题(例如“如何使用产品?”)包含多个子主题
    • 将其拆分为具体问题:“如何安装?”、“如何配置?”、“如何维护?”
  3. 从较长的回答中提取知识点

    • 如果某个回答超过 500 个字符且涵盖多个主题
    • 找出每个独立的知识点
    • 为每个知识点创建专门的问答
    • 但是:确保提取的每个知识点准确且一致
  4. 找出常见问题中的缺失项

    • 根据领域,用户通常会问什么?
    • 补充应该存在但目前缺失的问题
    • 考虑用户旅程:购买前 → 购买 → 使用 → 故障排查
  5. 改写回答,使其更清晰

    • 让每个回答简洁且聚焦
    • 如不合适,删除营销话术
    • 添加结构(编号列表、项目符号)
    • 确保与其他相关回答一致

示例:质量分析 + 扩展

原始内容(存在问题):

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

分步操作:

  1. 首先,使用 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")
  1. 然后使用 Bash 运行脚本:
python create_faq.py
  1. 使用后清理临时脚本:
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- 银行卡支付,方式,支付宝

最佳实践

  1. 始终先转换:不要尝试直接分析二进制文件
  2. 仔细阅读:实际阅读 Markdown 文件,了解其领域
  3. 先保证质量,再扩充:先分析问题,再扩充
    • 不要扩充有问题的内容——先修复!
    • 创建更多 FAQ 前先解决矛盾
    • 拆分较长回答前先合并重复内容
  4. 检查逻辑问题:
    • 不同 FAQ 之间的信息是否矛盾
    • 对相似问题的回答是否一致
    • 是否缺少前提条件或上下文
  5. 提取知识点:识别长回答中的每个不同主题
  6. 确保一致性:相关 FAQ 应提供一致且不冲突的信息
  7. 创建主题明确的 FAQ:每个问答应涵盖一个具体主题
  8. 站在用户角度思考:用户会搜索什么?会提出哪些问题?
  9. 生成中间文件:运行脚本前先创建 *_expanded.xlsx
  10. 让脚本处理关键词:不要手动生成关键词,交给 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

评论

支持 Markdown