mcpField
H
hrsd-sentiment-analysis

hrsd-sentiment-analysis

github.com/happy-technologies-llcデータ・データベース4141 回インストール2 日前に更新
リポジトリ

hrsd-sentiment-analysis について

hrsd-sentiment-analysisは、ケース、アンケート、チャット、フィードバックから従業員の感情を評価するServiceNowのHR向けスキルです。傾向と従業員のライフサイクル情報を組み合わせ、離職リスクや対応が必要なケースを把握します。

主な機能

  1. 01HRコミュニケーションの感情分析
  2. 02アンケートと満足度の傾向集計
  3. 03離職リスクの兆候特定
  4. 04部門・組織の傾向追跡
  5. 05従業員のライフサイクル情報との関連付け
  6. 06ケースのアラートと作業メモ記録

活用シーン

  1. 01従業員の直近6か月の感情確認
  2. 02部門間の感情傾向の比較
  3. 03否定的な感情が強まるケースの優先対応
  4. 04離職リスクが考えられる従業員の特定

MCP 対応

ServiceNow MCPツールでHRケース、プロフィール、アンケート、インタラクション、ジャーナルを検索し、分析結果の記録やレコード更新を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill hrsd-sentiment-analysis

インストール後、Claude Code で/hrsd-sentiment-analysisを入力して読み込まれたか確認します。

詳細

従業員の感情分析

概要

このスキルは、ケース、アンケート、チャットでのやり取り、フィードバックなど、HR Service Delivery のさまざまな接点における従業員の感情を分析します。次のことに役立ちます。

  • HR ケースでのコミュニケーションから感情の極性(肯定的、中立、否定的)を評価する
  • アンケートの回答と満足度スコアを集計し、傾向を分析する
  • ケースの傾向と感情の低下に基づいて、離職リスクの兆候を特定する
  • 否定的な傾向が強まっているケースにフラグを付け、マネージャーからの先回りした働きかけを促す
  • 部門レベルおよび組織全体の感情の傾向を時系列で追跡する
  • 感情の兆候を従業員のライフサイクルイベント(勤続期間、役割変更、評価)と関連付ける

使用するタイミング: HR リーダーが従業員満足度の傾向を把握する必要がある場合、エージェントが否定的な感情を示すケースを優先する必要がある場合、または離職リスクのある従業員を特定する場合に使用します。

前提条件

  • ロール: sn_hr_core.manager、sn_hr_core.case_reader、または sn_hr_core.admin
  • プラグイン: com.sn_hr_service_delivery(HR Service Delivery)、com.glide.assessment(Assessment/Survey)
  • アクセス権: sn_hr_core_case、sn_hr_core_profile、sys_journal_field、interaction、asmt_assessment_instance、survey_response への読み取りアクセス
  • 知識: 組織のアンケート実施頻度、HR ケースの種類、離職の兆候についての理解

手順

ステップ 1:感情分析の対象となる HR ケースを取得する

対象範囲(個人、部門、または組織)の最近の HR ケースを取得します。

MCP を使用する場合(従業員個人):

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_case
  query: subject_person=[employee_sys_id]^ORDERBYDESCopened_at
  fields: sys_id,number,short_description,description,state,priority,hr_service,opened_at,closed_at,contact_type,resolution_code,satisfaction_rating,reopened,reopen_count
  limit: 20

MCP を使用する場合(部門全体):

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_case
  query: subject_person.department=[department_sys_id]^opened_at>=javascript:gs.beginningOfLast90Days()^ORDERBYDESCopened_at
  fields: sys_id,number,short_description,state,priority,hr_service,opened_at,subject_person,satisfaction_rating,contact_type
  limit: 100

REST API を使用する場合:

GET /api/now/table/sn_hr_core_case?sysparm_query=subject_person.department=[department_sys_id]^opened_at>=javascript:gs.beginningOfLast90Days()^ORDERBYDESCopened_at&sysparm_fields=sys_id,number,short_description,state,priority,hr_service,opened_at,subject_person,satisfaction_rating,contact_type&sysparm_display_value=true&sysparm_limit=100
ステップ 2:感情スコアリングのためにケースのコミュニケーションを抽出する

ケースの作業メモ、コメント、追加詳細を取得して、言葉遣いやトーンを分析します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: sys_journal_field
  query: element_id=[case_sys_id]^element=comments^ORelement=work_notes^ORDERBYsys_created_on
  fields: sys_id,element,value,sys_created_on,sys_created_by,element_id
  limit: 50

REST API を使用する場合:

GET /api/now/table/sys_journal_field?sysparm_query=element_id=[case_sys_id]^element=comments^ORelement=work_notes^ORDERBYsys_created_on&sysparm_fields=sys_id,element,value,sys_created_on,sys_created_by,element_id&sysparm_limit=50
ステップ 3:チャットとやり取りの履歴を取得する

やり取りの記録を取得して、リアルタイムの会話から感情を分析します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: interaction
  query: opened_for=[employee_sys_id]^ORDERBYDESCopened_at
  fields: sys_id,number,type,channel,state,opened_at,closed_at,short_description,wrap_up_comment,satisfaction,direction
  limit: 25

REST API を使用する場合:

GET /api/now/table/interaction?sysparm_query=opened_for=[employee_sys_id]^ORDERBYDESCopened_at&sysparm_fields=sys_id,number,type,channel,state,opened_at,closed_at,short_description,wrap_up_comment,satisfaction,direction&sysparm_display_value=true&sysparm_limit=25
ステップ 4:アンケートとアセスメントの回答を取得する

構造化された満足度データを得るために、従業員アンケートの回答を取得します。

MCP を使用する場合(アセスメントインスタンス):

Tool: SN-Query-Table
Parameters:
  table_name: asmt_assessment_instance
  query: user=[employee_sys_id]^metric_type.nameLIKEemployee^ORmetric_type.nameLIKEHR^ORDERBYDESCtaken_on
  fields: sys_id,metric_type,taken_on,percent,state,user,category_scores
  limit: 10

MCP を使用する場合(個別の質問への回答):

Tool: SN-Query-Table
Parameters:
  table_name: asmt_assessment_instance_question
  query: instance.user=[employee_sys_id]^instance.metric_type.nameLIKEemployee
  fields: sys_id,instance,metric,value,string_value,actual_value,category
  limit: 50

REST API を使用する場合:

GET /api/now/table/asmt_assessment_instance?sysparm_query=user=[employee_sys_id]^metric_type.nameLIKEemployee^ORDERBYDESCtaken_on&sysparm_fields=sys_id,metric_type,taken_on,percent,state,user,category_scores&sysparm_display_value=true&sysparm_limit=10
ステップ 5:従業員プロフィールとライフサイクルの背景情報を取得する

感情とライフサイクルイベントを関連付けるために、従業員の HR プロフィールを取得します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_profile
  query: user=[employee_sys_id]
  fields: sys_id,user,department,location,employment_type,hire_date,manager,job_title,cost_center,last_review_date,last_promotion_date,years_in_role,employee_type
  limit: 1

REST API を使用する場合:

GET /api/now/table/sn_hr_core_profile?sysparm_query=user=[employee_sys_id]&sysparm_fields=sys_id,user,department,location,employment_type,hire_date,manager,job_title,cost_center,last_review_date,last_promotion_date,years_in_role&sysparm_display_value=true&sysparm_limit=1
ステップ 6:ケースの種類の傾向を分析する

提出されたケースの種類を調べ、懸念される傾向を特定します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_case
  query: subject_person=[employee_sys_id]^opened_at>=javascript:gs.beginningOfLast12Months()
  fields: sys_id,hr_service,hr_service.name,opened_at,state,priority
  limit: 50

ケースの種類を、感情分析に関連するカテゴリに対応付けます。

=== CASE TYPE PATTERN ANALYSIS ===

High-Risk Case Types (negative sentiment indicators):
- Workplace Complaint / Grievance
- Accommodation Request (especially repeated)
- Policy Dispute / Exception Request
- Manager Escalation
- Exit / Separation Inquiry

Neutral Case Types:
- Benefits Enrollment / Change
- Address / Personal Info Update
- Payroll Inquiry
- General HR Question

Positive Case Types:
- Internal Mobility / Transfer Request
- Training / Development Request
- Recognition Nomination
- Promotion Processing
ステップ 7:感情評価をまとめる

調査結果を構造化された感情レポートにまとめます。

=== EMPLOYEE SENTIMENT ASSESSMENT ===

Employee: Jane Smith | Engineering | Senior Software Engineer
Tenure: 4.8 years | Last Promotion: 18 months ago
Manager: Bob Johnson

--- Overall Sentiment Score ---
Composite Score: 42/100 (Declining - was 68/100 six months ago)
Trend: Negative trajectory over 3 months
Risk Level: ELEVATED

--- Case Sentiment Breakdown ---
Total Cases (12 months): 7
| Period        | Cases | Avg Sentiment | Dominant Tone     |
|---------------|-------|---------------|-------------------|
| Last 30 days  | 3     | Negative      | Frustrated        |
| 30-90 days    | 2     | Neutral       | Matter-of-fact    |
| 90-365 days   | 2     | Positive      | Appreciative      |

--- Survey Scores ---
| Survey                  | Date       | Score | Org Average |
|-------------------------|------------|-------|-------------|
| Q1 Engagement Pulse     | 2026-03-01 | 3.2/5 | 4.1/5       |
| Q4 Annual Engagement    | 2025-12-15 | 3.8/5 | 4.0/5       |
| Q3 Engagement Pulse     | 2025-09-01 | 4.2/5 | 4.1/5       |

--- Flight Risk Indicators ---
[!] Case volume increasing (3 cases in 30 days vs 2 in prior 60)
[!] Engagement survey score dropped 1.0 point in 6 months
[!] Filed policy exception request (potential dissatisfaction)
[!] No promotion in 18 months (above team average of 14 months)
[ ] No internal mobility applications detected
[ ] No exit-related case types filed

--- Sentiment Signals from Communications ---
- Case HRC0012456: "I've raised this issue multiple times..."
  Signal: Repeat frustration, unresolved concern
- Case HRC0012501: "The process seems unnecessarily complicated"
  Signal: Process dissatisfaction
- Case HRC0012523: "I need to understand my options"
  Signal: Ambiguous; may indicate exploration of alternatives

--- Recommended Actions ---
1. IMMEDIATE: Flag for manager 1-on-1 conversation
2. SHORT-TERM: Resolve open cases within SLA to rebuild trust
3. MEDIUM-TERM: Career development conversation recommended
4. TRACKING: Add to monthly sentiment watch list
ステップ 8:マネージャーの注意が必要なケースにフラグを付ける

感情分析でリスクが明らかになった場合は、作業メモを追加し、レビュー対象としてフラグを付けます。

MCP を使用する場合:

Tool: SN-Add-Work-Notes
Parameters:
  table_name: sn_hr_core_case
  sys_id: [latest_case_sys_id]
  work_notes: "SENTIMENT ALERT: Employee shows declining sentiment trend (score 42/100, down from 68). Flight risk indicators detected: increasing case volume, declining survey scores, no recent career advancement. Recommend manager outreach and career development discussion."

ツールの使用方法

MCP ツールのリファレンス
ツール使用する場面
SN-Query-Tableケース、プロフィール、アンケート、やり取り、ジャーナル項目を検索する
SN-Natural-Language-Search特定の感情キーワードを含むケースを自然言語で検索する
SN-Get-Record詳細な掘り下げ分析のために、単一レコードの詳細を取得する
SN-Add-Work-Notesケースレコードに感情分析の結果を記録する
SN-Update-Recordプロフィールのリスク指標または感情スコアを更新する
REST API リファレンス
エンドポイントメソッド目的
/api/now/table/sn_hr_core_caseGET感情分析用の人事ケース
/api/now/table/sys_journal_fieldGETケースのやり取りとコメント
/api/now/table/interactionGETチャットと電話のやり取り履歴
/api/now/table/asmt_assessment_instanceGETアンケート/評価の回答データ
/api/now/table/asmt_assessment_instance_questionGETアンケートの個別質問への回答
/api/now/table/sn_hr_core_profileGET従業員のライフサイクルに関するコンテキスト
/api/now/table/sn_hr_le_case_typeGETケース種別の分類

ベストプラクティス

  • 複数のシグナルを使用する: 単一のデータポイントに頼らず、ケースの感情、アンケートのスコア、やり取りのトーンを組み合わせて精度を高めます
  • ベースラインを設定する: 意味のあるコンテキストを得るため、個人の感情を部署および組織の平均と比較します
  • 一時点の状況ではなく傾向を追跡する: 単発の否定的なケースよりも、継続的に悪化する傾向のほうが懸念されます
  • プライバシーを尊重する: 感情データは機密性が高いため、権限を持つ人事担当者と従業員の直属の指揮系統内でのみ共有します
  • スコアリングの偏りを避ける: 孤立したコメントの主観的な解釈ではなく、観察可能なパターン(ケースの頻度、アンケートのスコア)に注目します
  • 離職リスクのしきい値を調整する: どのスコアのしきい値で特定の介入を行うか、人事部門のリーダーと定義します
  • ライフサイクルのコンテキストを考慮する: 入社後90日以内の新入社員は、勤続年数の長い従業員とは異なる傾向を示す場合があります。これに応じて分析を調整します
  • 手法を文書化する: 結果を再現可能かつ監査可能にするため、使用したスコアリング基準とデータソースを記録します

トラブルシューティング

「アンケートの回答が見つかりません」

原因: アンケートで異なる評価タイプ名が使われているか、別のアンケートプラグインに含まれている可能性があります
解決策: asmt_metric_type をクエリして、利用可能な評価タイプを一覧表示します。また、別の保存先として survey_response テーブルも確認してください

「ジャーナルのエントリーが多すぎます」

原因: 件数の多いケースでは、ジャーナルのエントリーが数百件に達することがあります
解決策: sys_created_on>=javascript:gs.daysAgo(90) を使って日付範囲で絞り込み、従業員向けのやり取りには element=comments を指定して制限します

「満足度の評価フィールドが空です」

原因: すべてのケース種別で CSAT を収集するわけではなく、ケースのクローズ後に記録される場合があります
解決策: sn_hr_core_case の close_notes を確認し、ケースのクローズ時に asmt_assessment_instance を介して別の満足度アンケートが実施されるかどうかを確認します

「部署レベルのクエリがタイムアウトします」

原因: 過去12か月に多くのケースがある大規模な部署では、クエリの制限を超えることがあります
解決策: クエリを月ごとに分割するか、ページネーションを使って sysparm_query=subject_person.department=[id]^opened_at>=YYYY-MM-DD^opened_at<=YYYY-MM-DD を使用します

例

例1:従業員個人の感情チェック

入力: 「過去6か月の従業員 Jane Smith の感情を分析してください」

手順:

  1. sn_hr_core_profile から従業員の sys_id を検索します
  2. ケース、やり取り、アンケートをクエリします
  3. やり取りから感情をスコアリングします
  4. 個人の感情レポートをまとめます
例2:部署の感情ダッシュボード

入力: 「Engineering 部門の感情の傾向を表示してください」

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_case
  query: subject_person.department.name=Engineering^opened_at>=javascript:gs.beginningOfLast12Months()
  fields: number,subject_person,hr_service,opened_at,satisfaction_rating,state,priority
  limit: 200

月とケース種別ごとに集計し、傾向の可視化データを作成します。

例3:人事部門のリーダー向け離職リスクレポート

入力: 「離職リスクの指標が最も高い従業員を特定してください」

Tool: SN-Query-Table
Parameters:
  table_name: sn_hr_core_case
  query: hr_service.nameLIKEexit^ORhr_service.nameLIKEseparation^ORhr_service.nameLIKEresignation^opened_at>=javascript:gs.daysAgo(90)
  fields: number,subject_person,hr_service,opened_at,state,subject_person.department
  limit: 50

アンケートのスコア低下やケース数の増加と照合し、リストの優先順位を決めます。

関連スキル

  • hrsd/case-summarization - 感情がフラグ付けされたケースの詳細なコンテキスト
  • hrsd/chat-reply-recommendation - 感情分析に基づく返信トーンの調整
  • hrsd/persona-assistant - 離職リスクのある従業員向けのパーソナライズされたサポート
  • reporting/trend-analysis - 時間の経過に伴う感情の傾向を可視化
  • reporting/executive-dashboard - 経営層向けの感情指標

コメント