里程碑
7/28 Day6作業-專案管理助理
我是阿力 @kobey1234發布於
我的專案管理助理
一、我想要解決的問題
這個題目對我來說非常實用,因為我平常在管理事情的時候,最常遇到的問題就是:
專案跟任務本來是分開的,但實際使用時又必須連在一起。
但其實我不會用Notion的資料庫~~哈哈
如果我學會用Line說話,就可以自動化新增我的資料庫,甚至行事曆該有多好。
所以我今天想解決的是:
能不能直接透過 LINE 講一句話,就讓 AI 幫我新增任務、查詢任務、更新任務,並且自動處理 Notion 裡面的專案與任務關聯?
但我照著老師的影片做,居然在一開始的Create就卡關了,一卡就卡了一天,已經連續三天都想整天,卡超久都沒什麼睡,
不會最後還是通過我和AI的協力下,完成一個基礎版的「專案管理助理」。
二、我的中間思路
今天的核心架構是:
LINE 官方帳號
→ n8n
→ AI 判斷使用者意圖
→ Notion 關聯資料庫
→ 回覆 LINE我依據老師的教學,將這個專案管理助理拆成幾個能力:
Create:建立任務
Read:查詢任務
Update:更新任務
Delete:刪除任務也就是 CRUD 的概念。
不過這次實作時,我主要完成的是:
- Create
- Read
- Update
Delete 沒有放進主流程,因為刪除資料通常比較敏感,不太適合讓 AI 直接自動判斷。
如果 AI 誤判新增或查詢,頂多是多一筆資料或查錯資料;但如果誤刪,就可能把重要資訊刪掉。
所以 Delete 這次先保留,未來比較適合加上二次確認,例如:
使用者:刪除拿包裹這個任務
助理:你確定要刪除「拿包裹」嗎?請回覆「確認刪除」
使用者:確認刪除
助理:已刪除三、Notion 資料庫設計
透過一個 LINE 官方帳號,操控兩個以上的關聯資料庫。
所以在 Notion 裡面設計了兩個主要資料庫:
1. 專案資料庫
用來管理不同專案。
| 欄位 | 用途 |
| 專案名稱 | 儲存專案名稱 |
| 任務關聯 | 關聯到任務資料庫 |
2. 任務資料庫
用來管理每一個任務。
| 欄位 | 用途 |
| 任務名稱 | 儲存要做的事情 |
| 日期 | 任務時間 |
| 狀態 | 例如:未開始、完成 |
| 專案 | 關聯到專案資料庫 |
四、雙向關聯資料庫
今天一個很重要的設定是:
專案資料庫
↔
任務資料庫也就是要在 Notion Relation 欄位裡面打開雙向關聯。
這樣可以做到:
從專案看見底下有哪些任務也可以做到:
從任務回頭知道自己屬於哪一個專案這個設定非常重要,因為今天不是單純新增一筆任務,而是要讓任務正確掛到對應的專案底下。
如果沒有雙向關聯,資料雖然可能被寫進 Notion,但專案與任務之間的連動性就不完整。
五、Notion API 連接
老師的課程中有分享到:
Notion API 在右上角 ...
→ 連接
→ 開發人員入口網站這一步是要讓 n8n 可以操作 Notion 資料庫。
重點是:
- Notion 要先建立 integration
- 資料庫要開放給該 integration 存取
- n8n 才能透過 Notion 節點 Create / Read / Update 資料
- 欄位通常要確認 property name 或 ID
- 關聯欄位需要處理 Relation ID
如果這邊沒有設定好,n8n 可能會找不到資料庫,或是無法讀取、建立、更新 Notion 裡面的欄位。
六、整體 n8n 流程
這次的 n8n 流程大致是:
Webhook
→ clean
→ decider user intent
→ Get project name
→ Code in JavaScript
→ Switch
→ Create / Read / Update 分流
→ Notion
→ HTTP Request 回覆 LINE每個節點的角色大概如下:
| 節點 | 功能 |
| Webhook | 接收 LINE 傳進來的訊息 |
| clean | 整理使用者輸入 |
| decider user intent | 判斷使用者想新增、查詢還是更新 |
| Get project name | 取得 Notion 專案資料 |
| Code in JavaScript | 整理資料格式 |
| Switch | 根據意圖分流 |
| Notion | 建立、讀取、更新資料 |
| HTTP Request | 把結果回傳到 LINE |
其中最關鍵的是:
decider user intent它就像專案管理助理的大腦,負責判斷使用者現在到底想做什麼。
例如:
使用者說:後天中午十二點跟表妹去竹北吃飯
→ 判斷為 Create
使用者說:幫我看一下有什麼行程
→ 判斷為 Read
使用者說:我已經完成拿包裹了
→ 判斷為 Update七、AI 節點角色:Cleaner、Decider、Producer
今天我也把 AI 節點拆成不同角色來思考:
Cleaner
Decider
Producer| 角色 | 功能 |
| Cleaner | 整理使用者輸入,把自然語言清理成比較好處理的格式 |
| Decider | 判斷使用者意圖,例如 Create / Read / Update |
| Producer | 產生 Notion 需要的欄位資料,或產生要回覆使用者的內容 |
套用到今天的專案管理助理:
- Cleaner:先把使用者的自然語言整理乾淨
- Decider:判斷這句話是新增、查詢還是更新
- Producer:產生任務名稱、日期、狀態、專案分類與 LINE 回覆內容
這樣拆開後,整個流程會比較清楚,不會全部塞在同一個 AI 節點裡。
八、Create:建立任務
使用情境
使用者在 LINE 輸入一段自然語言,例如:
後天中午十二點跟表妹去竹北吃飯專案管理助理會判斷這是一個要新增的任務,接著整理出:
- 日期
- 任務名稱
- 專案
- 狀態
其中「專案」是由 AI 自動判斷要歸到哪一個專案。
例如這類生活行程,就會自動被歸類到:
日常生活Create 流程
Webhook
→ clean
→ decider user intent
→ Get project name
→ Code in JavaScript
→ Switch 判斷為 Create
→ AI 整理任務資料
→ Create a database page
→ HTTP Request 回覆 LINE回覆結果
LINE 回覆會顯示:
建立成功
今天又推進了一小步,很穩。並回傳任務資訊:
| 欄位 | 內容 |
| 日期 | 2026-07-31 |
| 任務名稱 | 在竹北和表妹吃午餐 |
| 專案 | 日常生活 |
| 狀態 | 未開始 |
這邊最有感的是,使用者不用打開 Notion,也不用自己選欄位。
只要用 LINE 講一句話,n8n 就會幫我把自然語言轉成一筆結構化任務,並且寫進 Notion 的關聯資料庫。
九、Read:查詢任務
Read 的重點是從 Notion 裡面讀取符合條件的任務。
課程中老師有分享到:
Read
→ Get many database page
→ 讀取不同天任務
→ return All
→ 完成以外的任務
→ Filter也就是查詢時不是只抓一筆,而是抓符合條件的多筆任務。
Read 流程
Webhook
→ clean
→ decider user intent
→ Switch 判斷為 Read
→ Get many database pages
→ Filter 篩選任務
→ Code in JavaScript 整理資料
→ HTTP Request 回覆 LINE查詢重點
查詢時可以依照條件篩選,例如:
- 指定日期
- 指定專案
- 未完成任務
- 某一段時間內的任務
LINE 回覆時,我用卡片方式整理任務內容,包含:
- 任務名稱
- 專案
- 日期
- 狀態
這讓查詢結果不只是冷冰冰的資料,而比較像是真的有一位助理幫我整理好今天或近期要處理的事情。
十、Update:更新任務
Update 跟 Create 最大的不同是:
要更新一筆任務之前,必須先知道那一筆任務的 ID。
所以不能直接更新,而是要先查詢、比對,再更新。
Update
→ Get many database page
→ 要先知道 ID
→ return All
→ Filter(Build Manually)
→ Any Filter
→ Filters
→ Property Name or ID
→ 狀態 do not equal 完成使用情境
使用者輸入:
我已經完成拿包裹了這筆「拿包裹」任務原本已經存在於 Notion 裡。
專案管理助理會先找到對應任務,再把狀態更新成:
完成Update 流程
Webhook
→ clean
→ decider user intent
→ Switch 判斷為 Update
→ Get many database pages
→ Filter 找到對應任務
→ 取得任務 ID
→ Update a database page
→ HTTP Request 回覆 LINE回覆結果
LINE 回覆:
更新成功
阿力,任務資訊已經幫你更新好了。更新資訊包含:
| 欄位 | 內容 |
| 任務名稱 | 拿包裹 |
| 狀態 | 完成 |
| 日期 | 7/29(三)16:00 |
| 專案 | 日常生活 |
這邊的感覺是,專案管理助理不只是幫我新增任務,也能幫我把事情收尾。
十一、Filter 條件:All Filter 與 Any Filter
今天筆記裡面也特別記了 Filter 的觀念。
All Filter
All Filter
→ 全都要符合也就是所有條件都成立,資料才會被抓出來。
適合用在比較精準的查詢,例如:
- 日期要符合
- 狀態不能是完成
- 專案也要符合
Any Filter
Any Filter
→ 只要符合其中之一也就是只要符合其中一個條件,就可以被抓出來。
適合用在比較寬鬆的比對,例如:
- 任務名稱可能有部分關鍵字
- 使用者講法不一定完全一致
- 只要有一個欄位符合就先抓出來
這次在 Read 跟 Update 的流程中,Filter 很重要。
因為如果條件設錯,就會發生:
- 查不到資料
- 查到太多資料
- 更新錯任務
- 已完成的任務又被撈出來
所以 Filter 就像專案管理助理的「篩選眼鏡」,戴錯度數就會看錯任務。
十二、日期 Filter 的踩坑
今天還有一個很重要的補充是日期 Filter
On or Before
{{ $now.endOf('day').toISO() }}意思是抓今天結束前的資料,也就是今天 23:59 前。
這裡有一個坑:
n8n 與 Notion 的日期判斷不同例如:
Notion 裡面看起來是 7/29 整天
但 n8n 可能會用 7/29 00:00 來判斷所以如果只用一般日期,很可能會漏掉當天資料。
因此要用:
{{ $now.endOf('day').toISO() }}把時間推到今天最後一刻,才比較符合「今天整天」的直覺。
十三、Delete:這次先不做
CRUD 裡面雖然有 Delete,但永遠用不到
Delete
→ 通常不會用,由人來決定我覺得這個判斷很重要。
因為刪除資料是不可逆或高風險操作,不適合讓 AI 在沒有確認的情況下直接執行。
所以 Delete 這次我沒有放進主流程,而是先保留給未來加上確認機制。
未來可以設計成:
使用者:刪除拿包裹這個任務
助理:你確定要刪除「拿包裹」嗎?請回覆「確認刪除」
使用者:確認刪除
助理:已刪除這樣會比直接刪除安全很多。
十四、最後完成的成果
今天最後完成的成果是:
透過一個 LINE 官方帳號,操控 Notion 裡兩個以上的關聯資料庫。
目前可以做到:
| 功能 | 狀態 |
| 用 LINE 新增任務 | 完成 |
| AI 自動判斷任務所屬專案 | 完成 |
| 寫入 Notion 任務資料庫 | 完成 |
| 關聯 Notion 專案資料庫 | 完成 |
| 打開專案與任務雙向關聯 | 完成 |
| 查詢指定條件任務 | 完成 |
| 查詢未完成任務 | 完成 |
| 更新任務狀態 | 完成 |
| 將任務改為完成 | 完成 |
| 用卡片方式回覆 LINE | 完成 |
這個作業完成後,我覺得專案管理助理已經有雛形了。
它不只是單純記錄待辦事項,而是可以把「人講的話」轉成「Notion 裡有結構的任務資料」。
十五、我的小結
今天這個作業讓我感覺到,n8n 真正強的地方不是單一節點,而是把很多服務串成一個工作流。
還要判斷許多節點的關係 ,非常多要考量的因素
這次我把:
LINE
+ AI
+ n8n
+ Notion
+ 關聯資料庫串在一起,讓使用者不用打開 Notion,只要在 LINE 裡面講話,就可以完成新增、查詢、更新任務。
這對我來說是一個很重要的里程碑,因為它代表:
AI 不只是聊天工具,而是可以變成我日常工作流裡真正的操作介面。
今天的專案管理助理還只是第一版,但已經可以看到未來的延伸方向:
- 加入刪除前確認
- 加入任務提醒
- 加入每週專案進度摘要
- 加入不同專案的優先順序
- 加入任務逾期提醒
- 加入更漂亮的 Flex Message 卡片
這次作業算是幫我打開一個想像:
沒人可以幫我的時候,就靠著AI一步一步陪著我死磕完成的。
這就是我今天完成的論壇里程碑:
用一個 LINE 官方帳號,操控兩個以上的 Notion 關聯資料庫,打造我的專案管理助理。
接下來要繼續打造我自己的社群的系統
7 個愛心0 則留言
登入並驗證手機後就能留言。登入