11 KiB
name, description
| name | description |
|---|---|
| mealie-recipe-import | Importiert ein Rezept aus einer URL in Mealie (per MCP) und bereinigt es direkt danach - setzt passende Kategorien und Tags, normalisiert Mengenangaben/Einheiten, bereinigt Zutatennamen und glättet die Zubereitungsschritte sprachlich (auf Deutsch, auch wenn das Original in einer anderen Sprache ist). Nutze diesen Skill immer, wenn der User eine Rezept-URL schickt und sie "in Mealie speichern/importieren/hinzufügen" möchte, wenn er sagt "importier das mal", "füg das Rezept hinzu", "mach das Rezept in Mealie sauber", oder allgemein ein rohes/unsortiertes Mealie-Rezept nachträglich korrigiert haben möchte (auch ohne neue URL, per Slug oder Namen). Trigger auch bei Formulierungen wie "korrigier das Rezept", "setz die Kategorien", "räum die Zutaten auf" im Mealie-Kontext. |
Mealie Rezept-Import & Korrektur
Importiert Rezepte aus einer URL nach Mealie und bringt sie danach in einen sauberen, konsistenten Zustand: richtige Kategorien, richtige Tags, saubere Mengen/Einheiten, bereinigte Zutatennamen und flüssig lesbare, deutsche Zubereitungsschritte.
Nutzer-Präferenzen (aus der Einrichtung dieses Skills):
- Sprache: Deutsch — fremdsprachige Rezepte werden beim Bereinigen ins Deutsche übersetzt (Zutaten, Schritte, Beschreibung, Name).
- Kategorien/Tags: Bevorzugt bestehende aus Mealie verwenden, bei Bedarf aber neue anlegen (kein Nachfragen nötig —
mealie_recipes_updatelegt beim Update automatisch neue Kategorie-/Tag-Namen an, falls sie noch nicht existieren). - Umfang der Korrektur: Kategorien, Tags, Mengen/Einheiten normalisieren, Zutatennamen bereinigen, Zubereitungsschritte glätten.
Ablauf
1. Rezept importieren (nur wenn eine neue URL gegeben wurde)
mealie_recipes_create_from_url(url=<URL>, include_tags=false)
include_tags=false, weil die vom Scraper übernommenen Tags/Kategorien meist unpassend
oder inkonsistent mit der bestehenden Mealie-Taxonomie sind — wir setzen sie im nächsten
Schritt bewusst selbst. Das Ergebnis liefert u.a. slug, name, Rohtext von
Zutaten/Anleitung.
Wenn der User stattdessen ein bereits vorhandenes Rezept nennt (Name oder Slug), das
Rezept stattdessen über mealie_recipes_search(query=<Name>) finden und den slug
daraus verwenden.
2. Bestehende Taxonomie abrufen
Vor dem Setzen von Kategorien/Tags immer erst die bestehenden Listen holen, damit bereits vorhandene Begriffe wiederverwendet werden statt Dubletten anzulegen (z.B. nicht "Dessert" und "Desserts" parallel):
mealie_categories_list()
mealie_tags_list()
Wähle aus dieser Liste passende Kategorien/Tags. Nur wenn wirklich nichts passt, einen neuen, prägnanten deutschen Begriff vergeben (Titelcase, Singular bei Kategorien wie "Hauptgericht", "Beilage", "Dessert", "Frühstück"; bei Tags eher granular wie "vegetarisch", "vegan", "schnell", "Ofengericht", "Meal-Prep", "glutenfrei").
Faustregeln für die Zuordnung:
- Kategorien = grobe Einordnung (max. 1-3): Gang (Hauptgericht/Vorspeise/Dessert/ Frühstück/Beilage), ggf. Küche (Italienisch, Asiatisch) wenn eindeutig.
- Tags = Eigenschaften/Filter (beliebig viele, aber sparsam): Ernährungsform (vegetarisch/vegan/glutenfrei/low-carb), Aufwand (schnell, meal-prep), Methode (Ofengericht, One-Pot, Grillen), Anlass (Sommer, Party, Kinderfreundlich).
- Airfryer-Rezepte immer taggen: Wird das Gericht in der Zubereitung ausdrücklich in einer Heißluftfritteuse/einem Airfryer zubereitet (oder ist eindeutig dafür gedacht), immer einen entsprechenden Tag setzen. Vorher in der bestehenden Tag-Liste nachsehen, ob bereits "Airfryer" oder "Heißluftfritteuse" existiert, und diesen bestehenden Begriff wiederverwenden statt ein Duplikat anzulegen.
- Keine Kategorie/Tag doppelt in leicht anderer Schreibweise anlegen — bei Unsicherheit lieber den bestehenden, ähnlichsten Begriff aus der Liste nehmen.
3. Zutaten bereinigen und normalisieren
Rohe Zutatenzeilen (z.B. "1 Bund glatte Petersilie, fein gehackt",
"200g Mehl Type 405") glätten:
- Einheiten auf gängige deutsche Kurzformen normalisieren: g, kg, ml, l, TL, EL, Prise, Stück, Bund, Dose, Zehe(n) etc. Keine Mischformen wie "gr" oder "Gramm" ausgeschrieben.
- Zutatennamen vereinheitlichen (z.B. immer "Zwiebel" statt mal "Zwiebeln" mal "Zwiebel(n)" innerhalb desselben Rezepts; Tippfehler korrigieren; Duplikate zusammenführen, wenn eine Zutat mehrfach mit leicht anderem Namen auftaucht).
- Fremdsprachige Zutaten ins Deutsche übersetzen (z.B. "all-purpose flour" → "Weizenmehl Type 405", "kosher salt" → "Salz").
Für eine wirklich strukturierte Bereinigung (getrennte Felder für Menge/Einheit/Zutat, nützlich für Einkaufslisten) optional den Mealie-Parser nutzen:
mealie_parser_ingredients_batch(ingredients=[<bereinigte Zeilen als Strings>])
mealie_recipes_update_structured_ingredients(slug=<slug>, parsed_ingredients=<Ergebnis>)
Das lohnt sich vor allem, wenn der User Wert auf saubere Einkaufslisten legt. Für die
reine Text-Bereinigung reicht es, die geglätteten Zutatenzeilen direkt in
mealie_recipes_update(ingredients=[...]) zu schreiben (siehe Schritt 5).
4. Zubereitungsschritte glätten
- In flüssiges, klar formuliertes Deutsch bringen (kurze, aktive Sätze, ein Arbeitsschritt pro Listeneintrag).
- Fremdsprachige Anleitungen vollständig übersetzen, nicht nur einzelne Wörter.
- Inhalt dabei nicht verändern — keine Zutaten/Mengen/Reihenfolge erfinden oder weglassen, nur sprachlich glätten und Redundanzen straffen.
- Falls Schritte vom Scraper unsauber zusammengefasst wurden (z.B. ein Riesenblock Text statt einzelner Schritte), sinnvoll in einzelne, in sich abgeschlossene Schritte aufteilen.
5. Alles zusammen in Mealie speichern
Ein einziger Update-Call mit allen bereinigten Feldern (spart Round-Trips):
mealie_recipes_update(
slug=<slug>,
name=<bereinigter, ggf. übersetzter Name>,
description=<bereinigte Beschreibung>,
ingredients=[<bereinigte Zutatenzeilen>],
instructions=[<geglättete Schritte>],
categories=[<gewählte Kategorien>],
tags=[<gewählte Tags>],
recipe_yield=<Portionen, falls unsauber>,
prep_time=<falls sinnvoll normalisierbar>,
cook_time=<falls sinnvoll normalisierbar>,
)
Wichtig: mealie_recipes_update ersetzt Zutaten/Anleitung/Tags/Kategorien komplett —
immer die vollständige, bereinigte Liste mitschicken, nicht nur die Änderungen.
Achtung Slug-Falle: Wird im selben Aufruf auch name geändert, ändert Mealie
automatisch den slug des Rezepts (z.B. gemusewaffeln → gemusewaffeln-mit-krauterquark).
Folgeaufrufe mit dem alten Slug schlagen dann mit 404 No Entry Found fehl. Wenn name
mitgeschickt wird: den Aufruf einzeln machen (nicht mit weiteren Updates kombinieren,
die noch den alten Slug referenzieren), und danach den neuen Slug per
mealie_recipes_search(query=<neuer Name>) ermitteln, bevor mit diesem Rezept
weitergearbeitet wird.
6. Kurze Zusammenfassung an den User
Nach dem Speichern knapp berichten, was gemacht wurde — insbesondere:
- welche Kategorien/Tags gesetzt wurden (und ob welche neu angelegt wurden),
- ob/was übersetzt wurde,
- ob Zutaten zusammengeführt oder korrigiert wurden.
Keine komplette Rezept-Abschrift im Chat — Mealie zeigt das Ergebnis, ein Link/Slug-Verweis reicht.
Mehrere URLs auf einmal
Wenn der User mehrere URLs gleichzeitig schickt, jede einzeln importieren
(mealie_recipes_create_from_url pro URL oder mealie_recipes_create_from_urls_bulk für
den Import-Schritt) und danach jedes Rezept einzeln durch Schritt 2-5 laufen lassen —
nicht pauschal dieselben Kategorien/Tags auf alle anwenden, jedes Rezept bekommt seine
eigene, passende Einordnung.
Trigger per Slash-Command
Der Skill triggert auch, wenn direkt /mealie-recipe-import <URL> eingegeben wird
(Slash-Command-Aufruf). Das ist gleichbedeutend mit "importier diese URL nach Mealie und
bereinige sie" — Ablauf ab Schritt 1 wie oben. Wird /mealie-recipe-import ohne URL
aufgerufen, stattdessen nach der URL oder dem zu bereinigenden Rezept fragen.
Kurzbefehl für den Batch-Modus: Wird der Skill als /mealie-recipe-import ohneKategorie
aufgerufen (oder mit einem der Synonyme ohneTags, ohneKategorieUndTags), direkt in den
Batch-Modus unten springen — ohne Rückfrage, welcher Modus gemeint ist:
ohneKategorie→ nur Rezepte ohne Kategorie suchen und bearbeitenohneTags→ nur Rezepte ohne Tags suchen und bearbeitenohneKategorieUndTags→ Rezepte, denen Kategorie ODER Tags fehlen
Ein eigenständiger, separat registrierter Slash-Befehl (z.B. /ohneKategorie ohne den
Skill-Namen davor) ist technisch nicht möglich — nur der Skill-Name selbst funktioniert als
Slash-Trigger. Das Schlüsselwort danach steuert aber zuverlässig den Modus.
Batch-Modus: alle unvollständigen Rezepte durchgehen
Wenn der User will, dass alle Rezepte ohne Kategorie und/oder Tags gesucht und bereinigt werden (z.B. "räum alle Rezepte ohne Kategorie auf", "geh alle unsortierten Rezepte durch"):
- Alle Rezepte seitenweise abrufen:
Solange weiterblättern (
mealie_recipes_list(page=1, per_page=50)pageerhöhen), bis alle Seiten (total_pages) abgedeckt sind. - Aus dem Ergebnis die Rezepte herausfiltern, bei denen
recipeCategoryund/odertagsleer sind (je nachdem, was der User will — nur Kategorie, nur Tags, oder beides fehlt). - Dem User kurz die gefundene Anzahl + Namen nennen und bestätigen lassen, dass alle nacheinander bearbeitet werden sollen (kann je nach Anzahl mehrere Tool-Aufrufe dauern).
- Jedes gefundene Rezept einzeln durch Schritt 2-5 aus dem Hauptablauf laufen lassen
(Taxonomie abrufen, Kategorien/Tags setzen). Zutaten/Anleitung standardmäßig
nicht anfassen, um bestehende, funktionierende Rezepte nicht unnötig zu verändern
— außer die strukturierten Felder sind offensichtlich vom Import kaputt. Das ist
der Fall, wenn
recipeIngredientoderrecipeInstructionsnur Platzhalter wie "Could not detect ingredients" / "Could not detect instructions" enthalten oder leer sind, während indescriptionerkennbar ein vollständiger Rezepttext (Zutatenliste und/oder Zubereitungsschritte, oft als Instagram-Caption) steht. In diesem Fall die Zutaten und Schritte aus derdescriptionextrahieren, normalisieren, ggf. übersetzen und mit setzen — das ist der eigentliche Grund, warum das Rezept "unsortiert" wirkt. Wenn der User das ausdrücklich nur für Kategorien/Tags will, entsprechend nachfragen oder respektieren. - Am Ende eine kurze Zusammenfassung: wie viele Rezepte bearbeitet wurden und welche Kategorien/Tags jeweils gesetzt wurden (kompakte Liste, keine vollständigen Rezeptdaten).
Edge Cases
- Scraper konnte URL nicht lesen / Import schlägt fehl: Seite selbst per web_fetch
holen, Rezeptdaten manuell extrahieren und mit
mealie_recipes_create(...)anlegen (inkl. bereits bereinigter Felder), statt den fehlgeschlagenen Import zu wiederholen. - Rezept existiert schon (Duplikat): Vor dem Import kurz mit
mealie_recipes_search(query=<Name>)prüfen. Bei Treffer nachfragen, ob überschrieben/ aktualisiert oder als neues Rezept angelegt werden soll — nicht stillschweigend doppelt anlegen. - Sehr lange/unklare Zutatenliste: Lieber in Batches mit
mealie_parser_ingredients_batcharbeiten statt einzeln zu parsen.