Claude APIで問い合わせ自動返信botを作る方法
Discord×AI実践ガイド
前回の記事では、 問い合わせフォームからDiscordに自動通知する仕組みを作りました。
今回はその続編として、届いた問い合わせにClaude API(AI)で自動返信する機能を追加します。 お客様を待たせず、24時間即座に一次返信できる仕組みです。
⏱ 読了時間:約12分 | 実装時間:約45分 | 前提:前回の記事の実装済み環境
📖 目次
1. なぜ自動返信が必要なのか?
問い合わせへの返信速度は、成約率に直結します。
📊 衝撃のデータ
つまり、夜中でも休日でも即座に返信できる仕組みがあれば、 それだけで競合に差をつけられます。人を雇わなくても、AIなら24時間対応可能です。
💡 ここで作るもの: 問い合わせが届いたら、AIが内容を読み取って 「ご連絡ありがとうございます。〇〇についてですね。担当より改めてご連絡いたします」 というパーソナライズされた一次返信を自動で送るシステムです。
2. 仕組みの全体像
┌──────────┐ POST ┌──────────┐ Webhook ┌──────────┐
│ フォーム │ ────> │ API Route│ ──────> │ Discord │
└──────────┘ │ │ └──────────┘
│ │
│ Claude │ メール ┌──────────┐
│ API │ ──────> │ お客様 │
│ (分析) │ 自動返信 └──────────┘
└──────────┘前回の仕組みに、2つの処理を追加します:
- フォーム送信 → Discord通知(前回と同じ)
- Claude APIで問い合わせ内容を分析
- 分析結果をもとに自動返信メールを送信
3. Step 1: Claude APIの準備
Anthropicのアカウントを作成し、APIキーを取得します。
Anthropicコンソールにアクセス
console.anthropic.com でアカウント作成
APIキーを生成
Settings → API Keys → Create Key
環境変数に設定
.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件の問い合わせを処理した場合:
💡 比較: 人件費 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自動化をご提案します。
無料で相談する →