Der Hermes Agent von Nous Research kann nicht nur Chat-Nachrichten beantworten – er kann auch eigenständig Blog-Posts generieren, SEO-optimieren und über die WordPress REST API veröffentlichen. In diesem Beitrag zeige ich dir, wie ich einen vollständig autonomen Workflow aufgesetzt habe, der wöchentlich neue Inhalte aus laufenden Sessions extrahiert und auf homepage.chen.fi publiziert.
Das Problem: Content-Pflege frisst Zeit
Ein Homelab-Blog zu betreiben bedeutet regelmäßig neue Inhalte zu produzieren – Tutorials, Projekt-Updates, Lösungen für Probleme, die beim Betrieb der eigenen Infrastruktur auftauchen. Manuell ist das schwer skalierbar. Die Lösung: Ein autonomer Content-Agent, der aus den täglichen Session-Diskussionen die relevantesten Themen extrahiert, aufbereitet und veröffentlicht.
Die Architektur im Überblick
- Session Search: Hermes durchsucht seine eigene Session-Datenbank nach technischen Diskussionen zu Homelab, Docker, AI, YouTube, WordPress und anderen Themen.
- Editorial Gate: Ein Qualitätsfilter prüft jedes Thema auf Substanz (≥600 Wörter), Relevanz und Datenschutz.
- Redundanz-Prüfung: Die letzten 20 Blog-Posts werden über die WordPress REST API geladen und mit dem Kandidaten verglichen.
- Content-Generierung: Der Text wird mit Gutenberg-Block-Kommentaren strukturiert – kompatibel mit dem WordPress-Editor.
- SEO-Optimierung: Rank Math Meta-Daten (Title, Description, Focus Keyword) werden direkt im REST-POST-Body mitgeliefert.
- Veröffentlichung: Die WordPress REST API mit Application Password Basic Auth erledigt den Rest.
- Cross-Linking: Ältere Beiträge erhalten automatisch einen Link zum neuen Post.
Authentifizierung: Application Password statt Browser
Der wichtigste Baustein ist die Authentifizierung. Für Cron-Jobs und Skripte eignet sich der normale WordPress-Login nicht – die Session läuft ab, das Einloggen per Browser ist fehleranfällig. Stattdessen verwende ich ein Application Password, das speziell für die REST API gedacht ist und nie abläuft:
# /opt/data/secrets/wp-app-password.txt
hermes-auto:MeinSicheresAppPassword
Der REST-API-Call sieht dann so aus (Python, cron-sicher ohne curl):
import urllib.request, json, base64
creds = base64.b64encode(b"superuser:app_password").decode()
H = {"Authorization": f"Basic {creds}",
"Content-Type": "application/json"}
BASE = "https://homepage.chen.fi"
# Post-Erstellung
data = {
"title": "Mein neuer Blog-Post",
"content": "Inhalt...
",
"status": "publish",
"categories": [10], # homelab
"meta": {
"rank_math_title": "SEO-Titel (≤60 Zeichen)",
"rank_math_description": "Meta-Beschreibung (≤160 Zeichen)",
"rank_math_focus_keyword": "Hauptkeyword"
}
}
req = urllib.request.Request(
f"{BASE}/wp-json/wp/v2/posts",
data=json.dumps(data).encode(),
headers=H, method="POST"
)
post = json.loads(urllib.request.urlopen(req).read())
print(post["id"], post["link"])
Session-Suche als Topic-Quelle
Hermes speichert alle Konversationen in einer SQLite-Datenbank (~/.hermes/sessions.db). Der Content-Agent durchsucht diese Datenbank mit OR-Queries nach relevanten Keywords:
QUERIES = [
"homelab OR automation OR docker OR server",
"AI OR agent OR LLM OR Hermes OR openrouter",
"youtube OR video OR ffmpeg OR rendering OR shorts",
"wordpress OR blog OR SEO OR content",
"nextcloud OR TrueNAS OR ZFS OR storage OR backup",
]
Jeder Treffer wird mit seinem Kontext (±5 Nachrichten) geladen, um die Genauigkeit zu gewährleisten. Die Ergebnisse werden nach Aktualität und Substanz bewertet.
Der Editorial Gate (Qualitätssicherung)
Bevor ein Post veröffentlicht wird, muss er fünf Prüfungen bestehen:
- Problem → Lösung → Takeaway Struktur vorhanden
- Mindestens 600 Wörter Substanz (keine Status-Logs)
- Nicht redundant mit den letzten 10 Posts (<70% inhaltliche Überlappung)
- Keine sensiblen Daten (Passwörter, IPs, interne Hostnamen)
- Technische Korrektheit aus dem Session-Kontext verifizierbar
Fällt ein Kandidat durch, wird er mit Begründung verworfen und der nächste geprüft. Diese automatische Qualitätssicherung verhindert, dass dünner oder irrelevanter Content veröffentlicht wird.
Gutenberg-Blöcke für Editor-Kompatibilität
WordPress verwendet Gutenberg-Blöcke. Der Content-Agent erzeugt den HTML-Content mit den korrekten Block-Kommentaren, damit der Post im WordPress-Editor weiter bearbeitet werden kann:
<!-- wp:paragraph -->
<p>Absatz mit <strong>Formatierung</strong>.</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":2} -->
<h2>Überschrift</h2>
<!-- /wp:heading -->
<!-- wp:list -->
<ul><li>Punkt 1</li><li>Punkt 2</li></ul>
<!-- /wp:list -->
<!-- wp:code -->
<pre class="wp-block-code"><code>code block</code></pre>
<!-- /wp:code -->
Cross-Linking: Automatische Verknüpfung
Nach der Veröffentlichung werden 2-3 ältere, thematisch verwandte Posts aktualisiert. Sie erhalten am Ende des Contents einen „🎯 Empfehlung:“-Block mit einem Link zum neuen Beitrag. Das verbessert die interne Verlinkung und hilft der SEO.
Die Links werden vor dem Einfügen auf bereits vorhandene Verweise geprüft – so entstehen keine doppelten Empfehlungen im selben Post.
Ergebnisse nach zwei Monaten
| Metrik | Wert |
|---|---|
| Autonom veröffentlichte Posts | 7 |
| Durchschnittliche Wortzahl | ~650 Wörter |
| Abgedeckte Kategorien | homelab (9), Allgemein (3) |
| Cross-Links gesetzt | ~15 |
| Fehlerhafte Posts (manuell korrigiert) | 0 |
Fazit
Der autonome Content-Workflow mit Hermes Agent funktioniert zuverlässig. Die Kombination aus Session-Suche, Editorial Gate und WordPress REST API erzeugt regelmäßig hochwertige, SEO-optimierte Blog-Posts – ohne manuellen Eingriff. Der wichtigste Erfolgsfaktor ist der Editorial Gate: Er verhindert zuverlässig, dass dünner Content oder sensible Daten veröffentlicht werden.
Weiterführende Artikel
- Projekte-Übersicht
- Caddy Reverse Proxy im Homelab
- Prometheus & Grafana: Docker-Monitoring
- Tool- & Script-Hub
🔒 Mehr zum Thema: Sicherheit im Homelab: SSH, Docker & Firewall richtig absichern