Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
美容室に届く営業時間・設備などの質問へ、登録済みFAQをもとにAIが回答し、スタッフの問い合わせ対応を支援します。
Loading the full README.
Read the full README ↗美容室に届く営業時間・設備などの質問へ、登録済みFAQをもとにAIが回答し、スタッフの問い合わせ対応を支援します。
想定利用者: 個人経営の美容室・LINEで問い合わせを受ける店舗
繰り返し届く質問への対応と、回答できない質問のスタッフへの引き継ぎ。
紹介ページ。管理画面は認証が必要です。
Next.js / TypeScript / Supabase / Claude API / LINE Messaging API
根拠FAQの検証、Webhook署名検証、二重処理・二重配信防止を組み合わせています。
予約の受付・空き枠管理を行うBotではありません。メニュー・料金の管理機能はBotの回答には未連携です。
美容室の LINE 公式アカウントに届く「営業時間は?」「駐車場は?」といった問い合わせに、オーナーが登録した FAQ をもとに AI(Claude)が自動で返信する Bot と、スマートフォンで使える管理画面です。 個人経営の美容室オーナー(非エンジニア)向けに、問い合わせ対応の手間を減らしつつ、AI の誤った回答でお客様に間違った案内をしないことを目指しました。 FAQ だけでは確実に答えられない質問には AI の回答を送らず、オーナーの LINE へ通知します。管理画面からは FAQ の編集、会話ログの確認、友だち全員へのお知らせ配信ができます。
管理画面はパスワードで保護されており、第三者はログイン・操作できません(デモ用アカウントは公開していません)。
トップページ(/)はポートフォリオ用の紹介ページです。Bot の機能は LINE 公式アカウント側、管理機能は /admin にあります。
FAQ管理・メニュー管理・会話ログ・お知らせ配信を1つの管理画面から操作できます。
Botが回答に利用するFAQを、管理画面から追加・編集・公開/非公開にできます。
顧客の質問、Botの回答、回答の確かさ、参考にしたFAQを確認できます(お客様は LINE ユーザーIDの末尾4文字のみ表示)。
お知らせを下書き保存し、管理者へのテスト送信後に友だち全員へ配信する機能を実装しています(配信前に確認ダイアログを表示)。
LINEからの質問に対して、登録済みFAQをもとに自動回答します。
/api/cron/keep-alive を呼び、faq テーブルを1行だけ読み取ります(書き込みなし)CRON_SECRET で保護しています。Vercel が Authorization: Bearer <CRON_SECRET> を付けて呼び出し、一致しないリクエストは 401。CRON_SECRET が未設定・16文字未満の場合は DB に触れず 500 を返しますX-Line-Retry-Key、retry key の有効期限(24時間)より短い23時間の送信期限を組み合わせています。結果が分からなくなった配信は自動再送せず、「状態確認が必要」と表示します。NEXT_PUBLIC_ は不使用)、server-only でクライアントからの import をビルド時に防止。Supabase は RLS 全拒否 + サーバー側のみ service role でアクセスします。ビルド成果物に秘密情報が含まれないことも確認しています。| 項目 | 技術 |
|---|---|
| フロントエンド | Next.js 16.3.5(App Router)、React 19.2.8、TypeScript、Tailwind CSS 4 |
| バックエンド | Next.js(Server Components / Server Actions / Route Handler) |
| データベース | Supabase(PostgreSQL、RLS) |
| LINE | LINE Messaging API(@line/bot-sdk): Webhook、Reply、Push、Broadcast |
| AI | Anthropic Claude API(@anthropic-ai/sdk、構造化出力) |
| 入力検証 | Zod(サーバー側) |
| 認証 | お客様: ログインなし(LINE Messaging API の Webhook 経由でやり取り)/管理者: パスワード + 署名付き Cookie |
| テスト | Vitest |
| デプロイ | Vercel |
line-reservation-bot/
├── app/
│ ├── api/line/webhook/route.ts # LINE Webhook
│ ├── api/cron/keep-alive/route.ts # Supabase 一時停止対策(Vercel Cron から1日1回)
│ └── admin/ # 管理画面(/admin)
│ ├── login/ # ログイン
│ └── (protected)/ # 認証必須エリア
│ ├── faq/ # FAQ管理
│ ├── menus/ # メニュー・料金
│ ├── conversations/ # 会話ログ
│ └── announcements/ # お知らせ配信
├── components/admin/ # 管理画面の共通部品
├── lib/
│ ├── line/ # 署名検証・LINE クライアント・Push・Broadcast・オーナー通知
│ ├── claude/ # Claude クライアント・プロンプト・出力スキーマ
│ ├── faq/ # 回答フロー・定型文・送信回数の上限
│ ├── admin/ # 認証・リポジトリ・お知らせ配信・入力検証
│ └── supabase/ # サーバー用クライアント・公開 FAQ 取得
├── types/database.ts # DB の型定義
├── supabase/migrations/ # 0001〜0003
├── tests/ # Vitest
├── docs/ # ドキュメント
├── proxy.ts # /admin の楽観的認証チェック
├── vercel.json # Vercel Cron の設定
└── .env.example # 環境変数テンプレート(値は空)
手順の詳細は docs/setup-guide.md にあります。概要:
git clone https://github.com/moedaichi0629-ai/line-reservation-bot.git
cd line-reservation-bot
npm install
cp .env.example .env.local # 9つの環境変数を設定
npm run dev # http://localhost:3000/admin
必要な環境変数(値は絶対にコミットしないこと):
This is the beginning of the README. Read the rest at the original. Read the full README ↗