
金曜日の定時退社を実現!Dify×Gmailで作る全自動メール秘書システム
こんにちは!YaroTechです。
金曜日の夕方、まだオフィスでメール処理に追われていませんか?「今週も残業確定か...」と諦めていた私が、Difyを使ってメール処理を完全自動化し、毎週金曜日の定時退社を実現した方法をお伝えします!
※結果的には別の方法が良さそうということが分かりました。
「また長いメールが...」「返信考えるの面倒だな」「日程調整めんどくさい」
そんな金曜日の憂鬱を、AIが全部解決してくれる時代が来ました。今日は、Difyの強力なワークフロー機能を使って、メール自動分類システムを構築し、Google Chatへの通知まで実装する方法を、実際の画面と共に詳しく解説します!
🖥️ 実行環境
OS: Windows 11 ARM64版(Surface Laptop 7th、Snapdragon X Elite)
Dify: v1.7.2(Docker Compose版)
Docker Desktop: 4.32.0
ブラウザ: Chrome 127.0
Google Chat: Workspace版
Python: 3.11.4(コード実行ノード用)
🎯 この記事で得られること
Difyワークフローの構築方法が完全に理解できる
メール自動分類ワークフローが作れる
Google Chat通知連携の仕組みが分かる
Gmail連携の3つの方法を比較検討できる
金曜日の残業がゼロになる可能性が見える
🚀 実践内容
ステップ1: Difyワークフローの基本設計
今回は、メール分類の仕組みをDifyで構築し、Google Chatへの通知まで実装します。
メール分類の5つのカテゴリ
🚨緊急対応(今日中に対応が必要)
⚠️重要(3日以内に対応が必要)
📋通常業務(1週間以内に対応)
📖情報共有(返信不要、確認のみ)
🗑️スパム/営業(対応不要)
ステップ2: Difyワークフローの構築
1. 開始ノードの設定
入力フィールドを3つ追加:
- email_subject(メールの件名) - 短文
- email_body(メール本文) - 段落
- sender_email(送信者メールアドレス) - 短文

2. LLMノードの設定
SYSTEMプロンプト:
あなたは優秀なメール分類アシスタントです。
受信したメールを以下の5つのカテゴリのいずれかに分類してください。
カテゴリ:
1. 緊急対応(今日中に対応が必要)
2. 重要(3日以内に対応が必要)
3. 通常業務(1週間以内に対応)
4. 情報共有(返信不要、確認のみ)
5. スパム/営業(対応不要)
以下のJSON形式のみで回答してください。```や他の文字は一切含めないでください:
{
"category": "1",
"category_name": "緊急対応",
"priority": "high",
"reason": "本日中の対応を求められているため"
}USERプロンプト:
以下のメールを分類してください:
件名: {{開始.email_subject}}
送信者: {{開始.sender_email}}
本文: {{開始.email_body}}※コンテキストで表示される変数をプロンプトに追加する必要があります。

3. コード実行ノードの設定(JSON解析)
入力変数:
変数名: llm_result
値: {{LLM.text}}
Pythonコード:
import json
def main(llm_result):
try:
# LLMの出力から```json```を除去
if "```json" in llm_result:
json_str = llm_result.replace("```json", "").replace("```", "").strip()
elif "```" in llm_result:
json_str = llm_result.replace("```", "").strip()
else:
json_str = llm_result.strip()
# JSON解析
result = json.loads(json_str)
# カテゴリごとのアクションを定義
actions = {
"1": {"label": "🚨緊急", "notify": "true"},
"2": {"label": "⚠️重要", "notify": "true"},
"3": {"label": "📋通常", "notify": "false"},
"4": {"label": "📖情報", "notify": "false"},
"5": {"label": "🗑️スパム", "notify": "false"}
}
category = str(result.get("category", "3"))
action = actions.get(category, actions["3"])
return {
"category": category,
"category_name": result.get("category_name", ""),
"priority": result.get("priority", "medium"),
"reason": result.get("reason", ""),
"label": action["label"],
"should_notify": action["notify"] # "true" or "false"の文字列
}
except Exception as e:
return {
"category": "3",
"category_name": "通常業務",
"priority": "medium",
"reason": f"エラー: {str(e)}",
"label": "📋通常",
"should_notify": "false"
}出力変数(6つ設定):
category (String)
category_name (String)
priority (String)
reason (String)
label (String)
should_notify (String)

4. IF/ELSE分岐の設定
条件設定:
左側: {{コード実行.should_notify}}
演算子: である
右側: true(ダブルクォートなし!)※下記画像のように"[ダブルクォート]を入れると条件一致しないのでご注意ください!条件一致するのはダブルクォートなし!でお願いします。

5. Google Chat通知の設定(IF側)
HTTPリクエストノード:
Google ChatでWebhook URL取得:
Google Chatのスペースを開く
「⋮」→「アプリと統合」→「Webhook を管理」
「着信 Webhook を追加」
名前: Dify メール通知
URLをコピー
終了ノードを追加
※下記HTTPリクエストノードのクロ助特製JSONコードが欲しい方はコメントにて「公開希望」と書き込んでください!

6. ELSE側の設定
終了ノードを追加して、出力変数を設定:
メール分類結果: {{コード実行.category_name}}
ラベル: {{コード実行.label}}
通知: 不要

ステップ3: Gmail連携の3つの方法
方法1:Zapier/Make経由(初心者向け)⭐おすすめ
設定時間: 5分
メリット: コード不要、すぐ使える
デメリット: 外部サービス依存
方法2:Google Apps Script(中級者向け)
設定時間: 30分
メリット: 完全無料、カスタマイズ自由
デメリット: localhostアクセス不可(ngrok必要)
方法3:Difyクラウド版(本番運用向け)
設定時間: 10分
メリット: 常時稼働、セキュア
デメリット: 無料枠に制限(200メッセージ/月)
🎯 3つの活用シーン
1. お問い合わせ対応の完全自動化
設定内容:
カスタマーサポート用のメールアドレスを監視
FAQデータベースと連携
8割の問い合わせは自動返信で解決
効果: サポート業務時間を75%削減
2. ミーティング調整の自動化
設定内容:
「打ち合わせ」「ミーティング」をトリガーワードに
カレンダーとの連携も可能
時差も自動計算
効果: 日程調整メールの往復がゼロに
3. 週次レポートの自動集計
設定内容:
特定のラベルが付いたメールを集計
金曜17時に自動でレポート生成
上司に自動送信
効果: 金曜夕方の作業が30分短縮
⚠️ つまずきポイントと解決策
エラー1: LLMが正しいJSON形式で返さない
Error: "Expecting value: line 1 column 1 (char 0)"原因: LLMの出力に```json```が含まれている
解決策:
コード実行ノードで```を除去する処理を追加(上記コード参照)
またはLLMプロンプトで「```を含めないでください」と明記
エラー2: IF/ELSEで条件が判定されない
原因: should_notifyの値が"true"(文字列)なのに、true(ブール値)と比較
解決策:
右側の値をtrue(ダブルクォートなし)に設定
または「含む」演算子を使用
エラー3: Google Chat通知が届かない
Error: "Webhook URL is invalid or expired"解決策:
Google ChatでWebhookを再作成
URLを正確にコピー
HTTPリクエストノードのヘッダー設定を確認
キー: Content-Type
値: application/json
💡 さらなる応用例
職種別カスタマイズ
営業職向け:
見込み客のスコアリング自動化
フォローアップメールの自動送信
商談メモの自動作成
エンジニア向け:
GitHubの通知を優先度別に整理
エラー通知の自動エスカレーション
コードレビュー依頼の自動振り分け
マネージャー向け:
承認依頼の自動整理
部下からの報告を自動サマリー
重要な意思決定事項のハイライト
🔗 関連記事
今回の内容に関連する過去記事もぜひご覧ください:
📝 まとめ
今回は、Difyでメール自動分類システムを構築し、Google Chatへの通知まで実装しました。
今回完成したこと:
Difyワークフローでメールを5カテゴリに分類
LLMとコード実行ノードで柔軟な判定ロジック
IF/ELSE分岐で通知要否を判定
Google Chat通知で緊急メールを即座に把握
Gmail連携の3つの方法:
Zapier/Make(初心者向け・5分で設定)
Google Apps Script(無料・カスタマイズ可能)
Difyクラウド版(本番運用・常時稼働)
どの方法を選んでも、一度構築してしまえば、毎週1時間45分の時間が生まれます。金曜日の定時退社は夢じゃありません!
ちなみに、「Google Apps Script」でGmailを連携させようと進めてテストをしてみたら、ローカルホストのDifyではGoogle側と通信ができなくて、結局テストメールでGoogle Chatに通知が来るところまでしかできませんでした。それでもGoogle Chatにメールの内容が通知来たときは感動しました!
#YaroTech #Dify #Gmail #AI自動化 #金曜日 #定時退社 #メール処理 #生成AI #効率化 #ARM版Windows