iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
生成式 AI

從零開始 : 學習運用 n8n 與 Dify 的 AI 自動化實戰系列 第 23

Day 23 : 自動抓取天氣資訊並寄信通知

  • 分享至 

  • xImage
  •  

在前面幾天,我們已經學會了如何用 n8n 做「課程提醒」、「自動寄信」等功能。
今天,我要帶大家一起做一個更生活化的應用──每天自動查天氣,寄信提醒自己要不要帶傘或穿外套!

今天的目標

讓系統每天固定時間(例如早上 7 點、晚上 6 點):

  1. OpenWeatherMap API 取得台北市即時天氣資料
  2. 將天氣資訊傳給 Dify,由 AI 生成自然語氣的播報內容
  3. 透過 Gmail 寄出郵件提醒

這樣一來,就能做到「AI 天氣小秘書」的功能,每天主動通知你天氣狀況!

使用節點架構

這次整個工作流程的架構如下:

Schedule Trigger → HTTP Request(OpenWeatherMap) → HTTP Request(Dify) → Gmail

一、建立 Schedule Trigger

  1. 在 n8n 點 + 新增節點,搜尋「Schedule Trigger」。
  2. 在設定中,選擇:
  • Trigger Interval: Days
  • Days Between Triggers: 1(每天一次)
  • Time: 可以新增兩個時間,例如 07:0018:00

補充:

  • 「Execute Workflow」按下時會立即執行一次(方便測試);
  • 實際排程只在設定的時間自動啟動。

二、抓取天氣資料(HTTP Request 1)

  1. 新增一個 HTTP Request 節點
  2. 設定如下:
  • Method: GET

  • URL:

    https://api.openweathermap.org/data/2.5/weather?q=Taipei&appid=你的API_KEY
    
  1. 點選「Execute Node」測試看看,如果成功會看到像這樣的 JSON:
{
  "weather": [
    { "description": "clear sky" }
  ],
  "main": {
    "temp": 298.15
  },
  "name": "Taipei"
}

--> 溫度是「開爾文(Kelvin)」,要轉成攝氏溫度要用:

{{ $json["main"]["temp"] - 273.15 }}

三、讓 Dify 生成播報文字

  1. 新增第二個 HTTP Request 節點(命名成 HTTP Request - Dify
  2. 設定如下:
  • Method: POST
  • URL: https://api.dify.ai/v1/chat-messages
  • Authentication: Header Auth
  • Header Key: Authorization
  • Header Value: Bearer 你的_Dify_API_Key
  • Content Type: JSON
  1. Body Parameters 中貼入這段 JSON:
{
  "inputs": {
    "city_name": "={{$json["name"]}}",
    "temperature_celsius": "={{$json["main"]["temp"] - 273.15}}",
    "weather_condition": "={{$json["weather"][0]["description"]}}"
  },
  "query": "請根據以下資訊生成一段自然語氣的天氣播報,內容要簡短活潑:城市是 {{ $json['name'] }},氣溫是 {{ $json['main']['temp'] - 273.15 }} 度,天氣是 {{ $json['weather'][0]['description'] }}。",
  "response_mode": "blocking",
  "user": "weather-user"
}
  1. 在 Dify App 中,建立一個新應用,並新增三個輸入變數:
  • city_name
  • temperature_celsius
  • weather_condition

四、寄信通知

  1. 新增一個 Gmail 節點
  2. 設定如下:
  • From Email: 你的 Gmail 帳號

  • To Email: 收件者(可以是自己)

  • Subject: 「今日天氣提醒」

  • Text:

    今日天氣播報:
    {{$json["answer"]}}
    

-->這裡的 $json["answer"] 會自動帶入 Dify 生成的播報內容。


上一篇
Day 22 : 課程提醒(每天提醒作業進度)
下一篇
Day 24 : 每日星座運勢寄送系統
系列文
從零開始 : 學習運用 n8n 與 Dify 的 AI 自動化實戰30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言