這篇教學詳解如何透過 n8n 串接 Apify 從自動抓取 Google Maps 商家數據、 AI 雜誌化文案編輯,到自動寄送推薦郵件與 LINE 即時通知。在 LINE 群組討論聚餐時,最耗時的往往是收集餐廳資訊並整理成清單。即使有了關鍵字,手動切換 Google Maps 複製地址、評分與連結依然繁瑣。透過 n8這篇教學詳解如何透過 n8n 串接 Apify 從自動抓取 Google Maps 商家數據、 AI 雜誌化文案編輯,到自動寄送推薦郵件與 LINE 即時通知。在 LINE 群組討論聚餐時,最耗時的往往是收集餐廳資訊並整理成清單。即使有了關鍵字,手動切換 Google Maps 複製地址、評分與連結依然繁瑣。透過 n8

如何串接 Apify 與 Gemini,打造探店小幫手

2026/02/17 14:00
閱讀時長 19 分鐘

在 LINE 群組討論聚餐時,最耗時的往往是收集餐廳資訊並整理成清單。即使有了關鍵字,手動切換 Google Maps 複製地址、評分與連結依然繁瑣。透過 n8n 串接 Apify 爬蟲工具與 Gemini AI ,我們能讓 LINE OA 化身專業美食編輯:只要輸入關鍵字,系統便會自動抓取地圖數據,並由 AI 撰寫成具備雜誌質感的推薦報告,甚至直接寄送到您的 Gmail 信箱存檔,徹底自動化您的探店工作流。

什麼是 Apify ?
Apify 是一個集網頁爬蟲、自動化與雲端運行於一體的生態平台,透過豐富的現成工具(Actors)與強大的抗封鎖技術,讓使用者能高效採集網頁數據,並輕鬆串接至 AI 或各種自動化工作流中。

我們將延續「 如何用 n8n 自動備份 LINE 圖片與檔案至 Google 雲端硬碟」、「如何用 n8n 自動轉譯 LINE 群組語音訊息」的節點流程,進一步擴充 LINE OA 的功能。

如何配置 Apify 雲端爬蟲環境

步驟 1:進入 「 Apify 」 官方網站,點選右上角的 「 Get started 」 註冊帳戶。

步驟 2:登入後在 「 Apify Store 」 搜尋並選取 「 Google Maps Scraper 」 工具。
補充:介面左下角 Usage 為已使用額度及每月贈 5 美金的免費使用額度。

步驟 3:進入工具介紹頁面,確認該工具支援抓取商家名稱、評分、評論及圖片等細節。
補充:如需使用其他工具時也可以此方式,確認功能是否符合需求。

步驟 4:在 「 Form 」 模式下嘗試設定搜尋參數,包含地點需求 「 restaurant 」 、地點 「 Taipei, Taiwan 」 並將語言設為 「 繁體中文 」。
補充:此工具的搜尋字詞包含:「搜尋需求及地點」。

步驟 5:切換至 「 JSON 」 頁面預覽參數結構(為稍後 n8n 撈取資料時參考寫法),並點選右上方 「 Save & Start 」 試執行。
補充:初次使用工具時,建議都可以在 apify 先執行一次,以確認撈取的資料符合需求。

步驟 6:執行完成後,在 「 Output 」 頁面確認爬蟲已成功抓取多間商家的詳細數據資料。如選擇「Export」則可以將資料直接匯出。
補充:此時可以觀察左下角的使用量,以確保接下來的使用額度。

步驟 7:點選左側選單最下方的 「 Settings 」 按鈕。

步驟 8:進入 「 API & Integrations 」 分頁,點選圖示複製您的 「 Personal API tokens 」 供 n8n 串接使用。

如何在 n8n 設定關鍵字觸發邏輯

步驟 1:進入 n8n 工作流列表,點選 「 My workflow 」 進入先前已建立的處理流程。

步驟 2:在畫布中點選 「 Webhook 」 節點進入設定介面。

步驟 3:複製 「 Test URL 」 網址,並前往 LINE Developers 後台將 「 Webhook URL 」 欄位內容更換為此測試網址後點選 「 Update 」。
補充:由於後續需進行資料傳輸確認,故先將 LINE 後台的正式連結切換為測試連結。

步驟 4:在畫布選取 「 Filter 」 節點,點選右鍵選單中的 「 Duplicate 」 進行複製。

步驟 5:將新複製的 「 Filter3 」 節點分支連接至 「 Webhook 」 的輸出端點,建立探店處理路徑。

步驟 6:開啟 「 Filter3 」 ,設定篩選條件為訊息內容 「 text 」 必須 「 contains 」(包含) 關鍵字 「 好評推薦: 」。例如:輸入「好評推薦:台北不限時咖啡廳」才會進入此工作流。

步驟 7:點選「Execute step」接著在LINE OA 輸入任一包含「好評推薦:」字詞(如:「好評推薦:台北拉麵店」)確認此節點設置成功。

 

步驟 8:複製語音流程的 「 Code in JavaScript 」 節點並連線至 「 Filter3 」 輸出端點。

步驟 9: 此節點用來設定允許特定群組 ID 執行功能,若為新增節點可輸入以下程式碼。(群組 ID 我們將在後續步驟設定)

程式碼:

// ⚠️ Configuration: Add Allowed Group IDs here

const allowedGroups = [

  'C_GROUP_ID_1_HERE', // Support Group 1

  'C_GROUP_ID_2_HERE', // Support Group 2

];

const event = items[0].json.body.events[0];

const sourceId = event.source.groupId || event.source.userId;

const sourceType = event.source.type;

// 1. Allow Direct Messages (LINE OA itself / 1-on-1)

if (sourceType === 'user') {

  return items;

}

// 2. Allow Specific Groups

if (allowedGroups.includes(sourceId)) {

  return items;

}

// 3. Block everything else

return [];

如何串接 Apify 節點執行地圖搜尋

步驟 1:在畫布點選 「 + 」 圖示搜尋並選取 「 Apify 」 節點,首次使用需點選右上角 「 Install node 」安裝。

步驟 2:在動作清單中選擇 「 Run an Actor 」 準備執行特定的爬蟲任務。

步驟 3:開啟 「 Credential to connect with 」 下拉選單,點選 「 + Create new credential 」。

步驟 4:將連線方式改為 「 API Key 」 ,貼上剛才在 Apify 複製的金鑰並點選 「 Save 」。
補充:如選擇「OAuth2」會跳出 Apify 登入的視窗,完成登入即驗證完成,不需輸入 API Key。但如果是透過其他平台如 Zeabur 則建議 API Key 驗證方式。

步驟 5:在 「 Actor Source 」 選擇 「 Apify Store Actors 」 ,並在 「 Actor 」 清單搜尋並選取 「 Google Maps Scraper 」 。

步驟 6:在 「 Input JSON 」輸入以下搜尋條件,並將左側稍早在 LINE 原始文字拖曳至 JSON 內。
補充:JSON 的寫法可以在 Apify 介面選好搜尋條件後複製,以下搜尋條件為搜尋:「LINE傳入的字詞」、台灣地區、近一1個月、評分4.2顆星以上、最新的前 10 則評論。

JSON:

{

  "searchStringsArray": [

"{{ $json.body.events[0].message.text }}"

  ],

  "locationName": "Taiwan",

  "maxCrawledPlacesPerSearch": 50, 

  "language": "zh-TW",

  "minRating": 4.2, 

  "maxReviews": 10,

  "reviewsSort": "newest",

  "includeReviews": true,

  "reviewsStartDate": "1 month"

}

步驟 7:在搜尋字詞後方加入以下程式碼,以清理字串「好評推薦:」避免影響搜尋。接著選擇「Execute step」執行搜尋。

程式碼:

.replace('好評推薦:', '').trim()

如何彙整與處理爬蟲數據

步驟 1:在 「 Run an Actor 」 節點後方點選 「 + 」 圖示,選取 Apify 的 「 Get dataset items 」 動作。

步驟 2:左側搜尋「id」將前一節點產出的 「 defaultDatasetId 」 拖曳至「Dataset ID 」欄位中,並執行 「 Execute step 」 抓取完整列表。

步驟 3:在畫布搜尋並新增 「 Aggregate 」 節點,準備將多筆分散的商家資料合併。

步驟 4:合併方式選擇「 All Item Data (Into a Single List) 」 ,並在 「 Include 」 欄位選擇 「 Specified Fields 」。

步驟 5:在 「 Fields To Include 」 填入欲獲取的欄位,如 「 title, totalScore, reviewsCount, reviews, address, url 」 等。接著點選「Execute step」執行資料合併。

如何利用 Gemini 編輯美食報告

步驟 1:在畫布搜尋並新增 「 Basic LLM Chain 」 節點,作為 AI 邏輯處理中心。

步驟 2:將 「 Aggregate 」 節點彙整後的資料「data」拖曳至「 Prompt (User Message) 」 區塊。

步驟 3:點選 「 Add prompt 」 。

步驟 4:在「Message」輸入 AI 角色設定指令。開啟右側 Webhook 節點將 「 text 」 拖曳至指令中,並依照下方指示詞設定格式。
補充:此指示詞包含 AI 最終彙整資料的呈現格式及內容。

指示詞:

你是一位專業的美食雜誌編輯。以下是本月「{{ $('Webhook').item.json.body.events[0].message.text }}」的最新數據資料庫:

請為我撰寫一份「{{ $('Webhook').item.json.body.events[0].message.text }}」。請分析數據,挑選出「近期評論最熱絡」且「位於該地區」的前 10 名。

【嚴格過濾條件】

排除任何明顯非目標地區的地址。

必須推薦滿 10 間,不足則有多少列多少。

【輸出格式要求】 請直接輸出一份完整的 HTML Email 代碼 (不要包含 ```html 標記):

整體佈局:

背景使用淺灰色 (#f5f5f5),主容器寬度上限 600px,置中對齊。

標題下方每一間店佔用一個白色背景 (#ffffff) 的橫向卡片。

卡片排版 (橫向並排):

使用 <table> 標籤實現「左圖右文」。

左側欄 (圖片):寬度佔 40%。使用 imageUrl,設定 border-radius: 8px;,確保圖片充滿容器且不變形 (object-fit: cover)。

右側欄 (資訊):寬度佔 60%,左邊距 15px。

🏠 店名:字體加粗,顏色 #333333。

⭐ 評分優化:使用 HTML 實體符號 ★ 代替 Emoji。樣式:color: #ffcc00; font-size: 16px; font-weight: bold; line-height: 1;(確保星星邊緣銳利不糊掉)。

📍 地址:顯示 address,字級略小。

📝 推薦理由:綜合 reviews 分析,用 25 字內繁體中文精簡描述亮點。

🔗 按鈕:在右下角顯示一個藍色背景的「查看地圖」小按鈕。

樣式約束:

卡片之間設定 15px 的間距。

卡片需有圓角 10px 與細微陰影。

步驟 5:接著開啟右側 Aggregate 節點將「data」合併的資料拖曳至指示詞。 

指示詞:

你是一位專業的美食雜誌編輯。以下是本月「{{ $('Webhook').item.json.body.events[0].message.text }}」的最新數據資料庫:{{ JSON.stringify($json.data) }}

請為我撰寫一份「{{ $('Webhook').item.json.body.events[0].message.text }}」。請分析數據,挑選出「近期評論最熱絡」且「位於該地區」的前 10 名。

步驟 6:點選 「 Basic LLM Chain 」 下方的 「 + 」 圖示,新增 「 Google Gemini Chat Model 」 節點。

步驟 7:將模型設定為 「 gemini-2.5-flash 」 ,確保生成內容具備高效且精準的繁體中文表達。
補充:由於上一篇已建立 Google API Key 憑證,故不需再次建立。

如何自動寄送推薦郵件至 Gmail

步驟 1:在 AI 節點後方新增 Gmail 的 「 Send a message 」 節點。

步驟 2:點選 「 Credential to connect with 」 下的 「 + Create new credential 」 建立憑證。

步驟 3:選擇 「 OAuth2 」 連線方式,點選下方 「 Sign in with Google 」 進行帳號連動。

步驟 4:選取您的 Google 帳號並核對權限要求後,點選下方 「 繼續 」 完成授權。

步驟 5:在 「 To 」 欄位填入您的收件信箱,並在 「 Subject 」 欄位利用語法設定動態主旨為今天的年/月。
補充:如希望多位收件人以半形逗點分隔即可。

輸入:

{{ $today.format('yyyy年MM月') }} 

步驟 6:開啟「Webhook」節點>text 拖曳至主旨後一空格, 將主旨 與 LINE 傳入的關鍵字結合。如輸入:好評推薦:台北拉麵店,則信件主旨則為「好評推薦:台北拉麵店 2026年02月」。

步驟 7:「 Email Type 」 設定為 「 HTML 」。將 AI 產出的 「 text 」 內容拖曳至 「 Message 」 欄位引用,點選 「 Execute step 」 執行寄送測試。
補充:地圖搜尋執行需 2-3 分鐘的時間。

步驟 8:登入 Gmail 確認已成功收到一封包含商家圖片、評分與 AI 評論的美食清單郵件。

如何同步回傳 LINE 通知寄件成功

步驟 1:複製原本用於回覆的 「 HTTP Request 」 節點,連線至 Gmail 節點後方。

步驟 2:在 「 JSON 」 內容的 「 text 」 欄位中,設定一條確認訊息告知使用者報告已寄出。

指示詞:

「✅ 您的美食研究報告已寄出!\n📧 請查看您的 Gmail 信箱。」

步驟 3:回到畫布點選「Execute workflow」執行,在 LINE 群組輸入關鍵字「好評推薦:+指定條件」測試完整流程。
補充:可以透過半形逗點輸入多個條件,如:「好評推薦:台北不限時咖啡廳, 台北咖啡廳工作, 台北 插座 咖啡廳」。

步驟 4:確認是否能同時收到 LINE 訊息與電子郵件。

如何在群組執行地圖搜尋

步驟 1:開啟地圖搜尋流程中的 「 Code in JavaScript2 」 節點。

步驟 2:將程式碼陣列中的 「 C_GROUP_ID_1_HERE 」 替換為您實際要運作的群組 ID 。
補充:將 LINE OA 加入群組,並輸入 「 查詢id 」 觸發前置流程獲取資訊
可以參考上一篇流程。

步驟 3:選擇 「 Execute workflow 」 並在該 LINE 群組中傳送搜尋訊息如:「好評推薦:寵物友善餐廳」,如未輸入城市則會搜尋全台灣的地點。
補充:每次執行都會消耗 Apify 的額度,如執行失敗可以確認是否當月額度已用盡。

步驟 4:確認是否能同時收到 LINE 訊息與電子郵件。
補充:如希望群組的朋友也能收到郵件,開啟流程中 Gmail 節點新增即可。

如何正式發佈

步驟 1:測試完成後,回到畫布開啟「 Webhook 」 節點。

步驟 2:切換至 「 Production URL 」 分頁,複製正式網址並回到 LINE Developers 控制台更新 「 Webhook URL 」。

步驟 3:點選 n8n 畫布右上角的 「 Publish 」 按鈕。在彈出的視窗中輸入版本描述,再次點選 「 Publish 」 正式啟用流程。

步驟 4:在已設定的群組內輸入關鍵字觸發流程,確認成功執行。

市場機遇
Ucan fix life in1day 圖標
Ucan fix life in1day實時價格 (1)
$0.0006281
$0.0006281$0.0006281
-7.26%
USD
Ucan fix life in1day (1) 實時價格圖表
免責聲明: 本網站轉載的文章均來源於公開平台,僅供參考。這些文章不代表 MEXC 的觀點或意見。所有版權歸原作者所有。如果您認為任何轉載文章侵犯了第三方權利,請聯絡 [email protected] 以便將其刪除。MEXC 不對轉載文章的及時性、準確性或完整性作出任何陳述或保證,並且不對基於此類內容所採取的任何行動或決定承擔責任。轉載材料僅供參考,不構成任何商業、金融、法律和/或稅務決策的建議、認可或依據。