{
  "name": "KI-E-Mail-Assistent",
  "nodes": [
    {
      "parameters": {
        "mailbox": "INBOX",
        "postProcessAction": "read",
        "options": {}
      },
      "id": "a1b2c3d4-1111-4000-8000-000000000001",
      "name": "Neue E-Mail empfangen",
      "type": "n8n-nodes-base.emailReadImap",
      "typeVersion": 2,
      "position": [0, 300],
      "credentials": {
        "imap": {
          "id": "DEINE_IMAP_CREDENTIAL_ID",
          "name": "Dein IMAP Account"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// E-Mail-Daten aufbereiten\nconst items = [];\n\nfor (const item of $input.all()) {\n  const from = item.json.from || item.json.From || '';\n  const subject = item.json.subject || item.json.Subject || '(Kein Betreff)';\n  let body = '';\n\n  // Text-Body bevorzugen, HTML als Fallback\n  if (item.json.textPlain) {\n    body = item.json.textPlain;\n  } else if (item.json.text) {\n    body = item.json.text;\n  } else if (item.json.html) {\n    // HTML-Tags entfernen\n    body = item.json.html\n      .replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi, '')\n      .replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi, '')\n      .replace(/<[^>]+>/g, ' ')\n      .replace(/&nbsp;/g, ' ')\n      .replace(/&amp;/g, '&')\n      .replace(/&lt;/g, '<')\n      .replace(/&gt;/g, '>')\n      .replace(/&quot;/g, '\"')\n      .replace(/\\s+/g, ' ')\n      .trim();\n  }\n\n  // Auf 2000 Zeichen kuerzen\n  if (body.length > 2000) {\n    body = body.substring(0, 2000) + '\\n[... gekuerzt]';\n  }\n\n  items.push({\n    json: {\n      absender: from,\n      betreff: subject,\n      body: body\n    }\n  });\n}\n\nreturn items;"
      },
      "id": "a1b2c3d4-2222-4000-8000-000000000002",
      "name": "E-Mail-Daten aufbereiten",
      "type": "n8n-nodes-base.code",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.openai.com/v1/chat/completions",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"model\": \"gpt-4o-mini\",\n  \"temperature\": 0.7,\n  \"max_tokens\": 500,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"Du bist der KI-E-Mail-Assistent von [FIRMENNAME].\\n\\nUEBER UNS:\\n[HIER DEINE FIRMENINFOS EINFUEGEN - z.B. Produkte, Preise, Oeffnungszeiten, FAQ]\\n\\nREGELN:\\n- Antworte freundlich und professionell auf Deutsch\\n- Verwende Du-Ansprache\\n- Wenn du die Antwort nicht sicher weisst, schreibe: Ich leite deine Anfrage an mein Team weiter.\\n- Halte die Antwort kurz (max 5 Saetze)\\n- Unterschreibe mit: Viele Gruesse, [FIRMENNAME]-Team\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"E-Mail von: {{ $json.absender }}\\nBetreff: {{ $json.betreff }}\\n\\nInhalt:\\n{{ $json.body }}\\n\\nSchreibe eine passende Antwort-E-Mail.\"\n    }\n  ]\n}",
        "options": {}
      },
      "id": "a1b2c3d4-3333-4000-8000-000000000003",
      "name": "KI-Antwort generieren",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [500, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "DEINE_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI API Key"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// KI-Antwort extrahieren und Entwurf-Mail vorbereiten\nconst items = [];\nconst emailDatenAll = $('E-Mail-Daten aufbereiten').all();\n\nfor (let i = 0; i < $input.all().length; i++) {\n  const response = $input.all()[i].json;\n  let kiAntwort = '(Keine Antwort generiert)';\n\n  if (response.choices && response.choices.length > 0) {\n    kiAntwort = response.choices[0].message.content;\n  }\n\n  // Original-Daten per Index holen\n  const emailDaten = emailDatenAll[i] ? emailDatenAll[i].json : {};\n\n  items.push({\n    json: {\n      absender: emailDaten.absender || '(Unbekannt)',\n      betreff: emailDaten.betreff || '(Kein Betreff)',\n      body: emailDaten.body || '',\n      ki_antwort: kiAntwort\n    }\n  });\n}\n\nreturn items;"
      },
      "id": "a1b2c3d4-4444-4000-8000-000000000004",
      "name": "Antwort aufbereiten",
      "type": "n8n-nodes-base.code",
      "typeVersion": 1,
      "position": [750, 300]
    },
    {
      "parameters": {
        "fromEmail": "DEINE_EMAIL@example.com",
        "toEmail": "DEINE_EMAIL@example.com",
        "subject": "=[KI-Entwurf] Re: {{ $json.betreff }} - von {{ $json.absender }}",
        "html": "=<pre style=\"font-family: sans-serif; font-size: 14px; white-space: pre-wrap;\">--- KI-ENTWURF ---\nAntwort auf E-Mail von: {{ $json.absender }}\nOriginal-Betreff: {{ $json.betreff }}\n\n--- VORGESCHLAGENE ANTWORT ---\n\n{{ $json.ki_antwort }}\n\n--- ORIGINAL-NACHRICHT ---\n\n{{ $json.body }}\n\n---\nWenn die Antwort passt: Kopiere sie und antworte dem Kunden direkt.\nWenn nicht: Passe sie an.</pre>",
        "options": {}
      },
      "id": "a1b2c3d4-5555-4000-8000-000000000005",
      "name": "Entwurf per E-Mail senden",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [1000, 300],
      "credentials": {
        "smtp": {
          "id": "DEINE_SMTP_CREDENTIAL_ID",
          "name": "Dein SMTP Account"
        }
      }
    }
  ],
  "connections": {
    "Neue E-Mail empfangen": {
      "main": [
        [
          {
            "node": "E-Mail-Daten aufbereiten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "E-Mail-Daten aufbereiten": {
      "main": [
        [
          {
            "node": "KI-Antwort generieren",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "KI-Antwort generieren": {
      "main": [
        [
          {
            "node": "Antwort aufbereiten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Antwort aufbereiten": {
      "main": [
        [
          {
            "node": "Entwurf per E-Mail senden",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [],
  "triggerCount": 1
}
