問い合わせメール100通を3分で自動分類|Claude Codeで作るAIアプリ

Claude Code

※当サイトの記事には、アフィリエイト広告(PR)を含みます。

📖 約8分で読めます | 🆓 デモモード搭載 (APIキー不要)

朝7時、メーラーを開くと未読メールが100通溜まっている。
見積依頼か、納期確認か、クレームか、新規取引相談か。
1通ずつ件名と本文を読んで担当者に振り分ける作業に、毎日30分が消えていた。

今回作ったのは「問い合わせメールを6カテゴリに自動分類してくれるアプリ」。
1通ずつでも、CSV一括でもOK。緊急度と推奨担当まで判定して、結果はCSVで出力できる。
コードは Python 約200行、Claude Code に話しかけて 10分で作った。

📦 コード一式は GitHub で公開準備中 (MITライセンス予定)

この記事で得られること

  • ✅ 問い合わせメールを6カテゴリに自動分類するアプリの実装手順
  • ✅ Claude API で構造化出力 (JSON) を安定させるプロンプト設計
  • ✅ Streamlit のタブUIで「単一処理」と「CSV一括」を1画面に
  • ✅ デモモードでAPIキーなしで読者も試せる設計パターン
  • ✅ 緊急度判定 + 推奨担当のロジック付与方法

Claude Code とは (30秒で説明)

ターミナルで claude と打つだけで起動する、Anthropic公式のAIコーディングアシスタント。
日本語で「○○のアプリ作って」と話しかけると、フォルダ構造の設計・ファイル生成・コード実装・README執筆まで一気通貫で処理する。

  • 料金: Claude Pro ($20/月) または Max プラン
  • 動作環境: ターミナル (Windows / Mac / Linux) + VS Code 拡張
  • 強み: ローカルファイル操作権限を持つ「同僚」として動く

関連記事の発注メール→発注書AIと同じパイプラインで作っているので、メール処理AIの応用編として読んでもらえる。


問い合わせメール振り分け、何がそんなに大変なのか

朝のメール振り分け作業の負担

製造業の事務作業で見落とされがちなのが、問い合わせメールの一次振り分け

取引先からのメールはバリエーションが多い:

  • 部品Aの追加見積もりお願いします」 → 営業へ
  • 先日の納品分に変形があります」 → 品質保証へ (しかも緊急)
  • 5/30の納期確認」 → 製造管理へ
  • 新規取引のご相談」 → 営業の新規開拓担当へ
  • 前回の納期遅延について」 → 上長へエスカレ
  • カタログ請求」 → 総務へ

これを件名と本文を読みながら振り分ける。問題は3つある:

  1. 件名だけでは判断できない ことが多い (「お問い合わせ」「ご相談」だけのタイトル)
  2. 緊急度の判定が個人差ある (不良品連絡を「通常」に分類してしまい翌日対応 → クレーム発展)
  3. 担当者のキャパで偏る (営業に集中すると見積が滞留)

朝の30分が消える上に、振り分けミスが後工程の遅延につながる。AIに任せられないか、というのが今回のテーマ。


完成したアプリ

streamlit run app.py で起動するWebアプリ。タブが2つある。

タブ1: 単一メール分類

┌──────────────────────────────────────┐
│ 📬 問い合わせメール仕分けAI            │
├──────────────────────────────────────┤
│ [📝 単一メール] [📂 CSV一括]          │
│                                      │
│  📝 件名: [部品Aの追加見積依頼      ] │
│  ✉️ 本文: ┌──────────────────────┐ │
│           │ ○○工業の山田です...  │ │
│           └──────────────────────┘ │
│           [🤖 分類する]              │
│                                      │
│  ✅ 分類: 見積依頼                    │
│  ✅ 緊急度: 通常                      │
│  ✅ 推奨担当: 営業                    │
│  📝 要約: 部品Aの追加発注見積依頼    │
└──────────────────────────────────────┘

タブ2: CSV一括

数十〜数百件の問い合わせを一括処理して、結果をCSVダウンロード。
分類ごとの棒グラフと緊急件数アラートが付く。


Claude Code への指示文 (これだけ)

Claude Codeに日本語で指示するだけ

ターミナルで claude を起動して、こう打ち込んだだけ。

問い合わせメールを6カテゴリに自動分類するStreamlitアプリを作って。

カテゴリ: 見積依頼 / 納期確認 / クレーム / 新規取引相談 / 不良品連絡 / その他

機能:
- タブ1: 単一メール (件名+本文を貼り付け → 分類+緊急度+推奨担当+要約を返す)
- タブ2: CSV一括 (件名と本文の2列CSV → 一括分類 → 結果CSVダウンロード)
- 緊急度: 緊急/通常/低 を判定
- 推奨担当はカテゴリから自動マッピング
- デモモード搭載 (APIキーなしで動かせる)

LLM: Anthropic Claude (claude-sonnet-4-6)
.env でAPIキー管理

待ち時間2〜3分。
プロジェクトフォルダ・app.pyrequirements.txtREADME.md・サンプルCSV まで全部生成された。


生成されたコード (中核80行)

Claude Code が出してきたコードのキモ。

import os
import json
import anthropic
import pandas as pd
import streamlit as st
from dotenv import load_dotenv

load_dotenv(override=True)
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

CATEGORIES = ["見積依頼", "納期確認", "クレーム",
              "新規取引相談", "不良品連絡", "その他"]
ASSIGNEES = {
    "見積依頼": "営業",
    "納期確認": "製造管理",
    "クレーム": "上長エスカレ",
    "新規取引相談": "営業 + 新規開拓",
    "不良品連絡": "品質保証 (緊急)",
    "その他": "総務",
}


def classify_email(subject: str, body: str) -> dict:
    prompt = f"""次の問い合わせメールを分類してください。

カテゴリ (必ずこの中から1つ): {' / '.join(CATEGORIES)}
緊急度 (必ずこの中から1つ): 緊急 / 通常 / 低
要約: 30〜50字で要点を抽出

メール件名:
{subject}

メール本文:
---
{body}
---

以下のJSONのみで返答してください:
{{"分類": "...", "緊急度": "...", "要約": "..."}}
"""
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=512,
        messages=[{"role": "user", "content": prompt}],
    )
    result = json.loads(response.content[0].text.strip())
    result["推奨担当"] = ASSIGNEES.get(result["分類"], "総務")
    return result

ポイント:
カテゴリと緊急度を必ずリストから選ばせることで、自由生成を抑止
要約は字数指定で長くなりすぎないよう制御
JSONのみで返させ、コードブロック装飾を後処理で除去
推奨担当はマッピングで自動付与 (Claudeに判定させるとブレる)

200行ある全体コードは GitHub で公開している。


Claude を採用した理由

Claude vs ChatGPT の比較

問い合わせメール分類タスクで一番難しいのは「緊急度の判定」。
言外のニュアンス (「先日納品」「お早めに」のような曖昧表現) を汲んで「緊急」と判定できるか。
ここで Claude の日本語文脈理解の強さが効いた。

実際テストすると、「先日納品の部品Bに変形あり」というメール本文に「至急」も「緊急」も書かれていないのに、Claude は 緊急 と判定する。「変形」「生産影響」というキーワードと文体のニュアンスから判断している。

構造化 JSON 出力の安定性も決め手のひとつ。指定したスキーマ通りのキー名で返ってくるので、後処理がほぼ不要だった。

そして何より、コーディング工程まるごと Claude Code に巻き取れるのが最大の利点。今回のアプリも、日本語で話しかけるだけで200行のコードと README が同時に生まれた。実装スピードがそのまま事業スピードになる。

💡 製造業向け AI ツール選定をもっと知りたい方へ
製造業現場のAI比較記事


実測: before / after

振り分け30分が3分に短縮
項目 手作業 (想定) このアプリ
100通の振り分け時間 約30分 約3分 (CSV一括)
緊急案件の取りこぼし 月1〜2件 (想定) 0件 (緊急タグで即可視化)
担当者の偏り あり (営業に集中等) カテゴリ分散で把握
開発工数 10分 (Claude Codeに指示)
月額API費用 (想定) 約 ¥1,000〜2,000 (1日100通×営業日)

「30分→3分」が一番派手な数字だが、取りこぼし0 が現場には効く。
不良品連絡を「通常」と判定して翌日対応 → 顧客クレーム発展、というよくある事故が消える。


デモモード搭載: APIキーなしで試せる

APIキーなしで試せるデモモード

第1号と同じく、コードには DEMO_MODE を組み込んでいる。

API_KEY = os.environ.get("ANTHROPIC_API_KEY", "")
DEMO_MODE = (not API_KEY) or ("dummy" in API_KEY.lower())

def classify_email(subject, body):
    if DEMO_MODE:
        return _keyword_classify(subject, body)  # キーワード分類
    # 通常モード: Claude API 呼び出し
    ...

デモモードでは「不良」「変形」が含まれていれば不良品連絡、「見積」が含まれれば見積依頼、と単純なキーワード分類で動く。
精度は低いが「UIの流れ」と「出力フォーマット」を確認できる。

APIキーを .env に入れた瞬間、本物の Claude 分類に切り替わる。


注意点 5つ

1. AI分類は補助、最終判断は人間

「緊急」と判定されたメールは必ず人間が再確認すること。誤判定で対応漏れになるより、誤検知で1秒確認する方がコストが低い。

2. 顧客データの送信に注意

メール本文を Anthropic API に送信する。
Anthropic はデフォルトで入力データを学習に使わないが、社内のセキュリティ規程・取引先との合意は別途確認すること。

3. APIキーは絶対に Git に上げない

.gitignore.env を入れてあるが、念のため git status で確認してからコミット。漏れたら課金事故になる。

4. カテゴリは6つに絞ったほうがいい

「営業」を「新規」「既存」「代理店」と細分化すると分類精度が落ちる。6カテゴリくらいが Claude にも判定しやすく、運用上も覚えやすい

5. 自社特有のカテゴリ追加は学習データ要

「装置メンテ依頼」のような自社固有の問い合わせを新カテゴリで追加するなら、5〜10件のサンプル例を prompt に含めて Few-shot にすると精度が上がる。


次の一歩

Gmail / Slack / CRM など連携先

このアプリは「分類」までだが、ここから先は連携の世界。

  • Gmail / Outlook API 連携: 受信メールを自動取得 → 分類 → 担当者にSlack通知
  • CRM連携: 分類結果を Salesforce / HubSpot に自動記録
  • RAG導入: 取引先ごとの過去履歴を参照して「いつもの○○さんからの問い合わせ」を識別
  • 返信ドラフト生成: 分類後、カテゴリに応じた返信文を Claude に書かせる
  • 音声入力: 電話問い合わせを Whisper でテキスト化 → 同じパイプライン
  • ダッシュボード化: Streamlit に集計画面追加 → 月次レポート自動化

📚 AI導入を体系的に学びたい方へ
中小製造業のAI導入ロードマップ: 失敗しない始め方


FAQ

Q1. プログラミング未経験でも作れる?

A. Claude Code は日本語で話しかけるだけなので、コードを1行も書かずに完成する。本記事のコードはあくまで「Claude Code が生成したもの」を抜粋している。

Q2. 月間コストはどれくらい?

A. 1日100通 × 営業日20日 = 月2,000通の処理で、claude-sonnet-4-6 の場合 約 ¥1,000〜2,000/月 (想定)。デモモードは無料。

Q3. 既存のメーラー (Outlook/Gmail) に組み込める?

A. このアプリ単体ではテキスト貼付 or CSV だが、Gmail API / Outlook Graph API と組み合わせれば受信メールの自動取り込みも可能。

Q4. CSVが日本語で文字化けする

A. CSVは UTF-8 (BOM付き推奨) で保存。Excel で開く場合は「データ → テキストから」でUTF-8を指定する。

Q5. 商用利用は OK?

A. コードは MITライセンス で公開。商用利用・改変・再配布すべて自由。ただし AI 分類結果の責任は利用者にある (最終判断は人間が担う前提)。


まとめ

朝30分の振り分け作業
    ↓ Claude Codeに10分相談
仕分けAIアプリ (Python 200行)
    ↓ 1日100通を処理
作業時間 3分 / 緊急取りこぼし 0件 / 月額API ¥1,500

問い合わせメールの一次振り分けは、AIに任せて人間は判断業務に専念する時代。
まずはデモモードでUIを試して、感触がよければ自社の問い合わせメール5件で本物のClaudeを動かしてみてください。


📦 ソースコード

GitHub 公開準備中 (MITライセンス予定)。準備完了次第、本記事に URL を追記します。

関連記事


免責事項

本記事の数値は想定値および実測値の混在です。導入効果は環境により異なります。
Claude API への送信内容はユーザー責任で管理してください。


更新情報

製造AIラボでは「中小製造業のためのAI活用事例」を不定期更新中。
ブックマークやRSSで定期的にチェックしてもらえれば嬉しい。


🎯 ChatGPT/Claude/Geminiを社内で使いこなすなら

ChatGPT・Claude・Gemini・Copilot・Difyを横断的に学べる「学び放題」が、現場での再現性が一番高いと感じています。月額¥14,800・縛り無し・合わなければ翌月解約OK。

期間限定:豪華7大特典つきキャンペーン中

月額16,280円で生成AIを好きなだけ学べる!「DMM 生成AI CAMP 学び放題」

※「合わない」と感じたらマイページから翌月解約OK・しつこい勧誘なし


🥷 Claude Code を本気で社内導入するなら

「自社の業務を Claude Code で自動化したいが何から手をつけるか分からない」中小製造業向けの伴走型トレーニング AI鬼管理無料の業務効率化診断 (オンライン面談) で、自社のどこから自動化できるかが見える化される。

AI鬼管理 | Claude Code活用の業務自動化トレーニング 無料診断を予約する

※公式LINE経由でも申込可・診断のみで無理な勧誘なし


🖥️ Claude Codeで作ったアプリを本格運用するなら

Streamlit/FastAPI/n8n/Difyなどを自由に立てて試したい開発・テスト用途には ConoHa VPSが最適。1.3円/時間〜でroot権限OK・最低利用期間なし・必要な間だけ起動して停止OK。

VPSで色々なことを試したいなら【ConoHa VPS】がお薦め!

※時間課金プランなら検証だけで停止すれば数十円で完結

コメント

タイトルとURLをコピーしました