搬離 Pipedream
更新於 2026年10月20日
Pipedream Workflows 將在 2027年3月31日關閉,每個 …m.pipedream.net 網址也會跟著停止運作。如果你的工作流程是由 Webhook、排程或電子郵件觸發,AnyHook 會給每個工作流程一個可以一直沿用的網址,並執行你的 Node.js 程式碼步驟,大部分照原樣就能跑。你只要在每個服務商那裡改一次網址,每個工作流程就會變成一個普通的 JavaScript 檔案,你可以閱讀、放進 git,也能帶著走。
Pipedream 要關閉哪些東西
- Workflows 和 String 將於 2027年3月31日停止。Pipedream 已不再接受新的註冊或訂閱。
- 所有 Workflows 資料將在 2027年4月30日前刪除,包括已連結帳號的憑證與 OAuth token。
- Pipedream Connect(它的 API、MCP 伺服器與 API 代理)會繼續營運。
- 匯出工具會以 JSON 格式下載工作流程的結構,一次一個專案。
- requestbin.com 現在會重新導向到 Pipedream 的首頁。
資料來源:Pipedream 的公告。
哪些東西搬到 AnyHook
在 Pipedream
在 AnyHook
- HTTP 觸發器
- App(一個接收網址,對應一個 Webhook 來源)的網址:in.anyhook.net/you/app。它大約 1 秒就回應發送端,並保存每個事件;Pro 方案在傳遞失敗後,會依序在 5 分鐘、30 分鐘、3 小時和18 小時後重試(共 5 次嘗試);Free 方案到 3 次嘗試為止,Scale 方案則之後每天重試一次,直到第 10 次。重新命名 App 不會改變這個網址。
- Node.js 程式碼步驟
- App 的程式碼,每個事件都在沙箱裡執行。defineComponent、$.export 和 $.flow.exit 照原樣就能用,steps.trigger.event 帶有請求的 body 與 headers。程式碼 import 的 npm 套件會在你儲存時安裝,包括 "axios@1.7.9" 這類固定版本。
- 預建動作
- 程式碼編輯器裡的範本:Slack message, Discord message, Telegram message, Email through Resend, Google Sheets row, Airtable record, Notion page, Ask Claude, Any HTTP API。每個都是幾行可以閱讀、也可以修改的程式碼。呼叫失敗時它會拋出錯誤,讓 AnyHook 重試這個事件;電子郵件範本會把每次寄送綁定到它的事件,所以同一天的重試不會寄出兩封信。
- 排程觸發器
- 同一份程式碼上的 cron 排程,可用 UTC 或任何時區,放在一個獨立的 App 上,來源設為 generic 或 auto,且沒有簽章密鑰。每次觸發都會以 anyhook.schedule 事件抵達,同時算一次執行和一個事件,而且只在程式碼開啟時才會發生。
- 電子郵件觸發器
- 每個 App 都有一個電子郵件地址:you.app@anyhook.net。信件會以 email.received 事件抵達,內含寄件者、主旨與原始 MIME 訊息,由你的程式碼解析。App 的來源必須是 generic 或 auto,且沒有簽章密鑰;信件(含附件)超過方案的 payload 上限(Free 方案 512 KB,Pro 方案 2 MB,Scale 方案 4 MB)就會被退信。
- 環境變數與 props
- 密鑰,以 env.NAME 讀取,在步驟裡則是 process.env.NAME。步驟的 props 照原樣讀取它們:this.channelId 就是密鑰 CHANNEL_ID。
- 已連結的帳號
- this.slack.$auth.oauth_access_token 讀取的是密鑰 SLACK_OAUTH_ACCESS_TOKEN:加入這個 token,步驟就能照原樣執行。沒有任何機制會更新它,而 $auth 也從不讀取儲存區,所以會過期的 token(Google 的效期是一小時)需要額外的程式碼:用存成密鑰的 refresh token 取得新的 token,並把最新的存進儲存區。
- 資料儲存區
- App 的儲存區。步驟裡的每個 data_store prop 都是同一個儲存區,提供 get、set(可帶以秒為單位的 TTL)、has、delete、keys、entries 和 clear;一般程式碼則以 store 取得它。它最多存放 1,000 個鍵,每個值以 JSON 計最多 64,000 位元組;多個工作流程共用的 Pipedream 儲存區,在每個 App 裡會變成各自獨立的一份。Pipedream 的匯出不包含資料儲存區,所以匯入要自己做:把 {"entries": {key: value}} 以一次 POST 送到 /api/v1/apps/{slug}/store,它會設定這些鍵,但不帶 TTL。
- 事件歷史與重播
- 事件紀錄:每個事件連同每次傳遞嘗試、作為回應的程式碼 log,以及重播按鈕,Free 方案保存 3 天,Pro 方案 30 天。之後 Pro 方案會以唯讀方式保存收到的內容 1 年。
哪些搬不過來
AnyHook 會在事件發生時執行你的程式碼,但它不是工作流程建構工具,所以下面這些需要改寫,或另找地方:
- Python、Go 和 Bash 步驟。目前還不支援。
- require()。程式碼是 ES module,所以用 require 載入套件的步驟要改成 import。
- body 與 headers 以外的觸發欄位。AnyHook 不保存查詢字串、路徑或呼叫端的 IP,請求方法一律是 POST,而排程或電子郵件會以 AnyHook 自己的主體抵達,所以讀取 steps.trigger.event.query、path、url 或 client_ip,或讀取排程、電子郵件觸發欄位的步驟,那幾行需要修改。
- $.send、$.flow.delay、$.flow.rerun、$.flow.suspend 和 $.context。$ 底下,步驟能用的是 $.export 和 $.flow.exit。
- 資料儲存區的 setTtl 和 for await 迴圈。用 set 設定 TTL,用 keys 或 entries 讀取全部內容。
- 以 GET 或 POST 以外任何方法呼叫的 HTTP 觸發器:網址會拒絕這些請求,Meta 的驗證 GET 除外。
- $.respond()。AnyHook 會自己回應發送端,所以必須送出自己 HTTP 回應的工作流程(例如 Slack 斜線指令),需要一台能及時回應的伺服器。AnyHook 會替你回應 Meta 的驗證交握。
- 輪詢其他服務的觸發器,例如 Google Sheet 新增一列。
這些情況,n8n、Make 和 Zapier 有對應的整合。AnyHook 網址仍然可以架在它們的 Webhook 網址前面,這樣下一次搬家也只是更換目的地。
搬家步驟,一次一個工作流程
- 建立一個 App,把你的 Pipedream 端點加為它的目的地。目前什麼都還沒變:Pipedream 仍在執行工作流程,AnyHook 則在途中保存每個事件。從第 2 步開始有一點不同:AnyHook 會把每個請求以 POST 轉送,只帶標頭與主體,不帶查詢字串、App 之後的路徑或呼叫端的 IP,所以讀取這些資料的工作流程會找不到它們。
- 在每個服務商那裡,把 Pipedream 網址換成 App 的網址。這是你最後一次在那裡修改它。
- 把工作流程放進 App 的 Code(程式碼)分頁,並加入它的密鑰。程式碼步驟貼進來後,套用上面列出的修改;預建動作從範本開始;多個步驟依序合併成一個函式,這部分值得交給 agent 處理。編輯器儲存新程式碼時預設是關閉的;透過 API 或 MCP 時,要傳入 "enabled": false,因為沒有它的第一次儲存會直接上線。用最新儲存的事件執行它,並閱讀它的 log。測試執行會做程式碼會做的任何事,所以如果它會寫入某處,先把它指向測試用的頻道或資料表。
- 移除 Pipedream 目的地,然後開啟程式碼。每項變更最多需要一分鐘才會傳到所有邊緣節點,所以這段期間的事件仍可能送到 Pipedream,或在沒有目的地的情況下被記錄;程式碼開啟後,重播被記錄下來的事件,程式碼就會執行它。
- 在 2027年3月31日前重複以上步驟。之後要再搬到 n8n 或你自己的伺服器,只是更換目的地;服務商那邊的網址不用動。
交給 agent
Pipedream 的匯出(專案的 Settings,再選 Export Workflows)是一個 ZIP,內含每個工作流程的觸發器、程式碼步驟的程式碼,以及預建動作的設定。憑證與環境變數不會匯出,密鑰類 prop 的值會顯示為 <redacted>;這些都會變成你要自己加入的密鑰。這樣就足夠讓 agent 完成改寫。把 Claude Code、Codex 或其他 agent 連上 AnyHook 的 MCP 伺服器 https://anyhook.net/mcp,把匯出檔解壓縮到它讀得到的地方,再貼上這段:
把我的 Pipedream 工作流程搬到 AnyHook。解壓縮後的匯出檔在 ./pipedream-export。 對每個由 HTTP、排程或電子郵件觸發的工作流程: 1. 使用已經把這個工作流程的網址轉送到 Pipedream 的那個 AnyHook App;只有在沒有的時候才建立新的,排程或電子郵件觸發的工作流程,來源設為 generic。排程觸發器的 cron 沿用為程式碼的排程。 2. 把它的步驟依序寫成一個程式碼處理程式。程式碼步驟照原樣執行,https://anyhook.net/zh-tw/migrate/pipedream 在「哪些搬不過來」底下列出的項目除外。把每個預建動作改寫成對該服務 API 的呼叫,從 https://anyhook.net/code-templates.md 開始,呼叫失敗時拋出錯誤。 3. 以 enabled: false 部署,不填任何密鑰的值。列出它需要的密鑰,以及每一個要去哪裡取得。 4. 用一個範例事件測試,並把結果給我看。 Pipedream 那邊什麼都不要改。我會自己加入密鑰、移除 Pipedream 目的地,再開啟程式碼。
它會透過 anyhook_apps_create、anyhook_code_deploy 和 anyhook_code_test 完成工作,並從和編輯器相同的範本 code-templates.md 開始改寫每個動作。它部署的每個處理程式都是關閉狀態;由你加入密鑰、移除 Pipedream 目的地,再開啟程式碼。會安裝新套件的儲存可能要花幾分鐘。用 API 金鑰執行 npm 套件的 agent(Cursor、Windsurf 和 Claude Desktop 都是這樣),需要 anyhook-mcp 0.4.0 以上版本才有這些工具,npx -y 會自動取得。連接 agent。
費用
- Free 方案,$0:1 個 App、每月 10,000 個事件,不含程式碼。足以在 Pipedream 或 n8n 前面放一個網址。
- Pro 方案,每月 $20:10 個 App、50,000 個事件、3,000 次程式碼執行,每次最長 105 秒。
- Scale 方案,每月 $90:50 個 App、250,000 個事件、12,000 次程式碼執行,每次最長 285 秒。
一個 App 就是一個網址加上它的程式碼,所以 Pro 方案的 App 可以容納 10 個使用 HTTP 觸發的工作流程。執行次數是另一個限制:一次重試、一次測試執行、一次重播、一次排程觸發,各算一次;每 15 分鐘一次的排程,每月大約觸發 2,880 次。執行次數沒有超額計費:超過當月的執行次數後,送往程式碼的傳遞會被拒絕並保留,不重試;等到下個月或方案升級後,你再重播它。文件列出處理程式的其他限制。定價。
常見問題
- Pipedream Workflows 什麼時候關閉?
- 2027年3月31日。Pipedream 會在 2027年4月30日前刪除所有 Workflows 資料,包括已連結帳號的憑證與 OAuth token。Pipedream Connect 不受影響。
- 我的 *.m.pipedream.net Webhook 網址還能繼續用嗎?
- 可以用到 2027年3月31日。現在就把每個服務商指向 AnyHook 網址,在程式碼搬完之前轉送到你的 Pipedream 端點,之後服務商就再也不需要換新網址。
- 我的 Node.js 程式碼步驟能在 AnyHook 上執行嗎?
- 在 Pro 與 Scale 方案上,大多照原樣就能執行:defineComponent、$.export、$.flow.exit、props 和資料儲存區都能用,步驟 import 的 npm 套件會在儲存時安裝,已連結帳號的 $auth 則讀取你加入的密鑰。steps.trigger.event 帶有請求的 body 與 headers,所以讀取查詢字串、path、url 或 client_ip,或讀取排程、電子郵件觸發欄位的步驟,那幾行需要修改。Python、Go 和 Bash 步驟、require()、$.respond、$.send、$.flow.delay 與 $.flow.rerun 都需要改寫。
- 像「Slack: send a message」這樣的預建動作會怎樣?
- 它們會變成幾行你可以閱讀和修改的程式碼。程式碼編輯器有這些範本:Slack message, Discord message, Telegram message, Email through Resend, Google Sheets row, Airtable record, Notion page, Ask Claude, Any HTTP API。其餘的,agent 可以根據你的 Pipedream 匯出檔改寫,匯出檔裡列出了每個動作和它的設定。
- 我的程式碼會被綁在 AnyHook 上嗎?
- 不會。處理程式就是一個接收事件與密鑰的 JavaScript 函式。從編輯器複製,或透過 API 讀取,放進 git;如果你離開,就從自己的伺服器呼叫它。
- 我可以改把工作流程搬到 n8n、Make 或 Zapier 嗎?
- 可以。把 AnyHook 網址放在它們的 Webhook 網址前面:你會保有每個事件與其重試的紀錄,之後再搬家也只是更換目的地,不必在每個服務商那裡換新網址。AnyHook 會以 POST 轉送每個請求的標頭與主體,所以那邊讀取查詢字串的工作流程會找不到它。