„Schick mir das Rezept nochmal" – und dann sucht man eine halbe Stunde. 😖
Bei uns kommen Rezepte per Mail. Ein Link aus dem Familienchat, ein abfotografierter Kochbuchausschnitt, ein handgeschriebener Zettel von der Schwiegermutter, abgetippt in drei Zeilen. Alles landet im Postfach – und ist zwei Wochen später praktisch weg.
Also habe ich mir CookIT gebaut: Es liest das Postfach mit, erkennt, was ein Rezept ist, und legt daraus eine durchsuchbare Sammlung an.
Inzwischen stehen da 236 Rezepte. Eingetippt habe ich keins davon. 😎
Der aufwendige Teil ist nicht das Lesen, sondern das Aussortieren
Das klingt erstmal einfach: Mails abholen, Links aufmachen, Rezept rausziehen. In der Praxis ist die interessante Frage aber eine andere – nämlich wie man verhindert, dass die Google-Sicherheitswarnung, die H&M-Rücksendung und die Paketankündigung als Abendessen in der Sammlung landen. 😅
Das läuft deshalb in Stufen. Zuerst greifen Absender-Regeln und Betreff-Muster. Die kosten nichts und rufen vor allem keine Links auf. Erst was dadurch nicht eindeutig ist, bekommt die KI zur Einordnung: Rezept im Text, Rezept-Link oder nichts davon.
Aussortiertes bleibt sichtbar - mit Begründung und einem Knopf, um es doch zu übernehmen
Und das war mir wichtig: Aussortiertes verschwindet nicht. Es steht mit Begründung im Postfach, und ein Klick auf „Doch importieren" holt es trotzdem rein. Ein Filter, der Dinge spurlos verschluckt, ist im Zweifel schlimmer als gar keiner – dann traut man der Sammlung nämlich nicht mehr.
Woher die Daten kommen
Bei Webseiten schaut CookIT zuerst nach schema.org/Recipe. Das liefern Chefkoch, Lecker und die meisten Food-Blogs direkt mit, sauber strukturiert, mit Zutaten, Schritten und Zeiten. Das ist der mit Abstand beste Fall: Was eine Seite selbst als Zutatenliste auszeichnet, muss niemand mehr raten.
Erst wenn das fehlt, liest Readability den Haupttext und die KI bringt ihn in Form. Fotos – Anhänge, eingebettete Bilder, Uploads – gehen durch die Bilderkennung, nachdem Logos und Tracking-Pixel aussortiert sind.
Zutaten zum Abhaken, Portionen umrechnen, Schritte durchnummeriert - und unten steht, aus welcher Mail es stammt
Unten an jedem Rezept steht übrigens, woher es kommt: Quelle, Mail und ob es automatisch oder von Hand angelegt wurde. Dadurch findet man im Zweifel auch das Original wieder.
Kleinigkeiten, die den Unterschied machen
Doppelte Rezepte erkennt CookIT über die normalisierte URL – ohne utm_*-Anhängsel und mit
rel=canonical. Derselbe Link in drei Mails ergibt also ein Rezept und nicht drei.
Und: Das Postfach wird nur gelesen. CookIT merkt sich die zuletzt verarbeitete Mail und ändert dort nichts. Beim lokalen Entwickeln ist der automatische Abruf sogar komplett aus – sonst verarbeitet die Testumgebung fröhlich dieselben Mails nochmal durch die KI. Frag nicht, warum ich das weiß. 🙈
Technik
TypeScript auf Hono, SQLite über Drizzle, läuft als Container hinter Traefik. Angemeldet wird über Authelia, sodass mehrere Leute dieselbe Sammlung teilen. Mehr dazu auf der Projektseite.