Ethos & Polis — Newsletter-Workflow
Stand: 2026-06-12
Versanddienst: Brevo (EU, DSGVO-konform)
Skill: ethos-polis-newsletter (Hermes / fuji-server)
Rollen und Verantwortlichkeiten
| Werkzeug | Zuständigkeit |
|---|---|
| Repo (ethos-polis) | Reviewfläche, Versionierung, Archiv-Website |
| Hermes-Skill | Scanner, Entwurfsmaschine, SQLite-Tracking |
| Brevo | Manueller Versandkanal — kein Autoversand |
Verzeichnisstruktur im Repo
newsletter.qmd # Anmeldeseite (Brevo-Formular)
newsletter/
index.qmd # öffentliches Archiv-Listing
issues/
_metadata.yml # Quarto-Default: draft: true, toc: false
2026-06.qmd # Beispiel-Issue (draft bis Veröffentlichung)
exports/
.gitkeep # HTML-Exports optional hier, nicht verpflichtend
_templates/
newsletter-issue.qmd # Vorlage für neue Ausgaben
HTML-Exports gehören nicht verpflichtend ins Repo. Sie können Kampagnen-Metadaten enthalten. Standard: nur unter ~/.hermes/projects/ethos-polis-newsletter/html/.
Quarto-Verhalten
newsletter/issues/_metadata.ymlsetztdraft: trueals Default für alle Issue-Dateien.- Um eine Ausgabe zu veröffentlichen (ins Archiv aufzunehmen):
draft: falseins Frontmatter des Issue schreiben und aufmainmergen. newsletter/index.qmdlistet alle nicht-draft Issues ausissues/automatisch.- Das Archiv ist erreichbar unter
/newsletter/(URL:https://ethos-polis.info/newsletter/). - Die Anmeldeseite bleibt unter
/newsletter.html.
Workflow Schritt für Schritt
1. Neue Inhalte im Repo
ContentPilot oder Laptop erzeugt neue Artikel:
publikationen/posts/*.qmd
2. Scan (Hermes)
Hermes scannt das Repo bzw. die Live-Site und aktualisiert die SQLite-DB (newsletter.db). Neue, noch nicht verwendete Items erscheinen unter items --new.
3. Entwurf erzeugen (Hermes)
Hermes erzeugt entweder: - newsletter/issues/2026-06.qmd im Repo (wenn write_to_repo: true konfiguriert), oder - ~/.hermes/projects/ethos-polis-newsletter/issues/2026-06-newsletter.md lokal.
Vorlage für manuelle Ausgaben: _templates/newsletter-issue.qmd.
4. Review
Im Repo (Positron oder GitHub-Diff) prüfen: - Betreff und Preheader - Links (Blog, Formate, Veranstaltungen) - Eventdaten — nur verifizierte Termine; Kandidaten als „(Termin in Abstimmung)” markieren - Tonalität: institutionell, ruhig, analytisch — kein Marketing-Jargon - CTA: nüchtern halten
5. HTML-Export (Hermes)
Erzeugt newsletter-export.html (Brevo-kompatibel). Dieses HTML wird nicht automatisch versendet.
6. Versand in Brevo
Manuell: HTML-Datei in Brevo als Kampagne anlegen, Empfängerliste wählen, Vorschau prüfen, Versand bestätigen.
7. Nach dem Versand
mark-sent erledigt automatisch drei Dinge: 1. Markiert alle verwendeten Items in SQLite als used 2. Setzt draft: false in newsletter/issues/YYYY-MM.qmd im Repo 3. Commitet und pusht die Änderung auf main → Ausgabe erscheint im Archiv
Kein manueller Schritt mehr nötig. Die Ausgabe ist nach dem Push unter /newsletter/ sichtbar, sobald GitHub Actions den Build abgeschlossen hat (~2 min).
8. Ergebnis im Archiv
Die Ausgabe erscheint automatisch nach mark-sent im öffentlichen Archiv unter /newsletter/.
Hermes-Konfiguration (fuji-server)
Datei: ~/.hermes/projects/contentpilot/config/newsletter.yaml (oder analog zur static_publishing.yaml)
newsletter_repo:
repo_path: /home/karahan/projects/ethos-polis
issue_dir: newsletter/issues
template_path: _templates/newsletter-issue.qmd
archive_index: newsletter/index.qmd
provider: brevo
write_to_repo: true # false = nur lokal unter ~/.hermes/...
write_exports_to_repo: false # HTML-Exports nicht versionierenSchreibgrenzen für Newsletter-Pflege
Erlaubt:
newsletter.qmd
newsletter/
_templates/newsletter-issue.qmd
docs/newsletter-workflow.md
Nicht ohne ausdrücklichen Auftrag:
assets/scss/
_quarto.yml
.github/workflows/
.htaccess
send.php
publikationen/
Redaktioneller Stil (Kurzreferenz)
| Regel | Beispiel |
|---|---|
| Ton: institutionell, analytisch | — |
| Kein „Liebe Community” | — |
| Workshops als fachliches Problem rahmen | „Wie erkenne ich Incel-Narrative in Gruppen?” statt „Jetzt buchen!” |
| Teaser: Konflikt, Erkenntnis oder Praxisrelevanz | — |
| Eventdaten nur wenn verifiziert | Unklare Termine: „(Termin in Abstimmung)” |
| Genau ein Format-Spotlight pro Ausgabe | rotierend |
| CTA: nüchtern | Kontaktformel s. Template |
Keine Secrets im Repo
- Brevo API-Key gehört nicht ins Repo — nur in Hermes-Config oder
.env. newsletter/exports/*.htmlenthält ggf. Kampagnen-IDs — besser nur lokal unter Hermes.draft: trueist Pflicht bis zur expliziten Freigabe.