Zum Inhalt

Rechnungs-Tools — Extraktor & Generator

Inhaltsverzeichnis

  1. Übersicht
  2. Voraussetzungen
  3. Konfiguration
  4. Rechnungs-Extraktor
  5. Rechnungs-Generator
  6. Dateiablage
  7. Workflow Monatsrechnung

1. Übersicht

Zwei Python-Scripts für Rechnungsverwaltung:

Script Zweck
~/scripts/invoice_extractor.py PDF-Rechnungen aus iCloud/Gmail extrahieren
~/scripts/invoice_generator.py Monatsrechnung an Creative Kirche erstellen
Datei Zweck
~/.invoice_extractor.conf IMAP-Credentials (chmod 600)
~/Documents/11 - ak/Belege Re ak/.processed_ids Duplikat-Tracking Extraktor
~/Documents/11 - ak/Belege Re ak/2026/2026-00x Re AKnorr.docx Rechnungsvorlagen

2. Voraussetzungen

  • Python 3.9+ (macOS System-Python)
  • pip3 install pdfplumber python-docx docx2pdf
  • App-spezifische Passwörter für iCloud und Gmail
  • Microsoft Word (für PDF-Export der generierten Rechnungen)

3. Konfiguration

Credentials in ~/.invoice_extractor.conf (INI-Format, chmod 600):

[icloud]
email = anknorr@me.com
password = <app-spezifisches-passwort>

[gmail]
email = anknorr@gmail.com
password = <app-spezifisches-passwort>

4. Rechnungs-Extraktor

Extrahiert PDF-Rechnungen von Anthropic, Murf.ai und Lucidchart aus E-Mail-Accounts.

Absender und Accounts

Absender Account Absender-Domain Suchbegriff
Anthropic Gmail (anknorr@gmail.com) mail.anthropic.com mail.anthropic.com
Murf.ai iCloud (anknorr@me.com) billing.murf.ai murf
Lucidchart iCloud (anknorr@me.com) lucidchart.com / lucid.co lucid

Hinweis: iCloud IMAP-Suche erfordert bei manchen Absendern einen vereinfachten Suchbegriff (z.B. murf statt billing.murf.ai).

Durchsuchte Ordner

Account Ordner
iCloud INBOX, Archive
Gmail INBOX, [Google Mail]/Alle Nachrichten

Ablauf

  1. IMAP-Login (SSL) zu jedem Account
  2. Ordner durchsuchen nach konfigurierten Absendern
  3. Bereits verarbeitete Mails überspringen (Message-ID Tracking)
  4. PDF-Anhänge extrahieren
  5. Rechnungsdatum aus PDF-Text parsen (pdfplumber, Seite 1)
  6. Fallback: E-Mail-Datum falls PDF nicht parsebar
  7. Speichern als YYYY-MM-DD_Absender_Beschreibung.pdf
  8. Ablage im Jahresordner <Jahr>/Rechnungen/

Ausführung

python3 ~/scripts/invoice_extractor.py

Idempotent dank Message-ID-Tracking. Zum Reset: .processed_ids löschen.

Erweiterung

Neuen Absender in ACCOUNTS-Liste im Script ergänzen:

"neue-domain.com": {
    "name": "Anzeigename",
    "keywords": ["keyword1", "keyword2"],
    "search": "suchbegriff",  # optional, default = Domain
},

5. Rechnungs-Generator

Erstellt Monatsrechnungen an die Stiftung Creative Kirche basierend auf der letzten DOCX-Vorlage.

Rechnungsmuster

  • Empfänger: Stiftung Creative Kirche, Pferdebachstr. 31, 58455 Witten
  • Ansprechpartner: Martin Bartelworth
  • Leistung: Organisations- und IT-Projekt-Beratung
  • Betrag: 500 EUR (§19 UStG, keine USt)
  • ReNr-Schema: 2026-001, 2026-002, 2026-003 (fortlaufend)
  • Dateiname: 2026-00x Re AKnorr.docx/.pdf

Ausführung

# Standard: Rechnung für Vormonat, 500 EUR, DOCX + PDF
python3 ~/scripts/invoice_generator.py

# Bestimmter Monat
python3 ~/scripts/invoice_generator.py -m 3

# Anderer Betrag
python3 ~/scripts/invoice_generator.py -m 2 -b 600

# Nur DOCX oder nur PDF
python3 ~/scripts/invoice_generator.py --docx
python3 ~/scripts/invoice_generator.py --pdf

Was passiert

  1. Letzte DOCX-Rechnung im Jahresordner als Vorlage laden
  2. RechnungsNr hochzählen
  3. Datum auf heute setzen
  4. Leistungsmonat anpassen
  5. DOCX speichern + PDF-Export via Microsoft Word (AppleScript)

Versand

Mail-Entwurf wird per IMAP in iCloud Drafts erstellt: - An: martin.bartelworth@creative-kirche.de - Betreff: Vergütung ak SCK <Monat> <Jahr> - Anhang: PDF der Rechnung - Text: Kurztext nach bisherigem Muster

Entwurf in Mail.app prüfen und manuell senden.


6. Dateiablage

~/Documents/11 - ak/Belege Re ak/
├── .processed_ids
├── 2023/Rechnungen/
│   └── 2023-03-07_Lucidchart_Rechnung.pdf
├── 2024/Rechnungen/
│   └── 2024-03-16_Lucidchart_Rechnung.pdf
├── 2025/Rechnungen/
│   ├── 2025-02-05_Lucidchart_Rechnung.pdf
│   ├── 2025-12-10_Murf-AI_Rechnung.pdf
│   └── 2025-12-30_Lucidchart_team.pdf
└── 2026/
    ├── 2026-001 Re AKnorr.docx/.pdf
    ├── 2026-002 Re AKnorr.docx/.pdf
    ├── 2026-003 Re AKnorr.docx/.pdf
    ├── Auslagenerstattung/
    └── Rechnungen/
        ├── 2026-01-10_Murf-AI_Rechnung.pdf
        ├── 2026-02-16_Anthropic_Claude-Pro.pdf
        └── ...

7. Workflow Monatsrechnung

Monatlicher Ablauf (auf Zuruf via Claude Code):

  1. python3 ~/scripts/invoice_generator.py — DOCX + PDF erstellen
  2. PDF prüfen
  3. Mail-Entwurf in iCloud Drafts erstellen (IMAP)
  4. In Mail.app prüfen und senden

8. Bear-Sync

Dokumentation wird via ~/bear_sync_doku.py nach Bear synchronisiert.

  • Datei auf raspip5: /home/ak/dokumentation/22_invoice_extractor.md
  • Bear-Titel: Rechnungs-Tools — Extraktor & Generator
  • Tags: #IT/Tools #IT/Finanzen
  • FILE_MAP-Eintrag in bear_sync_doku.py vorhanden

Tag-Verknüpfungen

bear_sync_doku.py legt neben dem Tag-Text im Notizinhalt auch die DB-Einträge in ZSFNOTETAG und Z_5TAGS an. Dadurch erscheinen Tags in der Bear-Seitenleiste. Parent-Tags (z.B. IT für IT/Tools) werden automatisch erstellt.