13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

n8nで「ランチ自動提案Bot」を作ってみた(Google Maps × Discord)

13
Posted at

はじめに

毎日のランチ、こんな悩みありませんか?

  • 毎回どこ行くか迷う
  • 同じ店ばかり行ってしまう
  • 新しい店を開拓したい

そこで今回は
n8n + Google Maps API + Discord を使って

ランチを自動で提案してくれるBot
を作ってみました。

作ったもの

こんな感じでDiscordに通知されます👇
image.png

全体構成

今回のn8nワークフローは以下です👇

  1. 初期設定(場所・APIキーなど)
  2. 住所 → 緯度経度に変換
  3. 近くの飲食店を検索
  4. 条件でフィルタ
  5. ランダムで1件選ぶ
  6. Discordに送信

使用したワークフロー

image.png

機能ごとの解説

① 初期設定

まずは設定値をまとめて定義します。

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連携
  • データ整形

の良い練習になりました。

13
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?