MENU
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
n8n × Claude 自動化の実践記録 | 自動化ラボ
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  1. ホーム
  2. ワークフローの作り方
  3. n8nで今日の天気予報をLINEに通知するワークフロー(APIキー不要・Messaging API)

n8nで今日の天気予報をLINEに通知するワークフロー(APIキー不要・Messaging API)

2026 10/07
ワークフローの作り方
LINE 天気 API
2026年10月1日2026年10月7日
当ページのリンクには広告が含まれています。
ワークフロー全体(Webhook → Get Weather → Make Message → LINE Broadcast → Respond to Webhook)
  • 動作確認日:2026-10-01
  • n8nのバージョン:2.41.3(Docker、セルフホスト)
目次

① 結論:このワークフローでできること

天気予報のAPI(Open-Meteo)から東京の今日の予報を取り、「天気・最高気温・最低気温・降水確率」をまとめて、LINEに送ります。

  • Open-MeteoはAPIキーなしで使えます。登録は不要です。
  • 降水確率が50%以上の日は、「傘を持って行きましょう」と一言添えます。
  • LINEへの送信には、LINE公式アカウントのMessaging APIを使います(LINE Notifyは2025年3月に終わりました)。
  • 1日1通なので、無料プランの通数(月200通)の中で、毎朝の通知に使えます。
  • 動作確認のため、起動にはWebhookを使っています。実際に使うときは、Schedule Triggerで毎朝実行する想定です。

② 完成イメージ

ワークフロー全体(Webhook → Get Weather → Make Message → LINE Broadcast → Respond to Webhook)

WebhookのURLにGETでアクセスすると、LINEにメッセージが届きます。

LINEに届いた天気予報

届いたメッセージは、次のとおりです(実際の内容です)。

【2026-10-01 東京の天気】
🌦️ 霧雨
🌡️ 最高 27.1℃ / 最低 18.1℃
☔ 降水確率 55%
👉 傘を持って行きましょう

この日は降水確率が55%だったので、傘の一言が付きました。

実行したときの件数の流れは、次のとおりです。

ノード出てきた件数
Webhook1
Get Weather(HTTP Request)1
Make Message(Code)1
LINE Broadcast(HTTP Request)1
Respond to Webhook1

動かしてみて気づいた点が2つあります。

  • LINEでは、メッセージの中の 2026-10-01 が、自動で青いリンクになりました。LINEが日付だと判断して、押すと予定を作れるようにしているようです。
  • 同じ日でも、実行する時刻で予報が変わりました。この日の早い時間に確かめたときは「くもり・降水確率6%」でしたが、この記事の実行(8時27分)では「霧雨・55%」でした。通知する時刻によって内容が変わる点に気をつけてください。

③ 使うノードと必要なもの

必要なもの

  • n8n(今回はバージョン2.41.3をDockerで動かしました)
  • LINE公式アカウント(無料で作れます)と、その「チャネルアクセストークン(長期)」
  • 認証情報:Header Auth(Authorization: Bearer チャネルアクセストークン)
  • Open-Meteoの登録やAPIキー:不要

LINE公式アカウントの作り方と、チャネルアクセストークンの発行のしかたは、「n8nでブログの新着記事をLINEに通知するワークフロー」の記事で説明しています。今回も、自分だけが友だちになっている通知専用の公式アカウントに、一斉送信(broadcast)で送りました。

Open-Meteoは、商用でない使い方なら無料です。商用で使う場合は、Open-Meteoの利用条件を確認してください。

使うノード

ノード役割設定したこと
Webhook動作確認用の起動ボタンPath:test-weather-line、Respond:Using 'Respond to Webhook' Node
HTTP Request(Get Weather)Open-Meteoから予報を取るMethod:GET、URL:下のURL
Code(Make Message)天気コードを日本語にして、メッセージの文章を作る下のコード
HTTP Request(LINE Broadcast)LINEに一斉送信するURL:https://api.line.me/v2/bot/message/broadcast、Header Authの認証情報
Respond to Webhook送った文章を返すRespond With:Text

Get Weatherでは、次のURLを呼んでいます。

https://api.open-meteo.com/v1/forecast?latitude=35.6895&longitude=139.6917&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=Asia%2FTokyo&forecast_days=1
Make Message(Codeノード)の設定画面

Make Messageでは、次の処理をしています。

// 天気コード(WMO)を日本語にする
const names = [
  [[0], '☀️ 快晴'], [[1, 2], '🌤️ 晴れ'], [[3], '☁️ くもり'], [[45, 48], '🌫️ 霧'],
  [[51, 53, 55, 56, 57], '🌦️ 霧雨'], [[61, 63, 65, 66, 67], '🌧️ 雨'], [[71, 73, 75, 77], '🌨️ 雪'],
  [[80, 81, 82], '🌦️ にわか雨'], [[85, 86], '🌨️ にわか雪'], [[95, 96, 99], '⛈️ 雷雨'],
];
const d = $json.daily;
const code = d.weather_code[0];
const weather = (names.find(([codes]) => codes.includes(code)) || [null, `天気コード ${code}`])[1];
const rain = d.precipitation_probability_max[0];
// LINEは太字が使えないので、【】で見出しにする
const lines = [
  `【${d.time[0]} 東京の天気】`,
  `${weather}`,
  `🌡️ 最高 ${d.temperature_2m_max[0]}℃ / 最低 ${d.temperature_2m_min[0]}℃`,
  `☔ 降水確率 ${rain}%`,
];
if (rain >= 50) lines.push('👉 傘を持って行きましょう');
return [{ json: { date: d.time[0], code, rain, text: lines.join('\n') } }];
  • Open-Meteoの天気は、weather_code という数字(WMOの天気コード)で返ってきます。表を作って日本語に直しています。
  • LINEのテキストメッセージは太字が使えないので、1行目を【】で囲んで見出しにしています。

LINE Broadcastの設定は、次のとおりです。

項目値
MethodPOST
URLhttps://api.line.me/v2/bot/message/broadcast
AuthenticationGeneric Credential Type → Header Auth
Send Bodyオン、Body Content Type:JSON、Specify Body:Using JSON
JSON{{ JSON.stringify({ messages: [{ type: 'text', text: $json.text }] }) }}

④ JSON

n8nの公開API(POST /api/v1/workflows)でこのJSONからワークフローを作成し、有効化してから、上の結果を確認しました。

使うときは、次の箇所を自分の環境に合わせて書き換えてください。

  • YOUR_LINE_CREDENTIAL_ID:n8nに登録したHeader Authの認証情報のID。読み込んだあとに、ノードの画面で認証情報を選び直しても大丈夫です。
  • Get WeatherのURLの latitude と longitude:自分の住む地域に変えてください。
{
  "name": "test-weather-line",
  "nodes": [
    { "parameters": { "path": "test-weather-line", "responseMode": "responseNode", "options": {} },
      "id": "b2100000-0001-4000-8000-000000000001", "name": "Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": [0, 0], "webhookId": "b2100000-aaaa-4000-8000-000000000001" },
    { "parameters": { "url": "https://api.open-meteo.com/v1/forecast?latitude=35.6895&longitude=139.6917&daily=weather_code,temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=Asia%2FTokyo&forecast_days=1", "options": {} },
      "id": "b2100000-0002-4000-8000-000000000002", "name": "Get Weather", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [220, 0] },
    { "parameters": { "jsCode": "// 天気コード(WMO)を日本語にする\nconst names = [\n  [[0], '☀️ 快晴'], [[1, 2], '🌤️ 晴れ'], [[3], '☁️ くもり'], [[45, 48], '🌫️ 霧'],\n  [[51, 53, 55, 56, 57], '🌦️ 霧雨'], [[61, 63, 65, 66, 67], '🌧️ 雨'], [[71, 73, 75, 77], '🌨️ 雪'],\n  [[80, 81, 82], '🌦️ にわか雨'], [[85, 86], '🌨️ にわか雪'], [[95, 96, 99], '⛈️ 雷雨'],\n];\nconst d = $json.daily;\nconst code = d.weather_code[0];\nconst weather = (names.find(([codes]) => codes.includes(code)) || [null, `天気コード ${code}`])[1];\nconst rain = d.precipitation_probability_max[0];\n// LINEは太字が使えないので、【】で見出しにする\nconst lines = [\n  `【${d.time[0]} 東京の天気】`,\n  `${weather}`,\n  `🌡️ 最高 ${d.temperature_2m_max[0]}℃ / 最低 ${d.temperature_2m_min[0]}℃`,\n  `☔ 降水確率 ${rain}%`,\n];\nif (rain >= 50) lines.push('👉 傘を持って行きましょう');\nreturn [{ json: { date: d.time[0], code, rain, text: lines.join('\\n') } }];" },
      "id": "b2100000-0003-4000-8000-000000000003", "name": "Make Message", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [440, 0] },
    { "parameters": {
        "method": "POST",
        "url": "https://api.line.me/v2/bot/message/broadcast",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ messages: [{ type: 'text', text: $json.text }] }) }}",
        "options": {} },
      "id": "b2100000-0004-4000-8000-000000000004", "name": "LINE Broadcast", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [660, 0],
      "credentials": { "httpHeaderAuth": { "id": "YOUR_LINE_CREDENTIAL_ID", "name": "LINE Messaging API token" } } },
    { "parameters": { "respondWith": "text", "responseBody": "={{ $('Make Message').item.json.text }}", "options": {} },
      "id": "b2100000-0005-4000-8000-000000000005", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.1, "position": [880, 0] }
  ],
  "connections": {
    "Webhook": { "main": [[{ "node": "Get Weather", "type": "main", "index": 0 }]] },
    "Get Weather": { "main": [[{ "node": "Make Message", "type": "main", "index": 0 }]] },
    "Make Message": { "main": [[{ "node": "LINE Broadcast", "type": "main", "index": 0 }]] },
    "LINE Broadcast": { "main": [[{ "node": "Respond to Webhook", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" }
}

⑤ つまずきポイントと対処

このワークフロー自体は、1回目の実行でエラーなく動きました。

気をつける点として、一斉送信(broadcast)は、公式アカウントの友だち全員に届きます。家族などにも送りたいときは、その人に友だちに追加してもらえば届きます。逆に、自分だけに送りたいときは、公式アカウントのQRコードやIDを人に教えないようにしてください。

友だちが増えると、1回の送信で使う通数も、友だちの人数分に増えます。無料プランでは月200通までなので、友だちが7人いると、毎朝1通でも1か月(30日)で210通になり、上限を超えます。

⑥ 応用アイデア

どれも、まだ試していないアイデアです。

  • Webhookを「Schedule Trigger」に替えて、毎朝7時に通知する
  • 降水確率が50%以上の日だけ送るようにして、通数を節約する
  • forecast_days=2 にして、明日の天気もあわせて送る
  • カレンダーの予定と天気を、1通にまとめて送る
ワークフローの作り方
LINE 天気 API
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • n8nでブログの新着記事をLINEに通知するワークフロー(Messaging API・重複なし)
  • n8nでGoogleカレンダーの今日の予定をLINEに通知するワークフロー(Messaging API)

この記事を書いた人

自動化ラボ管理人のアバター 自動化ラボ管理人

コードは書けないけれど、n8n と Claude(Claude Code)で仕事とブログを自動化しています。実際に動かしたワークフローを、動作確認日・JSON・つまずいたところまで記録しています。

関連記事

  • n8nで通知を送る方法まとめ:Discord・LINE・Telegram・Slackを実際に試して比べた
    2026年10月3日
  • LINE Developersコンソールに「あなたのユーザーID」が表示されないときの対処
    2026年10月3日
  • ワークフロー全体(Webhook → Today's Events → Make Message → LINE Broadcast → Respond to Webhook)
    n8nでGoogleカレンダーの今日の予定をLINEに通知するワークフロー(Messaging API)
    2026年10月1日
  • ワークフロー全体(Webhook → RSS Read → Pick New → Has New → LINE Broadcast / Respond None)
    n8nでブログの新着記事をLINEに通知するワークフロー(Messaging API・重複なし)
    2026年10月1日
  • ワークフロー全体(Webhook → Get Weather → Make Message → Discord → Respond to Webhook)
    n8nで今日の天気予報をDiscordに通知するワークフロー(APIキー不要)
    2026年10月1日
  • ワークフロー全体(Webhook → Get Weather → Format Row → Google Sheets → Respond to Webhook)
    n8nで天気予報(Open-Meteo)をGoogleスプレッドシートに毎日記録するワークフロー
    2026年10月1日
  • n8nテンプレート公開:WeatherAPI×Open-Meteoで天気予報を統一フォーマットで返すワークフロー
    2026年9月27日
  • n8n・LINE通知・Claude Codeで回している、今の自動化の全体像
    2026年9月17日

記事の種類

  • Claude 活用
  • n8n リリース情報
  • はじめての n8n
  • エラー・つまずき対処
  • サーバー・WordPress
  • テンプレート配布
  • ワークフローの作り方
  • 運営記録
つなぐサービス
Google スプレッドシートRSSLINESlackGmailDiscordTelegramWebhookn8n API天気 APIGoogle カレンダーGoogle ドライブ
目次
  • プロフィール
  • お問い合わせ
  • プライバシーポリシー

© 自動化ラボ.

目次