mcpField
D
duplicate-detection

duplicate-detection

github.com/happy-technologies-llc生产力4141 次安装2 天前更新
代码仓库

关于 duplicate-detection

面向 ServiceNow 知识管理人员的技能,用于发现重复知识文章并评估应保留的权威版本。它结合标题和内容相似度、使用数据、反馈及关联记录,辅助选择合并、退役或归档方案。

主要功能

  1. 01按标题和关键词查找候选重复文章
  2. 02比较文章内容与分类
  3. 03分析浏览量和用户反馈
  4. 04检查关联事件与案例
  5. 05规划合并或退役操作
  6. 06记录去重决定及理由

适用场景

  1. 01定期清理知识库冗余内容
  2. 02批量导入后排查重复文章
  3. 03处理用户报告的内容冲突
  4. 04合并相似文章并保留替代指引

MCP 相关

该技能使用 ServiceNow MCP 工具查询文章、使用数据和反馈,并更新文章状态或添加工作备注,以执行和记录去重决策。

安装

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill duplicate-detection

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

详细介绍

知识文章重复检测

概述

此技能提供了一套结构化方法,用于识别并处理 ServiceNow 中重复的知识文章。随着时间推移,知识库会不断积累冗余内容,这些内容可能由不同作者创建、从多个来源导入,或为类似问题独立撰写。重复内容会降低搜索质量、令用户困惑,并增加维护负担。

此技能可帮助你:

  • 根据标题相似度、类别和关键词重合度查询并比较知识文章
  • 识别涵盖相同主题或解决方案的文章群组
  • 根据使用指标和新近程度评估哪篇文章是权威版本
  • 建议合并策略:退役、重定向、整合或归档
  • 使用可供审计的工作备注记录去重决策

适用场景: 定期开展知识库清理审查、批量导入后,或用户报告同一问题存在相互矛盾的文章时。

前提条件

  • 角色: knowledge_manager 或 knowledge_admin
  • 访问权限: 对 kb_knowledge、kb_knowledge_base、kb_category 和 kb_use 表具有读写权限
  • 插件: 已激活 com.glideapp.knowledge(知识管理)
  • 知识: 熟悉组织的知识库结构和文章生命周期

流程

步骤 1:根据标题相似度识别候选重复文章

在所有已发布的知识库中搜索简短描述相似或相同的文章。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: workflow_state=published^short_descriptionLIKEpassword reset
  fields: sys_id,number,short_description,kb_knowledge_base,kb_category,author,sys_updated_on,rating,sys_view_count
  limit: 25

使用 REST API:

GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKEpassword reset&sysparm_fields=sys_id,number,short_description,kb_knowledge_base,kb_category,author,sys_updated_on,rating,sys_view_count&sysparm_limit=25
步骤 2:使用关键词变体扩大搜索范围

重复文章经常使用不同的措辞。请搜索常见同义词和替代术语。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: workflow_state=published^short_descriptionLIKEpassword^ORshort_descriptionLIKEcredential^ORshort_descriptionLIKElockout
  fields: sys_id,number,short_description,text,kb_knowledge_base,author
  limit: 30

使用 REST API:

GET /api/now/table/kb_knowledge?sysparm_query=workflow_state=published^short_descriptionLIKEpassword^ORshort_descriptionLIKEcredential^ORshort_descriptionLIKElockout&sysparm_fields=sys_id,number,short_description,text,kb_knowledge_base,author&sysparm_limit=30
步骤 3:比较文章内容以检查重合部分

获取候选重复文章的全文,并比较其内容结构。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: kb_knowledge
  query: numberIN KB0010234,KB0010567,KB0010890
  fields: sys_id,number,short_description,text,wiki,kb_knowledge_base,kb_category,author,published,sys_updated_on
  limit: 10

使用 REST API:

GET /api/now/table/kb_knowledge?sysparm_query=numberINKB0010234,KB0010567,KB0010890&sysparm_fields=sys_id,number,short_description,text,wiki,kb_knowledge_base,kb_category,author,published,sys_updated_on
步骤 4:分析使用指标以确定权威文章

查看浏览量、反馈评分和附件数量,以确定使用最广泛的版本。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: kb_use
  query: article.numberINKB0010234,KB0010567,KB0010890
  fields: article,article.number,viewed,useful,not_useful
  limit: 20

使用 REST API:

GET /api/now/table/kb_use?sysparm_query=article.numberINKB0010234,KB0010567,KB0010890&sysparm_fields=article,article.number,viewed,useful,not_useful&sysparm_limit=20

检查反馈记录:

Tool: SN-Query-Table
Parameters:
  table_name: kb_feedback
  query: article.numberINKB0010234,KB0010567,KB0010890
  fields: article,article.number,rating,comments,sys_created_on
  limit: 50
步骤 5:检查交叉引用和关联事件

确定哪些文章正与事件或案例关联使用。

使用 MCP:

Tool: SN-Query-Table
Parameters:
  table_name: m2m_kb_task
  query: kb_knowledge.numberINKB0010234,KB0010567,KB0010890
  fields: kb_knowledge,kb_knowledge.number,task,task.number
  limit: 50

使用 REST API:

GET /api/now/table/m2m_kb_task?sysparm_query=kb_knowledge.numberINKB0010234,KB0010567,KB0010890&sysparm_fields=kb_knowledge,kb_knowledge.number,task,task.number&sysparm_limit=50
步骤 6:执行去重操作

根据分析结果选择合并策略并执行。

策略 A:退役重复文章

将较差的文章设为“已退役”,并添加重定向说明:

Tool: SN-Update-Record
Parameters:
  table_name: kb_knowledge
  sys_id: [duplicate_article_sys_id]
  data:
    workflow_state: retired
    retirement_date: 2026-03-19
    work_notes: "Retired as duplicate of KB0010234. Content merged into authoritative article."

策略 B:整合内容

将所有重复文章中的优质内容更新到权威文章中:

Tool: SN-Update-Record
Parameters:
  table_name: kb_knowledge
  sys_id: [authoritative_article_sys_id]
  data:
    text: "[Merged content from KB0010234, KB0010567]"
    work_notes: "Consolidated content from duplicate articles KB0010567 and KB0010890. Retired duplicates."
步骤 7:记录去重决策

使用 MCP:

Tool: SN-Add-Work-Notes
Parameters:
  sys_id: [authoritative_article_sys_id]
  work_notes: |
    === DEDUPLICATION ANALYSIS ===
    Date: 2026-03-19
    Analyst: Knowledge Manager

    Duplicate Cluster Identified:
    - KB0010234 (Authoritative) - 1,245 views, 4.5 rating, last updated 2026-02-15
    - KB0010567 (Retired) - 312 views, 3.8 rating, last updated 2025-08-20
    - KB0010890 (Retired) - 89 views, no rating, last updated 2025-03-10

    Decision: Retained KB0010234 as primary. Merged unique resolution steps from KB0010567.
    Retired KB0010567 and KB0010890.

    Impact: Reduced duplicate search results for "password reset" queries.

工具使用

MCP 工具参考
工具使用场景
SN-Query-Table对文章、使用数据和反馈执行结构化查询
SN-Natural-Language-Search使用自然语言搜索,按主题发现重复文章
SN-Update-Record退役重复文章,更新权威文章
SN-Add-Work-Notes记录去重决策及理由
REST API 参考
端点方法用途
/api/now/table/kb_knowledgeGET查询知识文章
/api/now/table/kb_knowledge/{sys_id}PATCH更新或退役文章
/api/now/table/kb_useGET获取使用量/浏览量指标
/api/now/table/kb_feedbackGET获取用户反馈和评分
/api/now/table/m2m_kb_taskGET查找与事件关联的文章

最佳实践

  • 从高流量主题入手: 优先对搜索量最大的主题进行去重,以最大限度提升用户体验
  • 保留最佳内容: 淘汰重复文章前,务必先将独特且有价值的内容合并到权威文章中
  • 维护重定向: 淘汰文章时,添加指向替代文章的说明,方便通过旧链接访问的用户找到正确内容
  • 按类别分批处理: 每次处理一个知识类别中的重复内容,以保持一致性
  • 淘汰前先验证: 确认没有正在处理的事件引用该文章,也没有书签指向该文章
  • 跟踪指标: 记录去重前后的搜索结果质量,以展示去重的价值

故障排除

“标题搜索返回的结果过多”

原因: 通用关键词匹配了无关文章
解决方案: 添加类别或知识库筛选条件:kb_knowledge_base=<sys_id>^short_descriptionLIKEpassword

“无法淘汰文章——工作流状态转换被阻止”

原因: 文章生命周期要求遵循特定的状态转换(例如,从已发布到审核,再到已淘汰)
解决方案: 检查知识工作流配置;可能需要经过中间状态

“所有文章的使用指标均为零”

原因: 可能未启用 kb_use 跟踪,或者通过直接 URL 访问的文章绕过了跟踪
解决方案: 确认 glide.knowman.track_article_usage 属性已设置为 true

“文章分布在多个知识库中”

原因: 不同团队在各自的知识库中创建了相似文章
解决方案: 与知识库所有者协调;跨知识库去重可能需要治理审批

示例

示例 1:密码重置重复文章集群

搜索: 有关密码重置流程的文章

调查结果:

  • KB0010234:“如何重置密码”——1,245 次浏览,IT 知识库
  • KB0010567:“密码重置说明”——312 次浏览,HR 知识库
  • KB0010890:“重置密码步骤”——89 次浏览,IT 知识库

操作: 将最佳内容合并到 KB0010234 中,淘汰 KB0010567 和 KB0010890。通知 HR 知识库所有者已有合并后的文章。

示例 2:VPN 配置重复文章

搜索: 有关 VPN 设置和故障排除的文章

调查结果:

  • KB0020100:“Windows VPN 设置指南”——890 次浏览,内容全面
  • KB0020145:“如何配置 VPN”——456 次浏览,客户端版本已过时
  • KB0020200:“VPN 故障排除”——1,100 次浏览,主题不同(保留)

操作: 将 KB0020145 的内容合并到 KB0020100 中,并淘汰 KB0020145。保留 KB0020200,因为它介绍的是故障排除,而非设置。

相关技能

  • knowledge/gap-analysis - 查找缺少文章的主题
  • knowledge/content-recommendation - 为事件推荐相关文章
  • knowledge/article-generation - 根据已解决的事件创建新文章
  • knowledge/gap-grouping - 对知识缺口进行聚类,以便制定行动计划

评论

支持 Markdown