mcpField
C
customer-support-builder

customer-support-builder

github.com/daffy0208その他38206 回インストール44 週間前に更新
リポジトリ

customer-support-builder について

Customer Support Builderは、ドキュメント、セルフサービス、自動化、チケットのワークフローを通じて拡大に対応するサポート体制を設計するスキルです。サポートチャネル、指標、振り分け、段階的な拡張を扱います。

主な機能

  1. 01サポート成熟度の計画
  2. 02ナレッジベースの構成
  3. 03メールとチャットのワークフロー
  4. 04チャットボットの判断経路
  5. 05チケットの振り分けとライフサイクル
  6. 06サポート指標と監視

活用シーン

  1. 01成長する製品のサポート計画
  2. 02検索可能なヘルプセンターの作成
  3. 03よくある問い合わせの自動化
  4. 04チケットの割り当てルール策定

インストール

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

$npx skills add https://github.com/daffy0208/ai-dev-standards --skill customer-support-builder

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

同梱ファイルmanifest.yaml

詳細

カスタマーサポートビルダー

採用人数を比例して増やすことなく、プロダクトの成長に合わせて拡張できるカスタマーサポートシステムを構築します。

基本原則

ユーザー数の増加に対して、サポートはそれより緩やかに拡大するべきです。 ユーザー数が100人から10,000人に増えても、サポート件数が100倍に増えるべきではありません。優れたセルフサービスシステムがあれば、ユーザー数が100倍に増えても、サポートの必要性の増加を10〜20倍に抑えられます。

サポート成熟度モデル

ステージ1:創業者主導(ユーザー数0〜100人)
  • 創業者がすべての質問に自ら回答する
  • ユーザーが実際に困っていることを把握する
  • よくある質問を手動で文書化する
  • 主要指標:応答時間 < 2時間
ステージ2:文書化(ユーザー数100〜1,000人)
  • 包括的なナレッジベース
  • テンプレートを使ったメールサポート
  • 基本的なFAQセクション
  • 主要指標:セルフサービス率30%
ステージ3:セルフサービス(ユーザー数1,000〜10,000人)
  • 検索可能なヘルプセンター
  • アプリ内のコンテキストに応じたヘルプ
  • よくある問題への自動応答
  • 主要指標:セルフサービス率60%
ステージ4:大規模展開(ユーザー数10,000人以上)
  • AI を活用したチャットボット
  • コミュニティフォーラム
  • 動画チュートリアル
  • プロアクティブサポート(問い合わせが発生する前に問題を検知)
  • 主要指標:セルフサービス率80%

ナレッジベースのアーキテクチャ

コンテンツ構成
Help Center
├── Getting Started
│   ├── Quick Start Guide (< 5 min)
│   ├── Account Setup
│   └── First Steps Tutorial
├── Core Features
│   ├── Feature A Guide
│   ├── Feature B Guide
│   └── Feature C Guide
├── Troubleshooting
│   ├── Common Errors
│   ├── Performance Issues
│   └── Integration Problems
├── Account & Billing
│   ├── Pricing Plans
│   ├── Billing Issues
│   └── Account Management
└── API & Integrations
    ├── API Documentation
    ├── Webhooks
    └── Integration Guides
記事テンプレート
# [Clear, Searchable Title]

**Time to complete**: 3 minutes
**Difficulty**: Beginner/Intermediate/Advanced

## Problem

One-sentence description of what this solves.

## Solution

Step-by-step instructions with screenshots.

1. **Step 1**: Clear action
   - Screenshot/GIF
   - Expected result

2. **Step 2**: Next action
   - Screenshot/GIF
   - Expected result

## Troubleshooting

- Problem: X → Solution: Y
- Problem: A → Solution: B

## Related Articles

- [Article 1](#)
- [Article 2](#)

サポートチャネル

メールサポート

セットアップ:

Primary: [email protected]
Routing:
  - [email protected] → Billing team
  - [email protected] → Engineering
  - [email protected] → General inquiries
SLA:
  - Critical: 2 hours
  - High: 8 hours
  - Normal: 24 hours
  - Low: 48 hours

メールテンプレート:

# Welcome Email

Subject: Welcome to [Product]! Here's how to get started

Hi [Name],

Welcome! Here's what to do first:

1. Complete setup: [Link]
2. Try this tutorial: [Link]
3. Join our community: [Link]

Need help? Reply to this email or check our help center: [Link]

[Your Name]
# Issue Resolved

Subject: [Ticket #123] Resolved - [Issue Title]

Hi [Name],

Good news! Your issue is resolved.

**What we did**:
[Clear explanation]

**What you should see**:
[Expected result]

**If the problem returns**:
[Troubleshooting steps]

Was this helpful? [Yes] [No]

[Your Name]
チャットサポート

アプリ内チャットウィジェット:

// Intercom, Drift, Crisp example
<script>
window.intercomSettings = {
  app_id: "YOUR_APP_ID",
  // Custom attributes
  email: user.email,
  user_id: user.id,
  created_at: user.createdAt,
  plan: user.plan,
  // Show relevant help articles
  help_center: {
    search_enabled: true
  }
};
</script>

チャットのSLA:

  • 営業時間内:5分以内に応答
  • 営業時間外:メールの自動応答
  • 解決までの見込み:1〜3回のメッセージ
チャットボット(AI 搭載)

決定木:

User message →
  ├── Can answer with KB article? → Send article
  ├── Simple factual question? → AI answers
  ├── Complex issue? → Route to human
  └── Angry/escalated? → Priority human routing

実装:

def handle_support_message(message, user_context):
    # 1. Search knowledge base
    kb_results = search_kb(message, top_k=3)

    if kb_results[0].score > 0.85:
        return {
            'type': 'article',
            'article': kb_results[0],
            'confidence': 'high'
        }

    # 2. Try AI response with context
    ai_response = generate_response(
        message=message,
        kb_context=kb_results,
        user_history=user_context
    )

    if ai_response.confidence > 0.8:
        return {
            'type': 'ai_response',
            'response': ai_response.text,
            'sources': kb_results
        }

    # 3. Route to human
    return {
        'type': 'human_handoff',
        'priority': calculate_priority(message, user_context),
        'suggested_agent': route_to_specialist(message)
    }

チケット管理

チケット管理システムのスキーマ
interface Ticket {
  id: string
  status: 'new' | 'open' | 'pending' | 'resolved' | 'closed'
  priority: 'low' | 'normal' | 'high' | 'critical'
  category: string // 'billing', 'technical', 'feature', etc.
  subject: string
  description: string
  requester: User
  assignee?: Agent
  tags: string[]
  created_at: Date
  updated_at: Date
  resolved_at?: Date
  first_response_at?: Date
  satisfaction_rating?: 1 | 2 | 3 | 4 | 5
}
自動振り分けルール
Routing Rules:
  - Condition: subject contains "billing" OR "payment"
    Action: Assign to billing-team
    Priority: high

  - Condition: user.plan == "enterprise"
    Action: Assign to enterprise-team
    Priority: high
    SLA: 2 hours

  - Condition: subject contains "API" OR "webhook"
    Action: Assign to engineering
    Tag: 'api-issue'

  - Condition: sentiment == "angry"
    Action: Priority routing
    Priority: critical
    Notify: support-manager
チケットのライフサイクル
New → Open → Pending → Resolved → Closed
       ↓              ↑
       ← Reopen ←

ステータスの定義:

  • 新規:作成されたばかりで、まだ確認されていない
  • オープン:エージェントが対応中
  • 保留中:顧客からの返信待ち
  • 解決済み:解決策を提示済みで、確認待ち
  • クローズ:問題が解決したことを確認済み、または7日後に自動クローズ

セルフサービスツール

対話型トラブルシューティング
// Example: Connection troubleshooter
const troubleshooter = {
  start: {
    question: 'What problem are you experiencing?',
    options: [
      { text: "Can't connect", next: 'check_connection' },
      { text: 'Slow performance', next: 'check_performance' },
      { text: 'Error message', next: 'check_error' }
    ]
  },
  check_connection: {
    question: 'Can you access our website?',
    options: [
      { text: 'Yes', next: 'browser_check' },
      { text: 'No', action: 'show_status_page' }
    ]
  },
  browser_check: {
    question: 'Clear your browser cache and try again.',
    options: [
      { text: 'It worked!', action: 'problem_solved' },
      { text: 'Still not working', action: 'contact_support' }
    ]
  }
}
アプリ内ガイダンス
// Contextual help tooltips
const helpTooltips = {
  '/dashboard': {
    first_visit: {
      title: 'Welcome to your dashboard!',
      steps: [
        '1. View your key metrics here',
        "2. Click 'Add Widget' to customize",
        '3. Need help? Click the ? icon'
      ]
    }
  },
  '/settings/billing': {
    always_show: {
      payment_methods: 'We accept Visa, Mastercard, and AmEx',
      billing_cycle: 'Changes take effect next billing cycle'
    }
  }
}

サポート指標

追跡すべき主要指標
interface SupportMetrics {
  // Response metrics
  first_response_time: {
    p50: number // median
    p90: number // 90th percentile
    p99: number
  }

  // Resolution metrics
  avg_resolution_time: number
  tickets_resolved_first_contact: number

  // Volume metrics
  tickets_created_today: number
  tickets_open: number
  tickets_overdue: number

  // Quality metrics
  customer_satisfaction_score: number // 1-5
  net_promoter_score: number // -100 to 100

  // Efficiency metrics
  self_service_rate: number // % resolved without ticket
  deflection_rate: number // % answered by KB/bot
  cost_per_ticket: number
}
目標ベンチマーク
Excellent Support:
  first_response_time_p90: '< 2 hours'
  resolution_time_avg: '< 24 hours'
  self_service_rate: '> 70%'
  csat: '> 4.5/5'
  nps: '> 50'

Good Support:
  first_response_time_p90: '< 4 hours'
  resolution_time_avg: '< 48 hours'
  self_service_rate: '> 50%'
  csat: '> 4.0/5'
  nps: '> 30'

拡大戦略

サポートチームの構成
Support Organization (at scale):

Support Manager (1)
├── Knowledge Base Lead (1)
│   └── Technical Writers (2-3)
├── Chat Support (Tier 1) (5-10)
│   ├── Handle 80% of issues
│   └── Escalate complex cases
├── Email Support (Tier 2) (3-5)
│   ├── Handle escalations
│   └── Complex troubleshooting
└── Specialist Support (Tier 3) (2-3)
    ├── API/Technical issues
    └── Enterprise customers
サポートスタッフを採用するタイミング

目安:

  • ユーザー数0〜500人:創業者が対応
  • ユーザー数500〜2,000人:サポート担当者1人
  • ユーザー数2,000〜5,000人:サポート担当者2〜3人
  • ユーザー数5,000〜20,000人:サポート担当者5〜8人
  • ユーザー数20,000人以上:チームを構築

より適切な指標:サポートの負荷

  • 次の場合に採用:1日あたり50件を超えるチケット、または同時対応中のチャットが10件を超える
  • エージェント1人あたりの対応可能件数:1日あたり約30〜40件のチケット、または8〜10件のチャット

ツールとソフトウェア

推奨スタック

チケット管理:Zendesk、Intercom、Help Scout、Freshdesk ナレッジベース:GitBook、Notion、Confluence、Document360 チャット:Intercom、Drift、Crisp チャットボットAI:OpenAI、Anthropic Claude、Dialogflow コミュニティ:Discourse、Circle、Slack/Discord 分析:Mixpanel、Amplitude(アプリ内の行動分析用)

統合例
// Unified support API
class SupportSystem {
  async createTicket(data) {
    const ticket = await zendesk.createTicket(data)
    await analytics.track('support_ticket_created', {
      ticket_id: ticket.id,
      category: data.category,
      user_id: data.user_id
    })
    return ticket
  }

  async trackKBArticleView(article_id, user_id) {
    await analytics.track('kb_article_viewed', {
      article_id,
      user_id
    })

    // If user doesn't create ticket after viewing,
    // article was helpful (deflection)
  }
}

プロアクティブサポート

問い合わせが発生する前に問題を検知する
// Monitor for patterns
async function detectPotentialIssues() {
  // Error spike detection
  const errorRate = await getErrorRate('last_hour')
  if (errorRate > 2 * avgErrorRate) {
    await notifySupport('Error spike detected')
    await displayStatusMessage("We're investigating an issue...")
  }

  // User struggle detection
  const strugglingUsers = await detectStrugglingUsers({
    criteria: ['repeated_failed_actions', 'long_time_on_page', 'back_and_forth_clicks']
  })

  if (strugglingUsers.length > 0) {
    await offerProactiveHelp(strugglingUsers)
  }
}
ヘルススコアのモニタリング
interface CustomerHealth {
  user_id: string
  health_score: number // 0-100
  signals: {
    usage_frequency: 'increasing' | 'stable' | 'declining'
    feature_adoption: number
    support_tickets_recent: number
    last_login: Date
    payment_status: 'current' | 'overdue'
  }
}

// Reach out proactively when health score drops
if (customer.health_score < 40) {
  await sendProactiveOutreach({
    type: 'check_in',
    message: "Haven't seen you in a while. Need help with anything?"
  })
}

クイックスタートチェックリスト

1週目:基盤
  • サポート用メールアドレス(support@)を設定する
  • 基本的なFAQを作成する(よくある質問トップ10)
  • チャットウィジェットをインストールする
  • 既知の問題を文書化する
2〜3週目:ナレッジベース
  • ナレッジベースのプラットフォームを選ぶ
  • スタートガイドを作成する
  • すべての機能を文書化する
  • スクリーンショットやGIFを追加する
  • トラブルシューティングのセクションを作成する
4週目:自動化
  • 自動応答を設定する
  • メールテンプレートを作成する
  • 振り分けルールを設定する
  • 基本的なチャットボットを追加する
継続的な取り組み
  • 毎週、チケットの傾向を確認する
  • よくある質問に基づいてナレッジベースを更新する
  • セルフサービス率を追跡する
  • 顧客満足度を調査する
  • 応答時間を最適化する

よくある落とし穴

❌ ユーザーがいないうちにナレッジベースを構築する:思い込みではなく、実際の質問に基づいてドキュメントを作成します ❌ 早い段階で自動化しすぎる:人はパターンを学習します。同じトピックのチケットが50件以上寄せられてから自動化します ❌ 検索機能が不十分:ユーザーが回答を見つけられなければ、チケットを送信します ❌ フィードバックの仕組みがない:チケットを送信する前にユーザーが閲覧した記事を追跡します ❌ モバイルを軽視する:ユーザーの40%はモバイルでサポートにアクセスします

成功の基準

次の条件を満たしていれば、優れたサポートを提供できています。

  • ✅ ユーザーの70%以上が、サポートに問い合わせずに回答を見つけている
  • ✅ 営業時間中の初回応答時間が2時間未満
  • ✅ 顧客満足度が5点満点中4.5点を超えている
  • ✅ サポートコストの増加率がユーザー数の増加率を下回っている
  • ✅ サポートチームが、繰り返し寄せられる質問ではなく、複雑な問題に集中できている

コメント