跳至主要內容

里程碑

🏡 時光雜貨店|結合 n8n × Notion × AI,打造專屬的智慧收藏小精靈

Jenny @jenny_.1107發布於 已編輯

前情提要

這次我運用 n8n 結合 Webhook、AI、HTTP Request、LINE Messaging API、Google Gemini 與 Notion,打造了一個可以透過 LINE 收藏文章與文字的 AI 小精靈——「時光雜貨店」。

一、專案背景與開發動機

在資訊快速流動的時代,我們每天都會接觸大量的新聞、科技文章、學習資源,以及生活中突然出現的靈感。但我發現,很多時候看到一篇有價值的文章,可能只是先複製網址、存到書籤,或傳到自己的聊天室,之後卻很少再回去閱讀。同樣地,臨時想到的創意、學習心得或筆記,也常常因為沒有即時整理而被遺忘。

剛好自己很喜歡使用Notion來排定行程以及所有事項安排,以這個為出發點,結合LINE打造專屬於自己的「收藏小精靈」。

二、專案想解決的問題

這次專案主要希望改善三個問題:
① 資訊分散,不容易集中管理:文章、筆記與靈感經常散落在不同平台,需要花時間重新尋找。
② 長篇文章閱讀與整理費時:即使收藏了文章,也可能因為內容太長,無法快速掌握核心重點。
③ 重複收藏與手動整理效率不佳:常常忘記自己是否收藏過某篇文章,也需要花時間手動建立標題、摘要與分類。

三、系統設計與技術實作

本次專案以 n8n 作為自動化核心,負責串接不同平台,並透過 LINE 提供簡單的操作介面。

LINE Messaging API × Webhook:使用 LINE Developers 建立 Messaging API Channel,並透過 n8n 的 Webhook 接收使用者傳送的訊息。當使用者傳送文章網址或純文字時,LINE 就會將事件傳送至 n8n,啟動後續自動化流程。同時加入 LINE 簽章驗證,確認訊息來源。

n8n × HTTP Request:使用 HTTP Request 節點與 LINE Messaging API 溝通,完成訊息回覆與摘要卡片推送。另外,透過網頁讀取服務擷取公開文章內容,並將取得的文字交由 AI 進行分析。

Google Gemini AI 智慧分析:將文章或純文字交給 Gemini AI 處理,自動歸納出文章摘要與核心重點內容、主題分類、相關關鍵字與標籤,將這些藉由 AI 處理,降低手動閱讀、分類與整理資訊的時間。

Notion 自動化知識管理:透過 Notion將 AI 整理完成的內容自動新增至 Notion 資料庫。讓文章、文字筆記與相關分類資訊能集中保存,逐漸建立一套管理收藏系統。

n8n Data Table 重複收藏判斷:利用 SavedArticles 資料表記錄文章網址、使用者識別碼、Notion 頁面連結及收藏時間。當相同使用者再次傳送已收藏的文章網址時,系統就會提醒已收藏,避免重複呼叫 AI 與建立相同資料,也可以避免過度浪費API額度。

四、目前完成的功能

1.文章網址收藏:只要將公開文章網址傳送給 LINE 小精靈,就會自動嘗試讀取文章並整理重點。
2.純文字與靈感紀錄:除了網址,也可以直接傳送文字,讓 AI 協助整理學習筆記、心得或突發的靈感。

  1. AI 智慧摘要與分類:自動提取內容重點,產生摘要、分類及關鍵字。

4.Notion 自動儲存:將整理結果儲存至 Notion,減少手動建立筆記的步驟。
5.重複收藏提醒:傳送曾經收藏過的相同網址時,LINE 會提醒使用者,避免重複收藏。

  1. LINE 即時回覆:使用者傳送內容後,系統會先回覆正在處理的訊息,完成後再傳送整理結果。

五、專案心得

這次開發讓我更深入理解 n8n 工作流程設計、Webhook 事件接收、HTTP API 串接、AI 文字處理,以及 Notion 資料儲存的實際應用。開發過程中,也遇到不少問題,例如 LINE replyToken 的使用限制、API 回傳格式、AI 模型配額,以及文章重複收藏的判斷邏輯。透過反覆測試與修改,逐步將不同服務整合成可以運作的自動化系統。

為什麼叫「時光雜貨店」的原因是:傳統雜貨店收藏著生活中各式各樣的小東西,而我希望這間數位雜貨店,能夠收藏每一篇值得閱讀的文章、每一段有意義的文字,以及每一個不想被遺忘的靈感。也許現在隨手收藏的一段資訊,在未來某一天,就會成為值得重新翻閱的寶藏。

六、遇到的困難

1.Notion 成功收藏,但 n8n Data Table 沒有新增紀錄:這是當初製作重複收藏功能時遇到的重要問題。有時候文章已經成功儲存到 Notion,但回到 n8n 的 SavedArticles 資料表,卻沒有看到新的收藏紀錄。這造成一個問題,雖然 Notion 已經有這篇文章,但因為 SavedArticles 沒有記錄,使用者再次傳送相同網址時,系統仍可能把它當作新文章,重新進行 AI 摘要與收藏。經過檢查後,我開始逐一確認 Notion 與 Data Table 節點之間的連接,以及 Insert 節點使用的欄位資料。透過調整 Expression 與節點資料來源,最後反覆測試,才逐步讓收藏索引正常運作。

2.已收藏文章仍然被當成新文章:這是我花了不少時間排查的另一個問題。原本希望使用者再次傳送已收藏的文章時,LINE 就能直接提醒「這篇文章已經收藏過」。但是在測試過程中,明明 SavedArticles 已經有紀錄,系統卻仍然進入文章擷取與 Gemini 摘要流程。一開始我以為是 IF 節點設定錯誤,因此反覆修改判斷條件。過程中還遇到 Boolean 與 String 資料型態不一致的問題,導致 IF 無法正常判斷。
後來才逐漸釐清,必須先確認 Data Table 是否真的查到資料,再讓 IF 根據查詢結果決定流程方向。因此,我使用 userId 和 url 作為查詢條件,並根據查詢結果是否包含有效的收藏紀錄,判斷文章是否已經收藏。完成後,相同使用者再次傳送相同網址時,就可以進入已收藏提醒分支,不必重新呼叫 Gemini,這樣一來就不會重覆浪費API的額度。

  1. 正式發布與多人使用的問題:當基本功能完成後,我希望讓「時光雜貨店」不只是自己使用,而是能夠分享給其他人。不過,這時候才發現,個人使用與多人使用其實有很大的差別。目前的系統是使用我自己的 n8n、Gemini API 與 Notion 資料庫。這代表如果其他人使用時光雜貨店,他們的文章會儲存到由我管理的 Notion,而不是他們的資料庫。雖然 SavedArticles 已經使用 LINE userId 區分使用者,但這並不代表每位使用者都有真正獨立的私人資料庫。如果未來要正式開放多人使用,還需要進一步處理資料隔離、存取權限、個人收藏空間及 API 用量限制。(這部分是目前遇到最大的障礙💦)

如果有任何疑問也歡迎各位大使可以一起交流.ᐟ.ᐟ.ᐟ

0 個愛心0 則留言

登入並驗證手機後就能留言。登入