关于 content-recommendation
面向 ServiceNow 事件、客户服务案例和用户问题的知识文章推荐技能。它结合分类、关键词、历史解决记录及文章质量信号筛选内容,并支持将推荐附加到记录。
主要功能
- 01从事件或案例提取上下文
- 02按分类和关键词搜索文章
- 03查找相似已解决事件使用的文章
- 04结合评分、浏览量和更新时间排序
- 05将推荐文章及理由写入记录
适用场景
- 01为正在处理的事件查找解决文章
- 02为客户服务案例推荐知识内容
- 03构建自动化文章推荐工作流
MCP 相关
通过 SN-Query-Table 和 SN-Natural-Language-Search 搜索事件及知识文章,并用 SN-Update-Record 或 SN-Add-Work-Notes 记录推荐。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill content-recommendation安装后在 Claude Code 中输入/content-recommendation确认已加载。
详细介绍
知识内容推荐
概述
此技能提供了一种结构化方法,用于在 ServiceNow 中为正在处理的事件、案例或用户查询推荐相关知识文章。有效的知识推荐可以缩短解决时间、提高首次联系解决率,并提升自助服务的使用率。
此技能可帮助你:
- 从事件或案例描述中提取关键词和上下文,构建有针对性的搜索
- 通过类别匹配、关键词重叠和自然语言搜索查询知识库
- 根据浏览量、评分、近期程度和历史解决模式对候选文章进行相关性排序
- 找出之前用于解决类似事件的文章
- 将推荐文章附加到事件或案例记录,并添加上下文说明
适用场景: 对事件/案例进行分流或处理时、用户就某个主题寻求帮助时,或构建自动化推荐工作流时。
先决条件
- 角色: 具有
itil、sn_customerservice_agent或knowledge角色,以获得读取权限 - 访问权限: 对
kb_knowledge、incident、sn_customerservice_case、m2m_kb_task、kb_use和kb_feedback表具有读取权限 - 插件: 已启用
com.glideapp.knowledge(知识管理) - 知识: 熟悉所在组织的知识库结构、类别和标记约定
操作步骤
第 1 步:从事件或案例中提取上下文
获取事件或案例详情,以了解问题背景。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: number=INC0012345
fields: sys_id,number,short_description,description,category,subcategory,cmdb_ci,assignment_group,impact,urgency,close_notes
limit: 1
使用 REST API:
GET /api/now/table/incident?sysparm_query=number=INC0012345&sysparm_fields=sys_id,number,short_description,description,category,subcategory,cmdb_ci,assignment_group,impact,urgency,close_notes&sysparm_limit=1
对于 CSM 案例:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: number=CS0045678
fields: sys_id,number,short_description,description,product,category,account,contact,priority
limit: 1
第 2 步:按类别匹配搜索知识
使用事件的类别和子类别,在相同知识领域中查找文章。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^kb_category.label=Network^active=true
fields: sys_id,number,short_description,kb_knowledge_base,kb_category,sys_view_count,rating,sys_updated_on,author
limit: 15
使用 REST API:
GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^kb_category.label=Network^active=true&sysparm_fields=sys_id,number,short_description,kb_knowledge_base,kb_category,sys_view_count,rating,sys_updated_on,author&sysparm_limit=15
第 3 步:按关键词匹配搜索知识
从事件的简短描述和描述中提取关键词,然后搜索包含这些词语的文章。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^short_descriptionLIKEvpn^ORtextLIKEvpn^short_descriptionLIKEtimeout^ORtextLIKEtimeout^short_descriptionLIKEconnection^ORtextLIKEconnection
fields: sys_id,number,short_description,text,kb_knowledge_base,kb_category,sys_view_count,rating
limit: 15
使用 REST API:
GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKEvpn^ORtextLIKEvpn^short_descriptionLIKEtimeout^ORtextLIKEtimeout^short_descriptionLIKEconnection^ORtextLIKEconnection&sysparm_fields=sys_id,number,short_description,kb_knowledge_base,kb_category,sys_view_count,rating&sysparm_limit=15
第 4 步:查找用于解决类似事件的文章
查询多对多关系表,找出关联到类别相匹配的已解决事件的文章。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: m2m_kb_task
query: task.category=network^task.subcategory=vpn^task.state=6
fields: kb_knowledge,kb_knowledge.number,kb_knowledge.short_description,task,task.number,task.short_description
limit: 20
使用 REST API:
GET /api/now/table/m2m_kb_task?sysparm_query=task.category=network^task.subcategory=vpn^task.state=6&sysparm_fields=kb_knowledge,kb_knowledge.number,kb_knowledge.short_description,task,task.number,task.short_description&sysparm_limit=20
第 5 步:检查文章质量信号
对于在第 2 至第 4 步中找到的候选文章,使用使用情况指标和反馈评估其质量。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_use
query: article.numberINKB0010100,KB0010200,KB0010300
fields: article,article.number,viewed,useful,not_useful
limit: 20
使用 REST API:
GET /api/now/table/kb_use?sysparm_query=article.numberINKB0010100,KB0010200,KB0010300&sysparm_fields=article,article.number,viewed,useful,not_useful&sysparm_limit=20
检查近期负面反馈:
Tool: SN-Query-Table
Parameters:
table_name: kb_feedback
query: article.numberINKB0010100,KB0010200,KB0010300^sys_created_on>=javascript:gs.daysAgoStart(90)
fields: article,article.number,rating,comments,sys_created_on
limit: 20
第 6 步:排序并选出首选推荐
使用相关性评分模型对候选文章进行排序:
排序标准:
| 因素 | 权重 | 说明 |
|---|---|---|
| 类别匹配 | 25% | 文章类别与事件类别匹配 |
| 关键词重叠 | 30% | 标题和正文中匹配的关键词数量 |
| 历史解决情况 | 20% | 该文章曾用于解决类似的历史事件 |
| 文章评分 | 10% | 用户平均评分(越高越好) |
| 近期程度 | 10% | 最近更新的文章得分更高 |
| 浏览量 | 5% | 浏览量越高,通常表示越有用 |
评分指南:
- 符合 3 项或以上标准的文章属于“强烈推荐”
- 符合 2 项标准的文章属于“可能推荐”
- 过去 90 天内收到负面反馈的文章应标注注意事项
第 7 步:将推荐文章附加到事件
将排名最高的文章关联到事件,并记录推荐信息。
使用 MCP:
Tool: SN-Update-Record
Parameters:
table_name: incident
sys_id: [incident_sys_id]
data:
kb_knowledge: [recommended_article_sys_id]
work_notes: "Knowledge Recommendation: Attached KB0010100 'VPN Connection Timeout Troubleshooting' based on category match (Network/VPN), keyword overlap (vpn, timeout, connection), and historical resolution of 12 similar incidents."
使用 REST API:
PATCH /api/now/table/incident/{sys_id}
Content-Type: application/json
{
"kb_knowledge": "[recommended_article_sys_id]",
"work_notes": "Knowledge Recommendation: Attached KB0010100..."
}
第 8 步:记录多篇推荐文章
如果有多篇相关文章,请添加工作备注,列出所有推荐文章及其推荐理由。
使用 MCP:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [incident_sys_id]
work_notes: |
=== KNOWLEDGE RECOMMENDATIONS ===
Based on: INC0012345 "VPN connection timeout when connecting remotely"
1. KB0010100 - "VPN Connection Timeout Troubleshooting" (Score: 4.5/5)
- Category match: Network/VPN
- Used in 12 similar resolved incidents
- Rating: 4.2/5, 890 views
- RECOMMENDED: Primary article
2. KB0010200 - "Corporate Network Access Guide" (Score: 3.2/5)
- Keyword match: "corporate network", "connection"
- Rating: 3.8/5, 456 views
- SUPPLEMENTARY: General reference
3. KB0010300 - "VPN Client Installation" (Score: 2.1/5)
- Partial category match
- May be relevant if client reinstallation needed
- SITUATIONAL: Only if client is corrupt
工具使用
MCP 工具参考
| 工具 | 使用时机 |
|---|---|
SN-Query-Table | 查询事件、文章和使用数据等结构化信息 |
SN-Natural-Language-Search | 通过自然语言搜索发现特定主题的文章 |
SN-Update-Record | 将推荐文章关联到事件/案例 |
SN-Add-Work-Notes | 记录推荐理由 |
REST API 参考
| 端点 | 方法 | 用途 |
|---|---|---|
/api/now/table/incident | GET | 获取事件上下文 |
/api/now/table/kb_knowledge | GET | 搜索知识文章 |
/api/now/table/m2m_kb_task | GET | 查找与过往事件关联的文章 |
/api/now/table/kb_use | GET | 查看文章使用指标 |
/api/now/table/kb_feedback | GET | 查看文章反馈质量 |
/api/now/table/incident/{sys_id} | PATCH | 将文章关联到事件 |
最佳实践
- 提取多个关键词: 从事件描述中提取至少 3-5 个有意义的关键词;避免使用停用词和泛化词语
- 广泛搜索,再筛选: 先使用自然语言搜索以广泛覆盖,再根据类别和质量信号筛选
- 优先选择经过验证的文章: 与以往已解决事件关联的文章,比未经验证的文章更值得优先考虑
- 检查时效性: 降低超过 12 个月未更新文章的优先级,因为操作流程可能已发生变化
- 标记质量问题: 如果最匹配的文章收到负面反馈,请注明这一点,并考虑附带说明后再推荐
- 考虑受众: 根据上下文匹配文章受众(IT 人员或最终用户);自助服务请求需要面向用户的文章
- 跟踪推荐结果: 后续确认推荐文章是否帮助解决问题;这些反馈有助于改进今后的推荐
故障排除
“未找到适用于该事件类别的文章”
原因: 知识库中没有该主题的文章,或事件与 KB 的类别标签不一致
解决方案: 使用关键词匹配扩大搜索范围,而不是严格按类别筛选。这也可能意味着存在知识缺口——请参阅 gap-analysis 技能
“返回了太多候选文章”
原因: 泛化关键词匹配到大量文章
解决方案: 添加更具体的关键词,按知识库筛选,或按 CI/服务缩小范围。将类别筛选和关键词筛选结合使用,并采用 AND 逻辑
“历史解决数据较少”
原因: Agent 在解决事件时没有关联 KB 文章
解决方案: 改为侧重关键词和类别匹配。可考虑推广 KCS 实践,以改善未来的数据
“文章评分均为零”
原因: 未启用反馈收集,或用户没有为文章评分
解决方案: 检查 glide.knowman.show_feedback 属性。可使用浏览量作为替代质量信号
示例
示例 1:VPN 连接事件
事件: INC0012345 - “无法连接到 VPN - 30 秒后出现超时错误”
提取的上下文:
- 类别:Network,子类别:VPN
- 关键词:VPN、连接、超时、错误
- CI:Cisco AnyConnect VPN
搜索结果:
- KB0010100 - “VPN 连接超时故障排除”(类别匹配 + 关键词匹配 + 12 次历史解决记录)
- KB0010200 - “Cisco AnyConnect 配置指南”(CI 匹配 + 关键词匹配)
- KB0010450 - “远程访问常见问题”(部分关键词匹配)
推荐: 首选 KB0010100,补充推荐 KB0010200
示例 2:客户服务案例
案例: CS0045678 - “购买后产品许可证密钥无法激活”
提取的上下文:
- 产品:Enterprise Suite
- 类别:许可
- 关键词:许可证、密钥、激活、购买
搜索结果:
- KB0030100 - “许可证激活故障排除”(类别 + 关键词 + 8 个案例解决方案)
- KB0030150 - “Enterprise Suite 许可证类型”(产品 + 关键词)
- KB0030200 - “如何申请更换许可证密钥”(关键词匹配)
建议: 将 KB0030100 作为主要推荐。如果密钥无效而非无法激活,也建议使用 KB0030200。
相关技能
knowledge/gap-analysis- 识别没有匹配文章的主题knowledge/duplicate-detection- 清理会导致推荐混乱的重复文章knowledge/article-generation- 没有相关内容时生成新文章knowledge/gap-grouping- 对缺失的内容领域进行分组,以便批量创建文章