knuspr
This skill provides a CLI to manage Knuspr.de shopping and bundles knuspr_cli.py. It reads/stores credentials in ~/.knuspr_credentials.json or KNUSPR_EMAIL/KNUSPR_PASSWORD, reads/writes ~/.knuspr_session.json and ~/.knuspr_config.json, calls https://www.knuspr.de, and includes shell usage examples like python3 {baseDir}/knuspr_cli.py auth login.
🛒 Knuspr CLI
⚠️ Hobby-Projekt Disclaimer
Dies ist ein privates Hobby-Projekt und steht in keiner Verbindung zu Knuspr/Rohlik. Die CLI nutzt keine offizielle API — Änderungen seitens Knuspr können jederzeit zu Funktionseinschränkungen führen. Nutzung auf eigene Verantwortung.
REST-ähnliche, AI-Agent-freundliche CLI für Knuspr.de.
Einkaufen, Suchen, Warenkorb verwalten, Lieferzeiten, Bestellhistorie — alles vom Terminal aus.
✨ Features
- 🔐 Authentifizierung — Sichere Session-Speicherung
- 🔍 Produktsuche — Mit Filtern (Bio, Favoriten, Rette Lebensmittel)
- 🛒 Warenkorb — Anzeigen, hinzufügen, entfernen, leeren
- 📅 Lieferzeitfenster — Anzeigen und reservieren
- 📋 Bestellhistorie — Ansehen und wiederholen
- ⭐ Favoriten — Verwalten
- 🥬 Rette Lebensmittel — Reduzierte Produkte kurz vor Ablauf
- 📊 JSON-Output — Für Automatisierung und AI-Agents
- 🐚 Shell-Completion — Bash, Zsh, Fish
📦 Installation
# Repository klonen
git clone https://github.com/Lars147/knuspr-cli.git
cd knuspr-cli
# Ausführbar machen
chmod +x knuspr_cli.py
# Option A: Alias setzen (in ~/.bashrc oder ~/.zshrc)
alias knuspr="python3 /pfad/zu/knuspr_cli.py"
# Option B: Ins PATH kopieren
sudo cp knuspr_cli.py /usr/local/bin/knuspr
Voraussetzungen: Python 3.8+ (keine externen Dependencies!)
🏗️ Command-Struktur
Die CLI folgt einem REST-ähnlichen Pattern: knuspr <ressource> <aktion>
knuspr
├── auth Authentifizierung
│ ├── login Bei Knuspr.de einloggen
│ ├── logout Ausloggen und Session löschen
│ └── status Login-Status anzeigen
│
├── config Konfiguration
│ ├── show Konfiguration anzeigen
│ ├── set Präferenzen interaktiv setzen
│ └── reset Zurücksetzen
│
├── account Account-Informationen
│ └── show Premium-Status, Mehrwegtaschen, etc.
│
├── product Produkte
│ ├── search Produkte suchen
│ ├── show Produkt-Details anzeigen
│ ├── filters Verfügbare Filter anzeigen
│ └── rette Rette Lebensmittel anzeigen
│
├── favorite Favoriten
│ ├── list Alle Favoriten anzeigen
│ ├── add Produkt zu Favoriten hinzufügen
│ └── remove Produkt aus Favoriten entfernen
│
├── cart Warenkorb
│ ├── show Warenkorb anzeigen
│ ├── add Produkt hinzufügen
│ ├── remove Produkt entfernen
│ ├── clear Warenkorb leeren
│ └── open Im Browser öffnen
│
├── slot Lieferzeitfenster
│ ├── list Verfügbare Zeitfenster anzeigen
│ ├── reserve Zeitfenster reservieren
│ ├── release Reservierung stornieren
│ └── current Aktuelle Reservierung anzeigen
│
├── order Bestellungen
│ ├── list Bestellhistorie anzeigen
│ ├── show Details einer Bestellung
│ └── repeat Bestellung wiederholen (in Warenkorb)
│
├── insight Einkaufs-Insights
│ ├── frequent Häufig gekaufte Produkte
│ └── meals Mahlzeitvorschläge (breakfast, lunch, etc.)
│
├── delivery Lieferinformationen
│ └── show Liefergebühren & bevorstehende Lieferungen
│
└── completion Shell-Completion
├── bash Bash Completion ausgeben
├── zsh Zsh Completion ausgeben
└── fish Fish Completion ausgeben
🚀 Schnellstart
# 1. Einloggen
knuspr auth login
# 2. Produkte suchen
knuspr product search "Milch"
# 3. Produkt zum Warenkorb hinzufügen (ID aus Suche)
knuspr cart add 11943
# 4. Warenkorb prüfen
knuspr cart show
# 5. Lieferzeitfenster anzeigen
knuspr slot list
# 6. Slot reservieren (ID aus Liste)
knuspr slot reserve 110425
# 7. Im Browser zur Kasse
knuspr cart open
📖 Befehle im Detail
🔐 auth — Authentifizierung
knuspr auth login # Interaktiv einloggen
knuspr auth login -e user@mail.de -p geheim # Mit Credentials
knuspr auth logout # Session löschen
knuspr auth status # Login-Status anzeigen
knuspr auth # Default: status
⚙️ config — Konfiguration
knuspr config show # Aktuelle Konfiguration anzeigen
knuspr config set # Präferenzen interaktiv setzen
knuspr config reset # Konfiguration zurücksetzen
knuspr config # Default: show
Konfigurierbare Präferenzen:
- 🌿 Bio-Produkte bevorzugen
- 📊 Standard-Sortierung (Relevanz, Preis, Bewertung)
- 🚫 Ausschlüsse (z.B. "Laktose", "Gluten", "Schwein")
👤 account — Account-Informationen
knuspr account show # Premium-Status, Mehrwegtaschen, etc.
knuspr account # Default: show
📦 product — Produkte
# Suchen
knuspr product search "Milch" # Einfache Suche
knuspr product search "Käse" -n 20 # Max. 20 Ergebnisse
knuspr product search "Tofu" --bio # Nur Bio-Produkte
knuspr product search "Brot" --favorites # Nur Favoriten
knuspr product search "Joghurt" --rette # Nur Rette Lebensmittel
knuspr product search "Wurst" --exclude Schwein # Begriffe ausschließen
# Sortierung
knuspr product search "Milch" --sort price_asc # Günstigste zuerst
knuspr product search "Milch" --sort price_desc # Teuerste zuerst
# Produkt-Details
knuspr product show 11943 # Details zu Produkt-ID
# Verfügbare Filter
knuspr product filters "Milch" # Filter-Optionen anzeigen
# Rette Lebensmittel (reduziert, kurz vor Ablauf)
knuspr product rette # Alle anzeigen
knuspr product rette "Fleisch" # Nach Begriff filtern
knuspr product rette -n 10 # Max. 10 Ergebnisse
⭐ favorite — Favoriten
knuspr favorite list # Alle Favoriten anzeigen
knuspr favorite list -n 20 # Max. 20 anzeigen
knuspr favorite add 11943 # Produkt zu Favoriten
knuspr favorite remove 11943 # Aus Favoriten entfernen
knuspr favorite # Default: list
🛒 cart — Warenkorb
knuspr cart show # Warenkorb anzeigen
knuspr cart add 11943 # 1× Produkt hinzufügen
knuspr cart add 11943 -q 3 # 3× Produkt hinzufügen
knuspr cart remove 11943 # Produkt entfernen
knuspr cart clear # Kompletten Warenkorb leeren
knuspr cart open # Warenkorb im Browser öffnen
knuspr cart # Default: show
📅 slot — Lieferzeitfenster
knuspr slot list # Verfügbare Zeitfenster
knuspr slot list -n 7 # Mehr Tage anzeigen
knuspr slot list --detailed # Mit 15-Min-Slots und IDs
knuspr slot reserve 110425 # Slot reservieren (15-Min-Präzision)
knuspr slot reserve 110425 --type VIRTUAL # 1-Stunden-Fenster
knuspr slot current # Aktuelle Reservierung anzeigen
knuspr slot release # Reservierung stornieren
knuspr slot # Default: list
📋 order — Bestellungen
knuspr order list # Bestellhistorie
knuspr order list -n 20 # Mehr Bestellungen anzeigen
knuspr order show 1011234895 # Details einer Bestellung
knuspr order repeat 1011234895 # Alle Produkte in Warenkorb legen
knuspr order # Default: list
📊 insight — Einkaufs-Insights
# Häufig gekaufte Produkte
knuspr insight frequent # Top 10 aus letzten 5 Bestellungen
knuspr insight frequent -n 20 # Top 20 anzeigen
knuspr insight frequent -o 10 # Mehr Bestellungen analysieren
# Mahlzeitvorschläge basierend auf Kaufhistorie
knuspr insight meals breakfast # Frühstücks-Produkte
knuspr insight meals lunch # Mittagessen
knuspr insight meals dinner # Abendessen
knuspr insight meals snack # Snacks
knuspr insight meals baking # Backzutaten
knuspr insight meals drinks # Getränke
knuspr insight meals healthy # Gesunde Produkte
knuspr insight # Default: frequent
🚚 delivery — Lieferinformationen
knuspr delivery show # Liefergebühren, bevorstehende Bestellungen
knuspr delivery # Default: show
🐚 completion — Shell-Completion
# Bash (in ~/.bashrc einfügen)
knuspr completion bash >> ~/.bashrc
source ~/.bashrc
# Zsh (in ~/.zshrc einfügen)
knuspr completion zsh >> ~/.zshrc
source ~/.zshrc
# Fish
knuspr completion fish > ~/.config/fish/completions/knuspr.fish
📊 JSON-Ausgabe
Alle Befehle unterstützen --json für maschinenlesbare Ausgabe:
knuspr auth status --json
knuspr product search "Milch" --json
knuspr cart show --json
knuspr order list --json
knuspr slot list --json
🔑 Credentials einrichten
Option 1: Interaktiv (empfohlen)
knuspr auth login
# → E-Mail und Passwort werden abgefragt
Option 2: Umgebungsvariablen
export KNUSPR_EMAIL="user@example.com"
export KNUSPR_PASSWORD="geheim"
knuspr auth login
Option 3: Credentials-Datei
cat > ~/.knuspr_credentials.json << 'EOF'
{
"email": "user@example.com",
"password": "geheim"
}
EOF
chmod 600 ~/.knuspr_credentials.json
knuspr auth login
🤖 Beispiele für AI-Agents
# Produkt-ID aus Suche extrahieren
knuspr product search "Bio Hafermilch" --json | jq '.[0].id'
# Erstes Suchergebnis zum Warenkorb hinzufügen
knuspr cart add $(knuspr product search "Bio Hafermilch" --json | jq -r '.[0].id')
# Warenkorb-Summe auslesen
knuspr cart show --json | jq '.total_price'
# Nächsten verfügbaren Slot finden und reservieren
knuspr slot list --detailed --json | jq '.[0].availabilityDays[0].slots | to_entries[0].value[0].slotId'
# Letzte Bestellung wiederholen
knuspr order repeat $(knuspr order list --json | jq -r '.[0].id')
# Alle Rette-Lebensmittel mit >40% Rabatt
knuspr product rette --json | jq '[.[] | select(.discount | test("-[4-9][0-9]"))]'
# Häufig gekaufte Produkte als Einkaufsliste
knuspr insight frequent --json | jq '.top_items | .[].product_name'
# Frühstücks-Empfehlungen basierend auf Kaufhistorie
knuspr insight meals breakfast --json | jq '.suggestions[:5]'
🔢 Exit-Codes
| Code | Bedeutung |
|---|---|
0 | ✅ Erfolg |
1 | ❌ Allgemeiner Fehler |
2 | 🔐 Authentifizierungsfehler |
📁 Dateien
| Datei | Beschreibung |
|---|---|
~/.knuspr_session.json | Session-Cookies (automatisch verwaltet) |
~/.knuspr_credentials.json | Gespeicherte Login-Daten (optional) |
~/.knuspr_config.json | Benutzer-Präferenzen |
🛠️ Abhängigkeiten
Keine! Nur Python 3.8+ und die Standardbibliothek.
📜 Lizenz
MIT
👤 Autor
Lars Heinen
💡 Tipp: Nutze
knuspr <command> --helpfür detaillierte Hilfe zu jedem Befehl.