Difyの新機能「トリガー」でGmail受信キックをManusでやってみた
はじめに
2025年10月31日、Difyはv1.10.0-rc1をリリースし、れみお氏待望の新機能「トリガー」を発表しました。これは、n8nのように外部イベント(例: Gmailの受信、Slackのメッセージ投稿)をきっかけにDifyのワークフローを自動実行できるという画期的な機能です。
本記事では、この新機能を使って「Gmailの新着メールを検知してワークフローを動かす」という目標に挑戦した、一連の調査と試行錯誤の過程を記録します。結論から言うと、この記事の執筆時点ではまだ完全には動作しませんでしたが、その過程で得られた知見と、現時点で実現可能な代替案を共有します。

▲ Dify リリースノートから
事前調査:Manusワイドリサーチによる情報収集
本格的な実装に入る前に、まずはAIエージェント「Manus」のワイドリサーチ機能を使って、Difyのトリガープラグインに関する情報を広範囲に収集しました。公式ドキュメント、GitHubリポジトリ、関連ブログ記事などを横断的に調査した結果、いくつかの重要な事実が判明しました。
-
公式プラグインリポジトリの確認:
dify-official-pluginsリポジトリには、まだGmailトリガーのようなイベント駆動型プラグインは存在しませんでした。 -
開発ブランチの特定: 開発は
dify-plugin-sdksリポジトリのfeat/triggerブランチで進められていることがわかりました。
この事前調査により、公式リリース前の開発版コードを扱う必要があることが明確になり、今回の「冒険」の方向性が定まりました。
冒険の目的:Gmail受信トリガーの実装
今回の目的は、Dify v1.10.0-rc1のリリースノートで言及されていた「SaaS Integration Event」を使い、Gmailの受信を検知するトリガープラグインを自前でビルドし、Difyにインストールすることです。これにより、メールの内容を自動でLLMに要約させたり、特定のメールが来たらSlackに通知したりといった、高度な自動化が実現できるはずです。
Step 1: サンプルコードの発見とビルド環境の構築
まずは、公式のサンプルコードを探すところから始めました。DifyのプラグインSDKはdify-plugin-sdksというリポジトリで公開されています。事前調査で特定したfeat/triggerブランチをさらに深く調査したところ、Pull Request #218 [5] でGmailトリガーのサンプル実装が追加されていることを発見しました。
このPRは「Add gmail trigger example」というタイトルで、Gmail APIとGoogle Cloud Pub/Subを使用したリアルタイムメール受信検知の実装例を含んでいました。まさに求めていたものです。
# リポジトリをクローン
git clone https://github.com/langgenius/dify-plugin-sdks.git
cd dify-plugin-sdks
# トリガー機能開発中のブランチに切り替え
git checkout feat/trigger
PR #218で追加されたpython/examples/gmail_triggerディレクトリには、以下のファイルが含まれていました。
-
manifest.yaml: プラグインのメタデータ定義 -
provider/gmail.yaml: Gmailプロバイダーの設定 -
events/: メール受信、削除、ラベル変更など4種類のイベント定義 -
main.py: イベント処理のメインロジック -
README.md: セットアップ手順
次に、プラグインをビルドするためのCLIツールdify-pluginをインストールし、Gmailプラグインの依存関係をインストールしました。
# Dify Plugin CLIのインストール
curl -L -o dify-plugin https://github.com/langgenius/dify-plugin-cli/releases/download/v0.4.0/dify-plugin-linux-amd64
chmod +x dify-plugin
# 依存関係のインストール
cd python/examples/gmail_trigger
pip install -r requirements.txt
準備は整いました。いよいよ最初のビルドです。
./dify-plugin plugin package ./python/examples/gmail_trigger
無事にgmail_trigger.difypkgというパッケージファイルが生成されました。幸先の良いスタートです。
Step 2: 第一の壁 - 「不正な署名」エラー
生成されたgmail_trigger.difypkgを意気揚々とDifyの管理画面からアップロードしたところ、最初の壁にぶつかりました。

▲ アップロード失敗: plugin verification has been enabled, and the plugin you want to install has a bad signature
エラーメッセージは「プラグインの署名検証が有効ですが、インストールしようとしているプラグインの署名が不正です」という内容です。なるほど、セキュリティのために署名が必要なようです。
dify-plugin CLIには署名機能も備わっています。これを使って鍵ペアを生成し、プラグインに署名します。
# 署名用の鍵ペアを生成
./dify-plugin signature generate
# -> gmail_trigger_key.private.pem と gmail_trigger_key.public.pem が生成される
# プラグインに署名
./dify-plugin signature sign gmail_trigger.difypkg -p gmail_trigger_key.private.pem
# -> gmail_trigger.signed.difypkg が生成される
これで完璧かと思いきや、事態はそう単純ではありませんでした。
Step 3: 第二の壁 - 「公式署名がない」エラー
署名付きのプラグインをアップロードしても、また別のエラーが発生しました。
アップロードに失敗しました
req_id: 9b7cc936b4 PluginDaemonBadRequestError: plugin installation blocked: this plugin claims to be from Langgenius but lacks official signature verification. Set ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES=false to allow installation (not recommended)
エラーメッセージを要約すると、「このプラグインはLanggenius製だと主張していますが、公式の署名がありません」というものです。
原因は、プラグインの定義ファイルmanifest.yamlにありました。
# manifest.yaml
author: langgenius
authorがlanggeniusになっているため、Difyは公式の署名を要求していたのです。これをcustomに変更することで、このチェックを回避できるはずです。
# manifest.yaml と provider/gmail.yaml の両方を修正
author: custom
この修正を加えて再度ビルド・署名を行い、Difyの環境変数にFORCE_VERIFYING_SIGNATURE=falseを設定して、署名検証自体を一時的に無効化しました。
これで三度目の正直なるか、と期待を込めてアップロードしました。
Step 4: 最後の壁 - 「レスポンスのパース失敗」
しかし、我々の前には最後の、そして最も厄介な壁が立ちはだかりました。

▲ アップロード失敗: Failed to parse response from plugin daemon to PluginDaemonBasicResponse
このエラー「Failed to parse response from plugin daemon」は、プラグインを管理するデーモン(plugin_daemon)からのレスポンスを、DifyのAPIサーバーが正しく解釈できなかったことを示しています。
ユーザーから提供されたDifyのバージョン情報とDockerのログを詳しく分析したところ、核心に迫る事実が判明しました。

▲ Difyのバージョンはv1.10.0-rc1で間違いない
ログ分析の結果:
# プラグインデーモンのログ
plugin_daemon: [GIN] ... | 200 | ... POST "/plugin/.../install/upload/package"
# APIサーバーのログ
api: HTTP Request: POST http://plugin_daemon:5002/... "HTTP/1.1 200 OK"
# Nginxのログ
nginx: "POST /console/api/.../upload/pkg HTTP/1.1" 400 310
驚くべきことに、plugin_daemonは200 OK(成功)を返していました。しかし、そのレスポンスを受け取ったapiサーバーが解釈に失敗し、最終的にnginxが400 Bad Requestエラーを返していたのです。
根本原因の分析:新しすぎた故の悲劇
この「レスポンスのパース失敗」の根本原因は、Difyの各コンポーネント間のバージョン不整合にあると結論付けました。

▲ Difyのプラグインアーキテクチャ。APIとPlugin Daemonが連携して動作する [3]
問題の核心:
- Dify API (v1.10.0-rc1): 16時間前にリリースされたばかりの最新版。
- Plugin Daemon (v0.4.0-local): ユーザー環境で動作していたのは、古い開発版。
-
トリガープラグインのコード:
feat/triggerブランチで開発中の未完成コード。
つまり、APIサーバーが期待するレスポンスの形式(スキーマ)と、古いプラグインデーモンが返すレスポンスの形式が異なっていたため、パースエラーが発生していたのです。v1.10.0-rc1というリリース候補版の、まさに最先端すぎるが故に発生した問題でした。
自動ビルドの限界と今後の可能性
最後に、今回の挑戦はAIエージェント「Manus」上で、調査からビルド、デバッグまでをほぼ完全に自動化して行われました。生成されたプラグインパッケージは、人間のエンジニアが直接コードをレビューしたものではありません。
そのため、一連のエラーはバージョン不整合というシステムレベルの問題が根本原因である可能性が高いですが、ビルドされたコード自体に、人間の目から見れば単純な構文ミスやロジックの誤りが含まれていた可能性も完全には否定できません。
AIによる自動化開発は強力ですが、特に最先端の未安定な技術を扱う際は、最終的な人間の目による検証の重要性もまた、今回の冒険から得られた教訓の一つです。
現実的な代替案:Webhookトリガーを使おう
公式のトリガープラグインが安定するまで待つのが得策ですが、それでは面白くありません。幸い、Dify v1.10.0-rc1にはWebhookトリガーという、もう一つの強力なイベント駆動機能が搭載されています。
これを使えば、プラグインなしで同様の機能を実現できます。
代替案のアーキテクチャ:
Gmail → Google Cloud Pub/Sub → Cloud Function → Dify Webhook → ワークフロー実行

▲ GmailのPush通知とPub/Subを連携させるアーキテクチャ例 [4]
実装の概要:
- Google Cloudで設定: Gmail APIのPush通知を有効にし、Pub/Subトピックにメッセージを送信するよう設定します。
- DifyでWebhookトリガーを作成: ワークフローの開始点としてWebhookトリガーを設定し、URLを生成します。
- Cloud Functionを作成: Pub/Subが受け取ったメッセージを、DifyのWebhook URLに転送する簡単な関数を作成します。
この方法であれば、現行の安定した機能のみを利用するため、確実にGmail受信をトリガーとしてDifyワークフローを起動できます。
まとめ:冒険から得られた教訓
今回の挑戦は、Dify v1.10.0-rc1のトリガープラグインを稼働させるという当初の目的こそ達成できませんでしたが、非常に多くの学びがありました。
- 教訓1: リリース候補版(RC)は、最先端の機能を試せる一方で、不安定な部分も多い。
- 教訓2: エラーメッセージの裏側にある、コンポーネント間の連携に目を向けることが問題解決の鍵となる。
- 教訓3: 一つの方法がダメでも、代替案を考えることで目的を達成できる道筋は見つかる。
Difyのイベント駆動ワークフロー機能は、まだ始まったばかりですが、そのポテンシャルは計り知れません。正式版のリリースと、公式Gmailトリガープラグインの登場を心待ちにしつつ、今はWebhookトリガーで自動化の世界を楽しみたいと思います。
今回の冒険が、同じようにDifyの新機能に挑戦する開発者の皆さんの一助となれば幸いです。
参考資料
[1] Dify v1.10.0-rc1 Release Notes. (2025, October 31). GitHub. Retrieved from https://github.com/langgenius/dify/releases/tag/1.10.0-rc1
[2] Trigger Plugin. Dify Docs. Retrieved from https://docs.dify.ai/plugin-dev-en/0222-trigger-plugin
[3] Dify Plugin System: Design and Implementation. (2025, March 4). Dify Blog. Retrieved from https://dify.ai/blog/dify-plugin-system-design-and-implementation
[4] Gmail API's push notifications bug and how we worked around it. Hiver Blog. Retrieved from https://hiverhq.com/blog/gmail-api-push-notifications-bug-workaround
[5] Add gmail trigger example. (2025, October). GitHub Pull Request #218. Retrieved from https://github.com/langgenius/dify-plugin-sdks/pull/218
Discussion