黛西:接下來,我們將一起進入到 n8n 的流程設置~
n8n 流程設置:
接下來,就正式進入 n8n 建置流程,在開始我剛剛有提到我希望上傳錄音檔後,產生逐字稿,且逐字稿要留檔備存,然後再透過 AI 把逐字稿轉成會議紀錄,這時候會議記錄也要備存,實務上的流程 拆解如下:
事前建置 Google Drive 檔案夾:
n8n 的工作流步驟拆解:
PS:這時候的步驟比較像在 Coding 時的動作拆解,非開發者背景會常常容易卡這邊,因為我們常常會把節點切割的太大。
上傳錄音檔 如同圖中所示,第一步是使用 Webhook 節點,這邊可以設定一個觸發點,當你的某項服務(例如:Google Drive 或 Dropbox)接收到新的錄音檔時,就自動觸發這個網址,啟動整個工作流。
在這邊我是將 Google Drive 設為 Trigger ,所以我會點擊 [+] 後,在右側搜尋 drive。
在這邊選擇:Trigger 中的「On changes involving a specific folder 特定資料夾異動」
這時候就會出現一個設定彈窗,第一個欄位 - 設定連接憑證(Credential to connect with)在剛剛已經設定完畢,後面 Google 相關的服務,因為已經設定過,這邊就可以略過,下方彈窗可以參考我這邊的設定。
請注意:在 Folder 那邊如果你前面有成功登入 Google 帳號,他就可以抓到我們的 Folder List,然後透過關鍵字輸入自己要的檔案夾,這邊我選擇的是:【IT-01 會議錄音檔】。
因為自己設定流程是:錄音檔上傳時,這代表在這個資料夾有一個檔案被 Creat,所以這邊我選擇:File Created。
都設定完畢後,可以點擊 [Fetch Test Event] 試跑一下,成功的話右邊會跑出結果,右下角也會有成功彈窗,如下畫面。
請注意:上傳檔案前我建議就先 On 上:「會議時間 + 名稱」,這樣在 n8n 流程中就可以省去命名的修改或定義,也會讓後面的檔案看起來更乾淨。
在這邊的設定,我是要搜尋檔案夾中的檔案,所以 Resource 這邊設定 File/Folder,然後 Operation 設定 Search。
接下來,因為我會統一把所有檔案放到同個資料夾,所以希望指定特定資料夾,所以 Search Method 會選擇 Search File/Folder Name,會針對某個名字的資料夾來搜尋,這邊先設定如何指定要的資料夾,等等會在下面再設定要指定的資料夾名稱。
因為我的錄音檔都是直接 Apple 手機錄音上傳,我的預設錄音檔是 .m4a,所以 Search Query 這邊我填入 .m4a。
每當新增檔案時,會針對當下資料夾內的檔案做搜尋,所以 Limit 我設定 1 。請注意:如果你設定 2 ,他會每次搜尋最新的兩筆,就會產生兩筆相關檔案,所以這邊設定 1 就好。
Filter : 我有新增一個 Drive 的選項,因為剛剛已經有先預新增好資料夾:IT-01 會議錄音檔,在這邊我就可以設定這個檔案夾。
設定完後,一樣讓他跑跑看,然後發現一樣有跑成功,我們就進入下一步。
在 Gemini 產逐字稿前,需要給他檔案,所以這邊有一個 Download file 要來下載上傳的錄音檔下來,以利提供給 Gemini 產逐字。
依照截圖做 Resource 和 Operation 做設定。
File : 要依照他搜尋到的檔案做下載,所以這邊選擇的是 BY ID,然後他可以從左邊的 Input 結果中找到 ID ,然後透過拖曳方式把他拉到我們的輸入框裡面。
最後,一樣是跑一下,可以看到右邊他有成功。
依照截圖做 Resource 、 Operation 和 Input Type 設定。
Model : 可以自己選擇要哪一種,我是選擇:2.5 flash。
Text Input : 可以下你要的 Promp。
Input Data Field Name(s) : 可以看到,前一個節點顯現的結果 Data,那我現在就是要前一個節點結果所產的內容,所以我在這邊輸入「data」。
設定結束後一樣跑一下看看,右邊會跑出結果。
依照截圖做 Resource 、 Operation 、Parent Drive 、 Parent Folder 設定。
File Content : 用拖曳方式把左方的 text text 拉到這邊輸入框,這就是我逐字稿檔案內要有的內容。
File Name : 把 Download file 那邊的檔名 name 拖曳過來中間彈窗的欄位,請注意:這時候語法是 {{ $('Download file1').item.json.name }} ,你會發現檔名是【2025-07-31 產品會議.m4a】 ,但我不想要這個.m4a,這時候我在 name 後面加上.split(".", 1) ,整個語法會變成 {{ $('Download file1').item.json.name.split(".", 1) }} ,檔名會變成【2025-07-31 產品會議】,但我希望在每一個會議後面都加上「逐字稿」,所以我有在後面又加上最終檔名會變成:【2025-07-31 產品會議 逐字稿】。
設定結束後一樣跑一下看看,右邊會跑出結果。
依照截圖做 Resource 、 Operation 、Model 設定。
Prompt: 下了 Prompt 後下方拖曳將「 text 內容」也置入。
設定結束後一樣跑一下看看,右邊會跑出結果。
依照截圖做 Resource 、 Operation 設定。
File Content : 將 「 text 內容」拖曳置入。
File Name : 建立檔案的名字,因為我的音檔會輸入日期和會議名稱,這邊我從前面 Download file 那邊找到 「name 檔名」拖曳置入。
設定結束後一樣跑一下看看,右邊會跑出結果。
寄信時需要附加檔案,所以這邊有一個 Download file 要來下載會議記錄下來,以利提供給 Gmail 寄信。
依照截圖做 Resource 和 Operation 做設定。
File: 跟前面一樣,選擇 BY ID,然後他可以從左邊的 Input 結果中找到 ID ,然後透過拖曳方式把他拉到輸入框裡面。
設定結束後一樣跑一下看看,右邊會跑出結果。
依照截圖做 Resource 、 Operation 、Email type 和 Attachment Field Name 做設定。
To: 填入該會議記錄需要寄的信箱。
Subject 信件標題: 把 Download file 那邊的檔名 name 拖曳過來中間彈窗的欄位,請注意:這時候語法是 {{ $('Download file1').item.json.name }} ,你會發現檔名是【2025-07-31 產品會議.m4a會議記錄】,但我不想要這個.m4a,這時候我在 name 後面加上.split(".", 1),整個語法會變成 {{ $('Download file1').item.json.name.split(".", 1) }} ,檔名會變成【2025-07-31 產品會議 會議記錄】,但我希望在每一個會議後面都加上「逐字稿」,所以我有在後面又加上最終檔名會變成:【2025-07-31 產品會議 會議記錄】。
Message : 可以輸入自己想要寄出的信件中的公版文字內容。
最後檢查 & 開啟 Active
最後可以點擊 [Execute workflow] 將整個流程 Run 過一次,如果都沒有問題的話,就可以開啟 [Active] ,然後就可以開始正式使用了。
接下來我們可以來檢驗一下成果:
PS:若是想要確認後再寄出信件,也可以在寄信前,再增加一個確認的節點。
以下是逐字和會議紀錄內容示意,光是節省的時間就覺得這是一個很棒的工具,但是產出內容如果想要再更細緻,那就需要在設定時,多做些細節調整。
像是以下會議記錄若是有哪種內容要表格整理或是其他格式或內容需求,可以在 Gemini 下 Prompt 時做調整。
名詞說明 - Webhook
「 Webhook 」是專門設計「 即時通知 」我們某件事情發生了,這與 「 API 」 需要「 定時 」去存取、檢查資料是否有更新不同。Webhook 的設計讓我們能夠在事件發生的那一刻立即知道, 對於需要依據資料更新狀態迅速反應的情況非常有幫助 。
Moon: 天啊,這簡直是魔法!節省了我太多時間,以後我再也不用害怕開會了!
黛西: 沒錯!當我們學會運用這些工具,我們就不再只是被動地處理工作,而是能主動地設計我們的「工作流」,這就是一流 PM 的殺手技能喔!