Claude Code

Simple Anti-FOMO RSS-Reader

Das erste Mal, dass ich ein GitHub Repo public mache. Im RSS-Club hatte ich ja schon mal angedeutet, dass ich einen einzigen RSS-Reader geschrieben habe, der per LLM FeedItem für mich nach Relevanz sortieren soll. Ich muss nicht alles lesen, was mir vor die Augen kommt. Man wird heutzutage ohnehin schon wie blöd mit News vollgepumpt. Quasi ein Anti-FOMO RSS-Reader. Der Name ist noch etwas sperrig.

Feature sind überschaubar:

  • Feeds werden einer OPML-Datei entnommen, gelesen und die Items in einer MySQL Tabelle hinterlegt.
  • Wenn ein ANTHROPIC_API_KEY hinterlegt ist, werden neu gelesene Items mit dem claude-haiku-4-5-20251001-Model klassifiziert. Dazu wird eine Markdown-Datei mit einer Liste von Kategorien herangezogen. Diese enthält je Zeile eine Kategorie mit Schlüsselwörtern/Definition. Die Reihenfolge der Kategorien entspricht der Relevanz. Was nicht vom LLM klassifiziert werden kann, ist „Nicht kategorisiert“ und steht unten in der Liste. Das sind dann in der Regel Posts, die sich nicht mit meinem Interessenbereich decken. Bei der Klassifizierung entstehen geringfügige Kosten.
  • Neue Items können als gelesen markiert werden.
  • Alte Items werden nach 5 entsorgt. * Items können favorisiert werden und bleiben dann über 5 Tage hinaus behalten.

Mehr gibt es noch nicht. Ich könnte mir vorstellen, die index.php zum Lesen auch wegzulassen und stattdessen das Ganze als RSS-Feed mit (soweit verfügbar) vollständigen Posts einfach nur als Feed bereitzustellen, den ich dann mit NetNewsWire lesen kann. Mal sehen …

Eine DDEV-Config ist im Repo enthalten.

Naja, es ist eher eine Art Proof of Concept als eine ernst gemeinte Anwendung. Ich denke, dass man so etwas vielleicht auch mit ein paar Klicks in Inoreader machen könnte. Aber wo bleibt denn da der Spaß.

Anders bloggen

Dieser Post ist ein kleines Experiment. Ich schreibe den Text als Frontmatter. Also ein paar key-value-Pairs oder YAML im Kopf und Markdown im Body. Claude checkt dann einmal ob ich Tinnef geschrieben habe, macht Witze über meine Tippfehler und erstellt dann einen Post über den MCP Server für das Blog.

So weit der Grundgedanke. Und während ich in vi noch fröhlich vor mich hin schreibe, weiß ich natürlich noch nicht wie gut das klappen wird.

Falls sich das Ganze als praktikabel herausstellt, muss ich dem create_entry-Tool noch Zugriff auf Last.fm geben um den zuletzt gescrobbelten Titel abzuholen um den im Post zu verankern. Und ein photo_tool ist in Anbetracht des Inhalts in diesem Blog vielleicht auch ganz sinnvoll.

Update: Und nach dem Posten, weiss ich nun, dass es perfekt funktioniert hat.

Update: Zum Foto-Upload: Ein MCP-Tool dafür ist leider keine gute Idee. Das Problem liegt darin, dass alle Tool-Parameter durch den Kontext des Sprachmodells müssen. Ein base64-kodiertes JPEG von ein paar Megabyte ergibt einen ebenso großen Textstring und das übersteigt schnell, was sinnvoll durch den Kontext geht. Stattdessen läuft der Upload direkt per curl an einen separaten HTTP-Endpunkt, komplett am Modell vorbei. Das MCP-Tool kümmert sich dann nur noch um die Metadaten.

Eine kleine Richtigstellung

OK, nach meinem Genörgel über die Kneifzange, muss ich evtl. was gerade stellen.

Seit Ende der 90er Jahre verdiene ich meinen Lebensunterhalt mit der Entwicklung irgendwelcher Software in unterschiedlichsten Bereichen und Sprachen. In all der Zeit sind Sprachen und Frameworks gekommen und wieder gegangen. Aber wenn ich zurückblicke, gibt es lediglich zwei Veränderungen, die meine Arbeit nachhaltig und positiv verändert haben: Debugger & Tracer (egal ob visuell oder textbasiert) und LLMs.

Ein per KI generiertes Bild eines selbstdichtenden Schaftbolzen. Dem Running-Gag aus Deep Space 9

Selbstdichtender Schaftbolzen: Ein per KI generiertes Bild eines selbstdichtenden Schaftbolzen. Dem Running-Gag aus Deep Space 9.

Ich habe kein Verständnis mehr für diese Ewiggestrigen, die beim Entwickeln auf LLMs verzichten. Selbst, wenn ich berücksichtige, dass ich viel Zeit investiere, um permanent hinterherzuschauen, was der kleine selbstdichtende Schaftbolzen gerade verbricht und ich manchmal das Gefühl habe, dass mich die „Begriffsstutzigkeit“ der LLM in den Wahnsinn treibt, reduziert sich meine Umsetzungszeit um die Hälfte bis zwei Drittel. Und das zeigt sich darin, dass der hässliche Teil wegfällt. Heute hat der kleine Schneehobel zum Beispiel für eine Datenmigration unzählige CMS Elemente von einer Software auf die Elemente einer anderen Software gemapped. Wenn ich vorstelle, ich hätte die Elementstrukturen auf beiden Seite erst ermitteln müssen, um dann einen Konverter zu schreiben, wäre ich vermutlich ausgeflippt.

Ganz anders bei Bildern. Wie kann man nur KI-Bildchen in seinem Blog posten. Da hört der Spaß nun wirklich auf… 

Mutter der Vergesslichkeit

Claude Code ist ja auch die Mutter der Vergesslichkeit. In einem Shopware Projekt liegen zwei Themes. In der CLAUDE.md ist hinterlegt welches davon das aktive ist. Die Keifzange nimmt in einem frischen Context beim Planen konsequent das falsche. Es ist schon beinahe lustig.