搬離 Pipedream

更新於 2026年10月20日

Pipedream Workflows 將在 2027年3月31日關閉,每個 …m.pipedream.net 網址也會跟著停止運作。如果你的工作流程是由 Webhook、排程或電子郵件觸發,AnyHook 會給每個工作流程一個可以一直沿用的網址,並執行你的 Node.js 程式碼步驟,大部分照原樣就能跑。你只要在每個服務商那裡改一次網址,每個工作流程就會變成一個普通的 JavaScript 檔案,你可以閱讀、放進 git,也能帶著走。

之前 · 網址是 Pipedream 的Stripe….m.pipedream.net2027-03-31 終止工作流程2027-04-30 刪除之後 · 網址是你的Stripein.anyhook.net/you/app保存並重試Pipedream你的程式碼直到你切換或 n8n、你的伺服器

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 網址前面,這樣下一次搬家也只是更換目的地。

搬家步驟,一次一個工作流程

  1. 建立一個 App,把你的 Pipedream 端點加為它的目的地。目前什麼都還沒變:Pipedream 仍在執行工作流程,AnyHook 則在途中保存每個事件。從第 2 步開始有一點不同:AnyHook 會把每個請求以 POST 轉送,只帶標頭與主體,不帶查詢字串、App 之後的路徑或呼叫端的 IP,所以讀取這些資料的工作流程會找不到它們。
  2. 在每個服務商那裡,把 Pipedream 網址換成 App 的網址。這是你最後一次在那裡修改它。
  3. 把工作流程放進 App 的 Code(程式碼)分頁,並加入它的密鑰。程式碼步驟貼進來後,套用上面列出的修改;預建動作從範本開始;多個步驟依序合併成一個函式,這部分值得交給 agent 處理。編輯器儲存新程式碼時預設是關閉的;透過 API 或 MCP 時,要傳入 "enabled": false,因為沒有它的第一次儲存會直接上線。用最新儲存的事件執行它,並閱讀它的 log。測試執行會做程式碼會做的任何事,所以如果它會寫入某處,先把它指向測試用的頻道或資料表。
  4. 移除 Pipedream 目的地,然後開啟程式碼。每項變更最多需要一分鐘才會傳到所有邊緣節點,所以這段期間的事件仍可能送到 Pipedream,或在沒有目的地的情況下被記錄;程式碼開啟後,重播被記錄下來的事件,程式碼就會執行它。
  5. 在 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 轉送每個請求的標頭與主體,所以那邊讀取查詢字串的工作流程會找不到它。