LINE公式アカウントにAI自動応答を導入する方法
Webhook×Claude API実践ガイド
LINE公式アカウントを持っているけど、メッセージの返信が追いつかない。 営業時間外の問い合わせに対応できていない。そんな悩みはありませんか?
この記事では、LINE公式アカウントにAI(Claude API)で自動応答する仕組みを、 実際のコード付きで構築します。美容室・クリニック・ECサイトなど、あらゆる業種で使えます。
⏱ 読了時間:約15分 | 実装時間:約1〜2時間 | 前提:LINE公式アカウント(無料で作成可能)
📖 目次
1. なぜLINE公式にAI応答が必要なのか?
📊 LINEの圧倒的な普及率
メールの開封率が20%前後に対し、LINEは開封率70%以上。 お客様との接点として、LINEは最強のチャネルです。
しかし問題は返信の対応コスト。営業時間内でも即レスは難しく、 営業時間外はそもそも対応できません。ここをAIで自動化します。
❌ AI導入前
- 返信まで平均3時間
- 営業時間外は翌営業日対応
- 同じ質問に何度も手動で回答
- スタッフの負担が大きい
✅ AI導入後
- 返信まで平均5秒
- 24時間365日自動対応
- FAQ系は完全自動
- スタッフは複雑な案件だけ対応
2. 仕組みの全体像
┌──────────┐ Webhook ┌──────────┐ Claude ┌──────────┐
│ LINE │ ───────> │ サーバー │ API │ AI │
│ ユーザー │ │ (Express) │ ──────> │ 応答生成 │
│ │ <─────── │ │ <────── │ │
│ │ Reply │ │ │ │
└──────────┘ API └──────────┘ └──────────┘
│
┌────┴────┐
│ 会話履歴 │
│ (メモリ) │
└─────────┘- ユーザーがLINE公式アカウントにメッセージを送る
- LINEのWebhookがサーバーにリクエストを転送
- サーバーがClaude APIにメッセージを送り、AI応答を生成
- LINE Reply APIで応答をユーザーに返信
- 会話履歴を保持し、文脈を理解した応答を実現
3. Step 1: LINE公式アカウント+Messaging APIの準備
LINE公式アカウントを作成
manager.line.biz → 「アカウント作成」(無料)
LINE Developers でチャネル作成
developers.line.biz → プロバイダー作成 → 「Messaging API」チャネルを追加
チャネルアクセストークンを発行
Messaging API設定 → 「チャネルアクセストークン(長期)」を発行
応答設定を変更
LINE公式アカウント管理画面 → 応答設定 →「応答メッセージ: オフ」「Webhook: オン」
# .env に保存する認証情報
LINE_CHANNEL_ACCESS_TOKEN=your_channel_access_token LINE_CHANNEL_SECRET=your_channel_secret ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxx
💡 ポイント: LINE公式アカウントは無料プラン(コミュニケーションプラン)で 月200通まで送信可能。AI自動応答なら十分なケースが多いです。 月200通を超える場合はライトプラン(月¥5,000、5,000通)に。
4. Step 2: Webhookサーバーを構築する
Node.js(Express)でWebhookサーバーを構築します。 LINEからのWebhookリクエストを受け取り、署名を検証します。
# プロジェクト初期化
mkdir line-ai-bot && cd line-ai-bot npm init -y npm install express @line/bot-sdk anthropic dotenv
// server.js — Webhookサーバー
const express = require('express');
const crypto = require('crypto');
const { handleMessage } = require('./handler');
require('dotenv').config();
const app = express();
const PORT = process.env.PORT || 3000;
// LINE署名検証ミドルウェア
function validateSignature(req, res, buf) {
const signature = req.headers['x-line-signature'];
if (!signature) return;
const hash = crypto
.createHmac('SHA256', process.env.LINE_CHANNEL_SECRET)
.update(buf)
.digest('base64');
if (hash !== signature) {
throw new Error('Invalid signature');
}
}
app.use(express.json({
verify: validateSignature,
}));
// Webhook エンドポイント
app.post('/webhook', async (req, res) => {
// LINEからの接続確認(空イベント)
if (!req.body.events || req.body.events.length === 0) {
return res.status(200).json({ ok: true });
}
// 各イベントを処理
const results = await Promise.all(
req.body.events
.filter(event => event.type === 'message'
&& event.message.type === 'text')
.map(event => handleMessage(event))
);
res.status(200).json({ results });
});
// ヘルスチェック
app.get('/', (req, res) => {
res.json({ status: 'LINE AI Bot is running' });
});
app.listen(PORT, () => {
console.log('Server running on port ' + PORT);
});📌 署名検証は必須。 LINEのWebhookは誰でもPOSTできてしまうため、 チャネルシークレットで署名を検証し、正規のリクエストのみ処理します。 これを省略するとセキュリティリスクになります。
5. Step 3: Claude APIでAI応答を生成する
メッセージハンドラーを作ります。会話履歴を保持し、文脈を理解した応答を生成します。
// handler.js — メッセージ処理+AI応答
const Anthropic = require('@anthropic-ai/sdk');
require('dotenv').config();
const anthropic = new Anthropic();
// 会話履歴(メモリ内保持。本番ではRedis等を推奨)
const conversationHistory = new Map();
const MAX_HISTORY = 10; // 直近10往復まで保持
// 業種に合わせてカスタマイズするシステムプロンプト
const SYSTEM_PROMPT = `あなたは親切なカスタマーサポートAIです。
LINE公式アカウントでお客様の質問に答えます。
ルール:
- 丁寧語で、でも堅すぎないフレンドリーなトーン
- 回答は簡潔に(LINEなので3-5行以内)
- わからないことは「担当者に確認いたします」と返す
- 予約や見積もりの具体的な金額は提示しない
- 営業時間やアクセスなどの基本情報は即答
- 緊急性が高い内容は「お急ぎの場合はお電話ください」と案内
お店の情報:
- 営業時間: 10:00-19:00(土日祝休み)
- 電話: 03-XXXX-XXXX
- 住所: 東京都○○区○○
※ 上記は例です。実際のお店の情報に置き換えてください。`;
async function handleMessage(event) {
const userId = event.source.userId;
const userMessage = event.message.text;
const replyToken = event.replyToken;
// 会話履歴を取得(なければ新規作成)
if (!conversationHistory.has(userId)) {
conversationHistory.set(userId, []);
}
const history = conversationHistory.get(userId);
// ユーザーメッセージを履歴に追加
history.push({ role: 'user', content: userMessage });
// 履歴が長すぎたら古いものを削除
while (history.length > MAX_HISTORY * 2) {
history.shift();
}
try {
// Claude APIでAI応答を生成
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 300,
system: SYSTEM_PROMPT,
messages: history,
});
const aiReply = response.content[0].text;
// AI応答を履歴に追加
history.push({ role: 'assistant', content: aiReply });
// LINE Reply APIで返信
await replyToLine(replyToken, aiReply);
return { success: true };
} catch (error) {
console.error('AI response error:', error);
// エラー時はフォールバックメッセージ
await replyToLine(
replyToken,
'ご返信ありがとうございます。'
+ '担当者より改めてご連絡いたします。'
+ '少々お待ちくださいませ。'
);
return { success: false, error: error.message };
}
}
async function replyToLine(replyToken, text) {
const url = 'https://api.line.me/v2/bot/message/reply';
const res = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization':
'Bearer ' + process.env.LINE_CHANNEL_ACCESS_TOKEN,
},
body: JSON.stringify({
replyToken,
messages: [{ type: 'text', text }],
}),
});
if (!res.ok) {
const err = await res.text();
console.error('LINE Reply error:', err);
throw new Error(err);
}
}
module.exports = { handleMessage };✅ 会話履歴(メモリ)のポイント:
- ユーザーIDごとに会話履歴を保持(文脈を理解した応答が可能)
- 直近10往復まで保持(トークン節約)
- 本番環境ではRedisやDBでの永続化を推奨
会話例
ご希望の日時と、ご利用内容をお教えいただけますか?
空き状況をお調べいたします。
担当者より空き状況を折り返しご連絡いたします🙏
※ AIが文脈を理解して自然な会話を継続
6. Step 4: 全体を統合する
サーバーをデプロイし、LINE DevelopersにWebhook URLを設定します。
デプロイ方法
🆓 無料: Railway / Render
GitHubリポジトリを接続するだけで自動デプロイ。無料枠で小規模運用に十分。
# Railwayの場合 npm install -g @railway/cli railway login railway init railway up
💪 本番: VPS (月¥1,000〜)
安定稼働にはVPSがおすすめ。pm2でプロセス管理。
npm install -g pm2 pm2 start server.js --name line-ai-bot pm2 save pm2 startup
Webhook URL設定
LINE Developers → Messaging API設定
チャネルの設定画面を開く
Webhook URLを入力
https://your-server.com/webhook
「Webhookの利用」をオンに
「検証」ボタンで接続確認
「応答メッセージ」をオフに
デフォルトの自動応答をオフにして、Webhook経由の応答のみにする
7. 業種別ユースケース
システムプロンプトをカスタマイズするだけで、あらゆる業種に対応できます。
💇 美容室・ネイルサロン
対応できる質問:
- メニューと料金の案内
- 空き状況の一次回答
- アクセス・駐車場の案内
- キャンセルポリシーの説明
プロンプト例:
あなたは美容室○○の 受付AIアシスタントです。 メニュー: カット ¥4,400 カラー ¥6,600〜 パーマ ¥8,800〜
🏥 クリニック・歯科医院
対応できる質問:
- 診療時間・休診日の案内
- 初診の持ち物の案内
- 診療科目の説明
- 予約の一次受付
重要なルール:
⚠️ 医療相談・診断は絶対にしない。 症状について聞かれたら「ご来院の上、医師にご相談ください」と案内。
🛒 ECサイト・通販
対応できる質問:
- 注文状況の確認案内
- 返品・交換ポリシーの説明
- 送料・配送日数の案内
- 商品の基本情報
プロンプト例:
あなたは○○ショップの カスタマーサポートAIです。 送料: 全国一律 ¥550 (¥5,000以上で送料無料) 返品: 到着7日以内・未使用品
🍽️ 飲食店・レストラン
対応できる質問:
- 営業時間・定休日
- 予約の空き確認
- メニュー・コース案内
- アレルギー対応の確認
活用ポイント:
予約の一次受付をAIが対応し、確定は人間が電話で確認。 ピーク時間帯の電話対応を大幅に削減できます。
8. 安全対策:人間エスカレーションのルール
AIに全てを任せるのは危険です。「AIが対応すべき範囲」と「人間に引き継ぐ範囲」を 明確に決めておく必要があります。
| 内容 | AI対応 | 理由 |
|---|---|---|
| 営業時間・アクセス案内 | ✅ OK | 定型情報、間違えにくい |
| FAQ(よくある質問) | ✅ OK | 事前にプロンプトに組み込める |
| 予約の一次受付 | ✅ OK | 希望日時を聞くだけ |
| 予約の確定 | ❌ NG | 空き状況の確認が必要 |
| クレーム対応 | ❌ NG | 感情的な対応が必要 |
| 見積もり・料金交渉 | ❌ NG | 間違った金額提示のリスク |
| 医療・法律の相談 | ❌ NG | 専門家が対応すべき |
// エスカレーション判定をプロンプトに組み込む
// システムプロンプトに追加: // 「以下のケースでは必ず // "担当者にお繋ぎいたします"と回答: // - クレーム、不満、怒りの表現 // - 具体的な金額の交渉 // - 医療・法律に関する相談 // - "人間と話したい"という要望 // - 3回以上同じ質問が繰り返された場合」
⚠️ 鉄則: AIの応答メッセージの末尾に「※ AIによる自動応答です」と 入れるかどうかは業種次第ですが、聞かれたら正直に答えるのが信頼のコツです。
9. 運用コスト
月間200件のメッセージを処理した場合:
💡 比較: パートスタッフ vs AI
パートスタッフ(LINE返信担当)
¥80,000/月
時給1,200円×3h×22日
営業時間内のみ対応
AI自動応答
¥1,200/月
24時間365日対応
応答速度5秒以内
コスト差は約67倍。しかもAIは24時間・即レス。
10. さらなる発展
📅 Googleカレンダー連携
AIが予約希望を聞き取り、Googleカレンダーの空き状況をリアルタイムで確認。 空いていればそのまま予約確定まで自動化。
📊 顧客データベース連携
リピーターのお客様の過去の予約履歴や好みをAIが参照。 「前回と同じメニューでよろしいですか?」といったパーソナルな対応が可能に。
🖼️ 画像認識
Claude APIはマルチモーダル対応。お客様が「こんな髪型にしたい」と画像を送れば、 AIが内容を理解して対応。ECサイトなら商品の写真から在庫確認も。
📨 プッシュ通知
予約のリマインダー、新商品のお知らせ、季節のキャンペーン情報などを AIが最適なタイミングで自動配信。
まとめ
- ✅LINE Webhook + Claude APIで24時間AI自動応答
- ✅会話履歴を保持して文脈を理解した応答
- ✅美容室・クリニック・EC・飲食店などあらゆる業種に対応
- ✅月200件でも¥1,200以下の運用コスト
- ✅人間エスカレーションルールで安全運用
「うちのLINE公式にもAI応答を入れたい」
業種に合わせたカスタマイズ、Googleカレンダー連携、顧客管理まで、 あなたのビジネスに最適なLINE AI応答をご提案します。
無料で相談する →