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(Knowledge Management)が有効化されていること
  • 知識: 組織のナレッジベース構造と記事のライフサイクルに精通していること

手順

ステップ 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:重複記事を廃止する

劣る記事を「retired」に設定し、リダイレクトの注記を追加します。

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インシデントにリンクされた記事を見つける

ベストプラクティス

  • 検索頻度の高いトピックから始める: ユーザーへの影響を最大化するため、まず検索頻度の高いトピックの重複排除に取り組みます
  • 最良のコンテンツを残す: 重複記事を廃止する前に、独自性のある価値あるコンテンツを必ず正規の記事に統合します
  • リダイレクトを維持する: 記事を廃止する際は、置き換え先の記事を示す注記を追加し、古いリンクをたどったユーザーが適切なコンテンツを見つけられるようにします
  • カテゴリごとにまとめて処理する: 一貫性を保つため、一度に1つのナレッジカテゴリの重複記事を処理します
  • 廃止前に確認する: 廃止対象の記事を参照する進行中のインシデントやブックマークがないことを確認します
  • 指標を記録する: 重複排除の効果を示せるよう、検索結果の品質を実施前後で記録します

トラブルシューティング

「タイトル検索で結果が多すぎます」

原因: 一般的なキーワードが無関係な記事にも一致しています
解決策: カテゴリまたはナレッジベースのフィルターを追加します: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 - 対応計画のためにナレッジのギャップをグループ化する

コメント