はじめに
先月、Dify v1.10.0がリリースされ、ワークフローにトリガー機能が導入されました。 これまでワークフローはユーザ操作やAPIリクエストを受け取ったときにだけ起動していました。このたび導入されたトリガー機能によって、ワークフローが常時オンライン状態になり、①スケジュール、②プラグイン、③Webhookをトリガーとして起動するようになりました。 この記事では、トリガー機能の概要をテスト用のワークフローとともに紹介します。
なお、以前の記事でワークフローの定期実行方法3選を紹介しましたが、スケジュールトリガーを使えば簡単に置き換えられます。
https://blog.elcamy.com/posts/251e5fe9/
環境
Dify クラウド版 v1.11.0
トリガー機能の概要
ワークフローには3種類のトリガータイプが用意されています。1つのワークフローには複数のトリガーを設定できます。
- スケジュールトリガー
- プラグイントリガー
- Webhookトリガー
クラウド版のSandboxプラン(v1.11.0時点)では、各ワークフローに設定できるトリガーは最大2つまでです。Professional/Teamプランやセルフホストの場合は、無制限に設定できます。
ワークフローを最初から作成すると、開始ノードとして「ユーザー入力」と「トリガー」を選択するように変更されています。後から開始ノードを変更したりトリガーを追加したりすることも可能です。
「ユーザー入力」と「トリガー」の選択画面
トリガータイプを選択する画面
スケジュールトリガー
時間ベースのトリガーです。設定したスケジュールに従ってワークフローを起動できるため、定期的に実行したい場合に適しています。設定方法は2つ用意されています。
- ビジュアル設定 下記の頻度を選択し、分単位で設定できます。
- 毎時
- 毎日
- 毎週(日曜日~土曜日を複数選択可)
- 毎月(1日~31日と「月末」を複数選択可)

- Cron式 標準的な5フィールドのCron式を使い、分単位で設定できます。細かい間隔(例:●分ごと/●時間ごと)や複数条件の組み合わせ(例:平日8:00~19:00に1時間ごと)を設定したい場合に適しています。
| フィールド | 位置 | 意味 |
|---|---|---|
| 分(Minute) | 1番目 | 毎時何分に実行するか |
| 時(Hour) | 2番目 | 1日の何時に実行するか |
| 日(Day of Month) | 3番目 | 月の何日に実行するか |
| 月(Month) | 4番目 | 年の何月に実行するか |
| 曜日(Day of Week) | 5番目 | 週の何曜日に実行するか |

プラグイントリガー
外部アプリのイベントによって実行されるトリガーです。よく使われるアプリには予めプラグインが用意されています。2025年12月12日時点、マーケットプレイスには19個のプラグイントリガーが公開されています。
各プラグイントリガーでは複数のイベントを設定できます。例えば、Slackプラグインの場合、アプリへのメンションやチャネルの作成など多くのイベントが用意されています。

Webhookトリガー
プラグインが存在しない自社システムやサービスを接続するためのトリガーです。トリガーごとに発行される固有のHTTPアドレスにリクエストを送るだけでワークフローを起動できます。

トリガーを試してみる
続いて、サンプルのワークフローを作成し、それぞれのトリガー機能を試します。
ワークフローの概要
トリガーが実行されると、その時点の日経平均株価を検索し、Slackに通知するワークフローです。

- 開始ノード
- スケジュールトリガー(ビジュアル設定)
- 頻度: 毎日
- 時刻: テストを実行したい時刻
- Slackプラグイントリガー(App Mention) 設定方法はこちら
- スケジュールトリガー(ビジュアル設定)
https://marketplace.dify.ai/plugins/langgenius/slack_trigger
- Webhookトリガー
- メソッド: POST
- その他: デフォルト
クラウド版のSandboxプラン(v1.11.0時点)では設定できるトリガーの数が最大2つまでのため、テスト実行時には使わないトリガーのうち1つを削除しています。
- Tavily Search
- 入力変数 (Query):
現在の日経平均株価を日本語で教えて - Include Answer:
True - その他:デフォルト
- 入力変数 (Query):
- テンプレート
- 入力変数
- 変数名:
json - 変数:
Tavily Search/json
- 変数名:
- コード:
{{ json[0].answer }}
- 入力変数
- Incoming Webhook to send message
- 入力変数 (content):
テンプレート/output - 設定 (Slack Incoming Webhook url): 環境変数として設定した
slack_incoming_webhook_url
- 入力変数 (content):
- 出力ノード
- 出力変数
- 変数名:
result - 変数:
テンプレート/output
- 変数名:
- 出力変数
試した結果
それぞれのトリガーを実行すると、Slackに以下のようなメッセージが通知されました。
Slackプラグイントリガーの実行結果
ワークフローのログには「トリガー方法」という列が追加され、実行されたトリガータイプが確認できるようになっていました。スケジュールトリガーの場合、実行までに1分ほどのラグが生じることがありました。

なお、今回のテストではWebhookトリガーの実行を簡単に試せるPostmanを利用しました。

Dockerコンテナとトリガー機能の関係
最後に、Dockerを使ってセルフホストしている方に向けて、コンテナとトリガー機能の関係を補足します。下記のコンテナが起動されていない場合、トリガーは機能しないため注意が必要です。
- worker_beatコンテナ:スケジュールトリガーの管理(Celery Beat)
- apiコンテナ:外部リクエスト受付、ワークフロー起動
- workerコンテナ:ワークフロー処理
| トリガータイプ | worker_beat | api | worker |
|---|---|---|---|
| スケジュール | 必須 | 必須 | 必須 |
| プラグイン | 不要 | 必須 | 必須 |
| Webhook | 不要 | 必須 | 必須 |
おわりに
この記事では、Dify v1.10.0から導入されたトリガー機能の概要を紹介しました。 トリガー機能によって、ワークフローは「呼び出されて実行されるもの」から「イベントに応じて自律的に動くもの」へと進化しました。これにより、業務の自動化や通知、定期タスクの管理など、ワークフローの活用範囲はさらに広がります。 Difyのワークフローにトリガー機能を導入したいと考えている方の参考になれば幸いです。
参考
https://docs.dify.ai/en/guides/workflow/node/trigger