Latest

n8n怎麼做防抖debounce?

n8n怎麼做防抖debounce?

防抖 debounce, 是程式設計重要的概念之一。 用意是短時間有多個訊息進來,只處理一次。 處理哪一次呢?只處理最後一次。 就比如,有人點擊習慣什麼都按兩下, 你就要每次都處理兩次嗎? 又比如,你做 Line 機器人。講一句回一句。 那如果使用者一次傳好幾句呢? 像是打錯字,習慣的修正,再送一次。或是使用者分段講完。 你要跑一次一起處理,還是跑多次? 現在你知道使用情境了,那在 n8n 怎麼做呢? 就比如 Line 訊息好了,你其實可以把Webhook 來的訊息存到 db 裡。 另外做一個 短時間(ex:10s) 就跑一次的 schedule, 去檢查新訊息,並休息一下(ex:5s)。再檢查新訊息。 如果兩次新訊息,筆數都一樣,就表示沒有新訊息進來了。就可以開始處理。 最後再把新訊息標記成舊訊息。 讓

By Mason Tang
n8n 主從架構,解放n8n效能,進行更多任務

n8n 主從架構,解放n8n效能,進行更多任務

n8n 有提供主從架構,讓多個 n8n 程式一起為你工作。 他們會懂得調派任務。 比如你把任務給主管,主管收到任務,就會把任務分配給底下的員工。而你身為老闆的你,只要面對主管。 這主管就是 Master, 員工就是 Slave (奴隸,真貼切) 透過多個程式,讓效率大幅提高。同時間能進行的任務更多。 那實際怎麼做呢? 設定 N8N_ENCRYPTION_KEY 這是用來加密資料庫資料的密鑰,在原本單一 n8n ,不是那麼需要,啟動時就會幫你建立。 會存在 .n8n/config 中,長得就像這樣 { "encryptionKey": "cjw5GKuWL6eoqaC0MOnHdBNWOfxAzXsn" } 今天你要跑多個 n8n ,每個 n8n 都要讀資料庫,那些加密的資料就需要同樣的 encryptionKey 才能讀取。 所以需要直接在環境變數中直接設定

By Mason Tang
n8n 做個計數器,保存變數到下一次執行

n8n 做個計數器,保存變數到下一次執行

n8n 可能有人會好奇,怎麼做計數器,例如一天只能使用 200次。 但是 Node 裡,似乎沒看到這功能。 但其實這功能就藏在 Code 裡 獲取靜態資料 其實這功能就藏在 $getWorkflowStaticData 使用這個函數,拿到的物件,其實是能持久化的,即使 n8n 關掉再開,資料也還在。 整個 n8n 共用這變數 使用 $getWorkflowStaticData('global') 這邊可以看到,這個 count 已經被使用 9 次了,並且在其他 Code 也可以獲得這個 count 單一 Node 使用,不能跨 Node 使用 使用 $getWorkflowStaticData('node&

By Mason Tang
n8n 教學,匯出/匯入所有憑證,輕鬆搞定 n8n 搬家

n8n 教學,匯出/匯入所有憑證,輕鬆搞定 n8n 搬家

上次介紹了如何在 Zeabur, Docker, Node.js 部署自動化工具 n8n。 n8n教學-搭建自動化工具 n8n 的三個方案近幾年隨著 AI 發展,AI Agent 和自動化也成為企業轉型和提升效率的重要工具。這些技術不僅能夠處理大量的數據分析,還能自動完成重複性高、耗時的任務,讓員工能夠專注於更具創造性和戰略性的工作。 今天就教你,搭建自動化工具 n8n 的三個方案。 三種搭建n8n的方案 1. 使用 Zeabur 的 Saas 服務 2. 使用 Docker 部署在自家機器上 3. 使用 Node.js 直接啟動在自家機器上 使用 Zeabur 的 Saas 服務 這我也是看雷蒙才知道有 Zeabur 這平台,的確是新手很適合的入門。也推薦給大家使用 優點:

By Mason Tang
n8n教學-搭建自動化工具 n8n 的三個方案

n8n教學-搭建自動化工具 n8n 的三個方案

近幾年隨著 AI 發展,AI Agent 和自動化也成為企業轉型和提升效率的重要工具。這些技術不僅能夠處理大量的數據分析,還能自動完成重複性高、耗時的任務,讓員工能夠專注於更具創造性和戰略性的工作。 今天就教你,搭建自動化工具 n8n 的三個方案。 三種搭建n8n的方案 1. 使用 Zeabur 的 Saas 服務 2. 使用 Docker 部署在自家機器上 3. 使用 Node.js 直接啟動在自家機器上 使用 Zeabur 的 Saas 服務 這我也是看雷蒙才知道有 Zeabur 這平台,的確是新手很適合的入門。也推薦給大家使用 優點:新手友善,0 基礎上手。以足矣面對 80% 的使用者需求。 缺點:更改設定麻煩,會遇到平台賦予的限制。

By Mason Tang
n8n 踩坑日記,9個開發技巧,加速開發速度。(一)

n8n 踩坑日記,9個開發技巧,加速開發速度。(一)

雖然寫(一)但由衷希望不要有(二) 如果有(二)表示我又踩到更多坑 拆成多個 Workflow,供相同用途時重複使用 模組化是能不能組織龐大架構的必經之路, 把很多地方都能重複使用的功能,獨立出一個 Workflow,讓其他工作流可以使用。 出錯也知道是哪一塊出問題。減少找問題的時間。 Wait + Loop 限制 HTTP 節點使用速度 如果前一個 output 有很多 item,遇到 http 節點,會瞬間 n 個request 發出去。 通常目標 server 會做速率限制。如果一次太多請求,會給你 429 的速度太快的錯誤。節點就停了。 這時要使用 Loop 把 output 拆成多個,後面接 Wait 節點,停個幾秒(

By Mason Tang
n8n 非預期結果的 Retry,在沒有 Fail 時,再試一次

n8n 非預期結果的 Retry,在沒有 Fail 時,再試一次

今天在處理資料時,發現 response 有異常,並不在預期裡。 原本已經有開啟 Error 的 Retry ,但這不是節點的 Error ,節點是正常執行完畢的。 那麼就要想個方法在遇到非預期結果時,重新執行。 改由迴圈以保持順序。 首先來看問題的 output 長什麼樣,可以看到正常應該是 有 sourceText , translatedText 兩個欄位, 今天不知道為什麼,有些是以 data 裡放 json 且為空值。 今天不太可能直接用 if 讓true false 正常和異常直接分兩邊,最後 merge 回來。這樣順序都亂掉。 所以為了保持順序,要在 Loop 裡進行重做。如果你問題不需要 Loop ,那可以跳過這步。 使用 Do No Thing 接值,

By Mason Tang
Wordpress Too Many 301 問題何解?

Wordpress Too Many 301 問題何解?

今天遇到一個問題差點 網站掛掉。 第一次遇到,有點緊張,因為後台整個不正常。 嘗試著清除 Cloudflare Cache,無效。 為了找出哪個 plugin 作祟,把所有外掛逐一停用。最後外掛全停了,問題還在。 後來發現要清除的不是 Cloudflare 快取,而是瀏覽器的快取。 所以逐一開啟 js , css 使用 Command + Shift + R 強制刷新大法,把 301 變 200 最後把外掛都啟用回來,設定還跑掉。差點以為要重新設置佈景。 uagb 一直無法正常使用,把 Spectra,Starter Templates 這兩個裝回來才搞定。

By Mason Tang
n8n Merge 節點最常使用的 4 個功能,最後 1 個由爲強大

n8n Merge 節點最常使用的 4 個功能,最後 1 個由爲強大

merge 節點是很強大的資料處理節點。以下介紹 4 個最常使用的功能。 範例是按照順序製作的,要從頭看到尾喔。 Append 把相似/相同結構的資料,連接在一起 今天你有多個相似結構資料,可能是來自不同來源,現在你要把他們連接在一起輸出,就使用 Append。 Position 按照順序結合在一起 使用 Combine 的 Position 將,對應順序的資料結合在一起。也是我最常使用的功能。 可以看到,fruit 都各自多對應一個 car。 Metching Field 搜尋相同欄位,結合在一起 不同來源,但具有相同欄位的資料,透過 Metching Field 把資料關聯起來。 可以看到,因為只有 Tesla 和 BMW ,Toyota 就被排除了。是因為使用的 Output Type,是

By Mason Tang
60個 n8n 內建能串接的開源軟體

60個 n8n 內建能串接的開源軟體

1. Baserow:以 PostgreSQL 為基底的開源資料庫表格平台。 2. Bitwarden:密碼管理工具,核心功能以開源模式提供。 3. Cal.com:開源的行程預約日曆平台。 4. Cockpit:Red Hat 主導的 Linux 伺服器網頁管理工具,GPLv2 授權。 5. Cortex:TheHive 專案相關的開源事件分析與自動化平臺(若此處指 TheHive/ Cortex)。 6. CrateDB:分散式 SQL 資料庫,具備開源社群版本 (Apache 2.0)。 7. crowd.dev:用於社群管理與洞察分析的開源平台。 8. DFIR-IRIS:又稱 IRIS(Incident Response Investigation System)

By Mason Tang
透過 n8n 將圖片轉換格式

透過 n8n 將圖片轉換格式

因為最近在弄 AI 生圖 + n8n 自動化, 發現 AI 生出來的 PNG 實在太大了, 除了 resize 圖片等比例縮小,還想到轉成小很多的 JPEG, 但是發現內建沒有這功能,於是就手刻一個 plugin。 也公開給有需要的人使用。 輸入/輸出,可以是base 64 或 圖片檔。 格式就 JPG, PNG, BMP, TIFF, GIF 範例用的提示詞是 no one cares, angry 和 no one cares, sad 在 n8n 設定的 Community nodes 輸入 n8n-nodes-convert-image 即可使用。 https:

By Mason Tang
n8n用客製節點,自動執行區塊鏈轉賬

AI 自動化

n8n用客製節點,自動執行區塊鏈轉賬

你有沒有想過 存放在區塊鏈上的錢,能夠自動轉出!? 現在用 n8n 就能做到了 那要怎麼做呢? 首先假設這筆錢,不存放在交易所,不然直接用交易所的 API 就好了~ 而是持有私鑰的地址,有著一筆錢。 現在私鑰有了。什麼情況要轉帳呢? 最有可能是某個新聞消息。誰又中彈、誰被抓去關等等...... 我們可以假設是從 RSS 來的,因為新聞不只一筆,所以要逐筆處理。 然後我們可以透過 AI 去判斷是不是我們指定的相關新聞,例如:哪個政治人物怎樣。 透過 Switch 把相關事件,交給我們今天的主角「客製化的節點」。 製作客製化節點(Node) 要製作客製化節點,首先我們可以去 GitHub 把官方範例下載下來 https://github.com/n8n-io/n8n-nodes-starter 然後放到 n8n 的使用者目錄中。預設是在 ~/n8n,

By Mason Tang
VSCode 截圖神器 Easy CodeSnap

VS Code

VSCode 截圖神器 Easy CodeSnap

如果有在用 VSCode 和打技術 Blog ,可能會知道 CodeSnap 這款截圖美化工具 但你一搜尋,一定會看到超多複製品,原因是最原始的版本 2.6M 次下載的版本,早在 2021年就停止更新了。 後續各種複製品陸續更新、互相抄襲他們自己的功能。 這麼多款 CodeSnap,個人覺得最好用的是 Easy CodeSnap 相較其他變體,都有的 highlight 及增刪 highlight ,還多出 Windows/MacOS Style 的視窗供你選擇 背景顏色,可以在設定中輸入 CSS 顏色的語法,讓背景變成漸層或指定顏色

By Mason Tang
3個截圖美化工具 Pika , Brandbird, Screenzy

生產力工具

3個截圖美化工具 Pika , Brandbird, Screenzy

Pika 開源工具 Open Souce 的工具,可以自己部署,不過自己部署太麻煩。有幸找到一個已經有人部署的非官方線上工具:https://pika-01s.pages.dev/ 官方版需要註冊。官方版本比起自己部署,具有更多功能 https://pika.style/ BrandBird 超精美的截圖美化工具 比起其他的截圖美化工具,有提供更多的工具,甚至可以做到 3D 翻轉的效果。 https://www.brandbird.app/studio Screenzy 上方有個無法拿掉的文字框,需要把圖片下載到電腦才能使用,相對另外兩個可以直接複製到剪貼簿,個人比較沒那麼喜歡 Screenzy。

By Mason Tang

工程師筆記

忽略 git 已存在檔案的修改

忽略 git 已存在檔案的修改 有時很多檔案變動,但變動的都是不會上傳到 repository 的 config, 在 git status 或是 VSCode 就會看到一堆的已修改檔案。 並且無法透過 .gitignore 忽視掉它。 雖然放著也不會怎樣,但是看了就不舒服。還要經常給他 git stash。 這時就可以透過下面這指令,把檔案從變動中忽略。 git update-index --assume-unchanged $filepath 還原上一步 如果哪天真的要修改上傳,可以透過這行,把檔案從這狀態解除。 git update-index --no-assume-unchanged $filepath

By Mason Tang
n8n 哪裡有社群節點清單?

AI 自動化

n8n 哪裡有社群節點清單?

如果想知道 n8n 有哪些社群節點,要到 NPM 倉庫找,而不是 GitHub 上。 根據 n8n 官網文件,要成為 n8n 社群節點,需要在 package.json 的 keywords 要有 n8n-community-node-package。 一般很直覺會在 GitHub 上找 Topics ,但是官網文件並沒要求是 GitHub 上的專案,甚至壓根不用是 git 專案。 但是 n8n Node 終究是要上傳到 NPM ,所以只有 NPM 能找到所有開放的社群節點。 可以從搜尋結果很明顯發現 GitHub 上只有 48 筆公開 repository,NPM 上卻有將近 1000 筆。

By Mason Tang
n8n 將陣列元素拉到頂層

AI 自動化

n8n 將陣列元素拉到頂層

在使用 n8n 跑迴圈的時候,會遇到第一個問題,就是要跑的陣列資料,其實是在某個欄位底下。 例如: 你期望是這樣 [ { "sessionId": "1735730631200", "action": "sendMessage", "chatInput": "從2007年到2016年間,「乾淨與公平選舉聯盟」所組織的一系列「淨選盟大會」是馬來西亞歷史上重要的社會運動。雖然五次的淨選盟集會有數以萬計的人參與,但對於馬來西亞族群政治的前景,學者馮垂華傾向持保守態度,原因是馬來西亞多元族群互動仍未成熟,仍有隔閡。", "link": "https://www.thenewslens.com/article/246957" } ] 實際拿到是 [ { "data"

By Mason Tang
與其追求 ikigai ,不如擁有 ikigai

自我成長

與其追求 ikigai ,不如擁有 ikigai

ikigai,這並不是很新的東西。每個人都想找到 自己享受、擅長、世界需要、又有錢賺的事。 但往往,既不享受、又不擅長、世界可能還不需要、或根本沒錢賺。 於是當你想到 ikigai ,就會怨懟自己怎麼還在做這種沒意義的工作。 相信我,沒有工作是完美的,現實往往更為複雜,只有自己如何看待自己所在做的事。 理想與現實的差距 1. 完美的 ikigai 很罕見:很少有人能找到一份完全符合 ikigai 四個方面的工作。 2. 職業發展是一個過程:找到自己的 ikigai 通常需要時間、經驗和自我探索。 3. 外部因素的影響:經濟環境、家庭責任等因素可能會限制我們追求理想工作的能力。 調整期望和態度 1. 重新定義成功:不要僅僅關注 ikigai 的所有方面,而是珍惜工作中的積極因素。 2. 尋找小的意義:即使在看似平凡的工作中,也可以找到價值和目的。 3. 持續學習和成長:

By Mason Tang

工程師筆記

Golang 由兩個 chan 組成的鎖死

這是有一次在工作中發生的情況,當時 debug 很久。原來不是只有 Mutex 才會發生鎖死。 以下是一個涉及兩個 channel 的死鎖示例: 雙 Channel 死鎖示例 func main() { ch1 := make(chan int) ch2 := make(chan int) go func() { v := <-ch1 // 等待從 ch1 接收數據 ch2 <- v // 將接收到的數據發送到 ch2 }() ch1 <- <-ch2 // 主 goroutine 嘗試從 ch2 接收並發送到 ch1 } 這個程序會產生死鎖,原因如下:

By Mason Tang

工程師筆記

Golang 實作節流(Throttling)和防抖(Debouncing)

在 Golang 中實現節流和防抖功能與 JavaScript 中的實現思路類似,但需要利用 Golang 的特性來實現。 以下是 Golang 中節流和防抖的基本實現方法: 節流(Throttling) 節流的目的是限制函數在一定時間內只能執行一次。以下是一個基本的節流函數實現: func throttle(interval time.Duration, f func()) func() { var lastTime time.Time return func() { now := time.Now() if now.Sub(lastTime) >= interval { f() lastTime = now } } } 使用示例: throttledFunc := throttle(time.Second, func() { fmt.Println("

By Mason Tang