Intelligenter Gmail KI-Antwortgenerator mit GPT-4o und Google Drive-Kontextspeicher

Experte

Dies ist ein Personal Productivity, AI Chatbot-Bereich Automatisierungsworkflow mit 18 Nodes. Hauptsächlich werden If, Set, Code, Gmail, GoogleDrive und andere Nodes verwendet. Gmail-intelligenter Antwortgenerator mit GPT-4o und Google Drive-Kontextspeicher

Voraussetzungen
  • Google-Konto + Gmail API-Anmeldedaten
  • Google Drive API-Anmeldedaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in 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 - Profil herunterladen",
      "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 - Thread abrufen",
      "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": "Profil-Dokumentenlader",
      "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": "Thread-Dokumentenlader",
      "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": "Profil-Textsplitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        1200,
        260
      ],
      "parameters": {
        "chunkSize": 1000,
        "chunkOverlap": 100
      },
      "typeVersion": 1
    },
    {
      "id": "thread-splitter-001",
      "name": "Thread-Textsplitter",
      "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": "Einfacher Vektorspeicher",
      "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": "Agentenkontext vorbereiten",
      "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": "Einfacher Speicher",
      "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": "Vektorspeicher-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": "E-Mail-Antwort-Agent",
      "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": "Prüfen, ob Antwort erforderlich",
      "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 - Entwurf erstellen",
      "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": "Fehlerbehandlung",
      "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": "Workflow-Anweisungen",
      "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
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Persönliche Produktivität, KI-Chatbot

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes18
Kategorie2
Node-Typen14
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34