csm-sentiment-analysis について
CSMの管理者やマネージャー向けに、ケースのやり取りを集約し、感情の推移やエスカレーションリスクを分析するスキルです。感情の兆候にSLA状況とケース履歴を組み合わせて評価します。
主な機能
- 01メール、チャット、顧客コメントの集約
- 02感情の極性と強度の評価
- 03ケース進行中の感情推移の追跡
- 04エスカレーションリスク指標の検出
- 05リスクスコアと分析レポートの生成
活用シーン
- 01顧客感情に基づくケースの優先順位付け
- 02早期対応が必要な顧客の特定
- 03顧客満足度の傾向確認
- 04顧客対応結果に基づくエージェント評価
MCP 対応
SN-Get-RecordやSN-Query-TableなどのMCPツールでケース、顧客とのやり取り、SLAデータ、履歴を取得し、感情分析に利用します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill csm-sentiment-analysisインストール後、Claude Code で/csm-sentiment-analysisを入力して読み込まれたか確認します。
詳細
感情分析
概要
このスキルでは、CSM のケースに関するコミュニケーションややり取り全体を対象に、顧客の感情を体系的に分析する方法を説明します。次のことに役立ちます。
- 顧客向けのあらゆるコミュニケーション(メール、チャットの文字起こし、コメント、ポータルへの送信内容)を収集して分析する
- 各コミュニケーションの感情の極性(ポジティブ、中立、ネガティブ)と強度を評価する
- ケースのライフサイクル全体を通じて感情の推移を追跡し、傾向(改善、安定、悪化)を特定する
- 繰り返しの問い合わせ、ネガティブな言葉のパターン、SLA 違反など、エスカレーションリスクの兆候を検出する
- すぐに対応するか、先回りして連絡する必要がある、リスクの高いケースやアカウントにフラグを付ける
- アカウント健全性ダッシュボードや管理レポート向けに感情スコアを提供する
使用するタイミング: CSM マネージャーが顧客満足度の傾向を評価するとき、優先順位を付けるためにケースをトリアージするとき、解約リスクのあるアカウントを特定するとき、または顧客の成果に基づいてエージェントのパフォーマンスを評価するときに使用します。
前提条件
- 役割:
sn_customerservice_agent、sn_customerservice_manager、またはcsm_admin - アクセス権:
sn_customerservice_case、interaction、sys_journal_field、sys_email、customer_account、csm_consumer、sn_customerservice_slaテーブルへの読み取りアクセス - 知識: 感情分析の概念、CSM ケースのライフサイクル、組織のエスカレーションポリシーに関する理解
手順
ステップ 1:ケースと顧客のコンテキストを取得する
ケースレコードと顧客情報を取得し、基準となるコンテキストを把握します。
MCP の使用(Claude Code/Desktop):
Tool: SN-Get-Record
Parameters:
table_name: sn_customerservice_case
sys_id: [case_sys_id]
fields: number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,opened_at,opened_by,resolved_at,closed_at,escalation,severity,reassignment_count,reopen_count,contact_type,sla_due
Tool: SN-Query-Table
Parameters:
table_name: customer_account
query: sys_id=[account_sys_id]
fields: sys_id,name,customer_tier,industry,notes
limit: 1
REST API の使用:
GET /api/now/table/sn_customerservice_case/{case_sys_id}?sysparm_fields=number,short_description,description,state,priority,urgency,impact,category,subcategory,contact,account,consumer,product,opened_at,escalation,severity,reassignment_count,reopen_count,contact_type,sla_due&sysparm_display_value=true
GET /api/now/table/customer_account/{account_sys_id}?sysparm_fields=name,customer_tier,industry,notes&sysparm_display_value=true
ステップ 2:顧客のコメントとコミュニケーションを収集する
顧客向けのすべてのコメント(追加コメント/顧客に表示されるエントリ)を取得します。
MCP の使用:
Tool: SN-Query-Table
Parameters:
table_name: sys_journal_field
query: element_id=<case_sys_id>^element=comments^ORDERBYsys_created_on
fields: sys_id,value,sys_created_on,sys_created_by,element
limit: 100
REST API の使用:
GET /api/now/table/sys_journal_field?sysparm_query=element_id=<case_sys_id>^element=comments^ORDERBYsys_created_on&sysparm_fields=value,sys_created_on,sys_created_by,element&sysparm_limit=100
ステップ 3:メールでのコミュニケーションを取得する
感情分析のために、顧客からの受信メールを取得します。
MCP の使用:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=<case_sys_id>^type=received^ORDERBYsys_created_on
fields: sys_id,subject,body_text,sys_created_on,sys_created_by,importance,type
limit: 30
REST API の使用:
GET /api/now/table/sys_email?sysparm_query=instance=<case_sys_id>^type=received^ORDERBYsys_created_on&sysparm_fields=subject,body_text,sys_created_on,importance,type&sysparm_limit=30&sysparm_display_value=true
ステップ 4:チャットとやり取りの文字起こしを取得する
分析のために、チャットでのやり取りのエントリを取得します。
MCP の使用:
Tool: SN-Query-Table
Parameters:
table_name: interaction
query: parent=<case_sys_id>^ORDERBYsys_created_on
fields: sys_id,number,channel,state,opened_at,closed_at,short_description
limit: 20
チャットでのやり取りごとに、文字起こしを取得します。
Tool: SN-Query-Table
Parameters:
table_name: interaction_entry
query: interaction=<interaction_sys_id>^ORDERBYsys_created_on
fields: sys_id,message,type,sys_created_on,sys_created_by,initiated_from
limit: 100
REST API の使用:
GET /api/now/table/interaction?sysparm_query=parent=<case_sys_id>^ORDERBYsys_created_on&sysparm_fields=sys_id,number,channel,state,opened_at,closed_at&sysparm_limit=20&sysparm_display_value=true
GET /api/now/table/interaction_entry?sysparm_query=interaction=<interaction_sys_id>^ORDERBYsys_created_on&sysparm_fields=message,type,sys_created_on,sys_created_by&sysparm_limit=100
ステップ 5:SLA の遵守状況とエスカレーション履歴を確認する
SLA 違反とエスカレーションは、感情を示す重要な指標です。
MCP の使用:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_sla
query: task=<case_sys_id>
fields: sys_id,sla,stage,has_breached,planned_end_time,percentage,business_percentage,start_time,end_time
limit: 10
REST API の使用:
GET /api/now/table/sn_customerservice_sla?sysparm_query=task=<case_sys_id>&sysparm_fields=sla,stage,has_breached,planned_end_time,percentage,business_percentage&sysparm_limit=10&sysparm_display_value=true
ステップ 6:顧客のケース履歴を分析してパターンを確認する
複数のケースにわたり、顧客にネガティブな体験が繰り返されていないかを確認します。
MCP の使用:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: consumer=[consumer_sys_id]^ORDERBYDESCopened_at
fields: number,short_description,state,priority,escalation,reopen_count,reassignment_count,opened_at,closed_at,resolution_code
limit: 20
REST API の使用:
GET /api/now/table/sn_customerservice_case?sysparm_query=consumer=<consumer_sys_id>^ORDERBYDESCopened_at&sysparm_fields=number,short_description,state,priority,escalation,reopen_count,reassignment_count,opened_at,closed_at,resolution_code&sysparm_limit=20&sysparm_display_value=true
ステップ 7:感情分析を実施してレポートを作成する
収集したすべてのコミュニケーションを分析し、感情を示す指標を特定して、構造化された評価を作成します。
感情を示すキーワード:
| ネガティブな指標 | 中立的な指標 | ポジティブな指標 |
|---|---|---|
| frustrated, unacceptable | following up, checking in | thank you, appreciate |
| disappointed, angry | any update, status | excellent, great job |
| escalate, manager | when will, timeline | resolved, working now |
| unresolved, still broken | can you confirm | helpful, impressed |
| worst, terrible, awful | need more info | recommend, satisfied |
| cancel, legal, lawsuit | please advise | above and beyond |
| wasting my time | looking forward | quick response |
| incompetent, useless | per our discussion | keep up the good work |
リスク要因のスコアリング:
| 要因 | スコア | 条件 |
|---|---|---|
| SLA 違反 | +3 | いずれかの SLA が違反状態 |
| エスカレーション中 | +2 | エスカレーションレベル > 0 |
| 再オープン回数 > 0 | +2 | ケースが再オープンされている |
| 再割り当て回数 > 3 | +1 | 複数チームへの引き継ぎ |
| ネガティブなメールのトーン | +2 | 検出されたネガティブなメールごと |
| 優先度が高い(P1/P2) | +1 | 優先度が 1 または 2 |
| 複数のケースがオープン | +1 | 顧客のオープン中のケースが > 2 |
| ケースの経過日数 > 7 日 | +1 | ケースが想定より長くオープンしている |
リスクレベル:
- スコア 0-2:低リスク(緑)
- スコア 3-5:中リスク(黄)
- スコア 6-8:高リスク(オレンジ)
- スコア 9 以上:重大なリスク(赤)
出力レポート:
=== SENTIMENT ANALYSIS REPORT ===
Case: [number] | Customer: [name] | Account: [account_name]
Account Tier: [tier] | Case Age: [days] days
Analysis Date: [current_date]
OVERALL SENTIMENT: [Positive/Neutral/Negative]
RISK SCORE: [score]/15 ([Low/Medium/High/Critical])
TREND: [Improving/Stable/Deteriorating]
COMMUNICATION SENTIMENT TIMELINE:
Date | Channel | Sentiment | Key Indicators
-----------+---------+-----------+------------------
[date_1] | Email | Negative | "frustrated", "unacceptable"
[date_2] | Chat | Negative | "still not working", "escalate"
[date_3] | Email | Neutral | "any update on timeline"
[date_4] | Comment | Positive | "thank you for the update"
SENTIMENT PROGRESSION:
[date_1] ████████░░ Negative (-0.7)
[date_2] ███████░░░ Negative (-0.6)
[date_3] █████░░░░░ Neutral (-0.1)
[date_4] ███░░░░░░░ Positive (+0.4)
Trend: IMPROVING ↑
RISK FACTORS:
[✓] SLA Breached (Response SLA) .............. +3
[✓] Escalation Level 1 ...................... +2
[✗] Case Reopened ............................ +0
[✓] Reassignment Count: 4 ................... +1
[✓] Negative Communications: 2 .............. +4
[✗] High Priority ............................ +0
[✗] Multiple Open Cases ..................... +0
[✓] Case Age: 12 days ....................... +1
Total: 11 (CRITICAL)
ACCOUNT HEALTH INDICATORS:
- Total Cases (90 days): [count]
- Open Cases: [count]
- Average Resolution Time: [days]
- Escalation Rate: [percentage]%
- Reopen Rate: [percentage]%
KEY OBSERVATIONS:
1. [observation about sentiment trend]
2. [observation about risk factors]
3. [observation about account health]
RECOMMENDED ACTIONS:
1. [action based on sentiment analysis]
2. [action based on risk score]
3. [action based on account health]
ツールの使用方法
MCP ツールのリファレンス
| ツール | 使用する場面 |
|---|---|
SN-Natural-Language-Search | 感情に関するキーワードや説明でケースを検索する |
SN-Query-Table | コミュニケーション、ケース履歴、SLA データを取得する |
SN-Get-Record | 個別のケースまたはアカウントのレコードを取得する |
REST API リファレンス
| エンドポイント | メソッド | 目的 |
|---|---|---|
/api/now/table/sn_customerservice_case | GET | ケースの詳細と履歴 |
/api/now/table/sys_journal_field | GET | 顧客のコメントと作業メモ |
/api/now/table/sys_email | GET | メールでのコミュニケーション |
/api/now/table/interaction | GET | チャットと電話でのやり取り |
/api/now/table/interaction_entry | GET | チャットのトランスクリプトメッセージ |
/api/now/table/sn_customerservice_sla | GET | SLA の遵守データ |
/api/now/table/customer_account | GET | アカウントのティアと健全性 |
/api/now/table/csm_consumer | GET | 消費者のプロフィールデータ |
ベストプラクティス
- すべてのチャネルを分析する: 顧客の感情はメール、チャット、ポータルによって異なる場合があります。正確に把握するため、すべてのチャネルを集約してください
- 最近のコミュニケーションを重視する: 最も最近のやり取りは、古いものより現在の感情を示す傾向があります
- 文脈を考慮する: 簡潔なメッセージはネガティブではなく中立的な場合があります。必ず会話スレッド全体を考慮してください
- 感情の推移を追跡する: 1 件のネガティブなメッセージよりも、継続的な下降傾向のほうが懸念されます
- 指標と照合する: 感情分析と SLA データ、再割り当て回数、再オープン回数を組み合わせて、全体像を把握してください
- アカウントレベルで集約する: 個々のケースの感情を集約し、アカウントレベルの健全性スコアに反映してください
- 先回りしてフラグを立てる: 明示的なエスカレーション依頼を待たず、顧客がエスカレーションする前に感情が悪化しているケースにフラグを立ててください
- 文化の違いを尊重する: トーンや率直さは文化によって異なります。率直なコミュニケーションスタイルを誤検知しないようにしてください
- 分析結果を記録する: チーム内で共有できるよう、感情分析の結果を作業メモとして記録してください
トラブルシューティング
「顧客コメントが見つかりません」
原因: ケースで作業メモのみが使用されているか、コメントが別のフィールドに保存されている可能性があります。
解決策: sys_journal_field で element=comments と element=work_notes の両方を確認します。また、顧客とのやり取りについては sys_email も確認します。組織によっては、カスタムのジャーナルフィールドを使用している場合があります。
「チャットのトランスクリプトが空です」
原因: メッセージングフレームワークによっては、チャットメッセージが別のテーブルに格納されている場合があります。
解決策: live_message テーブルに対してクエリを試します:sysparm_query=group=<interaction_sys_id>。Customer Service Messaging(CSM)のチャットについては、sys_cs_message も確認します。
「センチメント分析の精度が低いようです」
原因: 自動キーワードベースの分析では、皮肉や文脈、ドメイン固有の表現を見落とすことがあります。 解決策: キーワード検出を文脈分析で補います。個々のメッセージではなく、会話スレッド全体を確認します。意図を明確にするフォローアップメッセージがないか確認します。
「アカウントの健全性データが不完全です」
原因: 過去のケースがアーカイブされているか、コンシューマーレコードからすべてのケースにリンクされていない可能性があります。
解決策: 関連するすべてのケースを取得するため、consumer フィールドと account フィールドの両方でケースをクエリします。一部のケースは csm_consumer ではなく customer_contact にリンクされていることがあるため、contact フィールドも確認します。
例
例 1:単一ケースのセンチメント分析
シナリオ: 10 日間未解決の請求に関する異議申し立てケースのセンチメントを分析します。
ステップ 1 - ケースを取得:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: number=CS0090100
fields: sys_id,number,short_description,state,priority,escalation,contact,account,consumer,opened_at,reopen_count,reassignment_count,sla_due
limit: 1
ステップ 2 - 顧客のメールを取得:
Tool: SN-Query-Table
Parameters:
table_name: sys_email
query: instance=<sys_id>^type=received^ORDERBYsys_created_on
fields: body_text,sys_created_on,subject
limit: 20
ステップ 3 - SLA を確認:
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_sla
query: task=<sys_id>
fields: sla,stage,has_breached,percentage
limit: 5
出力:
SENTIMENT ANALYSIS - CS0090100 (Billing Dispute)
Customer: Robert Chen | Account: Meridian Inc. (Gold)
OVERALL SENTIMENT: Negative (deteriorating)
RISK SCORE: 9/15 (CRITICAL)
TIMELINE:
Mar 09 | Email | Neutral | "I noticed an incorrect charge..."
Mar 12 | Email | Negative | "I haven't heard back, this is urgent"
Mar 15 | Email | Negative | "This is unacceptable, 6 days with no response"
Mar 18 | Email | Negative | "I'm considering escalating to management"
RISK FACTORS: SLA Breached (+3), Negative emails x3 (+6)
TREND: Deteriorating ↓
RECOMMENDED ACTIONS:
1. Immediate manager outreach call to Robert Chen
2. Fast-track billing adjustment with finance team
3. Provide concession or credit for service failure
例 2:アカウントレベルのセンチメントダッシュボード
シナリオ: 重要なアカウントに属するすべてのオープンケースについて、センチメントの概要を生成します。
Tool: SN-Query-Table
Parameters:
table_name: sn_customerservice_case
query: account=[account_sys_id]^stateNOT IN6,7,8^ORDERBYpriority
fields: sys_id,number,short_description,state,priority,escalation,contact,opened_at,reopen_count,reassignment_count
limit: 50
出力:
ACCOUNT SENTIMENT DASHBOARD - GLOBEX CORPORATION
Tier: Platinum | Open Cases: 7 | Avg Age: 8.3 days
CASE SENTIMENT SUMMARY:
Case | Priority | Age | Sentiment | Risk
-----------+----------+------+-----------+--------
CS0089001 | P1 | 3d | Negative | HIGH
CS0089234 | P2 | 5d | Neutral | MEDIUM
CS0089500 | P2 | 12d | Negative | CRITICAL
CS0089801 | P3 | 7d | Neutral | LOW
CS0090010 | P3 | 2d | Positive | LOW
CS0090150 | P3 | 14d | Negative | HIGH
CS0090200 | P4 | 1d | Neutral | LOW
ACCOUNT HEALTH: AT RISK
- 3 of 7 cases have negative sentiment
- 1 case in critical risk state
- Escalation rate: 28% (above 15% threshold)
RECOMMENDED: Schedule account review with CSM manager
関連スキル
csm/case-summarization- センチメントの文脈を把握するためにケースの詳細を要約しますcsm/chat-recommendation- センチメントに基づいてチャットの応答トーンを調整しますcsm/email-recommendation- センチメント分析の結果に基づいてメールのトーンを調整しますcsm/activity-response- センチメントを考慮したアクティビティ応答を生成しますreporting/survey-analysis- CSAT のレポートと傾向分析