2026年7月〜現在
Instagram DM・コメント自動応答システム「MiniChat」
概要
Instagram上のAIキャラクターアカウントに届くDM・コメントへ自動応答するシステムです。 定型ルールとOpenAI APIによる返信生成を組み合わせ、有人対応が必要な場合のみLINEへ通知する構成にしました。
- 担当
- 企画、要件整理、設計、実装、内部テスト、運用調整
- 体制
- 単独担当、テスト参加者4名
- 開発環境
- Google Apps Script、clasp、Googleスプレッドシート
- 利用API
- OpenAI API、Instagram Messaging/Graph API、LINE Messaging API、Facebook Login
システム構成
主な実装
- Instagram/LINEのWebhook判別、署名検証、メッセージIDによる重複返信防止
- 定型ルールを優先し、対象外の内容のみOpenAI APIへ送るハイブリッド返信
- 人格・口調・禁止表現・返信条件をスプレッドシートから変更できる運用設定
- 過去DM約1,100件の参照、返信時間帯・日次上限・温度感判定、LINEへの有人引き継ぎ
ENGINEERING DECISIONS
要件から考えた設計判断
実装方法だけでなく、運用担当者、コスト、障害時の対応を踏まえて構成を決定。品質とコストの両立
回答が決まっている内容は定型ルールを優先し、対象外のみOpenAI APIを利用。品質の安定とAPIコストの抑制を両立。
非エンジニアでも調整可能
人格、口調、禁止表現、返信条件をスプレッドシートへ外出し。コード変更なしで運用担当者が調整できる構成。
AIと人の役割分担
判断が必要な会話は自動返信を停止し、会話履歴と返信候補を付けてLINEへ通知。日次上限や緊急停止も実装。
IMPLEMENTATION DETAILS
実装機能の詳細
- Webhook受信基盤InstagramとLINEを単一エンドポイントで判別。署名検証とメッセージID照合による二重返信防止。
- ハイブリッド返信Q&Aシートの定型返信を優先し、対象外のみOpenAI APIを利用。複数回答のランダム選択や顔文字のみのコメントにも対応。
- 2層プロンプト設計人格設定と返信ルールを分離し、文字数、口調、絵文字、禁止表現、良い例・悪い例をスプレッドシートで管理。
- 過去DMの活用過去のDM約1,100件をAPIで取得し、返信例として参照できる仕組みを実装。
- 人間らしさの制御返信可能時間帯、1ユーザー1日あたりの上限、ランダムな返信ディレイを設定。
- 温度感の判定DM頻度と経過日数からcold/warm/hot/coolingを判定し、返信トーンや自動返信の継続可否を切り替え。
- LINEでの有人対応ユーザー名、メッセージ、直近の会話履歴とAI返信候補3件を通知。選択した候補をInstagramへ送信。
- 投稿コメント対応Instagram投稿へのコメントを取得し、定型ルールまたはAIで自動返信。
- 運用・停止機能DM/コメントの個別ON・OFF、緊急停止、ユーザー単位の自動返信停止、処理ログ、デバッグ出力を実装。
DEVELOPMENT PROCESS
担当範囲・障害対応
担当範囲とAI支援ツールの活用
自身の担当:要件整理、機能の優先順位、システム構成、API仕様確認、データ・例外設計、テスト、原因切り分け、運用調整。
AI支援の用途:Claude CodeやCodexを、実装案・定型コード・デバッグ時の仮説整理・設計書作成の補助として活用。出力はAPI仕様と実際の動作を確認し、修正・テスト後に採用。
不具合・制約を切り分けた例
Webhookによる二重返信
受信ログから再送の発生条件を確認し、メッセージIDを保存・照合して処理済みイベントを終了させることで防止しました。
設定変更が反映されない問題
処理単位でログを追加し、設定値の空白・全角文字・キャッシュを順に確認。値の正規化とキャッシュ更新方法を見直しました。
Meta側の権限・審査条件
コード上の不具合と外部APIの制約を分けて調査。追加権限が必要な自動いいね機能は、アプリレビュー対象として未完了事項に切り分けました。
主要機能を実装し、4名で内部テストを実施。定型返信とAI返信を分けることでAI返信1通あたり約0.06円と試算し、現在は返信精度と運用フローを調整しています。