Pipedream からの移行
最終更新:2026年10月20日
Pipedream Workflows は 2027年3月31日に終了し、…m.pipedream.net の URL もすべて止まります。ワークフローが Webhook、スケジュール、メールで始まるなら、AnyHook はそれぞれに手放さずに使える URL を用意し、Node.js のコードステップを実行します。ほとんどは書いたままで動きます。各プロバイダーで URL を変えるのは 1 回だけです。各ワークフローは、読めて、git で管理でき、持ち出せるプレーンな JavaScript ファイルになります。
Pipedream が終了するもの
- Workflows と String は 2027年3月31日に停止します。Pipedream はすでに新規登録も新規サブスクリプションも受け付けていません。
- Workflows のデータは、接続済みアカウントの認証情報と OAuth トークンも含めて、2027年4月30日までにすべて削除されます。
- Pipedream Connect(API、MCP サーバー、API プロキシ)は継続します。
- エクスポートツールでは、ワークフローの構造をプロジェクトごとに JSON でダウンロードできます。
- requestbin.com は現在、Pipedream のトップページにリダイレクトされます。
出典:Pipedream の告知。
AnyHook に移せるもの
Pipedream では
AnyHook では
- HTTP トリガー
- App(Webhook の送信元ごとに作る受信設定)の URL、in.anyhook.net/you/app です。送信元には約 1 秒で応答し、すべてのイベントを保存します。失敗した配信は、Pro では 5 分、30 分、3 時間、18 時間後にリトライします(試行は合計 5 回)。Free は 3 回で止まり、Scale はその後も 1 日ごとに 10 回目まで続けます。App の名前を変えても、この URL は変わりません。
- 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 がイベントをリトライします。メールのテンプレートは送信ごとにイベントをキーにしているので、同じ日にリトライしてもメールが 2 回送られることはありません。
- スケジュールトリガー
- 同じコードに cron を設定します。UTC でも任意のタイムゾーンでも指定できます。設定するのは専用の App で、その送信元は generic か auto、署名シークレットなしにします。発火のたびに anyhook.schedule イベントとして届き、コードの実行とイベントの両方にカウントされます。発火するのはコードがオンの間だけです。
- メールトリガー
- どの App にもメールアドレス you.app@anyhook.net があります。メールは、差出人、件名、生の MIME メッセージを含む email.received イベントとして届き、それをコードでパースします。App の送信元は generic か auto で、署名シークレットなしにする必要があります。添付ファイルを含めてプランのペイロード上限(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 を読みます。トークンを追加すれば、ステップは書いたまま動きます。トークンを更新する仕組みはなく、$auth はストアを読みません。そのため期限のあるトークン(Google のものは 1 時間)には、シークレットとして保存したリフレッシュトークンで新しいトークンを取得し、最新のものをストアに保存するコードが必要です。
- データストア
- App のストアです。ステップ内の data_store prop はどれもこの 1 つのストアを指し、get、set(TTL は秒で指定)、has、delete、keys、entries、clear が使えます。普通のコードからは store として使えます。キーは最大 1,000 個、値は JSON で 1 つあたり最大 64,000 バイトです。複数のワークフローで共有していた Pipedream のストアは、App ごとに別々のストアになります。Pipedream のエクスポートにはデータストアが含まれないので、インポートは自分で作ります。/api/v1/apps/{slug}/store に {"entries": {key: value}} を 1 回 POST すると、TTL なしでキーが設定されます。
- イベント履歴と再送
- イベントログです。各イベントについて、すべての配信試行、レスポンスとしてのコードのログ、再送ボタンが、Free では 3 日間、Pro では 30 日間使えます。その後も Pro は、受信したものを読み取り専用で 1 年間保存します。
移せないもの
AnyHook はイベントに対してコードを実行するサービスで、ワークフロービルダーではありません。そのため次のものは、書き直すか、別の移行先が必要です。
- Python、Go、Bash のステップには、まだ対応していません。
- require()。コードは ES モジュールなので、require でパッケージを読み込むステップは import に書き換えます。
- ボディとヘッダー以外のトリガーフィールド。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 ループ。TTL は set で設定し、全件は keys か entries で読みます。
- GET など、POST 以外のメソッドで呼ばれる HTTP トリガー。URL はこれらを拒否します(Meta の検証用 GET は例外です)。
- $.respond()。送信元には AnyHook 自身が応答するので、独自の HTTP レスポンスを返す必要があるワークフロー(Slack のスラッシュコマンドなど)には、期限内に応答するサーバーが必要です。Meta の検証ハンドシェイクには AnyHook が代わりに応答します。
- Google スプレッドシートの新しい行など、アプリをポーリングするトリガー。
これらには、n8n、Make、Zapier に連携があります。その Webhook URL の前にも AnyHook の URL を置けるので、次の移行も転送先の変更で済みます。
ワークフローを 1 つずつ移行する
- App を作成し、Pipedream のエンドポイントを転送先に追加します。この時点では何も変わりません。ワークフローは引き続き Pipedream が実行し、AnyHook は途中で各イベントを保存します。ただし手順 2 以降は 1 点だけ違いがあります。AnyHook は各リクエストをヘッダーとボディの POST として転送し、クエリ文字列、App より後ろのパス、呼び出し元の IP は含めません。それらを読むワークフローは、値を見つけられなくなります。
- 各プロバイダーで、Pipedream の URL を App の URL に置き換えます。プロバイダー側で URL を編集するのは、これが最後です。
- ワークフローを App の Code(コード)に移し、シークレットを追加します。コードステップは上記の変更を加えて貼り付け、既製のアクションはテンプレートから始めます。複数のステップは順番に 1 つの関数にまとめます。ここがエージェントに任せる価値のある部分です。エディターは新しいコードをオフの状態で保存します。API や MCP から保存するときは "enabled": false を渡してください。指定しないと、最初の保存で有効になります。最新の保存済みイベントで実行し、ログを確認します。テスト実行ではコードの処理がそのまま実行されるので、どこかに書き込むコードなら、先にテスト用のチャンネルやテーブルに向けてください。
- Pipedream の転送先を削除してから、コードをオンにします。変更がすべてのエッジロケーションに届くまで最大 1 分かかるため、その間のイベントは Pipedream に届くか、転送先なしで記録されることがあります。記録されたイベントは、コードをオンにした後で再送すれば、コードが処理します。
- 2027年3月31日までに、これを繰り返します。あとで n8n や自前のサーバーへ再び移るときも、転送先を変えるだけです。プロバイダー側の URL はそのままです。
エージェントに任せる
Pipedream のエクスポート(プロジェクトの Settings から Export Workflows)は ZIP ファイルで、各ワークフローのトリガー、コードステップのコード、既製アクションの設定が入っています。認証情報と環境変数は含まれず、シークレットの prop の値は <redacted> になります。これらはすべて、自分で追加するシークレットになります。書き換えは、これだけでエージェントに任せられます。Claude Code、Codex などのエージェントを AnyHook の MCP サーバー https://anyhook.net/mcp に接続し、エクスポートを読める場所に展開してから、次のプロンプトを貼り付けます。
Pipedream のワークフローを AnyHook に移行してください。展開したエクスポートは ./pipedream-export にあります。 HTTP、スケジュール、メールのトリガーを持つ各ワークフローについて: 1. このワークフローの URL を Pipedream に転送している AnyHook の App を使ってください。ない場合に限り作成し、スケジュールかメールのトリガーなら source を generic にしてください。スケジュールトリガーの cron は、コードのスケジュールとしてそのまま使います。 2. ステップを順番どおりに、1 つのコードハンドラーとして書いてください。コードステップは、https://anyhook.net/ja/migrate/pipedream の「移せないもの」に挙げたもの以外は書いたまま動きます。既製のアクションは https://anyhook.net/code-templates.md を出発点に、そのサービスの API 呼び出しとして書き直し、呼び出しが失敗したら例外を投げてください。 3. enabled: false で、シークレットの値は入れずにデプロイしてください。必要なシークレットと、それぞれの入手先を一覧にしてください。 4. サンプルイベントでテストし、結果を見せてください。 Pipedream 側では何も変更しないでください。シークレットの追加、Pipedream の転送先の削除、コードの有効化はこちらで行います。
エージェントは anyhook_apps_create、anyhook_code_deploy、anyhook_code_test を使って作業し、各アクションをエディターと同じテンプレート code-templates.md から書き始めます。各ハンドラーはオフの状態でデプロイされます。シークレットの追加、Pipedream の転送先の削除、コードの有効化は自分で行います。新しいパッケージをインストールする保存には、数分かかることがあります。Cursor、Windsurf、Claude Desktop のように npm パッケージを API キーで動かすエージェントでは、これらのツールに anyhook-mcp 0.4.0 以降が必要です。npx -y を使えば自動で取得されます。エージェントの接続方法。
費用
- Free($0):App 1 つ、月 10,000 件のイベントで、コードは使えません。Pipedream や n8n の前に URL を 1 つ置くには十分です。
- Pro(月額 $20):App 10 個、50,000 件のイベント、1 回あたり最大 105 秒のコード実行が 3,000 回です。
- Scale(月額 $90):App 50 個、250,000 件のイベント、1 回あたり最大 285 秒のコード実行が 12,000 回です。
1 つの App は 1 つの URL とそのコードなので、HTTP トリガーのワークフローなら 10 個まで Pro の App に収まります。実行回数は別の上限です。リトライ、テスト実行、再送、スケジュールの発火は、それぞれ 1 回と数えます。15 分ごとのスケジュールは、月に約 2,880 回発火します。実行回数に超過料金はありません。その月の実行回数を超えると、コードへの配信は拒否されて保留になり、リトライはされません。月が替わるかプランを上げた後で、再送できます。ハンドラーのその他の上限はドキュメントに載っています。料金。
よくある質問
- Pipedream Workflows はいつ終了しますか?
- 2027年3月31日です。Pipedream は、接続済みアカウントの認証情報と OAuth トークンを含む Workflows のすべてのデータを、2027年4月30日までに削除します。Pipedream Connect には影響ありません。
- *.m.pipedream.net の Webhook URL は使い続けられますか?
- 2027年3月31日までです。今のうちに各プロバイダーの送信先を AnyHook の URL に変え、コードの移行が終わるまでは Pipedream のエンドポイントに転送してください。そうすれば、プロバイダーに新しい URL を設定し直す必要は二度とありません。
- 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 のテンプレートがあります。残りは、各アクションとその設定が載っている Pipedream のエクスポートから、エージェントが書き直せます。
- コードは AnyHook に縛られますか?
- いいえ。ハンドラーは、イベントとシークレットを受け取る JavaScript の関数です。エディターからコピーするか API で読み出して git で管理し、AnyHook をやめるときは自前のサーバーから呼び出せます。
- 代わりに n8n、Make、Zapier に移行できますか?
- はい。移行先の Webhook URL の前に AnyHook の URL を置いてください。すべてのイベントとそのリトライのログが残り、あとで再び移るときも、プロバイダーごとに新しい URL を設定するのではなく、転送先を変えるだけで済みます。AnyHook は各リクエストをヘッダーとボディの POST として転送するので、移行先でクエリ文字列を読むワークフローは、その値を見つけられません。