Media > AI活用ユースケース > カスタマーサポート > 問い合わせ内容からFAQの不足テーマを洗い出す

問い合わせ内容からFAQの不足テーマを洗い出す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

1か月分の問い合わせ(4,400件)を入力に、「同じことを聞いている問い合わせ」をまとめて論点の単位にし、件数の多い順に並べます。 さらに、各論点について既存のFAQでカバーされているかを判定します。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Power Automate/Python
対象業界
EC/IT・SaaS/人材/小売
対象部門
カスタマーサポート/マーケティング
対象業務
集計・分析
主な課題
データ分析に時間がかかる/判断に時間がかかる/問い合わせが多い
AIで行う処理
分類
主な効果
品質標準化/工数削減/機会損失防止
導入難易度
★★☆☆☆
実装レベル
最小構成
費用感
既存ツールのみ(小)
人間の確認
必須
現在工数
14.7h/月
AI導入後
4.9h/月
想定削減
67%
年間削減
117h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 四半期末に、分析担当が問い合わせデータをCSVで書き出す
  2. 全件は読めないので、200件をサンプリングする
  3. 1件ずつ読み、Excelに「テーマ」を手で書き込む
  4. テーマごとに件数を数える
  5. 上位のテーマについて、既存FAQを検索して該当項目があるか確認する
  6. FAQ整備の提案をまとめる
  7. 提案の半分は、他業務に押されて実行されない
導入後(After)
  1. 自動月初に、前月の問い合わせデータを取得する
  2. 自動各問い合わせから「顧客が何を知りたかったか」を1文で抽出する
  3. 自動似た論点をまとめて、テーマの単位にする
  4. 自動テーマごとの件数を集計する
  5. 自動各テーマについて、既存FAQでカバーされているかを判定する
  6. 自動カバー状況を3つに分ける(FAQなし/FAQあり・見つけにくい/FAQあり・内容不足)
  7. サポート責任者が結果を確認し、整備の優先順位を決める
  8. FAQを作成・改訂する
  9. 自動翌月、そのテーマの件数が減ったかを追跡する
各工程の詳しい説明を読む
  1. 四半期末に、分析担当が問い合わせデータをCSVで書き出す
  2. 全件は読めないので、200件をサンプリングする
  3. 1件ずつ読み、Excelに「テーマ」を手で書き込む
  4. テーマごとに件数を数える
  5. 上位のテーマについて、既存FAQを検索して該当項目があるか確認する
  6. FAQ整備の提案をまとめる
  7. 提案の半分は、他業務に押されて実行されない

問題は4つあります。

(a)サンプリングなので少数のテーマが見えない。 200件のサンプルでは、月20件程度のテーマは1〜2件しか現れず、傾向として認識されません。

(b)四半期に1回では遅い。 新機能のリリース後に問い合わせが急増しても、気づくのは3か月後です。

(c)テーマの粒度がぶれる。 「ログイン関連」とまとめる人と、「パスワード忘れ」「二段階認証エラー」と分ける人がいます。前回の分析と比較できません。

(d)「FAQはあるが見つからない」問題が見えない。 FAQに書いてあるのに問い合わせが来る場合、FAQの内容ではなく、タイトルや導線に問題があります。これを区別できていません。

  1. 【自動】 月初に、前月の問い合わせデータを取得する
  2. 【自動】 各問い合わせから「顧客が何を知りたかったか」を1文で抽出する
  3. 【自動】 似た論点をまとめて、テーマの単位にする
  4. 【自動】 テーマごとの件数を集計する
  5. 【自動】 各テーマについて、既存FAQでカバーされているかを判定する
  6. 【自動】 カバー状況を3つに分ける(FAQなし/FAQあり・見つけにくい/FAQあり・内容不足)
  7. 【人】 サポート責任者が結果を確認し、整備の優先順位を決める
  8. 【人】 FAQを作成・改訂する
  9. 【自動】 翌月、そのテーマの件数が減ったかを追跡する

自動化されるのは「読む」「まとめる」「数える」「FAQと突き合わせる」の4つです。

9の追跡が、この構成でもっとも価値のある部分です。 FAQを作った結果、実際に問い合わせが減ったかが分かります。減っていなければ、FAQの場所か書き方に問題があると判断できます。

02今回想定するシステム構成

構成図
問い合わせ管理システム
   │
   ▼【トリガー】毎月1日
処理(Python / Google Apps Script)
   │
   ├──▶ 前月の問い合わせを取得(4,400件)
   ├──▶ 顧客情報のマスキング
   │
   ▼
LLM API 【第1段】── 各問い合わせから「知りたかったこと」を1文抽出
   │
   ▼
クラスタリング(埋め込みベクトルによる類似度でまとめる)
   │  ※ここはLLMではなく、埋め込みモデル+クラスタリング
   │
   ▼
LLM API 【第2段】── 各クラスタにテーマ名を付ける
   │
   ▼
既存FAQとの突合(埋め込みベクトルの類似度)
   │
   ▼
LLM API 【第3段】── カバー状況の判定と、不足内容の指摘
   │
   ▼
月次レポート(スプレッドシート)──【責任者が確認】
役割想定する製品代替候補
処理PythonGoogle Apps Script、Power Automate
埋め込み各社の埋め込みモデルAPIオープンソースの埋め込みモデル
生成AIClaude APIOpenAI API、Gemini API
出力先GoogleスプレッドシートExcel、Looker Studio

3段階に分けている理由は、費用と精度の両立です。 4,400件を1回のLLM呼び出しで扱うことはできません。第1段で各件を短い文に圧縮し、クラスタリングで機械的にまとめてから、第2段・第3段では数十のクラスタだけを扱います。

問い合わせ管理SaaSに傾向分析機能が付いている場合があります。まずそれを確認してください。 ただし、多くは「カテゴリ別の件数」までで、「既存FAQでカバーされているか」までは判定しません。 その差が必要かどうかで判断します。

03どうやって実装するのか

Step1

処理の起点を決める

毎月1日の時刻起動にします。

リアルタイム処理は不要です。ただし、新機能のリリース直後は週次で回すことを勧めます。 リリースによる問い合わせ急増を早く捉えるためです。

Step2

入力データを集める

データ中身取得元
問い合わせ本文件名と本文問い合わせ管理システム
問い合わせ日時傾向の変化を見るため同上
対応結果解決/エスカレーション/未解決同上
既存FAQ300件の質問と回答FAQ管理
前月の分析結果テーマごとの件数(比較用)前回の処理結果
リリース履歴いつ何をリリースしたか開発部門

リリース履歴を渡すことが効きます。 「新機能Xのリリース後、そのテーマの問い合わせが月0件から月60件に増えた」という因果が見えます。

Step3

データの取得方法を決める

問い合わせ本文: 問い合わせ管理システムのAPI、またはCSVエクスポートで取得します。月1回の処理なので、CSVの手動エクスポートでも運用に支障はありません。

既存FAQ: FAQ管理システム、または社内Wikiから取得します。

Step4

AIへ渡す前に整形する

  1. 顧客情報のマスキング … 社名、氏名、メールアドレス、契約番号を伏せます。この分析に顧客の特定は不要です
  2. 引用・署名の除去 … 過去のやり取りの引用を落とします
  3. 対象の絞り込み … 営業問い合わせ、スパム、資料請求を除外します。FAQで解決すべき問い合わせだけを対象にします
  4. 文字数の制限 … 本文が長い場合、先頭500字に切ります。顧客は冒頭で用件を書くことが多いためです
Step5

AIに処理させる

3段階に分けます。

第1段:各問い合わせから「知りたかったこと」を1文で抽出

4,400件それぞれに対して実行します。出力は1文(30字程度)なので、軽量なモデルで足ります。

クラスタリング:LLMではなく埋め込みベクトル

抽出した1文を埋め込みベクトルに変換し、類似度でまとめます。ここをLLMにやらせないでください。 4,400件の類似判定をLLMで行うのは費用と時間の無駄で、精度も安定しません。

クラスタ数は自動で決めるより、「件数が10件以上のクラスタ」という条件で切るほうが実用的です。 月10件未満のテーマは、FAQを作る優先度が低いためです。

第2段:各クラスタにテーマ名を付ける

クラスタに含まれる代表的な問い合わせを渡し、テーマ名を付けさせます。数十クラスタなので、処理は軽くなります。

第3段:既存FAQとの突合とカバー状況の判定

各テーマについて、埋め込み類似度で近いFAQを検索し、そのFAQが本当にそのテーマに答えているかを判定させます。

Step6

指示内容を固定する

第1段(各問い合わせの要約):

以下の問い合わせについて、顧客が知りたかったことを1文(30字以内)で書いてください。

【厳守事項】
- 顧客の言葉ではなく、質問の内容を書いてください。
  (「困っています」ではなく「通知メールが届かない原因」)
- 問い合わせに書かれていない事柄を補わないでください。
- 用件が複数ある場合、主たる用件を1つだけ書いてください。
- 判別できない場合は「判別不能」と書いてください。

【問い合わせ】
{inquiry}

第3段(FAQとの突合):

あなたはFAQの整備を検討する担当者です。
以下のテーマについて、既存FAQでカバーされているかを判定してください。

【厳守事項】
- 判定は次の4つから選んでください。
  covered: FAQに該当項目があり、内容も十分
  hard_to_find: FAQに該当項目があるが、タイトルや表現が
                問い合わせの言葉と異なり、検索で見つけにくい
  insufficient: FAQに該当項目があるが、内容が問い合わせに答えていない
  missing: FAQに該当項目がない
- hard_to_find と判定する場合、
  問い合わせで使われている言葉と、FAQのタイトルの違いを具体的に書いてください。
- insufficient と判定する場合、FAQに不足している内容を具体的に書いてください。
- FAQの内容を評価する際、そのFAQに書かれていることだけを見てください。
  一般的にどうあるべきかで判断しないでください。
- 新しいFAQの本文を書かないでください。判定と指摘までです。

【テーマ】{theme_name}(件数: {count}件)

【このテーマの代表的な問い合わせ(5件)】
{sample_inquiries}

【類似度の高い既存FAQ(上位3件)】
{candidate_faqs}

hard_to_find という判定を設けていることが、この構成の要点です。

FAQに書いてあるのに問い合わせが来る場合、原因は2つあります。内容が不十分か、見つけられないかです。この2つで打ち手がまったく違います。 前者はFAQの書き直し、後者はタイトルの変更や検索キーワードの追加です。

多くの企業が「FAQを増やす」ことで解決しようとしますが、実際には既存FAQが見つかっていないだけということがよくあります。

Step7

出力形式を固定する

{
  "period": "2026-08",
  "total_inquiries": 4400,
  "themes": [
    {
      "theme_name": "",
      "count": 0,
      "share": 0.0,
      "prev_month_count": 0,
      "change": 0,
      "coverage": "covered | hard_to_find | insufficient | missing",
      "related_faq_id": "",
      "gap_note": "",
      "sample_inquiries": [],
      "possible_cause": ""
    }
  ],
  "new_themes": [],
  "resolved_themes": [],
  "unclassified_count": 0
}
  • new_themes … 前月になかったテーマ。リリース直後の問題を捉えるために重要です
  • resolved_themes … 前月あって今月消えたテーマ。FAQ整備の効果測定に使います
  • possible_cause … リリース履歴と照らして、原因が推定できる場合。推定であることを明示させます
Step8

システムへ連携する

月次レポートをスプレッドシートに出力します。列は「テーマ/件数/前月比/カバー状況/該当FAQ/不足内容/代表的な問い合わせ」とします。

FAQ管理システムへの自動登録はしません。 FAQの作成は人の作業です。この構成は、どのFAQを作るべきかの優先順位を示すまでです。

ただし、hard_to_find と判定されたFAQについては、改善の提案(タイトルの候補、追加すべき検索キーワード)を添えると、実行されやすくなります。

Step9

人が確認する

全件、人が確認します。 ただし、確認するのは「テーマの単位」であり、個々の問い合わせではありません。数十テーマなので、30分程度で確認できます。

確認の観点は3つです。

  1. テーマのまとめ方が妥当か … 別のテーマが一緒にまとめられていないか、逆に同じテーマが分かれていないか
  2. カバー状況の判定が正しいか … 特に covered と判定されたテーマに、本当にFAQが対応しているか
  3. 優先順位の決定 … 件数だけでなく、FAQを作る手間と効果を踏まえて決めます

AIの出力をそのままFAQ整備計画にしないでください。 件数が多いテーマでも、FAQで解決できないもの(個別の設定に依存する質問など)があります。

Step10

例外に対処する

起きること対応
クラスタリングの粒度が粗すぎる/細かすぎる類似度のしきい値を調整する。最初の数回は人が見ながら調整する
どのクラスタにも入らない問い合わせunclassified_count として記録する。この数が多いなら、問い合わせが多様すぎてFAQ化に向かない可能性がある
第1段で「判別不能」が多い問い合わせ本文が短すぎるか、前処理で必要な情報を落としている
前月のテーマと対応づかないテーマ名が毎月変わると比較できない。確定したテーマ名を辞書として持ち、翌月はそれに寄せる
新機能リリース直後で件数が急増new_themes として検出する。週次処理に切り替えることを検討する
FAQが1件も存在しない分野missing として正常に処理される
個人情報がマスキングされずに残る前処理を必ず通す。出力の sample_inquiries にも社名・氏名が入らないよう確認する
Step11

記録を残す

  • 各月の分析結果(テーマと件数)
  • 確定したテーマ名の辞書
  • FAQ整備の実施記録(いつ、どのFAQを作ったか)
  • 整備後のテーマ別件数の推移

最後が、この構成の成果指標です。 「通知メールが届かない」のFAQを作った翌月、そのテーマの問い合わせが182件から120件に減ったなら、月62件の削減です。減っていなければ、FAQの内容か置き場所に問題があります。

04実装レベルの3段階

最小構成:300件をチャットAIに貼ってまとめさせる / テーマの抽出
半自動化:CSVエクスポート → スクリプトで全件処理 → テーマと件数を出力 / 全件の分析
本格構成:上記+既存FAQとの突合+前月比較+整備効果の追跡 / 優先順位づけと効果測定

本格構成まで進む価値がありますが、実装は軽い部類です。 月1回のバッチ処理で、外部システムへの書き戻しもありません。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
1 名
月間件数
4,400 件
1件あたり現在時間
0.2 分
1件あたり導入後時間
0.1 分
現在  4,400件 × 0.2分 ÷ 60 = 14.7 時間/月
導入後 4,400件 × 0.1分 ÷ 60 = 4.9 時間/月
月間削減時間
9.8h
削減率
67%
年間削減時間
117h
年間金額換算(時間単価3,500円)
41万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 問い合わせが月1,000件以上あり、FAQが100件以上ある組織。FAQ整備の優先順位を決めかねている場合。
向いていない
  1. 問い合わせが月200件未満で、傾向を目視で把握できる場合。FAQを持たない組織(まずFAQの新規作成が先)。

07最小構成で試す方法

この業務は、最小構成でも十分に価値が出ます。

  1. 前月の問い合わせから300件をランダムに抽出する
  2. 顧客名・社名を伏せる(一括置換で構いません)
  3. ChatGPT、Claude、Gemini などのチャット画面に、300件を50件ずつ貼る
  4. 「これらの問い合わせを、内容が似ているものごとにまとめて、テーマ名と件数を出してください」と指示する
  5. 出てきたテーマ上位10件について、既存FAQを自分で検索して確認する

300件でも、上位テーマは十分に見えます。 現状のサンプリング200件より多く、しかも読む時間はゼロです。

この検証だけで、「FAQに書いてあるのに問い合わせが来ているテーマ」がいくつか見つかるはずです。 それが見つかれば、この構成には価値があります。

08実装時につまずきやすいポイント

問題対策
クラスタリングをLLMにやらせて費用と時間がかかる埋め込みベクトルの類似度で機械的にまとめる
テーマ名が毎月変わって比較できない確定したテーマ名の辞書を持ち、翌月はそれに寄せる
クラスタの粒度が合わないしきい値を調整する。最初の3か月は人が見ながら決める
「FAQあり」と判定されたが実は答えていないinsufficientcovered を分ける。判定を人が確認する
FAQを増やすことだけを考えてしまうhard_to_find の判定を必ず入れる。タイトル変更だけで解決することがある
個人情報が sample_inquiries に残るマスキングを前処理と出力の両方で確認する
分析結果が計画に反映されない上位3テーマだけに絞って提案する。20テーマを並べると実行されない
整備の効果を測っていない翌月のテーマ別件数を必ず追跡する。これがないと改善が続かない
営業問い合わせやスパムが混ざる前処理で除外する

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 問い合わせ内容(マスキング後)、既存FAQ。扱うデータの機微性は、この20件の中では低い部類です。

  1. マスキングの徹底 … 分析に顧客の特定は不要です。社名、氏名、メールアドレス、契約番号を前処理で伏せてください。 出力の sample_inquiries にも残らないよう、二重に確認します
  2. 問い合わせ内容の機密性 … BtoBの場合、問い合わせに顧客のシステム構成が含まれることがあります。マスキングでは消えない情報もあるため、外部AIへの入力可否を自社の情報管理規程で確認してください
  3. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  4. 分析結果の扱い … 「どのテーマの問い合わせが多いか」は、自社製品の弱点を示す情報です。社外に出さないでください
  5. 自動実行してよい範囲 … 分析と提案までです。FAQの自動生成・自動公開をしないでください。 FAQは顧客が読む公開情報であり、内容の責任は自社が負います

10まず何から始めるか

1週目:300件で試す

最小構成(§8)で、前月の問い合わせ300件をまとめさせます。上位10テーマを見て、そのうち何件が「FAQに書いてあるのに問い合わせが来ている」ものかを確認してください。

ここで1つでも見つかれば、FAQを新規作成せずに問い合わせを減らせる余地があるということです。 それが、この構成を進める根拠になります。

2週目:hard_to_find を1つ直す

見つかった「FAQはあるが見つけにくい」テーマについて、FAQのタイトルを問い合わせの言葉に合わせて変更します。 「認証情報の更新について」を「パスワードを変更したい」に変える、といった変更です。

翌月、そのテーマの問い合わせ件数が減るかを見てください。 減れば、この構成の効果が実証されます。費用はゼロです。

3〜5週目:半自動化を作る

CSVエクスポート → 全件の要約 → クラスタリング → テーマ集計までを作ります。クラスタリングの粒度を人が見ながら調整します。

2〜3か月目: 既存FAQとの突合と、前月比較を追加します。テーマ名の辞書を作り、月次で比較できるようにします。

その後: 毎月、上位3テーマだけを整備の対象とし、翌月の件数変化を追跡します。20テーマを並べた計画を作らないでください。実行されません。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-02/最終更新:2026-09-08
確認した内容情報源確認日
Claude APIのStructured Outputs(JSON Schemaによる出力形式の固定、enumによる値の制限)Anthropic: Structured outputs2026-09-02

埋め込みモデルによるクラスタリングは一般的な手法ですが、適切なしきい値は対象データによって異なります。自社の問い合わせデータで調整が必要です。 問い合わせ管理システムからのデータエクスポート方法も製品によって異なります。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0020)についてのご相談はこちらから。

AI活用について相談する
目次