Yuanlin Lin

Blog

當 AI 寫程式遇上 n8n 工作流自動化 —— 低門檻卻能力無限!

Yuanlin Lin 林沅霖

2025-02-21

我最近觀察到身邊有一些平常有在用 n8n 來自動化自己日常工作流的同學們,開始嘗試搭配 AI 寫程式的方式,來強化他的 n8n 工作流,比如說叫 ChatGPT 寫一個 Discord 機器人,然後當我傳訊息給 Discord 機器人以後,這個機器人就會從收到的訊息裡面提取出對應的資料,然後轉發到 n8n 工作流的 webhook 觸發器,開始後續的自動化流程。

我覺得這個 AI 寫程式 + n8n 自動化工作流的玩法是非常有趣的,很多人會覺得在這個 AI 寫程式的時代,是不是其實「自動化工作流」的需求會慢慢降低,但其實仔細想想我們就會發現,雖然如果我們真的可以讓 AI 寫出任何東西,那我們確實不需要 n8n 這種工具來用手慢慢拉工作流,但事實是目前 AI 的發展並還沒有到真的「任何人」都可以在短時間讓 AI 寫出符合需求的程式,隨著需求越來越複雜這個可能性也越來越低,但這個複雜的需求卻可以用 n8n 這種工具來迅速實現。

所以今天這篇文章主要想來聊聊,我們怎麼可以善用兩者的優勢,用 AI 寫程式來快速做出 n8n 還做不到的部分,然後傳入 n8n 讓他完成後續的流程。一個最簡單的例子就是用 AI 寫程式來實現各種不同的「觸發器」,例如開頭的例子是用 Discord 機器人串接 n8n webhook 來作為觸發器,那麼這個例子其實可以照搬到其他不同的平台,例如:

  1. Facebook
  2. Threads
  3. Instagram
  4. Telegram
  5. Line

之類我們平常會使用的軟體或平台。

當我們想要用 ChatGPT 或其他 AI 工具來寫程式做這種自動化串接工具的時候,很多人的第一直覺是打開 ChatGPT,然後就直接說:「幫我寫一個 IG 機器人」這種簡單粗暴的 prompt,然後最後 ChatGPT 沒搞懂需求亂掰一通,然後使用者沒寫過程式也看不懂他在亂掰什麼,只知道照著做完全跑不動,最後沮喪放棄。

因此在構建這套 prompt 其實我是有自己的心得和小技巧可以分享的,主要可以歸納成幾點:搞清楚形式、搞清楚能力的邊界、搞清楚實作的細節偏好。

搞清楚形式

所謂的「形式」指的就是我們期待 AI 工具幫我們生出來什麼東西,雖然是機器人,但每個平台可能是用不同的形式來實現,例如某些平台的機器人是用 Webhook 來實現的,所以我們期待看到的形式就是一個能監聽在某個 port 的 http 伺服器,並且他要有一個可以公共訪問的網域;某些平台則是用持續連線的 session 來監聽 event 來實現的,所以我們期待的形式就是一個可以運行起來的背景程式,並且他只要有個地方可以持續運行就好。

搞清楚能力的邊界

今天就算 AI 真的超級會寫程式,有些東西辦不到就是辦不到!因為我們今天想要別人的 API 的話,如果他沒提供這個功能,那我們叫 AI 寫的後果也只是聽他在那邊憑空捏造一通而已,所以很重要的事情是在叫 AI 動手以前,我們需要先查證到底是不是真的有這個 API 可以來實現。

搞清楚實作的細節偏好

這個部分對於如果有技術背景的同學來說應該不陌生,很多時候同一個需求會有多個不同的實現方式,雖然這屬於技術細節所以沒開發經驗的同學可能不知道要提前說,但如果你提前說了可以節省很多不需要浪費的時間來排查後續遇到的問題,例如:

  1. 我喜歡用 Node.js 來開發機器人,但 AI 生出來的程式碼往往會使用 require('xxxx') 這種舊的語法,而不是現在常見的 import xxx from xxx 的寫法。

  2. 新版的 Node.js 早就已經自帶 fetch 函數了,但 AI 還是很喜歡叫大家去安裝古早時期的 node-fetch 套件。

  3. 雖然最佳實踐是把 API Key 和 Access Token 這些東西放在環境變數裡面管理,但我們連生出來的程式碼能不能跑都還不知道,沒必要急著花時間設定這個!

基於上述三個我的個人偏好,我只要讓 AI 幫我寫 Node.js 的程式,我都一定會在 prompt 最下面追加這幾行字:

1. 請直接給我 ESModule 的語法。
2. 不需要額外安裝 node-fetch,現在新版的 Node.js 已經原生支援 fetch 語法。
3. 不要急著把 API Key 之類的憑證放在環境變數,為了方便在開發過程中迭代,請直接 hardcode 在程式碼,等完成後我會自行移除。

找一個部署的地方

現在對於這種 AI 生成的 Node.js 小工具服務,我都推薦直接部署在 Zeabur 最新推出的 Zeabur Function 服務裡面,因為他是市面上真的可以從 AI 直接「複製貼上」就開始跑的服務。

首先我們可以部署一個 Zeabur 的 JavaScript and TypeScript Function 模板:

登入 Zeabur 後點擊右上角的「部署」按鈕即可

然後選擇你想要運行的區域,過一陣子以後就會看到他已經運行中並且可以前往控制台:

在控制台裡面,你可以看到一個叫做 「Function」的按鈕,這裡就是我們可以把程式貼進來並且查看執行結果的地方:

點進來以後你會發現「Function」頁面是一個三欄式的排版,你可以把 AI 寫好的程式貼到中間然後按儲存,右邊就會跑出執行結果。

如果執行成功就可以開始下一步測試,如果執行失敗則可以把右邊的錯誤訊息貼回去給 AI 要他幫你修正。

如果你的這個程式是一個需要網域的服務(例如 Line Bot 和 Facebook API 是基於 Webhook 的形式來實現)那麼就需要綁定一個網域:

點擊「網路」分頁,在最下面可以為服務開放一個新的端口

開放端口的時候,端口名稱可以自己隨便填寫,例如 webhttp 之類的都可以,端口號碼選擇 30008080 然後記得務必讓 AI 知道你寫的這個號碼是多少,這樣他生出來的程式才能跑在正確的端口上!

開放端口以後就可以綁定一個網域了,名字可以取自己喜歡的

等你的網域變綠色,就可以拿去 Line 後台或 Facebook 後台更新 Webhook 了

總結

AI 寫程式和 n8n 自動化工作流的結合,的確是一個非常有趣也實用的玩法。透過 AI,我們可以迅速生成一些 n8n 比較難做到的功能,像是各種平台的觸發器,這讓整個自動化流程更加靈活多變。雖然 AI 寫程式的能力越來越強,但它並不是萬能的,畢竟有些東西還是辦不到。

這時候,我們要特別注意三個關鍵點:搞清楚形式、能力的邊界、以及實作的細節偏好。

首先,搞清楚自己到底需要什麼樣的程式形式是非常重要的,這樣才能讓 AI 生成的程式碼能夠跑起來。接著,了解 API 的功能邊界也不能忽視,畢竟沒有效的 API,就算讓 AI 生成出來的程式碼再完美,也無法實現我們的需求。最後,對於技術細節的偏好,尤其是對於有經驗的開發者來說,這可以節省大量排錯的時間,讓整個開發過程更加順利。

至於部署部分,Zeabur 的 Function 服務真的是一個不錯的選擇,特別是對於這種 AI 生成的小工具,無需額外配置,直接複製貼上程式碼就能運行,極大地降低了開發門檻。當我們將這些技術結合起來時,就能夠迅速實現更複雜的工作流,真正發揮 AI 和自動化工具的優勢。

AI 寫程式加上 n8n 的自動化,未來一定會是所謂的「新一代開發者」們提高效率、實現創新的好幫手。

分享你的看法

暫無留言,你可以成為第一個留言的人!

author-avatar

關於作者

Yuanlin Lin 林沅霖

台灣桃園人,目前就讀浙江大學,主修計算機科學與技術,同時兼職外包全端開發工程師,熱愛產品設計與軟體開發。