mcpField
C
csm-kb-generation

csm-kb-generation

github.com/happy-technologies-llc文档处理4141 次安装2 天前更新
代码仓库

关于 csm-kb-generation

该技能将已解决的 ServiceNow 客户服务案例转化为面向客户的知识文章,适用于支持团队整理重复问题的解决经验。它涵盖文章结构、FAQ、分类标记及提交审核流程。

主要功能

  1. 01提取案例原因、解决步骤和变通方案
  2. 02改写为客户易懂的文章
  3. 03添加截图占位符和替代文本
  4. 04从相似案例生成 FAQ
  5. 05分类标记并提交审核

适用场景

  1. 01将常见案例解决方案沉淀为文章
  2. 02发现知识缺口时创建自助内容
  3. 03定期整理已关闭案例中的知识

MCP 相关

借助 ServiceNow MCP 工具查询案例和知识库,并创建文章及案例关联,也可更新文章内容或状态。

安装

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill csm-kb-generation

安装后在 Claude Code 中输入/csm-kb-generation确认已加载。

详细介绍

从 CSM 案例生成知识文章

概述

此技能可根据已解决的客户服务案例生成精炼的知识库文章。它会将案例内部解决数据转化为面向客户的文档,帮助减少未来的案例数量,并赋能客户自助服务。涵盖以下内容:

  • 从已解决的 CSM 案例中提取解决步骤、根本原因和变通方法
  • 使用方便客户理解的语言组织文章,并去除内部术语
  • 插入带有描述性替代文本的屏幕截图占位符,以提供视觉指导
  • 根据类似案例中的常见后续问题生成 FAQ 部分
  • 对文章进行分类和添加标签,以优化可搜索性
  • 通过知识工作流提交文章,以供审核和批准

适用场景: 解决常见或反复出现的问题后;处理案例时发现知识缺口时;或定期从已关闭的案例数据中提炼知识时。

价值主张: 将案例解决记录中积累的经验转化为可重复使用的自助服务内容。帮助客户独立查找答案,从而减少案例数量,并确保支持团队提供一致的解决指导。

前提条件

  • 插件: Customer Service Management(com.sn_customerservice)、Knowledge Management(com.glideapp.knowledge)
  • 角色: knowledge_admin、knowledge_manager 或 knowledge(用于创建文章);sn_customerservice_agent(用于访问案例)
  • 访问权限: 对 sn_customerservice_case、interaction、csm_consumer、sys_journal_field 有读取权限;对 kb_knowledge、kb_knowledge_base、kb_category 有读写权限
  • 知识: 了解组织的知识库结构、文章模板和发布工作流

操作步骤

步骤 1:确定适合生成知识库文章的候选案例

根据频率、类别和解决质量,查询适合生成知识文章的已解决案例。

使用 MCP(Claude Code/Desktop):

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: state=3^resolution_codeISNOTEMPTY^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^ORDERBYDESCclosed_at
  fields: sys_id,number,short_description,category,subcategory,resolution_code,resolved_by,product,close_notes,opened_at,closed_at
  limit: 20

使用 REST API:

GET /api/now/table/sn_customerservice_case?sysparm_query=state=3^resolution_codeISNOTEMPTY^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^ORDERBYDESCclosed_at&sysparm_fields=sys_id,number,short_description,category,subcategory,resolution_code,resolved_by,product,close_notes,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=true
步骤 2:从案例中提取完整的解决详情

检索完整案例记录,包括结案备注、工作备注和解决信息。

使用 MCP:

Tool: SN-Get-Record
Parameters:
  table_name: sn_customerservice_case
  sys_id: [case_sys_id]
  fields: sys_id,number,short_description,description,state,category,subcategory,resolution_code,close_notes,cause,product,contact_type,opened_at,closed_at,resolved_by

然后检索工作备注,以获取分步解决的背景信息:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=[case_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on
  fields: sys_id,element,value,sys_created_on,sys_created_by
  limit: 30

使用 REST API:

GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_fields=sys_id,number,short_description,description,state,category,subcategory,resolution_code,close_notes,cause,product,contact_type,opened_at,closed_at,resolved_by&sysparm_display_value=true

GET /api/now/table/sys_journal_field?sysparm_query=element_id=[case_sys_id]^elementINwork_notes,comments^ORDERBYsys_created_on&sysparm_fields=sys_id,element,value,sys_created_on,sys_created_by&sysparm_limit=30
步骤 3:查找类似的已解决案例以生成 FAQ

查询相关案例,找出常见的后续问题和替代解决方案。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: category=[case_category]^subcategory=[case_subcategory]^state=3^sys_id!=[case_sys_id]^ORDERBYDESCclosed_at
  fields: sys_id,number,short_description,close_notes,resolution_code,description
  limit: 10

使用 REST API:

GET /api/now/table/sn_customerservice_case?sysparm_query=category=[case_category]^subcategory=[case_subcategory]^state=3^sys_id!=[case_sys_id]^ORDERBYDESCclosed_at&sysparm_fields=sys_id,number,short_description,close_notes,resolution_code,description&sysparm_limit=10&sysparm_display_value=true
步骤 4:检查是否已有知识文章

搜索重复或相关的文章,以避免冗余。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  query: workflow_state=published^123TEXTQUERY321=[case_short_description]
  table_name: kb_knowledge
  limit: 5

使用 REST API:

GET /api/now/table/kb_knowledge?sysparm_query=short_descriptionLIKE[key_terms]^workflow_stateINpublished,draft&sysparm_fields=sys_id,number,short_description,workflow_state,sys_view_count,kb_knowledge_base&sysparm_limit=5&sysparm_display_value=true
步骤 5:确定目标知识库和类别

确定应将文章发布到何处。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge_base
  query: active=true
  fields: sys_id,title,description,owner,kb_version
  limit: 10
Tool: SN-Query-Table
Parameters:
  table_name: kb_category
  query: kb_knowledge_base=[kb_sys_id]^active=true
  fields: sys_id,label,parent_id,full_category
  limit: 20

使用 REST API:

GET /api/now/table/kb_knowledge_base?sysparm_query=active=true&sysparm_fields=sys_id,title,description,owner&sysparm_limit=10&sysparm_display_value=true

GET /api/now/table/kb_category?sysparm_query=kb_knowledge_base=[kb_sys_id]^active=true&sysparm_fields=sys_id,label,parent_id,full_category&sysparm_limit=20&sysparm_display_value=true
步骤 6:生成并创建知识文章

使用面向客户的语言撰写文章,并在 ServiceNow 中创建。

使用 MCP:

Tool: SN-Create-Record
Parameters:
  table_name: kb_knowledge
  fields:
    short_description: "How to Resolve Online Return Processing Errors"
    kb_knowledge_base: [kb_sys_id]
    kb_category: [category_sys_id]
    text: |
      <h2>Problem</h2>
      <p>When attempting to process a return through the online portal, you may encounter an error message stating "Unable to process return" or the page may time out during submission.</p>

      <h2>Cause</h2>
      <p>This issue occurs when the browser session expires during the return process, typically after being idle for more than 15 minutes on the return form.</p>

      <h2>Resolution</h2>
      <ol>
        <li>Clear your browser cache and cookies for the portal domain</li>
        <li>Log out and log back in to establish a fresh session</li>
        <li>Navigate to <strong>My Orders > Returns</strong></li>
        
        <li>Select the order containing the item(s) to return</li>
        <li>Click <strong>Start Return</strong> and complete the form within 10 minutes</li>
        
        <li>Submit the return request and note the confirmation number</li>
        
      </ol>

      <h2>If the Issue Persists</h2>
      <p>If you continue to experience errors after following the steps above:</p>
      <ul>
        <li>Try using a different browser (Chrome, Firefox, or Edge recommended)</li>
        <li>Disable browser extensions that may interfere with the portal</li>
        <li>Contact support with your order number and the error message</li>
      </ul>

      <h2>Frequently Asked Questions</h2>
      <p><strong>Q: Will I lose my return information if the page times out?</strong></p>
      <p>A: Yes, you will need to re-enter the return details. The system does not save partial return submissions.</p>

      <p><strong>Q: Can I process returns through the mobile app instead?</strong></p>
      <p>A: Yes, the mobile app maintains a longer session and is recommended for complex returns with multiple items.</p>

      <p><strong>Q: How long does the return take to process after submission?</strong></p>
      <p>A: Returns are typically processed within 3-5 business days. You will receive an email confirmation when the return is approved.</p>
    workflow_state: draft
    article_type: text
    valid_to: "2027-03-19"
    source: case_resolution

使用 REST API:

POST /api/now/table/kb_knowledge
Content-Type: application/json

{
  "short_description": "How to Resolve Online Return Processing Errors",
  "kb_knowledge_base": "[kb_sys_id]",
  "kb_category": "[category_sys_id]",
  "text": "<h2>Problem</h2><p>When attempting to process a return...</p>",
  "workflow_state": "draft",
  "article_type": "text",
  "source": "case_resolution"
}
步骤 7:将文章关联到源案例

将新文章与其来源案例关联,以便追踪。

使用 MCP:

Tool: SN-Create-Record
Parameters:
  table_name: m2m_kb_task
  fields:
    kb_knowledge: [article_sys_id]
    task: [case_sys_id]

使用 REST API:

POST /api/now/table/m2m_kb_task
Content-Type: application/json

{
  "kb_knowledge": "[article_sys_id]",
  "task": "[case_sys_id]"
}

工具用法

MCP 工具参考
工具适用场景
SN-Natural-Language-Search通过语义搜索查找与案例主题匹配的现有 KB 文章
SN-Query-Table查询已解决的案例、工作备注、KB 知识库和类别
SN-Get-Record按 sys_id 检索完整的案例详情
SN-Create-Record创建 KB 文章和案例-文章关联
SN-Update-Record更新文章内容或工作流状态
SN-Execute-Background-Script根据多个已解决案例批量生成文章
REST API 参考
端点方法用途
/api/now/table/sn_customerservice_caseGET查询已解决的案例,以筛选文章候选内容
/api/now/table/sys_journal_fieldGET获取包含解决步骤的工作备注
/api/now/table/kb_knowledgeGET/POST/PATCH搜索、创建和更新知识文章
/api/now/table/kb_knowledge_baseGET列出可用的知识库
/api/now/table/kb_categoryGET浏览知识类别
/api/now/table/kb_feedbackGET检查文章反馈,以便改进

最佳实践

  • 使用面向客户的语言: 将内部行话、案例引用和技术简写改为客户易于理解的清晰表述
  • 保持结构一致: 所有生成的文章都使用“问题 > 原因 > 解决方法 > 常见问题”格式
  • 包含截图占位符: 使用 `` 标记视觉指引的位置,供内容团队填写
  • 根据案例模式生成常见问题: 分析相似的已解决案例,构建常见问题部分,解答常见的后续问题
  • 设置到期日期: 添加 valid_to 日期,以触发定期审查并确保文章准确
  • 避免泄露内部详情: 面向客户的文章中绝不包含 Agent 姓名、内部升级路径或系统架构详情
  • 添加产品和版本标签: 使用元数据字段将文章与特定产品和版本关联,以便提供有针对性的搜索结果
  • 以草稿形式提交: 始终以草稿状态创建文章,发布前进行审核,以保持质量标准

故障排除

“文章内容过于技术化”

原因: 工作备注通常包含面向内部团队的技术简写。 解决方案: 对生成的文本进行后处理,替换技术术语。在撰写文章前,使用术语映射(例如,“GlideRecord” -> “数据库查询”,“BR” -> “自动化规则”)。

“检测到重复文章”

原因: 已有知识文章涵盖相同主题。 解决方案: 将现有文章与新的解决方案进行比较。如果新案例提供了更多背景信息,请更新现有文章,而不是创建重复文章。

“没有可用的结案备注”

原因: 负责解决问题的 Agent 未在案例中填写结案备注。 解决方案: 使用工作备注作为替代,重构解决步骤。通过查找“resolved”“fixed”“solution”“workaround”等关键词,筛选与解决问题相关的工作备注。

“常见问题部分为空”

原因: 未找到可用于提取常见问题的相似案例。 解决方案: 根据文章类别生成通用常见问题(例如,“这需要多长时间?”“如果这样做不起作用怎么办?”“我应该联系谁寻求帮助?”)。

示例

示例 1:根据单个已解决案例生成文章

场景: 案例 CS0045678 解决了一个反复出现的登录问题。

Tool: SN-Get-Record
Parameters:
  table_name: sn_customerservice_case
  sys_id: [case_sys_id]
  fields: number,short_description,description,close_notes,resolution_code,category,product

生成的文章结构:

  • 标题:“密码重置后如何修复登录失败”
  • 问题:描述登录错误的症状
  • 原因:身份提供方与门户之间的密码策略同步延迟
  • 解决方法:包含截图占位符的分步修复说明
  • 常见问题:从 8 个相似的已解决案例中提取的 3 个问题
示例 2:根据案例类别批量生成文章

场景: 为过去 30 天内“Billing”类别下的所有已解决案例生成文章。

Tool: SN-Query-Table
Parameters:
  table_name: sn_customerservice_case
  query: category=billing^state=3^closed_atONLast 30 days@javascript:gs.beginningOfLast30Days()@javascript:gs.endOfLast30Days()^close_notesISNOTEMPTY
  fields: sys_id,number,short_description,close_notes,resolution_code
  limit: 50

按子类别对案例分组,然后为每个子类别生成一篇综合文章,涵盖最常见的解决方法。

示例 3:根据新案例数据补充现有文章

场景: 需要根据一个新近解决的案例更新现有 KB 文章中的解决步骤。

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: number=KB0045123
  fields: sys_id,short_description,text,workflow_state
  limit: 1
Tool: SN-Update-Record
Parameters:
  table_name: kb_knowledge
  sys_id: [article_sys_id]
  fields:
    text: [updated_html_content_with_new_resolution_steps]
    workflow_state: draft

相关技能

  • csm/case-summarization - 在生成知识库内容前总结案例,以提供上下文
  • csm/resolution-notes - 在案例关闭时生成结构化解决说明
  • csm/suggested-steps - 生成可用于创建知识库内容的解决步骤
  • knowledge/content-recommendation - 推荐现有文章以避免重复
  • knowledge/article-generation - 优化文章的可搜索性和质量

评论

支持 Markdown