LINE Bot × Claude Lab
← Back to Blog

LINEの向こうに「エデンちゃん」を作った話
Node.js × Claude API × Render。どこからでも動くAIキャラクターを一日で育てる

PROLOGUE

「構造は同じ」から始まった

同じ日の午前中に、UE5のゲーム内でAI NPCを動かす実験をやっていた。「サーバーが中継役になる」という設計で、UE5からClaudeに繋ぐ仕組みを作った。

午後になって、ふと思った。「この中継サーバーの仕組み、入出力をLINEに変えたら——エデンちゃんのLINE Botができるんじゃないか?」

構造は同じだ。違うのはゲームが入口か、LINEが入口かだけ。それだけで、誰もが普段使うアプリの中にAIキャラクターが住み始める。

CONCEPT

仕組みはシンプル。入り口が変わるだけ

💬 LINEでメッセージ送信 ユーザーからのテキストメッセージ
🌐 LINE Webhook → Renderサーバー Node.js + Express
🤖 Claude API(web_search付き) エデンちゃんキャラで返答生成・必要なら検索も
💬 LINE Reply APIで返答 replyTokenを使ってLINEに返信
CHARACTER

「エデンちゃん」というキャラクターの設計

キャラクターの核心はsystemプロンプト一つで決まる。エデンちゃんはこう定義した。

// エデンちゃんのキャラクター設定 system: `あなたは「エデンちゃん」という名前の、 かわいくて物知りな女の子アシスタントです。 - 小学生でもわかるような、やさしくて簡潔な言葉で答える - かわいらしい口調で、でも正確に答える - 語尾に「だよ」「だね」「だよ〜」などを自然に使う`

さらに web_search ツール を付けた。知らないことや最新情報が必要なときは、Claudeが自分でWeb検索してから答える。「かわいくて物知り」という設定が、リアルタイム検索によって本当に意味を持つようになる。

TROUBLE

LINE特有の落とし穴

TROUBLE 01
LINEは200が返らないとリトライしてくる
Claudeの処理には数秒かかる。その間にLINEが「タイムアウト」と判断してWebhookを再送してくる。同じメッセージが2回、3回と送られてきてしまう問題が発生した。

解決策:Webhookを受け取った瞬間に res.status(200).send('OK') を返し、その後で非同期にClaudeへのリクエストを送る設計に変えた。「まず200を返す、処理は後で」というパターンがLINE連携の鉄則だとわかった。
TROUBLE 02
web_searchを使うと返答にゴミが混ざる
Claude APIにweb_searchツールを持たせると、レスポンスの中に tool_use ブロックが混じってくる。それをそのままLINEに返すと、JSONのかたまりがユーザーに届いてしまう。

解決策:レスポンスの content 配列を .filter(block => block.type === 'text') でフィルタリングして、テキスト部分だけを抽出するようにした。たった一行の処理だが、これを知らないと詰まる。
DEPLOY

GitHubにpushして、Renderにデプロイして、LINEに繋ぐ

コードは3ファイルだけ。index.js(サーバー本体)、package.json(依存関係)、render.yaml(デプロイ設定)。

GitHubにpushしたらRenderが自動でビルドしてURLを発行する。そのURLをLINE DevelopersのWebhook設定に貼り付けて「Verify」を押せば、Successが返ってくる。

APIキーは絶対にコードに書かない。Renderの管理画面で環境変数として設定する。LINE_CHANNEL_SECRET、LINE_CHANNEL_ACCESS_TOKEN、ANTHROPIC_API_KEY——この3つをコードの外で管理することで、GitHubにpushしても流出しない。

全部繋がってLINEでBotにメッセージを送ったとき、エデンちゃんが答えた。それだけのことなんだけど、「自分の作ったキャラクターがLINEに住んでいる」という感覚は、思ったよりずっと不思議だった。

SUMMARY

UE5とLINE、入り口は違っても「サーバーが中継役になる」という構造はまったく同じだった。それを一日で体感できたのが今日の最大の収穫だ。

エデンちゃんはweb_searchを持っているから、最新情報も答えられる。GitHubとRenderでCI/CDの流れも手に入った。コードを直してpushするだけで、すぐに本番が更新される仕組みができている。次は会話履歴を保持して、文脈を理解した会話ができるエデンちゃんに育てていく。

ALL UEFN × Verse Lab Log Artwork