はじめに
「冷蔵庫にあるものを把握する+それを使ったレシピを考える問題」を解決したくて、
LINEで食材把握からレシピ提案までしてくれるBotを作りました。
やっていることはシンプルで、
- Googleスプレッドシートに食材を管理
- LINEで「夜ご飯」「おつまみ」など送る
- AIがレシピを10個提案
- LINEに返す
という構成です。
今回はノーコードツールの n8n を使って構築しています。
全体構成
LINE → Webhook → ユーザー判定 → 食材取得 → LLM → 整形 → LINE返信
実際のワークフロー👇

使用技術
- n8n(ワークフロー)
- LINE Messaging API
- Google Sheets
- LLM(OpenAI / Gemini)
ワークフロー解説
① Webhook(LINE受信)
LINEからのメッセージを受け取る入口です。
"type": "n8n-nodes-base.webhook"
② ユーザー制限
const allowedUserIds = [
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
];
自分 or 家族だけ使えるように制限
③ 食材リスト取得
Google Sheetsにある食材リストを取得する

ポイント:
row_number を期限の近さとして使用
AIに「優先して使う」と指示することで消費期限を意識できる

④ LLMプロンプト設計
・レシピを10個生成
・調理時間15〜30分
・工程は最大5ステップ
・実在する料理のみ
さらに重要なのが
出力は必ずJSON配列のみ
Markdown禁止
⑤ LLMの出力結果をLINE用に整形
LLMの出力形式だとLINEのAPIで使えないためJavaScriptのコードで整形する

⑥LINEのAPIで送信
先ほどのノードで整形済みのline_messageをBodyに設定し、対象ユーザに送信する

{
"to": "{{$node['ユーザー判定'].json.userId}}",
"messages": [
{
"type": "text",
"text": "{{$json.line_message}}"
}
]
}
実際の出力例
※出力結果の一部を抜粋
🍳 今日のおすすめレシピ10選 🍳
【1】鶏むね肉とブロッコリーの醤油炒め
📌 夜ごはん
🥕 鶏むね肉、ブロッコリー
- 鶏むね肉を一口大に切り、ブロッコリーは小房に分ける
- フライパンに油を引き、鶏むね肉を中火で焼く
- 肉の色が変わったらブロッコリーを加えて炒め合わせる
- 醤油、塩、こしょうで味を調える
- 全体に火が通ったら器に盛り付ける
──────────
【9】鶏むね肉のソテー トマトソースがけ
📌 夜ごはん
🥕 鶏むね肉、トマト、玉ねぎ
- 鶏むね肉を観音開きにして厚さを均一にし、塩、こしょうを振る
- フライパンに油を引き、鶏むね肉を両面こんがりと焼く
- 肉を取り出し、空いたフライパンでみじん切りの玉ねぎとトマトを炒める
- トマトが崩れてソース状になったら塩で味を調える
- カットした鶏肉にソースをたっぷりかける
──────────
工夫したポイント
① 食材の優先度制御
食材リストの上から優先的に使うように指示することで悪くなる前に使いきれる
② 用途を指定する
おつまみ → 酒に合う
ガッツリ → ボリューム多め
③ 調理法の分散
提案が偏らないように指示し、選択肢を広げる
まとめ
n8n + LLMで実用的なアプリが簡単に作れる
プロンプト設計が8割
「制約を強くする」ほど安定する
おわりに
「冷蔵庫の余り物をどうするか問題」が解決し日々のストレスが一つ減りました。
ぜひ自分の生活に合わせてカスタマイズしてみてください!