HumAInize
Ihr Paket

Die Prompts für Ihre Rechnungsablage

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.

Was Sie brauchen

Vier Dinge, sonst nichts

  1. Einen festen Ort, an dem Rechnungen ankommen: ein Ordner oder ein eigenes Postfach.
  2. ChatGPT, Claude oder Gemini, um die Prompts laufen zu lassen.
  3. n8n für den Ablauf.
  4. Eine Dateiablage: Google Drive, Microsoft OneDrive oder ein Ordner auf dem PC.

Credentials und Ordner-IDs tragen Sie in n8n selbst ein. Die Prompts setzen dafür nur Platzhalter.

In dieser Reihenfolge

Erst bauen, dann sichern, dann auslesen

  1. Prompt 1 baut den Ablauf. Damit klicken Sie den Workflow in n8n zusammen, Knoten für Knoten.
  2. Prompt 2 erzeugt dieselbe Sache als fertige JSON-Datei, die Sie in n8n importieren können. Das ist der schnellere Weg und gleichzeitig Ihr Backup. Wichtig: An der markierten Stelle am Ende tragen Sie Prompt 3 ein, sonst fehlt dem Workflow die Anweisung zum Auslesen.
  3. Prompt 3 ist der Kern. Er sagt der KI, was sie aus dem PDF holen soll und was sie auf keinen Fall raten darf.

Prompt 1 — Einrichtung

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.

Prompt 2 — Backup und Import

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]

Prompt 3 — Extraktionsprompt

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.
Worauf Sie sich einstellen sollten

Drei Dinge, die ich im Video auch so sage

Der Aufbau dauert 20 Minuten. Bis es sauber läuft, dauert es länger.

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.

Es verarbeitet Rechnungen, die als PDF anhängen.

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.

Eine Fehlerbenachrichtigung ist nicht dabei.

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.

Wenn es hakt

Antworten Sie einfach auf die Mail.

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.