关于 article-generation
用于从已解决的 ServiceNow 事件、问题和变更记录生成知识文章的技能,面向知识管理与 IT 服务团队。它将来源内容整理为标准章节,检查重复文章,并创建待审核草稿及记录关联。
主要功能
- 01提取事件、问题和变更信息
- 02按症状、原因和解决方案组织内容
- 03检查知识库文章是否重复
- 04选择知识库及分类
- 05创建草稿并关联来源记录
适用场景
- 01将重复事件的处理过程整理成文章
- 02把问题根因和修复步骤转为知识内容
- 03记录变更实施后供用户参考的流程
MCP 相关
示例工作流使用 ServiceNow MCP 工具查询记录、创建和更新文章、关联来源记录并添加工作备注。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill article-generation安装后在 Claude Code 中输入/article-generation确认已加载。
详细介绍
知识文章生成
概述
此技能提供了一套结构化工作流,用于根据已解决的 ServiceNow 记录(包括事件、问题记录和变更请求)生成知识文章。记录完善的解决方案可以转化为可复用的知识,缩短今后的解决时间,并支持自助服务。
此技能可帮助你:
- 从已关闭的事件、问题和变更中提取解决方案详情
- 将内容整理为标准知识库文章格式(症状、原因、解决方案、临时解决方法)
- 将文章分配到正确的知识库和类别
- 检查是否已有文章,避免重复创建
- 创建待知识经理审核的草稿文章
- 将源记录关联到新文章,以便追溯
适用场景: 解决重复发生的事件后、完成包含根本原因的问题调查后、完成影响用户工作流的变更实施后,或定期开展知识收集时。
前提条件
- 角色: 创建文章需要
knowledge或knowledge_manager;读取源记录需要itil - 访问权限: 对
incident、problem、change_request表具有读取权限;对kb_knowledge具有写入权限 - 插件: 已激活
com.glideapp.knowledge(Knowledge Management) - 知识: 了解组织的 KB 文章模板、知识库和审批工作流
操作步骤
第 1 步:确定用于生成文章的源记录
查找适合用于生成知识文章的已解决事件、问题或变更。
优质候选记录的标准:
- 结案备注详细的已解决事件
- 同一主题重复发生 3 次或以上的事件
- 已确认根本原因的问题记录
- 包含实施后操作流程的变更请求
使用 MCP(重复发生的事件):
Tool: SN-Query-Table
Parameters:
table_name: incident
query: state=6^opened_at>=javascript:gs.daysAgoStart(30)^close_notesISNOTEMPTY^kb_knowledgeISEMPTY
fields: sys_id,number,short_description,description,close_notes,category,subcategory,cmdb_ci,assignment_group,resolution_code,resolved_by
limit: 30
使用 REST API:
GET /api/now/table/incident?sysparm_query=state=6^opened_at>=javascript:gs.daysAgoStart(30)^close_notesISNOTEMPTY^kb_knowledgeISEMPTY&sysparm_fields=sys_id,number,short_description,description,close_notes,category,subcategory,cmdb_ci,assignment_group,resolution_code,resolved_by&sysparm_limit=30
使用 MCP(包含根本原因的问题记录):
Tool: SN-Query-Table
Parameters:
table_name: problem
query: state=4^cause_notesISNOTEMPTY^opened_at>=javascript:gs.daysAgoStart(90)
fields: sys_id,number,short_description,description,cause_notes,fix_notes,category,subcategory,cmdb_ci,known_error,workaround
limit: 20
使用 REST API:
GET /api/now/table/problem?sysparm_query=state=4^cause_notesISNOTEMPTY^opened_at>=javascript:gs.daysAgoStart(90)&sysparm_fields=sys_id,number,short_description,description,cause_notes,fix_notes,category,subcategory,cmdb_ci,known_error,workaround&sysparm_limit=20
使用 MCP(包含实施备注的变更请求):
Tool: SN-Query-Table
Parameters:
table_name: change_request
query: state=3^close_notesISNOTEMPTY^type=normal^opened_at>=javascript:gs.daysAgoStart(90)
fields: sys_id,number,short_description,description,close_notes,implementation_plan,backout_plan,category,cmdb_ci
limit: 20
第 2 步:检查是否已有文章,避免重复
创建新文章前,请确认没有现有文章涵盖相同主题。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^short_descriptionLIKEoutlook^short_descriptionLIKEcalendar^ORshort_descriptionLIKEsync
fields: sys_id,number,short_description,kb_knowledge_base,kb_category,workflow_state,sys_updated_on
limit: 10
使用 REST API:
GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKEoutlook^short_descriptionLIKEcalendar^ORshort_descriptionLIKEsync&sysparm_fields=sys_id,number,short_description,kb_knowledge_base,kb_category,workflow_state,sys_updated_on&sysparm_limit=10
如果存在匹配的文章,请考虑更新该文章,而不是创建重复文章。
第 3 步:确定目标知识库和类别
为新文章查找合适的知识库和类别。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge_base
query: active=true
fields: sys_id,title,description,kb_version,owner,active
limit: 20
Tool: SN-Query-Table
Parameters:
table_name: kb_category
query: kb_knowledge_base=[target_kb_sys_id]^active=true
fields: sys_id,label,parent_id,full_category
limit: 30
使用 REST API:
GET /api/now/table/kb_knowledge_base?sysparm_query=active=true&sysparm_fields=sys_id,title,description,kb_version,owner,active&sysparm_limit=20
GET /api/now/table/kb_category?sysparm_query=kb_knowledge_base=[target_kb_sys_id]^active=true&sysparm_fields=sys_id,label,parent_id,full_category&sysparm_limit=30
第 4 步:整理文章内容
将提取的信息整理为标准知识文章格式。文章正文应遵循以下模板:
文章结构模板:
<h2>Symptoms</h2>
<p>[Describe what the user experiences - error messages, unexpected behavior, inability to perform a task]</p>
<h2>Cause</h2>
<p>[Explain the root cause or contributing factors]</p>
<h2>Resolution</h2>
<ol>
<li>[Step-by-step resolution instructions]</li>
<li>[Include screenshots or commands where applicable]</li>
<li>[Specify expected outcome after each step]</li>
</ol>
<h2>Workaround</h2>
<p>[If a permanent fix is not available, describe temporary workaround]</p>
<h2>Additional Information</h2>
<ul>
<li>Affected Systems: [CI or service name]</li>
<li>Source: [INC/PRB/CHG number]</li>
<li>Related Articles: [KB numbers]</li>
</ul>
第 5 步:创建知识文章草稿
使用 MCP:
Tool: SN-Create-Record
Parameters:
table_name: kb_knowledge
data:
short_description: "How to Resolve Outlook Calendar Sync Errors on Mobile Devices"
text: "<h2>Symptoms</h2><p>Users report that Outlook calendar events are not syncing to their mobile devices (iOS or Android). Events created on the desktop client do not appear on the mobile app, or events appear with incorrect times.</p><h2>Cause</h2><p>The ActiveSync profile on the mobile device has a stale authentication token, often triggered by a recent password change or multi-factor authentication policy update.</p><h2>Resolution</h2><ol><li>On the mobile device, navigate to Settings > Accounts > Exchange/Outlook</li><li>Remove the existing Exchange account</li><li>Restart the device</li><li>Re-add the Exchange account using current credentials</li><li>Wait 5 minutes for initial sync to complete</li><li>Verify calendar events appear correctly</li></ol><h2>Workaround</h2><p>If re-adding the account does not resolve the issue, use Outlook Web Access (OWA) on the mobile browser as a temporary alternative.</p><h2>Additional Information</h2><ul><li>Affected Systems: Microsoft Exchange, Outlook Mobile</li><li>Source: INC0012345, INC0012678, INC0013001</li><li>Related Articles: KB0010100 - Outlook Desktop Sync Issues</li></ul>"
kb_knowledge_base: [target_kb_sys_id]
kb_category: [target_category_sys_id]
workflow_state: draft
article_type: text
valid_to: 2027-03-19
meta_description: "Resolve Outlook calendar sync errors on iOS and Android mobile devices caused by stale authentication tokens"
使用 REST API:
POST /api/now/table/kb_knowledge
Content-Type: application/json
{
"short_description": "How to Resolve Outlook Calendar Sync Errors on Mobile Devices",
"text": "<h2>Symptoms</h2><p>Users report that Outlook calendar events are not syncing...</p>...",
"kb_knowledge_base": "[target_kb_sys_id]",
"kb_category": "[target_category_sys_id]",
"workflow_state": "draft",
"article_type": "text",
"valid_to": "2027-03-19",
"meta_description": "Resolve Outlook calendar sync errors on mobile devices"
}
第 6 步:将源记录关联到新文章
在源事件/问题与新 KB 文章之间建立关联。
使用 MCP:
Tool: SN-Create-Record
Parameters:
table_name: m2m_kb_task
data:
kb_knowledge: [new_article_sys_id]
task: [source_incident_sys_id]
使用 REST API:
POST /api/now/table/m2m_kb_task
Content-Type: application/json
{
"kb_knowledge": "[new_article_sys_id]",
"task": "[source_incident_sys_id]"
}
第 7 步:根据问题记录生成文章
问题记录包含更丰富的根本原因数据。提取原因备注、修复备注和临时解决方法。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: problem
query: number=PRB0005678
fields: sys_id,number,short_description,description,cause_notes,fix_notes,workaround,category,subcategory,cmdb_ci,related_incidents
limit: 1
将问题记录字段映射到文章各部分:
description-> 症状cause_notes-> 原因fix_notes-> 解决方案workaround-> 临时解决方法related_incidents-> 其他信息引用
第 8 步:根据变更请求生成文章
变更实施通常会引入用户需要了解的新操作流程。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: change_request
query: number=CHG0009876
fields: sys_id,number,short_description,description,close_notes,implementation_plan,backout_plan,test_plan,category,cmdb_ci
limit: 1
将变更字段映射到文章各部分:
description-> 变更概述implementation_plan-> 新操作步骤backout_plan-> 临时解决方法/回滚说明test_plan-> 验证步骤
第 9 步:向源记录添加工作备注
记录已根据源记录生成知识文章。
使用 MCP:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [source_record_sys_id]
work_notes: |
=== KNOWLEDGE ARTICLE GENERATED ===
Article: KB0015678 - "How to Resolve Outlook Calendar Sync Errors on Mobile Devices"
Status: Draft (pending review)
Knowledge Base: IT Support
Category: Email / Mobile
Generated from resolution data in this incident.
Article includes symptoms, root cause, step-by-step resolution, and workaround.
Linked to 3 related incidents: INC0012345, INC0012678, INC0013001.
工具使用
MCP 工具参考
| 工具 | 适用场景 |
|---|---|
SN-Query-Table | 检索源记录、知识库和类别 |
SN-Natural-Language-Search | 检查是否已有相关主题的文章 |
SN-Create-Record | 创建新的知识库文章并关联记录 |
SN-Update-Record | 使用新内容更新现有文章 |
SN-Add-Work-Notes | 在源记录中记录文章创建情况 |
REST API 参考
| 端点 | 方法 | 用途 |
|---|---|---|
/api/now/table/incident | GET | 检索已解决的事件 |
/api/now/table/problem | GET | 检索问题根本原因数据 |
/api/now/table/change_request | GET | 检索变更实施详情 |
/api/now/table/kb_knowledge | GET/POST | 搜索并创建文章 |
/api/now/table/kb_knowledge_base | GET | 查找目标知识库 |
/api/now/table/kb_category | GET | 查找目标类别 |
/api/now/table/m2m_kb_task | POST | 将文章关联到源记录 |
最佳实践
- 使用详细的结案备注: 根据包含详尽结案备注的事件生成的文章效果最佳;鼓励 Agent 编写详细的解决方案
- 遵循一致的模板: 故障排查文章始终采用症状/原因/解决方案/临时解决方法的结构
- 创建为草稿: 切勿直接发布;始终以
draft状态创建,供知识经理审核和批准 - 设置有效期: 设置到期日期(通常为 12-18 个月),以触发定期审核和更新
- 包含源记录引用: 始终在文章中注明来源事件、问题或变更编号,以便审计追踪
- 添加元描述: 添加简洁的元描述,以提高搜索可见度
- 合并多个来源: 如果多个事件描述了同一问题,请综合其中最佳的解决步骤
- 避免直接复制工作备注: 将技术性工作备注改写为适合目标受众的通俗语言
故障排查
“创建的文章正文为空”
原因: 正文字段要求使用 HTML 格式的内容;纯文本可能无法正确呈现
解决方案: 按照模板所示,将内容包裹在 HTML 标签(<p>、<ol>、<h2>)中
“无法创建文章——缺少必填字段”
原因: 知识库工作流要求填写 kb_knowledge_base、short_description 和 workflow_state 等字段
解决方案: 确保所有必填字段均已填写。查询 sys_dictionary 表以查找必填字段:name=kb_knowledge^mandatory=true
“文章已创建,但在知识门户中不可见”
原因: 文章处于 draft 状态,尚未通过审批工作流发布
解决方案: 这是预期行为。知识经理必须审核并发布文章。请检查 workflow_state 字段
“无法将文章关联到事件——创建 m2m_kb_task 失败”
原因: 多对多表要求文章和任务都具有有效的 sys_id
解决方案: 确认两个 sys_id 均存在。task 字段必须引用扩展 task 表的记录(incident、problem、change_request)
“知识工作流发出文章重复警告”
原因: 已存在类似文章,工作流检测到可能的重复内容
解决方案: 检查现有文章。如果内容涉及相同主题,请更新现有文章,而不是创建新文章
示例
示例 1:根据反复发生的事件生成文章
来源: 5 起关于“打印后台处理程序服务已停止”的事件(INC0015001-INC0015005)
生成的文章:
- 标题:“打印后台处理程序服务意外停止 — 重启流程”
- **症状:**打印作业失败,并显示“打印后台处理程序子系统应用程序已停止工作”错误
- **原因:**第三方打印驱动程序冲突导致打印量较大时后台处理程序崩溃
- 解决方法:(1) 打开“服务”控制台,(2) 找到 Print Spooler,(3) 点击“重启”,(4) 如果重启失败,清空 C:\Windows\System32\spool\PRINTERS 文件夹,(5) 验证打印功能
- **变通方法:**应用驱动程序更新之前,使用其他打印机
- **类别:**硬件 / 打印
示例 2:根据问题记录生成文章
来源: PRB0005678 —“CRM 应用程序中的数据库连接间歇性超时”
生成的文章:
- 标题:“解决 CRM 应用程序数据库连接超时问题”
- **症状:**用户在高峰时段间歇性收到“连接超时”错误
- **原因:**CRM 应用程序 v3.2.1 中未关闭的数据库连接导致连接池耗尽
- 解决方法:(1) 应用 CRM 热修复程序 v3.2.1a,(2) 将连接池最大连接数从 50 增加到 100,(3) 启用连接池监控
- **变通方法:**重启 CRM 应用程序服务以重置连接池
- **类别:**软件 / CRM
示例 3:根据变更请求生成文章
来源: CHG0009876 —“将电子邮件从本地 Exchange 迁移到 Office 365”
生成的文章:
- 标题:“Office 365 迁移后访问电子邮件”
- **症状:**迁移后,用户需要重新配置电子邮件客户端并更新移动设备设置
- **原因:**迁移到基于云的电子邮件服务需要更新服务器设置
- 解决方法:(1) 打开 Outlook,(2) 删除旧的 Exchange 帐户,(3) 使用电子邮件地址添加新帐户,(4) 选择 Office 365 选项,(5) 使用 MFA 完成身份验证
- **其他信息:**移动设备设置指南、Outlook Web Access URL 和常见问题解答的链接
- **类别:**电子邮件 / 配置
相关技能
knowledge/duplicate-detection- 生成新文章前,检查是否已有相关文章knowledge/gap-analysis- 确定哪些主题需要文章,以便安排生成优先级knowledge/content-recommendation- 为未来的事件推荐生成的文章knowledge/gap-grouping- 对相关知识缺口进行分组,以便批量生成文章