先講這個專案最早是怎麼做的,因為那個「之前的版本」才是重點。

作者想做的事很單純:把網路上能找到的 n8n 自動化範本全蒐集起來,配個介面讓人搜尋、瀏覽、下載。第一版的做法非常工程師——一堆 workflow 的 JSON 檔丟進一個資料夾,再用 Python 內建的 http.server 隨手搭一個原始的 HTML 索引頁,能看就好。檔案三五十個的時候,這樣完全沒問題,跑起來還挺爽的。

然後範本越收越多,收到四千多個。整套就垮了。

舊做法:每次都把整座圖書館翻一遍

垮在哪?垮在它的瀏覽方式,是每次有人打開頁面,就把資料夾裡所有 JSON 掃過一輪、現場解析、現場組頁面。三十個檔案掃一輪你沒感覺,四千三百個檔案掃一輪,頁面就卡在那裡轉圈圈,記憶體被吃光,而且這種「現掃現組」的架構,根本做不出真正的全文搜尋——你沒辦法一邊掃檔案一邊還要比對關鍵字、排相關性。

打個比方你就懂了。這就像你每次想在圖書館找一本書,館員不是去翻目錄,而是從第一個書架開始,一本一本抽出來看書名,看是不是你要的。書少的小書房這樣找沒事,真正的圖書館要是這樣運作,你會等到天荒地老。

問題的根,不在程式碼寫得好不好,在這個架構問錯了問題。它把「儲存」跟「查詢」當成同一件事——資料怎麼放,就怎麼查。檔案一多,這個假設就崩了。

新做法:先建好目錄卡,查的時候只查卡片

作者第二版的解法,是把整套換成 FastAPI 加 SQLite,並且打開 SQLite 的 FTS5 全文搜尋。關鍵的轉變只有一句話:不再每次掃檔案了。

每個 workflow 的 metadata——名稱、觸發類型、複雜度、節點數、串接了哪些服務、tags——全都預先解析一次,索引進 SQLite。之後使用者來搜尋,系統碰都不碰那些原始 JSON 檔,只查資料庫裡那張早就建好的索引表。回到圖書館的比方:館員終於去建了目錄卡片,你要找書,他查卡片就好,不用再把書架翻一遍。

差距大到什麼程度,數字自己會講話:搜尋回應時間壓到 100 毫秒以內、記憶體佔用低於 50MB、整體體積比第一版小了 700 倍、載入快 10 倍、RAM 需求少 40 倍。同一批資料、同一個目的,只因為把「儲存」跟「查詢」拆成兩層,效能差了好幾個數量級。

裡面還藏了一個很聰明的小設計。重建索引的時候,它會先算每個檔案的 MD5 hash,跟資料庫裡記的比一下,沒變的檔案直接跳過。所以即使有幾千個檔案,更新也很快——它只動那些真的改過的。這又是同一個思路的延伸:別重算你已經算過的東西。

真正值錢的,不是那 4,343 個範本

講到這裡,要說一個有點反直覺的觀察了。

這個專案的賣點,表面上是「4,343 個現成範本、5.4 萬顆星」。但你真把它 clone 下來用一陣子會發現:那四千多個範本裡,只有大約 215 個是 active 狀態,活躍率大概一成。剩下九成是網路蒐集來的,品質參差,很多根本跑不起來,匯入前你還得自己一個一個檢查節點、看它會打哪些外部 API。

所以那堆範本的價值,其實沒有星星數看起來那麼高。真正值錢、值得你抄走放進自己專案的,是它把一個會越長越大的資料集,重新設計成「預先索引、增量更新、查詢與儲存分離」的那套工程判斷。範本會過期、會失效,但「資料一多,就該把查詢從儲存裡拆出來」這個道理,放到你下一個會長大的系統上,照樣成立。

順帶一提,它的技術選型也很值得學一個字:克制。後端就是 FastAPI、前端就是原生 JavaScript 加 Tailwind、資料庫就是一顆 SQLite,沒有引進任何花俏的框架。一個要扛毫秒級搜尋的系統,整個核心其實就三個檔案。能用最樸素的工具解決問題,本身就是一種品味。

怎麼開始玩

最快的方式是 Docker 一行:

1
docker run -p 8000:8000 zie619/n8n-workflows:latest

想本地裝,clone 下來 pip install -r requirements.txtpython run.py,第一次啟動它會自己檢查依賴、建目錄、初始化資料庫、把索引建好,然後印出網址。連環境都懶得弄的,直接開它掛在 GitHub Pages 上的線上版搜就行,只是完整 API 還是得自架。

找到順眼的範本,下載 JSON,在你的 n8n 裡用 Import from File 匯進去,再自己補上 credentials 跟參數就能跑。記住它只是個目錄,不會幫你執行、也不碰你的 n8n 實例——這個邊界劃得很清楚,反而讓它變得單純好懂。

回到最開頭那個垮掉的第一版。它教我的不是「SQLite 比較快」這種技術細節,而是一個更通用的提醒:當你的東西開始變慢、變卡、變難維護,先別急著優化程式碼,退一步問問自己——我是不是把「存資料」跟「用資料」這兩件本來該分開的事,硬綁在一起了?很多系統長大後的痛,根子都在這。

原文來源:Zie619/n8n-workflows - GitHub(MIT License)
線上搜尋介面:zie619.github.io/n8n-workflows