LINE公式アカウントにAI自動応答を導入する方法
Webhook×Claude API実践ガイド

実践ガイドLINE

LINE公式アカウントを持っているけど、メッセージの返信が追いつかない。 営業時間外の問い合わせに対応できていない。そんな悩みはありませんか?
この記事では、LINE公式アカウントにAI(Claude API)で自動応答する仕組みを、 実際のコード付きで構築します。美容室・クリニック・ECサイトなど、あらゆる業種で使えます。

⏱ 読了時間:約15分 | 実装時間:約1〜2時間 | 前提:LINE公式アカウント(無料で作成可能)

1. なぜLINE公式にAI応答が必要なのか?

📊 LINEの圧倒的な普及率

9,700万人日本国内のLINEユーザー数(人口の約77%)
86%の日本人がLINEを毎日使っている
70%のユーザーが「企業からのLINEメッセージを見る」

メールの開封率が20%前後に対し、LINEは開封率70%以上。 お客様との接点として、LINEは最強のチャネルです。

しかし問題は返信の対応コスト。営業時間内でも即レスは難しく、 営業時間外はそもそも対応できません。ここをAIで自動化します。

❌ AI導入前

  • 返信まで平均3時間
  • 営業時間外は翌営業日対応
  • 同じ質問に何度も手動で回答
  • スタッフの負担が大きい

✅ AI導入後

  • 返信まで平均5秒
  • 24時間365日自動対応
  • FAQ系は完全自動
  • スタッフは複雑な案件だけ対応

2. 仕組みの全体像

┌──────────┐  Webhook  ┌──────────┐  Claude   ┌──────────┐
│   LINE   │ ───────> │  サーバー  │  API     │   AI     │
│  ユーザー  │          │ (Express) │ ──────> │ 応答生成  │
│          │ <─────── │           │ <────── │          │
│          │  Reply   │           │         │          │
└──────────┘  API     └──────────┘         └──────────┘
                           │
                      ┌────┴────┐
                      │ 会話履歴  │
                      │ (メモリ)  │
                      └─────────┘
  1. ユーザーがLINE公式アカウントにメッセージを送る
  2. LINEのWebhookがサーバーにリクエストを転送
  3. サーバーがClaude APIにメッセージを送り、AI応答を生成
  4. LINE Reply APIで応答をユーザーに返信
  5. 会話履歴を保持し、文脈を理解した応答を実現

3. Step 1: LINE公式アカウント+Messaging APIの準備

1

LINE公式アカウントを作成

manager.line.biz → 「アカウント作成」(無料)

2

LINE Developers でチャネル作成

developers.line.biz → プロバイダー作成 → 「Messaging API」チャネルを追加

3

チャネルアクセストークンを発行

Messaging API設定 → 「チャネルアクセストークン(長期)」を発行

4

応答設定を変更

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設定

1

LINE Developers → Messaging API設定

チャネルの設定画面を開く

2

Webhook URLを入力

https://your-server.com/webhook

3

「Webhookの利用」をオンに

「検証」ボタンで接続確認

4

「応答メッセージ」をオフに

デフォルトの自動応答をオフにして、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件のメッセージを処理した場合:

LINE公式アカウント(コミュニケーションプラン)¥0(月200通まで無料)
Claude API(200回のAI応答生成)約 ¥200
サーバー(Railway無料枠 or VPS)¥0〜1,000
合計¥200〜1,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応答をご提案します。

無料で相談する →

📚 関連記事