Claude APIで問い合わせ自動返信botを作る方法
Discord×AI実践ガイド

実践ガイドAI活用

前回の記事では、 問い合わせフォームからDiscordに自動通知する仕組みを作りました。
今回はその続編として、届いた問い合わせにClaude API(AI)で自動返信する機能を追加します。 お客様を待たせず、24時間即座に一次返信できる仕組みです。

⏱ 読了時間:約12分 | 実装時間:約45分 | 前提:前回の記事の実装済み環境

1. なぜ自動返信が必要なのか?

問い合わせへの返信速度は、成約率に直結します。

📊 衝撃のデータ

78%の顧客は「最初に返信してきた企業」から購入する(Lead Connect調査)
5分以内に返信すると、30分後に返信した場合と比べて成約率が21倍(InsideSales.com)
50%以上の問い合わせは営業時間外に届く

つまり、夜中でも休日でも即座に返信できる仕組みがあれば、 それだけで競合に差をつけられます。人を雇わなくても、AIなら24時間対応可能です。

💡 ここで作るもの: 問い合わせが届いたら、AIが内容を読み取って 「ご連絡ありがとうございます。〇〇についてですね。担当より改めてご連絡いたします」 というパーソナライズされた一次返信を自動で送るシステムです。

2. 仕組みの全体像

┌──────────┐  POST  ┌──────────┐ Webhook ┌──────────┐
│ フォーム  │ ────> │ API Route│ ──────> │ Discord  │
└──────────┘       │          │         └──────────┘
                   │          │
                   │  Claude  │  メール   ┌──────────┐
                   │   API    │ ──────> │ お客様   │
                   │ (分析)   │  自動返信  └──────────┘
                   └──────────┘

前回の仕組みに、2つの処理を追加します:

  1. フォーム送信 → Discord通知(前回と同じ)
  2. Claude APIで問い合わせ内容を分析
  3. 分析結果をもとに自動返信メールを送信

3. Step 1: Claude APIの準備

Anthropicのアカウントを作成し、APIキーを取得します。

1

Anthropicコンソールにアクセス

console.anthropic.com でアカウント作成

2

APIキーを生成

Settings → API Keys → Create Key

3

環境変数に設定

.env.local にキーを追加

# .env.local に追加

ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxx
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...

💰 料金目安: Claude 3.5 Sonnetの場合、1回の問い合わせ分析+返信生成で約¥0.5〜1.5。 月100件の問い合わせでも月¥150以下です。

4. Step 2: AIで問い合わせを分析する

Claude APIに問い合わせ内容を送り、「カテゴリ分類」と「返信文の生成」を行います。

// src/lib/ai-analyze.ts

const ANTHROPIC_API_URL = 'https://api.anthropic.com/v1/messages';

interface AnalysisResult {
  category: string;       // 問い合わせカテゴリ
  urgency: 'high' | 'medium' | 'low';
  summary: string;        // 要約(社内向け)
  replyDraft: string;     // 自動返信文(お客様向け)
}

export async function analyzeInquiry(
  name: string,
  email: string,
  company: string,
  message: string
): Promise<AnalysisResult> {

  const systemPrompt = `あなたはカスタマーサポートAIです。
問い合わせ内容を分析し、以下のJSON形式で返してください。

{
  "category": "見積もり依頼" | "技術相談" | "サービス質問" | "その他",
  "urgency": "high" | "medium" | "low",
  "summary": "社内向け要約(50文字以内)",
  "replyDraft": "お客様への一次返信文(丁寧語、200文字以内)"
}

返信文のルール:
- お名前を含める(「○○様」)
- 問い合わせ内容に触れる(オウム返しではなく要点を)
- 「担当より改めてご連絡いたします」で締める
- 営業的な売り込みは入れない
- 温かみのある、でもプロフェッショナルなトーン`;

  const res = await fetch(ANTHROPIC_API_URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': process.env.ANTHROPIC_API_KEY || '',
      'anthropic-version': '2023-06-01',
    },
    body: JSON.stringify({
      model: 'claude-sonnet-4-20250514',
      max_tokens: 500,
      system: systemPrompt,
      messages: [{
        role: 'user',
        content: `【問い合わせ情報】
お名前: ${name}
会社名: ${company || '未記入'}
メール: ${email}
内容:
${message}`,
      }],
    }),
  });

  if (!res.ok) {
    throw new Error(`Claude API error: ${res.status}`);
  }

  const data = await res.json();
  const text = data.content[0].text;

  // JSONを抽出
  const jsonMatch = text.match(/\{[\s\S]*\}/);
  if (!jsonMatch) throw new Error('AI response parse error');

  return JSON.parse(jsonMatch[0]);
}

📌 ポイント: レスポンスをJSON形式で指定することで、 プログラムで扱いやすい構造化データを得られます。claude-sonnet-4-20250514は高速かつ安価で、 こうした分類・生成タスクに最適です。

実行例

// 問い合わせ例

お名前: 田中太郎
会社名: 株式会社サンプル
内容: Webサイトの問い合わせ対応を自動化したいのですが、
      費用感とスケジュール感を教えてください。

// AIの分析結果

{
  "category": "見積もり依頼",
  "urgency": "high",
  "summary": "Web問い合わせ自動化の費用・スケジュール見積もり依頼",
  "replyDraft": "田中様\n\nお問い合わせいただきありがとうございます。
Webサイトの問い合わせ対応の自動化について、費用感と
スケジュールのご相談ですね。\n\n内容を確認いたしましたので、
担当より1営業日以内に詳細をご連絡いたします。
少々お待ちくださいませ。"
}

5. Step 3: 自動返信メールを送る

AIが生成した返信文を、メールでお客様に送ります。 ここではResend(無料枠で月100通)を使います。

# インストール

npm install resend

// src/lib/send-reply.ts

import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

export async function sendAutoReply(
  to: string,
  customerName: string,
  replyText: string
) {
  const { error } = await resend.emails.send({
    from: 'NEWHELLO <noreply@openclaw.newhello.jp>',
    to,
    subject: `【NEWHELLO】お問い合わせありがとうございます`,
    html: `
      <div style="font-family: sans-serif; max-width: 600px;
                  margin: 0 auto; padding: 20px;">
        <h2 style="color: #333; border-bottom: 2px solid #00d4ff;
                   padding-bottom: 10px;">
          お問い合わせありがとうございます
        </h2>
        <div style="white-space: pre-wrap; line-height: 1.8;
                    color: #555; margin: 20px 0;">
          ${replyText}
        </div>
        <hr style="border: none; border-top: 1px solid #eee;
                   margin: 30px 0;" />
        <p style="color: #999; font-size: 12px;">
          ※ このメールはAIによる自動返信です。<br />
           担当者より改めてご連絡いたします。<br /><br />
          NEWHELLO - OpenClaw構築代行<br />
          https://openclaw.newhello.jp
        </p>
      </div>
    `,
  });

  if (error) {
    console.error('Email send error:', error);
    throw error;
  }
}

# .env.local に追加

RESEND_API_KEY=re_xxxxxxxxxxxxx

なぜResendか:

  • 月100通まで無料
  • npm パッケージで簡単に使える
  • 独自ドメインのメール送信に対応
  • SendGridやAmazon SESより設定がシンプル

6. Step 4: 全体を統合する

前回のAPI Routeに、AI分析と自動返信を組み込みます。

// src/app/api/contact/route.ts(完成版)

import { NextRequest, NextResponse } from 'next/server';
import { analyzeInquiry } from '@/lib/ai-analyze';
import { sendAutoReply } from '@/lib/send-reply';

const WEBHOOK_URL = process.env.DISCORD_WEBHOOK_URL || '';

export async function POST(req: NextRequest) {
  try {
    const { name, company, email, message } = await req.json();

    if (!name || !email || !message) {
      return NextResponse.json(
        { error: '必須項目を入力してください' },
        { status: 400 }
      );
    }

    // ① Discord通知(前回と同じ)
    const fields = [
      { name: 'お名前', value: name, inline: true },
      { name: 'メール', value: email, inline: true },
    ];
    if (company) {
      fields.push({
        name: '会社名', value: company, inline: true
      });
    }
    fields.push({
      name: 'ご相談内容', value: message, inline: false
    });

    // ② AI分析(並列実行で高速化)
    const [webhookRes, analysis] = await Promise.all([
      // Discord通知
      fetch(WEBHOOK_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          embeds: [{
            title: '📩 新規お問い合わせ',
            color: 0x00d4ff,
            fields,
            timestamp: new Date().toISOString(),
          }],
        }),
      }),
      // AI分析
      analyzeInquiry(name, email, company, message),
    ]);

    if (!webhookRes.ok) {
      console.error('Webhook error');
    }

    // ③ AI分析結果もDiscordに通知
    await fetch(WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        embeds: [{
          title: '🤖 AI分析結果',
          color: analysis.urgency === 'high'
            ? 0xff0000 : analysis.urgency === 'medium'
            ? 0xffaa00 : 0x00cc00,
          fields: [
            { name: 'カテゴリ', value: analysis.category,
              inline: true },
            { name: '緊急度', value: analysis.urgency,
              inline: true },
            { name: '要約', value: analysis.summary,
              inline: false },
            { name: '自動返信(送信済み)',
              value: analysis.replyDraft, inline: false },
          ],
        }],
      }),
    });

    // ④ 自動返信メール送信
    await sendAutoReply(email, name, analysis.replyDraft);

    return NextResponse.json({ ok: true });
  } catch (e) {
    console.error('Contact API error:', e);
    return NextResponse.json(
      { error: 'サーバーエラー' },
      { status: 500 }
    );
  }
}

🚀 パフォーマンスTip: Promise.allでDiscord通知とAI分析を並列実行しています。直列だと約3秒かかるところを、 約1.5秒に短縮できます。

7. プロンプト設計のコツ

自動返信の品質は、プロンプトの設計で決まります。以下のポイントを押さえましょう。

🎯 出力形式を明確に指定する

JSON形式で出力を指定すると、プログラムで確実にパースできます。 フリーテキストだと後処理が不安定になります。

✅ 良い例: "以下のJSON形式で返してください: { ... }"
❌ 悪い例: "分析結果を教えてください"

🚫 やってはいけないことを明記する

「やらないこと」を書くと、想定外の返信を防げます。

- 営業的な売り込みは入れない
- 具体的な金額を提示しない
- 納期を約束しない
- 技術的な詳細に踏み込まない

📏 文字数制限をかける

「200文字以内」のように制限をかけないと、AIが長文を生成してしまいます。 一次返信は短く、要点だけ。詳細は担当者からのフォローで伝えます。

🔄 カテゴリは固定値で定義する

「見積もり依頼」「技術相談」「サービス質問」「その他」のように 選択肢を限定すると、後続の処理(振り分け、優先度判定)が安定します。

8. 安全対策:AIに任せていいライン

タスクAI自動化理由
一次返信「受け取りました」✅ OKリスク低、速度重要
カテゴリ分類・優先度判定✅ OK社内向け、間違えても修正可能
見積もり金額の提示❌ NG誤った金額提示は信用問題
契約条件の回答❌ NG法的リスク
技術的な詳細回答⚠️ 要検討FAQ程度ならOK、個別案件は人間

⚠️ 鉄則: AIの自動返信には必ず 「このメールはAIによる自動返信です」と明記してください。 お客様に誤解を与えないことが、信頼の第一歩です。

9. 運用コスト

月間100件の問い合わせを処理した場合:

Claude API(100回の分析+生成)約 ¥100
Resend(メール送信100通)¥0(無料枠)
Discord Webhook¥0
Vercel(ホスティング)¥0(無料枠)
合計約 ¥100/月

💡 比較: 人件費 vs AI

パート(問い合わせ対応)

¥120,000/月

時給1,200円×5h×20日

AI自動返信

¥100/月

24時間365日稼働

コスト差は約1,200倍。しかもAIは24時間対応。

10. さらなる発展

基本形ができたら、さらに高度な自動化に発展させられます。

📊 CRM連携

問い合わせデータをNotionやスプレッドシートに自動記録。 カテゴリ別の集計、対応ステータス管理が可能に。

🔄 FAQ自動回答

よくある質問にはAIが詳細回答。人間が対応すべき案件だけをエスカレーション。 対応コストをさらに削減。

🌐 多言語対応

Claude APIは多言語対応。英語や中国語の問い合わせにも、 相手の言語で自動返信可能。インバウンド対応に最適。

📱 LINE/チャット対応

同じAI分析ロジックを、LINEやWebチャットにも適用。 全チャネルで統一された自動返信を実現。

まとめ

  • Claude APIで問い合わせ内容を自動分析+返信生成
  • Discord通知 + メール自動返信のダブル通知体制
  • プロンプト設計で返信品質をコントロール
  • 月間100件でも約¥100の運用コスト
  • CRM連携・FAQ自動回答・多言語対応への拡張も容易

「自社に合ったAI自動返信を導入したい」

問い合わせ対応だけでなく、受注管理・顧客フォロー・レポート作成まで、 あなたの業務に合わせたAI自動化をご提案します。

無料で相談する →

📚 関連記事