knowledge-graph について
ServiceNow Knowledge Management の記事関係グラフを構築・分析するスキルです。カテゴリ階層、登録済みリンク、本文から推定したつながりを扱い、ナレッジ管理者が孤立記事やトピックの網羅状況を確認し、学習パスを作成できます。
主な機能
- 01カテゴリ階層の構築
- 02記事間の関係のマッピング
- 03本文やラベルから関連を発見
- 04孤立記事とトピックの不足を特定
- 05学習パスと可視化データの作成
活用シーン
- 01孤立記事やトピック群の確認
- 02新入社員向けの段階的な学習パス作成
- 03関連する記事への相互参照の追加
MCP 対応
ServiceNow MCP ツールで記事、カテゴリ、ラベル、関係レコードを検索できます。記事間のリンク作成や、可視化用グラフデータの取得にも対応します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill knowledge-graphインストール後、Claude Code で/knowledge-graphを入力して読み込まれたか確認します。
詳細
ナレッジグラフの構築とナビゲーション
概要
このスキルでは、ServiceNow Knowledge Management 内でのナレッジグラフの構築とナビゲーションについて説明します。
- 記事間の関係(前提条件、関連、置き換え、依存)をマッピングする
- カテゴリー構造とコンテンツ分析からトピック階層を構築する
- 記事間の隠れたつながりを表面化する相互参照マップを作成する
- コンテンツの依存関係を分析して、ナレッジの流れと不足を把握する
- 入力・出力のつながりがない孤立した記事を特定する
- ナレッジ領域の網羅性と密度を可視化する
- グラフ探索を使用して、関連コンテンツや学習パスを推奨する
使用する場面: ナレッジマネージャーがナレッジベースの構造と相互関係を把握する必要がある場合、ガイド付き学習パスを構築する場合、ナレッジサイロを特定する場合、または関係性を充実させて記事の見つけやすさを改善する場合に使用します。
前提条件
- ロール:
knowledge_manager、knowledge_admin、またはadmin - プラグイン:
com.glideapp.knowledge(Knowledge Management) - アクセス権:
kb_knowledge、kb_category、m2m_kb_to_kb、label_entryへの読み取り/書き込みアクセス - 知識: グラフの概念(ノード、エッジ、探索)、ナレッジマネジメントの分類原則
- 関連スキル: 網羅性の評価には
knowledge/gap-analysis、グラフベースの推奨にはknowledge/content-recommendation
手順
ステップ 1:カテゴリー階層をマッピングする(トピックツリー)
トピック階層の基盤を確立するために、カテゴリー構造全体を取得します。
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: kb_category
query: active=true^ORDERBYparent,order
fields: sys_id,label,parent_id,parent_table,full_category,active,kb_knowledge_base
limit: 500
REST アプローチ:
GET /api/now/table/kb_category
?sysparm_query=active=true^ORDERBYparent_id,order
&sysparm_fields=sys_id,label,parent_id,full_category,active,kb_knowledge_base
&sysparm_display_value=true
&sysparm_limit=500
階層ツリーを構築します。
Knowledge Base: IT Support
+-- Hardware
| +-- Laptops
| | +-- Setup & Configuration
| | +-- Troubleshooting
| +-- Printers
| +-- Mobile Devices
+-- Software
| +-- Operating Systems
| +-- Business Applications
| +-- Development Tools
+-- Network
+-- VPN & Remote Access
+-- WiFi
+-- Email & Calendar
ステップ 2:既存の記事間の関係を取得する
記事間の多対多関係レコードを取得します。
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: m2m_kb_to_kb
query: from_kb.workflow_state=published
fields: sys_id,from_kb,to_kb,relationship_type
limit: 1000
REST アプローチ:
GET /api/now/table/m2m_kb_to_kb
?sysparm_query=from_kb.workflow_state=published
&sysparm_fields=sys_id,from_kb,to_kb,relationship_type
&sysparm_display_value=true
&sysparm_limit=1000
ステップ 3:コンテンツから暗黙的な関係を見つける
記事のコンテンツを分析して相互参照を探し、隠れたつながりを見つけます。
アプローチ 1 -- インラインリンク:
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^textLIKEKB00
fields: sys_id,number,short_description,text
limit: 200
text フィールドから KB001XXXX のようなパターンを解析し、参照されている記事番号を抽出します。
アプローチ 2 -- 共通のタグとラベル:
Tool: SN-Query-Table
Parameters:
table_name: label_entry
query: table=kb_knowledge
fields: sys_id,id_display,label,table,id
limit: 500
共通のラベルで記事をグループ化し、トピックのクラスターを特定します。
Label: "vpn" -> KB0012001, KB0012345, KB0012290, KB0012310
Label: "remote-access" -> KB0012001, KB0012189, KB0012290, KB0012310
Label: "security" -> KB0012310, KB0013001, KB0013045
アプローチ 3 -- インシデント解決時の共起:
Tool: SN-Query-Table
Parameters:
table_name: incident
query: u_knowledge_articleISNOTEMPTY^resolved_at>javascript:gs.daysAgo(90)
fields: u_knowledge_article,category,subcategory
limit: 500
同じインシデントカテゴリーの解決によく使用される記事には、暗黙的な関連があります。
ステップ 4:ナレッジグラフのデータ構造を構築する
グラフをノード(記事)とエッジ(関係)として表現します。
=== KNOWLEDGE GRAPH STRUCTURE ===
Nodes (Articles): 342 published articles
Edges (Relationships): 567 connections
Node Properties:
- sys_id, number, title, category, knowledge_base
- view_count, rating, age_days, word_count
- in_degree (articles pointing to this), out_degree (articles this points to)
Edge Types:
- RELATED_TO: General topical relationship (312 edges)
- PREREQUISITE: Must read A before B (45 edges)
- SUPERSEDES: Article A replaces article B (28 edges)
- DEPENDS_ON: Article A references procedures in B (89 edges)
- SAME_TOPIC: Articles in the same category (93 edges)
Graph Metrics:
- Average degree: 3.3 connections per article
- Density: 0.0097 (sparse - room for enrichment)
- Connected components: 23 (ideally should be 1-3)
- Orphaned articles: 47 (no connections at all)
ステップ 5:孤立した記事やつながりの弱い記事を特定する
つながりがない、または最小限のつながりしかない記事を見つけます。
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^sys_idNOT IN<list_of_connected_article_ids>
fields: sys_id,number,short_description,kb_category,sys_view_count,rating,sys_created_on
limit: 100
=== ORPHANED ARTICLES ===
Articles with zero connections: 47
High-Impact Orphans (>100 views, still unlinked):
| Article | Title | Views | Category |
|------------|---------------------------------|-------|-----------------|
| KB0014523 | Outlook Calendar Sync Issues | 890 | Email |
| KB0014601 | Docker Container Best Practices | 456 | Dev Tools |
| KB0014789 | Expense Report Submission Guide | 1,234 | Finance |
Recommended Actions:
1. KB0014523 -> Link to KB0012290 (shares email/remote topic)
2. KB0014601 -> Link to KB0013201 (development environment setup)
3. KB0014789 -> Create new "Finance" topic cluster
ステップ 6:不足している関係を作成する
見つかった関係をナレッジグラフに追加します。
MCP アプローチ:
Tool: SN-Create-Record
Parameters:
table_name: m2m_kb_to_kb
data:
from_kb: "<article_a_sys_id>"
to_kb: "<article_b_sys_id>"
relationship_type: "related"
REST アプローチ:
POST /api/now/table/m2m_kb_to_kb
Body: {
"from_kb": "<article_a_sys_id>",
"to_kb": "<article_b_sys_id>",
"relationship_type": "related"
}
ステップ 7:トピックの密度と網羅性を分析する
さまざまなトピックがどの程度網羅されているかを評価します。
=== TOPIC COVERAGE ANALYSIS ===
| Topic Area | Articles | Avg Rating | Avg Views | Gaps Identified |
|---------------------|----------|------------|-----------|-----------------|
| VPN & Remote Access | 12 | 4.1 | 1,450 | Mobile VPN setup |
| Email & Calendar | 8 | 3.8 | 980 | Shared mailbox config |
| Laptop Setup | 15 | 4.3 | 2,100 | Linux support |
| Printer Setup | 6 | 3.2 | 560 | Wireless printing |
| Software Install | 22 | 3.9 | 1,800 | License requests |
| Security Policies | 5 | 4.0 | 780 | BYOD policies |
Under-served Topics (high incident volume, low article count):
1. Password Reset - 450 incidents/month, only 2 articles
2. MFA Setup - 280 incidents/month, only 1 article
3. File Sharing - 190 incidents/month, only 3 articles
ステップ 8:グラフ探索から学習パスを構築する
前提条件の関係を使って、順序立てた読書シーケンスを作成します。
=== LEARNING PATH: VPN Administration ===
Level 1 - Foundations:
1. KB0012001 - VPN Client Installation (prerequisite for all)
2. KB0012310 - Remote Security Policy (prerequisite for all)
Level 2 - User Support:
3. KB0012345 - VPN Troubleshooting (depends on KB0012001)
4. KB0012290 - Network Drive Mapping (depends on KB0012001)
Level 3 - Advanced:
5. KB0012400 - VPN Split Tunnel Configuration (depends on KB0012345)
6. KB0012450 - VPN Server Administration (depends on KB0012001, KB0012310)
Estimated Total Reading Time: 45 minutes
Assessment Available: Yes (quiz after Level 2)
ステップ 9:グラフの可視化データを生成する
可視化ツールに適した形式でグラフデータをエクスポートします。
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published
fields: sys_id,number,short_description,kb_category,sys_view_count
limit: 500
可視化用にノードとエッジのリストとして出力します。
{
"nodes": [
{"id": "KB0012001", "label": "VPN Installation", "group": "Network", "size": 1890},
{"id": "KB0012345", "label": "VPN Troubleshooting", "group": "Network", "size": 2340}
],
"edges": [
{"from": "KB0012001", "to": "KB0012345", "type": "prerequisite"},
{"from": "KB0012345", "to": "KB0012400", "type": "related"}
]
}
ステップ 10:グラフを監視し、保守する
継続的なグラフ健全性の監視を設定します。
MCP アプローチ:
Tool: SN-Query-Table
Parameters:
table_name: kb_knowledge
query: workflow_state=published^sys_created_on>javascript:gs.daysAgo(30)
fields: sys_id,number,short_description,kb_category
limit: 50
新しい記事ごとに、グラフに接続されているか確認します。つながりのない新しい記事には、関係の割り当てが必要であることを示すフラグを付けます。
ツールの使用
| ツール | 目的 | 使用するタイミング |
|---|---|---|
| SN-Query-Table | 記事、カテゴリ、関連性、使用状況データを取得する | グラフ構築のための主要なデータ取得 |
| SN-Get-Record | コンテンツ分析のために単一の記事の詳細を取得する | 特定のノードを詳しく調査する |
| SN-Create-Record | 新しい関連レコードを作成する | グラフにエッジを追加する |
| SN-Update-Record | 記事のタグ、トピック、メタデータを更新する | ノードのプロパティを充実させる |
| SN-Natural-Language-Search | 意味的に関連する記事を検索する | 暗黙的な関連性を見つける |
ベストプラクティス
- カテゴリ階層から始める -- トピックツリーはナレッジグラフの中核です
- アクセス数の多い孤立記事を優先する -- 効果を最大化するため、人気記事から先に接続します
- 双方向の関連性を使用する -- AがBに関連するなら、BもAに関連するようにします
- 関連性の種類を明確に定義する -- 「関連」「前提条件」「置き換え」を区別します
- グラフの健全性を毎月確認する -- 関連付けのない新しい記事は、見つけやすさを損ないます
- 閲覧の共起データを使用する -- 同じセッションで閲覧された記事は、関連している可能性があります
- 関連性の深さを制限する -- 前提条件が3段階を超えると、使いにくくなります
- 一貫性のあるタグを付ける -- ナレッジベース全体でラベルの語彙を統一します
- 古くなったエッジを削除する -- 廃止済みまたは古い記事への関連性を削除します
- 学習パスを検証する -- 公開前に、実際のユーザーを使って前提条件の連鎖をテストします
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| m2mレコードが見つからない | このインスタンスでは関連性が使用されていない | m2m_kb_to_kb テーブルが存在するか確認します。カスタムの関連テーブルが必要な場合があります |
| カテゴリ階層がフラット | 親参照を使ってカテゴリが構成されていない | kb_category の parent_id フィールドを使って階層を構築します |
| 孤立記事が多すぎる | 関連性の管理が公開ワークフローに含まれていない | 記事のレビュープロセスに関連性の確認を追加します |
| グラフが密になりすぎている | すべての記事が他のすべての記事にリンクされている | 意味のある関連性に限定し、代わりにトピックのクラスタリングを使用します |
| 学習パスにループがある | 前提条件の連鎖が循環している | 前提条件について、グラフがDAG(有向非巡回グラフ)であることを検証します |
| 大規模なクエリでパフォーマンスの問題が発生する | 一度にクエリする記事が多すぎる | sysparm_offset を使ってクエリをページネーションし、バッチで処理します |
例
例1:ナレッジベースの健全性レポート
入力:「ITサポートのナレッジベースのグラフを分析し、接続されていないクラスターを特定してください」
**手順:**公開済みの記事と関連性をすべて取得し、隣接リストを作成して連結成分分析を実行し、孤立したクラスターを特定して、クラスターをつなぐための推奨事項を含むレポートを作成します。
例2:新入社員向け学習パスの構築
入力:「インシデント管理を扱う、新しいITサポートエージェント向けの学習パスを作成してください」
**手順:**インシデント管理カテゴリに含まれるすべての記事を特定し、前提条件の関連性を分析して依存関係の深さ順に並べ、推定読了時間を含む順序立てられた学習パスを作成します。
例3:相互参照の充実
入力:「VPN関連の記事をすべて調べ、不足している関連性を作成してください」
**手順:**タイトルまたは本文に「VPN」を含むすべての記事を検索し、本文中の参照と共通タグを分析して、互いを参照しているものの正式な関連付けがない記事を特定し、見つかった関連性に対する m2m_kb_to_kb レコードを作成します。
関連スキル
knowledge/gap-analysis- ナレッジの不足領域を特定しますknowledge/content-recommendation- グラフ上の近接性に基づいて記事を推奨しますknowledge/duplicate-detection- グラフ内の重複記事を見つけますknowledge/kb-summarization- グラフノードの説明用に記事を要約しますknowledge/article-generation- 特定されたグラフの不足を補う記事を作成しますknowledge/gap-grouping- ナレッジの不足をトピッククラスターごとにグループ化します