Tags

#Kirby

Alles zu Kirby CMS, Workflows, Templates, Plugins und Publishing mit Kirby.

Vom Rumfrickeln zum Medienstrom

Vom Rumfrickeln zum Medienstrom

Die letzten Wochen habe ich wieder im Hintergrund an meinem Kirby rumgeschraubt. Oder besser gesagt: rumschrauben lassen. Ich habe Codex mit meinem Visual Studio Code getestet und mal geschaut, wie dieses Vibe Coding so funktioniert. Und ich muss sagen: Zunächst wirkt es wie Zauberei, im Laufe des Projekts wird es dann etwas ernüchternder. Es fühlt sich eben an wie die Arbeit mit einer LLM, die schneller den Kontext verliert, als einem lieb ist, und ab und an schöne Dinge halluziniert. Im Endeffekt ging es trotzdem viel schneller als gedacht.

Mein ursprüngliches Ziel, das Layout komplett konsistent neu aufzuziehen, habe ich dabei allerdings etwas aus den Augen verloren. Manche Rundungen unterscheiden sich noch, manche Schriftgrößen stimmen noch nicht ganz. Aber ich bin auf jeden Fall auf einem guten Weg. Und ja, die Seite sieht jetzt anders aus. Beim ursprünglichen Layout habe ich mich noch stark an meiner alten micro.blog-Seite orientiert. Mit der Zeit und dem ganzen Rumfrickeln passiert es bei mir automatisch, dass ich mich Schritt für Schritt davon emanzipiere.

Was ich eigentlich noch gar nicht einbauen wollte, jetzt aber schon live ist, ist das Medientracking. Da habe ich mich natürlich auch wieder inspirieren lassen.

Felix hat auf seiner Seite einen River aufgesetzt, in den er alles reinschmeißt, was er gut findet oder konsumiert. Thomas hat mit seinem Recorder zwar eine andere Umsetzung, aber ein ähnliches Konzept. Das Leben zu loggen finde ich spannend. Auswertungen und Charts zu generieren finde ich ebenfalls großartig. Und jetzt gibt es das auch hier: Den Medienstrom.

Ich wollte mich dabei am IndieWeb orientieren, bin aber ehrlich gesagt noch in der Findungsphase. Es gibt jetzt die Bookmarks, in die alles reinkommt, was ich so lese und für veröffentlichenswert halte. Dann gibt es das Watchlog mit Videos für YouTube, Filme und Serien. Und schließlich noch den Audiofeed, in den ich alles werfe, was ich gerade höre. All das läuft jetzt im Medienstrom zusammen, den man auch, ich weiß zwar nicht genau warum, als RSS abonnieren kann.

Warum bin ich noch in der Findungsphase? Weil sich das für mich gerade so anfühlt, als wären das gleichzeitig auch Favoriten. Die Trennschärfe fehlt mir noch. Wenn alles klappt, sollen Einbindungen hier als Reposts gesehen werden. Eigentlich sollen sie das auch sein. Oder sind es doch Favoriten, weil ich auf einen bestimmten Text hinweisen möchte oder auf einen besonders guten Tröt? Ich bin da gerade selbst noch etwas verwirrt und hoffe, dass ich das alles so offen gebaut habe, dass ich es bei Bedarf schnell wieder umbauen kann.

Da ich mein eigenes Hirn aber gut kenne und weiß, dass es gerne den Weg des geringsten Widerstands geht, habe ich mir ein paar Prozesse ausgedacht, mit denen Inhalte automatisiert hier landen können. Oder zumindest ohne großen Aufwand.

Filme tracke ich über Letterboxd. Die bieten einen wirklich vernünftigen RSS-Feed an, in dem sogar schon eine TMDB-ID steht. Darüber kann ich mir über die TMDB-API noch zusätzliche Daten zu dem Film ziehen. Ein Importscript sorgt per Cron dafür, dass regelmäßig nachgeschaut wird und neue Filme automatisch hier auf der Seite erscheinen.

Bei Serien nutze ich trakt.tv und dessen API. Dort bewerte ich schnell eine Folge, die ich gesehen habe, und durch ein Importscript landet sie dann auch hier. Wenn ich noch schnell einen Kommentar schreiben möchte, geht das ebenfalls. Und wenn ich den Eintrag später auf die Startseite heben will, klappt das auch noch. Wie zum Beispiel hier.

Ganz automatisch funktioniert auch der Import über meinen RSS-Service Miniflux. Wenn ich dort einen Artikel markiere, habe ich hier einen Endpunkt eingerichtet, der die Daten per POST übergeben bekommt und dann entsprechend darstellt.

Und für den Rest habe ich mir tatsächlich Kurzbefehle auf meinem iPhone gebaut. Das Einrichten war ein ziemlicher Pain. Aber irgendwie hat es funktioniert. Und zwar sogar besser, als ich am Anfang erwartet hatte. Die Kurzbefehle nehmen einfach die URL aus der Zwischenablage, geben mir die Möglichkeit, einen Kommentar zu schreiben, und fragen dann ab, ob der Beitrag im entsprechenden Segment oder auch auf der Startseite veröffentlicht werden soll. So bekomme ich YouTube und Vimeo hier rein und generell Bookmarks, die ich nicht in meinem Feedreader finde.

Bei Podcasts habe ich es mir ehrlich gesagt etwas einfacher gemacht. Ich nutze die App Pocket Casts, die viele Verzeichnisse noch einmal selbst spiegeln. Die Daten hole ich mir dann einfach von dort. Falls ihr euch also fragt, warum meine Podcasts auf Pocketcast.com verlinken und nicht irgendwo anders: Das ist keine Empfehlung für die App oder sogar Werbung, es macht für mich einfach das Teilen leichter.

Deshalb habe ich jetzt auch drei Kurzbefehle. Einen für den Audiostream, einen für Bookmarks und einen für das Watchlog. Über „Teilen“ ist dann schnell ein Beitrag hier angelegt, der zumindest niemanden stört. Und mich freut.

Barrierefreiheit auf Knopfdruck (und KI)

Barrierefreiheit auf Knopfdruck (und KI)

Ich habe ein kleines Kirby-Plugin gebaut, das die Stellen übernimmt, die ich aus Zeitmangel wahrscheinlich seltenst ausgefüllt hätte, aber die schon auch wichtig sind: Via LLM von OpenAI kann ich jetzt Alt-Texte von Bildern per Button generieren lassen und wenn ich will, auch die Meta-Descriptions für Suchmaschinen. Und dabei habe ich wieder viel über Kirby gelernt und warum es eine gute Entscheidung war, zu wechseln.

Wenn ich etwas gar nicht schreiben würde, schreibe ich’s lieber mit LLMs, besonders da, wo Barrierefreiheit dranhängt. Nicht, weil ich es nicht könnte, sondern damit nichts liegen bleibt: Alt-Texte, Meta-Descriptions, diese stillen Pflichtfelder, die am Ende irgendwie auch wichtig sind, aber dafür auch noch einmal richtig viel Zeit kosten können, ohne das der eigentliche Beitrag davon auf den ersten Blick profitiert.

Aus dieser … nenne ich es einmal … Faulheit ist ein kleines Kirby-Plugin entstanden, das zwei Dinge zuverlässig erledigt: barrierefreie Alt-Texte für Bilder und sachliche Meta-Descriptions für Seiten. Auf Knopfdruck direkt im Panel.

Ich gebe dem Modell den vollen Kontext, setze Length-Guards und formatiere die Antwort passgenau: ca. 110 Zeichen für Alt, ca. 160 für Meta. Optional kann das Plugin das Bild als Data-URL mitschicken („Vision“), damit die KI nicht im luftleeren Raum rät.

Warum klappt das so erstaunlich gut? Weil Kirby Inhalte und Mediendaten wunderbar strukturiert. Alle Bild-Metadaten liegen in Sidecar-Contentdateien neben der Bilddatei, z. B. mein-foto.jpg.txt. Menschenlesbar, versionierbar, und serverseitig perfekt als Prompt-Kontext nutzbar.

Damit das sauber bleibt, habe ich zwei kleine Helfer daneben gelegt. Mein Plugin sync-meta hält Felder synchron, die sowohl in der Seiten-Contentdatei (default.txt) als auch in den Bild-Sidecars (bild.jpg.txt) vorkommen. Zum Beispiel liegt die Bildunterschrift bei einem Beitrag mit nur einem Bild in der Contentdatei, nicht in der Sidecar. Hintergrund ist, dass mein System historisch gewachsen ist und sich die Anforderungen, je besser ich Kirby kennenlerne, auch immer wieder anpassen.

Das Plugin exif-import sorgt dafür, dass Sidecars nicht leer starten: Beim Upload lese ich optional EXIF/IPTC aus und fülle Datum, Ort, Kamera, ggf. Caption vor – was immer das Asset hergibt. Danach muss die KI nicht mehr raten, sie ergänzt.

Der Generierungs-Flow ist bewusst serverseitig: Das Panel schickt nur IDs. Das Backend sammelt Kontext (Seitentitel, Teaser, Text, Bild-Captions, optional Geodaten), ergänzt auf Wunsch das Bild selbst und nutzt zentral gepflegte, nüchterne Prompts. Ton und Stil kann ich global in der config.php oder je Blueprint feinjustieren.

Wenn der Kontext zu dünn ist, breche ich ab, statt Floskeln zu produzieren. Und wenn ich „zu faul“ bin, drücke ich guten Gewissens auf „Vorschlagen“ – besser ein kurzer KI-Text als gar keiner. Genau dafür ist das da.

Am Ende schreibe ich weiterhin gern selbst, aber ich finde es sehr angenehm, Sachen zu automatisieren, die sonst aus Zeitgründen wegfallen würden. Barrierefreiheit profitiert (Alt-Texte sind da!) und mein Kopf bleibt frei für die Teile, die wirklich menschliche Aufmerksamkeit brauchen.

Basteln am eigenen Bloghaus

Basteln am eigenen Bloghaus

Seit ich von Wordpress weg bin, fühlt sich Bloggen wieder wie Basteln an. Kirby ist mein Werkzeugkasten, und aus Ordnern, Textdateien und ein paar Skripten wächst gerade mein eigenes kleines Zuhause. Zwischen Rückschlägen, Heureka-Momenten und schiefen Polaroid-Slidern macht das erstaunlich viel Spaß.

Ich bin immer noch ein bisschen berauscht von dem Gefühl, hier mein eigenes, kleines Zuhause zu bauen. Nicht mehr dieses sperrige Wordpress-Mietshaus, bei dem man immer gefühlt zur Verwaltung musste, wenn man nur eine Kleinigkeit anders haben wollte, sondern ein selbstgezimmertes Häuschen, das knarzt, wenn man die Treppe hochgeht, und trotzdem genau das richtige Licht in der Küche hat.

Das Fundament heißt bei mir Kirby. Für alle, die das nicht kennen: Kirby ist ein CMS, aber ohne Datenbank, ohne den ganzen aufgeblähten Kram. Alles liegt als einfache Textdatei in Ordnern. Jeder Beitrag ist ein Ordner mit einer txt, den Bildern und kleinen Zusatzdateien. Man schreibt direkt darein. Kirby liest das aus und baut daraus die Seite.

Die letzten Tage habe ich vor allem im Keller geschraubt: ein Exif-Import! Klingt trocken, fühlt sich aber an wie Magie. Plötzlich spuckt mein System beim Speichern eines Beitrags die Metadaten von Bildern aus, die ohnehin schon in den Dateien stecken. Ordnerstruktur, Textdateien, Bilder – alles in einem Takt. Und wenn ich ein Bild hochlade, schiebt sich wie von selbst das Aufnahmedatum oder der Ort dazu, fein säuberlich abgelegt.

Klar, Rückschläge gab’s auch. Im ersten Wurf dachte ich: alles in die Hauptdatei, passt schon. Bis mir auffiel, dass das ganze Konzept zerbröselt, sobald mehr als ein Bild im Beitrag auftaucht. Also wieder zurück ans Script, Schraubenschlüssel gezückt, und die Infos in die Bild-Textdateien verschoben. Seitdem erscheinen sie automatisch unter den Fotos. Nur die Alt-Texte und die Bildunterschriften hängen gerade noch am selben Tropf. Da muss ich noch mal ran, denn Alt-Text ist nüchtern, Bildunterschrift eher Bühne. Und da will ich mal schauen, ob ich die API von OpenAi da nutzen kann, um beispielsweise halb automatisch die Alt-Beschreibungen oder aber auch die Metadescription generieren zu lasse .

Nebenbei bastle ich am Layout. Erst hatte ich für die Bilddarstellung ein Polaroid über die gesamte Bildschirmbreite, dann festgestellt: zu plump. Jetzt baut mein Script munter Slider, wenn mehrere Bilder hintereinander auftauchen. Das ist noch nicht ganz elegant, aber fühlt sich schon viel mehr nach meinem Blog an – ein bisschen wie die Entscheidung, ob man im Wohnzimmer Teppich oder Parkett verlegt.

Und dann dieser kleine Zaubermoment: Ich lasse mir von Kirby eine optimierte Bildversion rechnen, damit die Seite fix lädt. Klickt man aufs Bild, springt die große Datei nach, und dieser Mini-Moment des Nachladens macht mich jedes Mal froh. Es ist wie ein Augenzwinkern des Systems: „Siehst du, so einfach kann’s gehen.“ Hach.

Journalistische Apposition

Journalistische Apposition

Wenn ich im weltweiten Netzwerk "Internet" lese, würde ich manchmal gerne auf mein Eingabegerät "Tastatur" einschlagen. Aber dafür war dann mein Macintosh-Notebook "MacBook Pro" doch zu teuer. Denn leider kann man ja nicht mehr darauf hoffen, im Internetauktionshaus "Ebay" ein günstiges Schnäppchen zu klicken – und auch im Kurznachrichtendienst "Twitter" kann man nicht unbedingt auf Hilfe hoffen.
Worauf ich hinaus will, merkt ihr selbst, oder?
Es ist eine Krux in Deutschland als Journalist übers Netz zu schreiben. Zwar ist jeder zehnte Deutsche inzwischen auf oder in Facebook, Twitter wird immer häufiger als Quelle in Print und TV benutzt, auf Youtube schaut jeder täglich inzwischen 50 Minuten lang Videos; aber trotzdem bleibt der Kanal oft nur die Videoplattform "Youtube". Facebook ist das "Netzwerk", das "Internetportal" die "Webseite". Als ob der Lesergroschen erst fallen würde, wenn es zum Netzservice eine passende Apposition gibt.
Ich fühle mich beim Lesen gelinde gesagt verarscht.
Journalismus muss erklären, klar. Die spannende Frage lautet aber immer, ab welchem Punkt man ansetzt. Was ist Allgemeinwissen? Was kann man bei den Lesern voraussetzen? Meine Mutti hat mir erklärt, dass es einmal Zeiten gegeben hat, in denen Facebook, Twitter und Youtube, Apple, Google und Microsoft einfach noch nicht existiert haben. Deshalb war früher vielleicht eine Apposition sinnvoll, weil sie einordnete und übersetzte. Aber heutzutage ist sie nur noch eines: überflüssig und den Textfluss störend.
"Aber wir können doch nicht davon ausgehen, dass jeder Facebook kennt", höre ich die Kritiker rufen. Und, ja. Da muss ich zustimmen. Aber die Apposition kommt nur so im Netzjournalismus vor. Das ist zumindest meine sehr subjektive Einschätzung.
Ein paar Beispiele:
Die "Frühkritik" auf faz.net ist ein sehr klickstarkes, weil einordnendes Format. So sagt es zumindest Frank Schirrmacher in einem Interview bei den Kollegen von Alternativlos. Beispiel: "Lafontaine und Sinn schreiten Seit’ an Seit’" – eine Analyse zum Jauch-Talk. Im Text wird weder erwähnt, wann die Jauch-Folge gelaufen ist, dass es sich überhaupt um eine Talk-Show handelt und auch der Sender wird mit keinem Wort erwähnt. Unjournalistisch würde das niemand nennen. Autor Frank Lübberding geht ganz einfach davon, dass bekannt ist, dass Jauch eine Talkshow hat. Knapp vier Millionen Menschen haben da eingeschaltet. In Bestzeiten waren esbei Jauch im Ersten 5,1 Millionen. Nur zum Vergleich:Im Juni hatte Facebook über 20 Millionen aktive Nutzer in Deutschland.
In der Spiegel-Kolumne zu "Bauer sucht Frau" wird auch nicht einordnend erklärt, dass es sich um eine Doku-Soap von RTL handelt.
Im Nachdreh "Cameron – ungeliebt, aber unverzichtbar" von Reiner Luyken auf zeit.de  ist die ganze Zeit die Rede von einem "EU-Veto". Was das genau ist, wird nicht erklärt.
Das ist nicht unjournalistisch, das ist angenommenes Allgemeinwissen. Denn: Man redet momentan über nix anderes als die Cameron-Entscheidung.
Warum verfällt aber der Netzjournalismus immer in diese appositionelle Erklärbärhaltung, in den unterfordernden Bemutterungsmodus? Warum wird im letzten Absatz immer noch einmal geschrieben, dass Facebook mit über 800 Millionen Mitgliedern als das größte soziale Netzwerk der Welt gilt und oft wegen Datenschutzfragen in die Kritik geraten ist?
Man glaubt anscheinend immer noch, das die Thematik zu abstrakt für die Leser ist. Aber wir haben nicht mehr 1997. Es ist am Netzjournalismus ganz einfach vorbeigegangen, dass Dienste inzwischen auf Usability, Einfachheit und Nutzerbindung ausgelegt sind.
Und da würde es doch ganz gut passen, endlich auch die Sprache, die Vergleiche und das angenommene Hintergrundwissen in die Jetztzeit zu bringen. Schließlich gibt es die Datenautobahn auch nicht mehr im Journalismus. Shit.