はじめに
毎日のランチ、こんな悩みありませんか?
- 毎回どこ行くか迷う
- 同じ店ばかり行ってしまう
- 新しい店を開拓したい
そこで今回は
n8n + Google Maps API + Discord を使って
ランチを自動で提案してくれるBot
を作ってみました。
作ったもの
全体構成
今回のn8nワークフローは以下です👇
- 初期設定(場所・APIキーなど)
- 住所 → 緯度経度に変換
- 近くの飲食店を検索
- 条件でフィルタ
- ランダムで1件選ぶ
- Discordに送信
使用したワークフロー
機能ごとの解説
① 初期設定
まずは設定値をまとめて定義します。
locationText: Mugitacho, Kanagawa, Japan
radiusMeters: 1500
maxResultCount: 20
ここで調整できるポイント
- 検索範囲(半径)
- 最大取得件数
- 言語
② Geocoding(住所 → 緯度経度)
Google Maps APIを使って
住所を座標に変換します。
https://maps.googleapis.com/maps/api/geocode/json
これにより👇
Mugitacho → 緯度・経度
に変換されます。
③ 周辺検索(Places API)
ここがメイン処理です。
"includedTypes": [
"ramen_restaurant",
"cafe",
"restaurant"
]
ポイント
- ラーメン / カフェ / 飲食店に限定
- 営業中のみ(openNow)
- 距離順で取得
④ データ整形&フィルタ
// 評価4.0以上で絞る
const highRated = valid.filter(p => {
const rating = Number(p.rating || 0);
return rating >= 4.0;
});
やっていること👇
データが欠けているものを除外
評価4.0以上だけ残す
できるだけ「ハズレ店」を防ぐシステムにしています。
⑤ ランダム選択
const pick = highRated[Math.floor(Math.random() * highRated.length)];
⑥ Discord通知
🍜 今日のランチ提案
🏠 店名
⭐ 評価
🍽️ カテゴリ
📍 住所
👉 Google Maps
クリックして行けるようにメッセージを送ります。
工夫ポイント
-
評価フィルタで品質担保
→ 4.0以上だけに絞る -
ランダム選択で飽きない
→ 毎回違う店 -
営業中のみ取得
→ 無駄な候補を排除
まとめ
今回作ったものは技術的にはシンプルですが
- API連携
- データ整形
の良い練習になりました。

