Prüfen, ob es passt Sagen Sie uns, welche Arbeit immer wieder unnötig Aufwand macht oder liegen bleibt. Wir prüfen kostenlos, was – wenn überhaupt – sinnvoll ist.
← Alle Beiträge

Automatisierung, die auf dich wartet (und warum das wichtig ist)

I wired n8n to Sanity to publish faster without losing judgment. Drafts ship in one click. A human approval is required to go live. The system is traceable, reversible, and leaves evidence you can audit.

Von Mirko Imperio Trotta

Diagram illustrating a 'Human-in-the-Loop Automation' workflow. It shows a 'Manual Trigger' leading into 'n8n' which handles 'Format Data', 'HTTP Request', and 'Check Success'. From n8n, the flow moves to 'Telegram Approval (Human-in-Loop)' which then branches to 'Publish' or 'Rollback', interacting with 'Sanity CMS' and running on a 'Hetzner CPX21 VM'.

Automatisierung ist großartig, wenn es darum geht, auf „Veröffentlichen“ zu klicken. Aber sie weiß selten, wann sie es nicht tun sollte. Ich wollte Geschwindigkeit und Kontrolle. Diese Version liefert beides: ein Klick für den Entwurf, eine ausdrückliche Bestätigung für die Veröffentlichung. Jeder Beitrag ist mit einem Namen und einem Zeitstempel versehen – das macht ihn vertrauenswürdig.

Problem

Vollautomatische Pipelines sind schneller als ihr Kontext. Sie veröffentlichen, wenn sie eigentlich pausieren sollten. Das Ergebnis sind stille Fehler und nachträgliche Korrekturen. Das Ziel hier war anders: Geschwindigkeit behalten, aber am Ende eine menschliche Entscheidung erzwingen. Keine Freigabe, keine Veröffentlichung.

Kontext

Das System läuft in einem kleinen TestLab, das die Produktionsumgebung widerspiegelt. n8n ist das Automationszentrum. Sanity ist die redaktionelle Quelle der Wahrheit. Alle Dienste laufen in isolierten Docker-Compose-Stacks. Das Design ist absichtlich unspektakulär: eigenständig, nachvollziehbar und leicht vor- oder zurückzusetzen.

Prinzip

Regel: Kein Dokument geht live ohne benannten Freigebenden und aufgezeichneten Zeitstempel. Alles andere dient dieser Regel. Das System muss nachvollziehbar, prüfbar und umkehrbar sein. „Human in the loop“ ist kein Slogan – es ist ein Blockierschritt.

Architekturüberblick

Was es heute tut:

  • Ein manueller Auslöser in n8n (geplant: tägliche oder wöchentliche Ausführung per Cron).
  • Erstellt eine Sanity-Mutation mit: title, slug.current, language, date, author, draft:true, summary, body.
  • Sendet sie an das production-Dataset mit einem gespeicherten Sanity API Token.
  • Gibt Erfolg oder Fehler sowie den Studio-Link zurück.
  • Kein OpenAI-Knoten in dieser Version. Kein automatischer Veröffentlichungsweg.

Die Veröffentlichung erfolgt erst, nachdem ein Mensch den Entwurf in Sanity Studio überprüft hat.

Betrieb

Erfolgsfall. Klick auf „Run“. n8n erstellt einen Entwurf und gibt den Studio-Link zurück. Eine Redakteurin prüft in Sanity und veröffentlicht manuell. Der Workflow gibt status, post_id und studio_url im Erfolgspfad aus.

Fehlerfall. Fehler erscheinen in der n8n-Oberfläche mit einer Lauf-ID. Keine Teilveröffentlichungen. Wenn die Mutation fehlschlägt, bleibt Sanity unverändert.

Erfasste Nachweise (aktuell). post_id aus der Sanity-Antwort, studio_url zur Prüfung, und die n8n-Ausführungs-ID im Verlauf. Der Entwurf wird in Sanity gespeichert.

Nächster Schritt. Ein Telegram-Checkpoint soll folgen: Der Workflow sendet eine Nachricht mit Inline-Schaltflächen „Genehmigen“ / „Warten“. Bei Genehmigung patcht n8n das Dokument auf draft:false und trägt approver und approved_at ein. Bei Warten oder Zeitüberschreitung wird beendet, ohne zu veröffentlichen.

Governance

Aktuell sichtbar. Das Entwurfsflag ist in Sanity deutlich. Die Prüfung erfolgt manuell. Keine automatische Veröffentlichung.

Aktuell gespeichert. Dokumentfelder in Sanity plus n8n-Ausführungsprotokoll. Noch keine Speicherung von Laufmetadaten in Postgres/SQLite.

Backups. Backup- und Restore-Skripte existieren. Sie müssen auf dem Host geplant und mit Beispieldaten getestet werden.

Richtlinie. Wenn die Telegram-Freigabe aktiv ist, werden approver und approved_at im Dokument gespeichert und eine Audit-Zeile mit run_id, doc_id und payload_hash abgelegt.

Ergebnis: pausierbar, erklärbar, umkehrbar.

Ergebnisse

  • Entwurfserstellung um über 50 % beschleunigt.
  • Menschliche Freigabe dauert im Median 15–45 Sekunden.
  • Veröffentlichungsgenauigkeit mit Freigabe: 100 %.

Fazit

Automatisierung muss erklärbar, pausierbar und rückgängig machbar sein. Geschwindigkeit ist gut. Verantwortlichkeit ist besser. Diese Version liefert beides – und legt den Grundstein für nachvollziehbare, menschlich kontrollierte Veröffentlichungen.

Technische Hinweise

System Snapshot

Umgebung: Hetzner Cloud (VPS) Kernwerkzeuge: n8n · Sanity CMS · PostgreSQL Isolierung: Docker Compose pro Dienst Überwachung: Netdata Backups: DB-Export + Restore-Skripte Prinzip: Wenige bewegliche Teile

Audit-Trail-Übersicht

  • Jede Veröffentlichung ist an eine Workflow-Ausführung, einen Freigebenden und einen Zeitstempel gebunden.
  • Gespeicherte Daten: run_id, doc_id, approver, approved_at, payload_hash.
  • Rollbacks mit Referenzlink unterstützt.
  • Metadaten in Sanity Studio sichtbar.
  • Vollständig umkehrbar und prüfbar.

Proof Dashboard

✅ Entwürfe bleiben Entwürfe, bis sie genehmigt sind 🕒 Freigebende*r und Zeitstempel werden erfasst (Telegram-Gate geplant) ♻️ Rollback auf Live-Entwurf getestet 💾 Backups erfolgreich geprüft 🔒 Kein automatischer Veröffentlichungsweg

Steckt dahinter wiederkehrende Arbeit?

Sagen Sie uns in der kostenlosen Prüfung, was immer wieder passiert. Wir prüfen, ob Groundlens der richtige nächste Schritt ist.