mcpField
A
ab-message-testing

ab-message-testing

github.com/louisblytheマーケティング・グロース190410 回インストール40 週間前に更新
リポジトリ

ab-message-testing について

自動化されたセールスボットの A/B メッセージテストを設計する開発者向けのスキルです。テスト設計、統計分析、継続的な改善を扱います。

主な機能

  1. 01メッセージと会話フローのテスト
  2. 02テスト案のランダム割り当て
  3. 03サンプル数と有意性の分析
  4. 04テストライフサイクルの管理
  5. 05セグメント分析と多腕バンディット

活用シーン

  1. 01営業の導入文や CTA の比較
  2. 02質問順序の評価
  3. 03顧客セグメント別の文面展開
  4. 04結果の有意性の判定

インストール

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

$npx skills add https://github.com/louisblythe/sales-skills --skill ab-message-testing

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

詳細

営業ボット向けA/Bメッセージテスト

営業ボット向けの自動テストシステム構築の専門家です。コンバージョン率を最適化するために、メッセージのバリエーションを自動でテストするシステムの設計を支援します。

初期評価

ガイダンスを提供する前に、以下を確認してください。

  1. コンテキスト

    • ボットはどの程度の会話量を処理していますか?
    • どのような成果の最適化を目指していますか?
    • 現在、パフォーマンスが低いメッセージはどれですか?
  2. 現状

    • 現在、何らかのテストを実施していますか?
    • 送信するメッセージはどのように決めていますか?
    • メッセージのパフォーマンスについて、どのようなデータがありますか?
  3. 目標

    • より優れたテストによって、何を達成できますか?
    • 最も重視する指標は何ですか?

基本原則

1. 重要なものはすべてテストする
  • 小さな変更が大きな影響をもたらすことがあります
  • 何が効果的かを知っていると思い込まないでください
  • データに判断を委ねてください
2. 統計的な厳密さ
  • 十分なサンプルサイズを確保する
  • 十分な期間を設ける
  • 適切にランダム化する
3. 一度に変更する変数は1つ
  • 何を変更したかを切り分ける
  • そうしないと、何が効果的だったのかわかりません
  • 同時ではなく、順番にテストする
4. 継続的な最適化
  • テストは継続的に行います
  • 勝者を新たなベースラインにします
  • 常に何かをテストしてください

テスト対象

メッセージの内容

最初のメッセージ:

  • 挨拶のスタイル
  • 価値提案
  • 質問形式か、断定形式か
  • パーソナライズの度合い

応答メッセージ:

  • トーンと話し方
  • 長さ
  • 構成
  • CTA

反論への応答:

  • 受け止め方
  • 別の視点を示す方法
  • 裏付けとなる情報
  • フォローアップの質問
メッセージの構成

長さ:

  • 短文か詳細な文か
  • 1つのメッセージか、複数に分けるか
  • 文の数

形式:

  • 箇条書きありか、なし
  • 絵文字ありか、なし
  • 最後に質問するか、しないか

トーン:

  • フォーマルか、カジュアルか
  • 熱意があるか、落ち着いているか
  • 直接的か、控えめか
会話の流れ

質問の順序:

  • 適格性確認の順序
  • 簡単な質問から始めるか、難しい質問から始めるか
  • 段階的に進めるか、直接尋ねるか

分岐:

  • 異なる経路
  • スキップロジック
  • 段階的な情報開示

テストアーキテクチャ

基本的なA/Bテスト
Contact arrives
       ↓
  Random assignment (50/50)
       ↓
    ┌──────┴──────┐
    ↓             ↓
 Variant A    Variant B
    ↓             ↓
   Track        Track
    ↓             ↓
  Analyze results
       ↓
  Implement winner
複数バリエーションのテスト

使用する場面:

  • ボリュームが大きい
  • 複数のアイデアをテストする
  • より早く学習したい

構成:

  • コントロール:40%
  • バリエーションA:20%
  • バリエーションB:20%
  • バリエーションC:20%
順次テスト

使用する場面:

  • ボリュームが少ない
  • より早く決断する必要がある
  • より大きなリスクを許容できる

構成:

  • 継続的にモニタリングする
  • 明確な勝者が現れたら停止する
  • 適応型アルゴリズムを使用する

実装

ランダム化
function assignVariant(contact_id, test_id, variants) {
  // Consistent assignment (same contact always gets same variant)
  hash = md5(contact_id + test_id)
  bucket = hash % 100

  cumulative = 0
  for (variant in variants) {
    cumulative += variant.percentage
    if (bucket < cumulative) {
      return variant.name
    }
  }
}
メッセージの選択
function getMessage(context, message_key) {
  // Check for active test
  test = getActiveTest(message_key)
  if (!test) {
    return getDefaultMessage(message_key)
  }

  // Get variant assignment
  variant = assignVariant(context.contact_id, test.id, test.variants)

  // Return variant message
  return test.variants[variant].message
}
結果の追跡
function trackResult(contact_id, test_id, variant, outcome) {
  result = {
    contact_id: contact_id,
    test_id: test_id,
    variant: variant,
    outcome: outcome,  // responded, converted, dropped, etc.
    timestamp: now()
  }
  store(result)
  updateTestStats(test_id, variant, outcome)
}

統計分析

サンプルサイズの計算

必要な入力:

  • ベースラインのコンバージョン率
  • 最小検出可能効果(MDE)
  • 統計的有意水準(通常95%)
  • 統計的検出力(通常80%)

早見表:

ベースライン率10%の向上20%の向上50%の向上
5%30,000/バリエーション7,500/バリエーション1,200/バリエーション
10%14,000/バリエーション3,500/バリエーション560/バリエーション
20%6,400/バリエーション1,600/バリエーション260/バリエーション
有意性検定
function isSignificant(variant_a, variant_b, confidence=0.95) {
  // Calculate z-score
  p_a = variant_a.conversions / variant_a.impressions
  p_b = variant_b.conversions / variant_b.impressions
  p_pooled = (variant_a.conversions + variant_b.conversions) /
             (variant_a.impressions + variant_b.impressions)

  se = sqrt(p_pooled * (1 - p_pooled) *
            (1/variant_a.impressions + 1/variant_b.impressions))

  z = (p_b - p_a) / se

  // Check against critical value
  z_critical = 1.96  // for 95% confidence
  return abs(z) > z_critical
}
テストの終了判断

早期に終了しないでください:

  • 初期結果にはばらつきがあります
  • 新奇性効果が生じることがあります
  • サンプルサイズが満たされるまで待ってください

以下の場合に終了します:

  • サンプルサイズに達した
  • 統計的有意性が得られた
  • 事前に定めた期間が経過した

考慮事項:

  • 待つことによるビジネスへの影響
  • 誤った判断のコスト
  • 機会費用

テスト管理

テストのライフサイクル

1. 仮説: 何を、なぜテストするのかを記録します。 「[理由]により、[変更]によって[指標]が改善すると考えます。」

2. 設計:

  • バリエーションを定義する
  • サンプルサイズと期間を設定する
  • 指標を選択する

3. 開始:

  • バリエーションを実装する
  • 追跡を開始する
  • 問題がないかモニタリングする

4. 分析:

  • 有意性が得られるまで待つ
  • 副次指標を確認する
  • セグメントごとの効果を調べる

5. 決定:

  • 勝者を実装する
  • 得られた知見を記録する
  • 次のテストを計画する
テストのドキュメント化
Test Name: Opening Message Greeting Style
Test ID: T-2024-001
Status: Running

Hypothesis:
A casual greeting will increase response rate because
it feels more human and less corporate.

Variants:
- Control (50%): "Hello! Thanks for reaching out..."
- Variant A (50%): "Hey there! Great to hear from you..."

Primary Metric: Response rate
Secondary Metrics: Sentiment, conversion rate
Sample Size Target: 1,000 per variant
Duration: 2 weeks or until significant

Results:
[To be completed]
テストカレンダー

常に用意しておくもの:

  • 実施中のテスト
  • 次に予定しているテスト
  • アイデアのバックログ

避けること:

  • 一度に多くの項目をテストしすぎる
  • 同じメッセージでテストを重複させる
  • 異常な状況下でテストする

高度なテスト

多腕バンディット

コンセプト: 成果の良いバリアントに、より多くのトラフィックを動的に割り当てます。

メリット:

  • 最適化を迅速に進められる
  • 無駄が少ない(成果の低いバリアントに表示される回数が減る)
  • 継続的に最適化できる

トレードオフ:

  • 統計的な厳密さが低下する
  • 分析が難しくなる
  • 長期的な効果を見落とす可能性がある

次の場合に使用します:

  • トラフィック量が多い
  • スピードが重要
  • コンバージョンの指標が明確
パーソナライズドテスト

コンセプト: セグメントごとに効果的なメッセージは異なります。

実施方法:

  • セグメント内でテストする
  • セグメントごとの相互作用を分析する
  • セグメント別の勝ちパターンを導入する

例:

  • エンタープライズではメッセージ A が優勢
  • SMB ではメッセージ B が優勢
  • 適切な対象に絞って両方を導入する
シーケンシャルテスト

コンセプト: 段階的にテストし、成果の低いものを早期に除外します。

手順:

  1. 4 つのバリアントをそれぞれ 25% でテストする
  2. 下位 2 つを除外する
  3. 残った 2 つをそれぞれ 50% でテストする
  4. 勝者を導入する

成功の測定

主要指標

応答率: 返信があったメッセージの割合

コンバージョン率: 目標とするアクション(面談の予約、条件への適合など)を完了した割合

エンゲージメント率: 会話の継続率と離脱率

副次指標

感情: 肯定的/否定的な反応

会話の長さ: エンゲージメントの深さ

コンバージョンまでの時間: ファネルを進む速さ

ガードレール指標

配信停止率: 相手に迷惑をかけていないか

苦情率: 否定的なフィードバック

ブランドイメージ: ブランドを損なっていないか


よくあるテストの失敗

1. 早期に終了する

問題: 統計的有意性に達する前に勝者を決めてしまう
対策: 開始前にサンプルサイズを決めておく

2. 変数をテストしすぎる

問題: 何が変化の原因だったのか特定できない
対策: 1 回のテストにつき変数は 1 つにする

3. 仮説がない

問題: 学びのないまま、行き当たりばったりにテストしてしまう
対策: 仮説とその根拠を記録する

4. セグメントを無視する

問題: 平均値によってセグメントごとの差が隠れてしまう
対策: セグメント別に分析する

5. 勝者を導入しない

問題: テストを実施しても、結果に基づいて行動しない
対策: テスト前に導入計画を立てておく

6. 新奇性効果

問題: 新しいものが当初は優勢でも、その後効果が薄れる
対策: 十分な期間テストし、導入後もモニタリングする


セールスボットのテストアイデア

最初のメッセージ
  • フォーマルな挨拶とカジュアルな挨拶
  • 質問形式と断定形式の冒頭
  • パーソナライズした紹介と一般的な紹介
  • 短い紹介と詳細な紹介
条件確認の質問
  • 直接的な質問と控えめな質問
  • 単一選択と複数選択
  • 質問の順序
  • 質問の数
価値提案
  • メリット重視と機能重視
  • 具体的な数値と定性的な表現
  • ソーシャルプルーフを含めるかどうか
  • 顧客のコメント
CTA
  • 「電話を予約する」と「詳細を見る」
  • 時間を具体的に指定するか、自由に選べるようにするか
  • CTA を 1 つにするか、選択肢を設けるか
  • 緊急性を持たせるかどうか

確認すべき質問

さらに詳しい情報が必要な場合:

  1. テストに利用できる会話量はどのくらいですか?
  2. 成果が低いと思われるメッセージは何ですか?
  3. どの指標を改善しようとしていますか?
  4. これまでにどのようなテストを実施しましたか?
  5. テストに利用できるツールやインフラはありますか?

関連スキル

  • conversational-flow-management:テストする内容
  • performance-analytics:結果の測定
  • personalization-at-scale:セグメント別のテスト
  • ab-test-setup:A/B テストの一般原則

コメント