preloader

CookIT

Rezeptsammlung, die sich aus dem Postfach füllt

  • TypeScript
  • Hono
  • SQLite
  • IMAP
  • KI
  • Docker
CookIT

Rezepte kommen per Mail: ein Link aus dem Familienchat, ein abfotografierter Kochbuchausschnitt, der Zettel von der Schwiegermutter. Alles landet im Postfach und ist nach zwei Wochen nicht mehr auffindbar. CookIT holt sie da heraus und macht eine durchsuchbare Sammlung daraus, die sich mehrere Leute teilen.

Wie der Import läuft

Das Postfach wird per IMAP nur gelesen – CookIT merkt sich die zuletzt verarbeitete UID und verändert dort nichts.

Danach wird aussortiert, damit keine Bestellbestätigung als Abendessen endet. Zuerst greifen Absender-Regeln und Betreff-Muster, die sich in der Oberfläche pflegen lassen. Das kostet nichts und ruft vor allem keine Links auf. Was dadurch nicht eindeutig zugeordnet ist, bekommt die KI zur Einordnung: Rezept im Text, Rezept-Link oder nichts davon.

Die eigentliche Extraktion hängt an der Quelle:

  • Webseiten – zuerst schema.org/Recipe, das liefern Chefkoch, Lecker und die meisten Food-Blogs direkt mit. Erst wenn das fehlt, liest Readability den Haupttext und die KI bringt ihn in Form.
  • Mailtext – über die KI.
  • Fotos – Anhänge und eingebettete Bilder, nachdem Logos und Tracking-Pixel aussortiert sind. Ohne API-Key bleibt lokales Tesseract-OCR, das aber nur den Rohtext erkennt.

Was dabei wichtig war

Nichts wird stillschweigend weggeworfen. Aussortiertes landet sichtbar unter „Postfach → Aussortiert" und lässt sich per Knopf doch noch übernehmen. Ein Filter, der Dinge spurlos verschluckt, wäre im Zweifel schlimmer als gar keiner.

Der billige Weg kommt zuerst. Regeln und strukturierte Daten vor KI – das spart nicht nur Geld, es ist auch genauer: Was eine Seite selbst als Zutatenliste auszeichnet, muss niemand mehr raten.

Derselbe Link ergibt ein Rezept. Erkannt über die normalisierte URL, ohne utm_*-Anhängsel und mit rel=canonical. Sonst steht dasselbe Gericht dreimal in der Sammlung, weil es durch drei Mails ging.

Technik

TypeScript auf Hono, SQLite über Drizzle, Bilder und Originalmails liegen daneben im Datenverzeichnis. Läuft als Container hinter Traefik; die Anmeldung übernimmt CookIT selbst per OIDC gegen Authelia, sodass sich mehrere Benutzer dieselbe Sammlung teilen. Gebaut und ausgerollt wird per Woodpecker-Pipeline bei jedem Push.

← Alle Projekte