- Details
- Kategorie: Fast ein Tagebuch
Ich programmiere ein Add-on für meine Webseite
Seit langem suche ich eine gute Möglichkeit, meine jeweils neuen Artikel auf meiner Website automatisch in Social-Media zu posten. Ich verwende Mastodon und Bluesky.
Die KI von Anthropic, Claude, soll gut Programme erstellen können. Also Zeit für einen Test.
Meine Anfrage an Claude
Kannst du mir ein Joomla plugin schreiben, welches den jeweils letzten Artikel auf Mastodon und Bluesky postet? Gerne mit einem kurzen Textanriss und dem ersten Bild des Artikels. Die Account Informationen möchte ich als Konstanten eingeben.
Claude arbeitet etwa 2 Minuten, dann
Das Plugin ist fertig: plg_content_socialpost.zip (Joomla 4/5, Content-Plugin). PHP war in meiner Umgebung nicht verfügbar, ich habe es also nicht ausgeführt und nur den Code geprüft. Teste es bitte zuerst mit einem Testartikel.
Einrichten
- In src/Extension/SocialPost.php oben die Konstanten eintragen: Mastodon-Instanz und Token (Scopes write:statuses und write:media), Bluesky-Handle und App-Passwort.
- ZIP über System → Erweiterungen installieren, dann das Plugin aktivieren.
So verhält es sich
- Auslöser: Es postet beim Speichern eines neuen, veröffentlichten Artikels mit Zugriffsebene „Public“.
- Inhalt: Titel, Textanriss (200 Zeichen), Link und das erste Bild. Das ist das erste <img> im Text, sonst das Intro- oder Volltextbild.
- Bild: Für Bluesky wird es bei Bedarf unter 1 MB verkleinert (PHP-GD nötig). Der Alt-Text kommt aus dem alt-Attribut, sonst aus dem Titel.
- Doppelposts: Das Plugin merkt sich die zuletzt geposteten Artikel-ID und postet nicht doppelt.
- Geplante Artikel: Mit Veröffentlichungsdatum in der Zukunft wird nicht gepostet. Speichere sie nach der Veröffentlichung einmal neu.
- Fehler: Bei einem Fehler kommt eine Meldung im Backend, Details stehen im Joomla-Log (socialpost.log.php). Das Speichern des Artikels bricht nie ab.
Prüfe beim ersten Artikel, ob der Link im Post stimmt, denn die URL wird aus dem Backend heraus erzeugt. PHP-cURL muss auf dem Server aktiv sein.
Das Plugin funktioniert auf Anhieb, ausser einem kleinen Problem und einem weiteren Wunsch, also nochmals schreiben
Bei mastodon wird das Bild leider nicht angezeigt. Zudem hätte ich den Link auf den Original Artikel gerne geshorted.
Nach einer weiteren Minute
Ich habe beide Punkte angepasst, plg_content_socialpost.zip ist neu. Das Plugin ließ sich hier nicht ausführen, ich konnte es also nicht testen.
Link kürzen: Der Artikel-Link läuft jetzt über is.gd. In den Konstanten kannst du URL_SHORTENER auf 'tinyurl' oder 'none' stellen. Schlägt die Kürzung fehl, wird der Original-Link verwendet. Der Dienst bekommt dabei die URL zu sehen. Wenn du einen eigenen Shortener (z. B. YOURLS) hast, baue ich den gern ein.
Mastodon-Bild: Die genaue Ursache kenne ich nicht. Ich habe zwei Dinge geändert, die in Frage kommen:
- Der Upload läuft jetzt über den älteren Endpunkt /api/v1/media. Der wartet, bis Mastodon das Bild fertig verarbeitet hat. Beim neueren Endpunkt kann das Bild beim Absenden des Posts noch in Verarbeitung sein.
- Den Idempotency-Header habe ich entfernt. Bei einem erneuten Test mit derselben Artikel-ID hätte Mastodon sonst womöglich nur die alte Antwort zurückgegeben.
Zusätzlich schreibt das Plugin jetzt ins Joomla-Log (socialpost.log.php), wenn das Bild nicht geladen werden konnte oder Mastodon den Post ohne Anhang angelegt hat.
Falls das Bild bei Mastodon weiterhin fehlt, schau bitte in dieses Log und schick mir den Eintrag.
Nun klappt alles perfekt. Einige Minuten geplaudert und ein länger bestehendes Problem gelöst!
