Gmailスマート自動返信メーラー、GPT-4oとGoogle Driveコンテキスト記憶付き
上級
これはPersonal Productivity, AI Chatbot分野の自動化ワークフローで、18個のノードを含みます。主にIf, Set, Code, Gmail, GoogleDriveなどのノードを使用。 Gmailスマート自動返信ツール、GPT-4oとGoogle Driveコンテキストメモリを含む
前提条件
- •Googleアカウント + Gmail API認証情報
- •Google Drive API認証情報
- •OpenAI API Key
使用ノード (18)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "074f90e2bb5206c5f405a8aac6551497c72005283a5405fb08207b1b3a78c2b8",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "gmail-trigger-001",
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
560,
400
],
"parameters": {
"simple": false,
"filters": {
"q": "-from:me"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "YOUR_GMAIL_CRED_ID"
}
},
"typeVersion": 1
},
{
"id": "drive-download-001",
"name": "Google Drive - プロファイルダウンロード",
"type": "n8n-nodes-base.googleDrive",
"position": [
760,
260
],
"parameters": {
"fileId": "YOUR_PROFILE_DOC_FILE_ID",
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "YOUR_GOOGLE_DRIVE_CRED_ID"
}
},
"typeVersion": 1
},
{
"id": "gmail-thread-001",
"name": "Gmail - スレッド取得",
"type": "n8n-nodes-base.gmail",
"position": [
760,
540
],
"parameters": {
"threadId": "={{ $json.threadId }}",
"operation": "getAll"
},
"credentials": {
"gmailOAuth2": {
"id": "YOUR_GMAIL_CRED_ID"
}
},
"typeVersion": 2
},
{
"id": "profile-loader-001",
"name": "プロファイル文書ローダー",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
980,
260
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "type",
"value": "user_profile"
}
]
}
},
"jsonData": "={{ $json.content }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "thread-loader-001",
"name": "スレッド文書ローダー",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
980,
540
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "type",
"value": "email_thread"
}
]
}
},
"jsonData": "={{ JSON.stringify($json.messages) }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "profile-splitter-001",
"name": "プロファイルテキスト分割器",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1200,
260
],
"parameters": {
"chunkSize": 1000,
"chunkOverlap": 100
},
"typeVersion": 1
},
{
"id": "thread-splitter-001",
"name": "スレッドテキスト分割器",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1200,
540
],
"parameters": {
"chunkSize": 2000,
"chunkOverlap": 200
},
"typeVersion": 1
},
{
"id": "openai-embeddings-001",
"name": "OpenAI Embeddings",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1420,
400
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "YOUR_OPENAI_CRED_ID"
}
},
"typeVersion": 1.2
},
{
"id": "vector-store-001",
"name": "Simple Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"position": [
1640,
400
],
"parameters": {
"mode": "insert",
"memoryKey": "email_context_{{ $('Gmail Trigger').item.json.threadId }}"
},
"typeVersion": 1
},
{
"id": "prepare-context-001",
"name": "エージェントコンテキスト準備",
"type": "n8n-nodes-base.set",
"position": [
1860,
400
],
"parameters": {
"assignments": {
"assignments": [
{
"id": "context-text",
"name": "text",
"type": "string",
"value": "=Please analyze this incoming email and generate an appropriate reply based on the user profile and email thread context.\n\nIncoming Email Subject: {{ $('Gmail Trigger').item.json.subject }}\nIncoming Email From: {{ $('Gmail Trigger').item.json.headers.from }}\nIncoming Email Body: {{ $('Gmail Trigger').item.json.textAsHtml }}\n\nInstructions:\n1. If this appears to be a newsletter, automated notification, or spam, respond with exactly 'NO_REPLY_NEEDED'\n2. If this requires a response, generate a professional and contextual reply\n3. Use the knowledge from the vector store to inform your response\n4. Keep responses concise but helpful"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "openai-chat-001",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2080,
580
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {
"temperature": 0.3
}
},
"credentials": {
"openAiApi": {
"id": "YOUR_OPENAI_CRED_ID"
}
},
"typeVersion": 1.2
},
{
"id": "simple-memory-001",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
2180,
580
],
"parameters": {
"sessionKey": "=email_{{ $('Gmail Trigger').item.json.threadId }}",
"maxTokenLimit": 4000,
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "vector-retriever-001",
"name": "Vector Store Retriever",
"type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
"position": [
2280,
580
],
"parameters": {
"mode": "retrieve-as-tool",
"limit": 5,
"toolName": "email_context",
"memoryKey": "email_context_{{ $('Gmail Trigger').item.json.threadId }}",
"toolDescription": "Retrieve context about the user profile and email thread history"
},
"typeVersion": 1
},
{
"id": "email-agent-001",
"name": "メール返信エージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2080,
400
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "You are an intelligent email assistant. Your job is to analyze incoming emails and generate appropriate responses based on:\n\n1. User profile information (from vector store)\n2. Email thread context (from vector store)\n3. The specific incoming email content\n\nGuidelines:\n- For newsletters, promotions, automated messages: respond with exactly 'NO_REPLY_NEEDED'\n- For legitimate emails requiring responses: generate professional, contextual replies\n- Keep responses concise but helpful\n- Use the user's communication style from their profile\n- Reference relevant context from previous emails when appropriate\n- Always be polite and professional"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "check-response-001",
"name": "返信要否チェック",
"type": "n8n-nodes-base.if",
"position": [
2400,
400
],
"parameters": {
"conditions": {
"combinator": "and",
"conditions": [
{
"operator": {
"type": "notContainsText"
},
"leftValue": "={{ $json.output }}",
"rightValue": "NO_REPLY_NEEDED"
}
]
}
},
"typeVersion": 2
},
{
"id": "create-draft-001",
"name": "Gmail - 下書き作成",
"type": "n8n-nodes-base.gmail",
"position": [
2680,
400
],
"parameters": {
"message": "={{ $json.output.replace(/\\n/g, \"<br />\\n\") }}",
"options": {
"sendTo": "={{ $('Gmail Trigger').item.json.headers.from }}",
"threadId": "={{ $('Gmail Trigger').item.json.threadId }}"
},
"subject": "=Re: {{ $('Gmail Trigger').item.json.subject }}",
"resource": "draft",
"emailType": "html"
},
"credentials": {
"gmailOAuth2": {
"id": "YOUR_GMAIL_CRED_ID"
}
},
"typeVersion": 2
},
{
"id": "error-handler-001",
"name": "エラーハンドラー",
"type": "n8n-nodes-base.code",
"position": [
2400,
600
],
"parameters": {
"jsCode": "// Log error details for debugging\nconst errorData = {\n timestamp: new Date().toISOString(),\n error: $input.all(),\n workflow: 'Gmail Auto Reply',\n threadId: $('Gmail Trigger').item?.json?.threadId || 'unknown'\n};\n\nconsole.log('Workflow Error:', JSON.stringify(errorData, null, 2));\n\nreturn [{ json: errorData }];"
},
"typeVersion": 2
},
{
"id": "sticky-note-001",
"name": "ワークフロー指示",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
200
],
"parameters": {
"color": 5,
"width": 300,
"height": 400,
"content": "# Gmail Auto-Reply with AI\n\n## Setup Required:\n1. **Gmail OAuth2** credentials\n2. **Google Drive OAuth2** credentials \n3. **OpenAI API** credentials\n4. **Profile Document**: Update YOUR_PROFILE_DOC_FILE_ID\n\n## How it works:\n1. Monitors Gmail for new emails\n2. Downloads user profile from Google Drive\n3. Fetches email thread context\n4. Creates vector embeddings for context\n5. Uses AI agent to generate appropriate replies\n6. Creates draft if reply is needed\n\n## Features:\n- Smart filtering (ignores newsletters/spam)\n- Context-aware responses\n- Memory of conversation history\n- Professional tone matching"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "3",
"connections": {
"gmail-trigger-001": {
"main": [
[
{
"node": "drive-download-001",
"type": "main",
"index": 0
},
{
"node": "gmail-thread-001",
"type": "main",
"index": 0
}
]
]
},
"simple-memory-001": {
"ai_memory": [
[
{
"node": "email-agent-001",
"type": "ai_memory",
"index": 0
}
]
]
},
"email-agent-001": {
"main": [
[
{
"node": "check-response-001",
"type": "main",
"index": 0
}
]
],
"error": [
[
{
"node": "error-handler-001",
"type": "main",
"index": 0
}
]
]
},
"openai-chat-001": {
"ai_languageModel": [
[
{
"node": "email-agent-001",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"openai-embeddings-001": {
"ai_embedding": [
[
{
"node": "vector-store-001",
"type": "ai_embedding",
"index": 0
}
]
]
},
"vector-store-001": {
"main": [
[
{
"node": "prepare-context-001",
"type": "main",
"index": 0
}
]
]
},
"create-draft-001": {
"error": [
[
{
"node": "error-handler-001",
"type": "main",
"index": 0
}
]
]
},
"gmail-thread-001": {
"main": [
[
{
"node": "thread-loader-001",
"type": "main",
"index": 0
}
]
],
"error": [
[
{
"node": "error-handler-001",
"type": "main",
"index": 0
}
]
]
},
"thread-splitter-001": {
"ai_textSplitter": [
[
{
"node": "thread-loader-001",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"check-response-001": {
"main": [
[
{
"node": "create-draft-001",
"type": "main",
"index": 0
}
]
]
},
"prepare-context-001": {
"main": [
[
{
"node": "email-agent-001",
"type": "main",
"index": 0
}
]
]
},
"profile-splitter-001": {
"ai_textSplitter": [
[
{
"node": "profile-loader-001",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"thread-loader-001": {
"ai_document": [
[
{
"node": "vector-store-001",
"type": "ai_document",
"index": 0
}
]
]
},
"vector-retriever-001": {
"ai_tool": [
[
{
"node": "email-agent-001",
"type": "ai_tool",
"index": 0
}
]
]
},
"profile-loader-001": {
"ai_document": [
[
{
"node": "vector-store-001",
"type": "ai_document",
"index": 0
}
]
]
},
"drive-download-001": {
"main": [
[
{
"node": "profile-loader-001",
"type": "main",
"index": 0
}
]
],
"error": [
[
{
"node": "error-handler-001",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 個人の生産性, AIチャットボット
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
基于AIのMISエージェント
基于AIの管理信息系统エージェント
If
Set
Code
+
If
Set
Code
129 ノードKumar Shivam
サポート
AIメール自動返信システム - メールボックスRAGインテリジェントエージェント
AIメール自動返信システム - メールボックスRAGインテリジェントエージェント
If
Set
Gmail
+
If
Set
Gmail
34 ノードLukaszB
サポート
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
Google Maps、GPT-4、WhatsApp を使用したビジネスパートナー獲得の自動化
Google Maps、GPT-4、WhatsAppを使用したビジネスパートナーの開拓の自動化
If
Set
Code
+
If
Set
Code
64 ノードKhairul Muhtadin
AIチャットボット
J.A.R.V.I.S.
Telegram上でOpenAI、SERP、ベクターストアを使った包括のなマルチモーダルアシスタントの構築
If
Set
Code
+
If
Set
Code
48 ノードFabioInTech
サポートチャットボット
ビジネスのAIコマンドセンター:Google Workspaceモジュール型アクター、ベクター検索、マルチチャネルレポート
ビジネスAIコマンドセンター:Google Workspaceモジュール型アジンス、ベクター検索、マルチチャネルレポート
Set
Gmail
Slack
+
Set
Gmail
Slack
80 ノードPaul
文書抽出