Ihre Anmeldung ist bestätigt, das Paket liegt hier. Drei Prompts, in der Reihenfolge, in der Sie sie brauchen. Sie funktionieren in ChatGPT, Claude und Gemini gleichermaßen.
Legen Sie sich die Seite als Lesezeichen an. Den Link finden Sie außerdem jederzeit in der Mail wieder, die gerade zu Ihnen unterwegs ist.
Credentials und Ordner-IDs tragen Sie in n8n selbst ein. Die Prompts setzen dafür nur Platzhalter.
Baut den Workflow in n8n, Knoten für Knoten.
Baue mir einen n8n-Workflow, der eingehende Rechnungen aus einem
E-Mail-Postfach ablegt und in einer Tabelle erfasst.
Ablauf:
1. Trigger: "Email Trigger (IMAP)". Anhänge herunterladen aktiviert,
Format "resolved". Prüft jede Minute auf neue, ungelesene Mails.
2. IF-Knoten "Ist eine Rechnung?": true, wenn mindestens ein Anhang
vom Typ application/pdf vorhanden ist UND Betreff oder Text eines
dieser Wörter enthält, Groß-/Kleinschreibung egal:
Rechnung, Invoice, Beleg, Quittung, Zahlungsaufforderung.
Der false-Ausgang geht auf einen No-Operation-Knoten
namens "Keine Rechnung".
3. Code-Knoten "PDF vorbereiten" am true-Ausgang: sucht im Item das
erste Binary-Feld mit mimeType application/pdf und legt es unter
dem Namen "data" ab. Behält den Originaldateinamen, den Absender
und den Betreff im JSON.
4. Von "PDF vorbereiten" gehen zwei Verbindungen ab.
4a. Google Drive, Operation "Upload file". Binary-Feld "data",
Zielordner wird später eingetragen. Dateiname nach dem Muster
Eingangsdatum_Absender_Originalname.
4b. Google Gemini, Operation "Analyze document". Eingabe ist das
Binary-Feld "data". Der Prompt wird von mir eingesetzt.
5. Code-Knoten "Rechnungsdaten aufbereiten" hinter dem Gemini-Knoten:
nimmt die Textantwort, entfernt eventuelle Markdown-Codeblöcke,
parst das JSON und wandelt deutsche Zahlenformate (1.234,56) in
Dezimalzahlen um. Bei ungültigem JSON wird ein Objekt mit leeren
Feldern und status "Prüfen" zurückgegeben.
6. Google Sheets, Operation "Append row", mit diesen Spalten:
Eingangsdatum, Rechnungsnummer, Rechnungsdatum, Lieferant,
Netto, MwSt, Brutto, Währung, Fälligkeit, Kategorie,
Dateiname, Absender, Status.
Benenne alle Knoten auf Deutsch wie oben angegeben.
Credentials und IDs trage ich selbst ein.
Erzeugt denselben Ablauf als importierbare JSON-Datei. Am Ende tragen Sie Prompt 3 an der markierten Stelle ein.
Erzeuge eine importierbare n8n-Workflow-JSON. Gib ausschließlich die JSON aus, ohne Erklärung und ohne Codeblock-Markierung. Anforderungen an die Struktur: ein Objekt mit den Schlüsseln "name", "nodes", "connections", "settings" und "pinData". Jeder Knoten braucht "parameters", "type", "typeVersion", "position", "id" und "name". Für Credentials setzt du leere Platzhalter-Objekte, die ich in n8n selbst zuweise. Knoten und Verbindungen: 1. n8n-nodes-base.emailReadImap, Name "Mail IMAP", downloadAttachments true, format "resolved". 2. n8n-nodes-base.if, Name "Ist eine Rechnung?". Bedingung: der Betreff enthält einen der Begriffe Rechnung, Invoice, Beleg, Quittung (case-insensitive, ODER-verknüpft). 3. n8n-nodes-base.noOp, Name "Keine Rechnung", am false-Ausgang. 4. n8n-nodes-base.code, Name "PDF vorbereiten", am true-Ausgang. Der Code durchsucht item.binary nach dem ersten Eintrag mit mimeType "application/pdf", legt ihn als binary.data ab und ergänzt json.dateiname, json.absender, json.betreff, json.eingangsdatum (ISO-Datum von heute). 5. n8n-nodes-base.googleDrive, Name "PDF nach Google Drive", Operation upload, inputDataFieldName "data". folderId als Platzhalter "ORDNER_ID_EINTRAGEN". 6. @n8n/n8n-nodes-langchain.googleGemini, Name "Rechnung auslesen". resource "document", operation "analyze", binaryPropertyName "data", modelId "models/gemini-2.5-flash". Als Prompt setzt du exakt den Text ein, den ich unten unter "Extraktionsprompt" angebe. 7. n8n-nodes-base.code, Name "Rechnungsdaten aufbereiten". Entfernt ```json-Fences, parst das JSON, wandelt Zahlen im deutschen Format in Dezimalzahlen, fängt Parse-Fehler ab und setzt dann status auf "Prüfen". 8. n8n-nodes-base.googleSheets, Name "Zeile anhängen", Operation append, documentId und sheetName als Platzhalter. Spalten: Eingangsdatum, Rechnungsnummer, Rechnungsdatum, Lieferant, Netto, MwSt, Brutto, Währung, Fälligkeit, Kategorie, Dateiname, Absender, Status. Verbindungen: 1 → 2. 2 (true) → 4. 2 (false) → 3. 4 → 5 und 4 → 6. 6 → 7. 7 → 8. Extraktionsprompt: [hier den Text aus dem nächsten Abschnitt einsetzen]
Der Kern. Diesen Text setzen Sie in Prompt 2 ein und im Gemini-Knoten als Prompt. Sie können ihn auch sofort ausprobieren: Rechnung als PDF anhängen und mitschicken.
Du liest eine Rechnung aus einem PDF aus.
Gib ausschließlich ein JSON-Objekt zurück. Keine Erklärung, keine
Einleitung, keine Codeblock-Markierung.
{
"rechnungsnummer": "",
"rechnungsdatum": "",
"lieferant": "",
"netto": "",
"mwst": "",
"brutto": "",
"waehrung": "",
"faelligkeit": "",
"kategorie": ""
}
Regeln:
- Datumsangaben im Format JJJJ-MM-TT.
- Beträge als Zahl mit Punkt als Dezimaltrennzeichen, ohne
Währungszeichen und ohne Tausenderpunkte. Beispiel: 1234.56
- "lieferant" ist der Absender der Rechnung, nicht der Empfänger.
- "waehrung" als dreistelliger Code, etwa EUR oder CHF.
- "kategorie" wählst du aus genau dieser Liste: Material, Werkzeug,
Fahrzeug, Software, Telekommunikation, Miete, Versicherung,
Fremdleistung, Büro, Sonstiges.
- Steht ein Wert nicht auf der Rechnung, lässt du das Feld leer.
Rate nicht und rechne nichts aus, was nicht dasteht.
- Findest du mehrere Steuersätze, trägst du bei "mwst" die Summe
aller Steuerbeträge ein.
Rechnen Sie mit 20 Minuten Aufbau und einem Nachmittag, bis es mit Ihren echten Rechnungen zuverlässig läuft. Die kommen in verschiedenen Formaten, manche sind Scans. Dieser Teil dauert länger als der Aufbau selbst.
Manche Anbieter schicken die Rechnung direkt im Mailtext, ohne Anhang. Das geht auch, braucht aber einen zusätzlichen Knoten, der die Seite erst in ein PDF umwandelt.
Ich würde sie immer einbauen, damit Sie merken, wenn etwas nicht durchläuft. Im Video habe ich sie weggelassen, weil sie den Aufbau verlängert.
Ich lese sie selbst. Schreiben Sie dazu, an welchem Knoten Sie hängen und was die Fehlermeldung sagt, dann kann ich direkt etwas damit anfangen.