Workflow und Regeln
Wie ein Beitrag von der Idee ins Magazin kommt, wer was darf und was automatisch geprüft wird.
Clara WendtClara WendtChefredaktion · Beispielprofil
Ablauf Feld workflow: in der Markdown-Datei
| Stufe | Bedeutung | Tor zur nächsten Stufe |
|---|---|---|
| Idee | Thema angemeldet, noch kein Text. | Thema, Format und Hauptthema angelegt |
| Recherche | Quellen und Zahlen werden gesammelt. | Quellen im Register, Zahlen angelegt |
| Entwurf | Text in Arbeit. | Keine Fehler laut Prüfregeln |
| Faktencheck | Zweite Person prüft jede Zahl. | Zweite Person hat jede Zahl gegen die Quelle geprüft |
| Freigabe | Lektorat erledigt, wartet auf Veröffentlichung. | Lektorat und Chefredaktion haben freigegeben |
| Veröffentlicht | Online und im Strom sichtbar. | Korrekturen nur mit Eintrag im Protokoll |
Rollen und Rechte
| Aufgabe | Chefredaktion | Redaktion | Faktencheck | Lektorat | Gastautorin oder Gastautor |
|---|---|---|---|---|---|
| Beitrag anlegen und schreiben | ✓ | ✓ | ✓ | ||
| Zahlen und Quellen im Register anlegen | ✓ | ✓ | ✓ | ||
| Faktencheck eintragen | ✓ | ✓ | |||
| Lektorat und Kürzen | ✓ | ✓ | |||
| Veröffentlichen (Merge) | ✓ | ||||
| Themen, Pfade und Leitfragen pflegen | ✓ | ✓ | |||
| Korrektur an veröffentlichtem Beitrag | ✓ | ✓ | ✓ |
Automatische Prüfregeln 16 Regeln, src/v4/lib/pruefregeln.ts
| Regel | Stufe | Warum |
|---|---|---|
Zahl fehlt im Registerzahl-unbekannt | fehler | Jede Zahl braucht Jahr, Status und Quelle. Das garantiert nur das Register. |
Unbekannter Bausteinblock-unbekannt | fehler | Tippfehler in Bausteinen würden still verschwinden. |
Grafik, Faktencheck oder Beitrag fehltverweis-unbekannt | fehler | Ein Verweis ins Leere zerstört den Lesefluss. |
Kasten nicht geschlossencontainer-offen | fehler | Ein offener Kasten verschluckt den Rest des Beitrags. |
Keine Quellen angegebenquellen-fehlen | fehler | Ohne Quelle keine Veröffentlichung. |
Faktencheck fehlt oder durch Autor selbstvier-augen | fehler | Jede Zahl prüft eine zweite Person. |
Link auf unveröffentlichten Beitraglink-unveroeffentlicht | warnung | Leserinnen und Leser landen sonst auf einer leeren Seite. |
Einschätzung in einem Faktenformatmeinung-in-fakt | warnung | Nachricht und Meinung bleiben getrennt. |
Meldung ohne Anlassanlass-fehlt | fehler | Eine Meldung nennt immer, worauf sie reagiert: Pressemitteilung, Ratsvorlage, Studie oder Bericht. |
Zweckbindung behauptet?zweckbindung | warnung | Ertrags- und Aufwandslisten belegen keine Zweckbindung. |
Betrag ohne Register-Verweis und ohne Jahrfreie-zahl | hinweis | Freie Beträge im Text brauchen mindestens ein Jahr im selben Satz. |
Nutzt Zahlen im Status Entwurfentwurf-faellig | hinweis | Wird fällig, sobald der Abschluss festgestellt ist. |
Nutzt Presse- oder Fremdangabensekundaer | hinweis | Sekundärquellen sind sichtbar gekennzeichnet. |
Meinungsbeitrag ohne Leitfragemeinung-ohne-frage | hinweis | Perspektiven werden über Leitfragen gefunden und gegenübergestellt. |
Keine Kurzfassungkurzfassung-fehlt | hinweis | Erklärstücke und Analysen beginnen mit „In 20 Sekunden“. |
Lesezeit unplausibellesezeit | hinweis | Die angegebene Lesezeit weicht stark von der Textlänge ab. |
Anbindung eines Git-CMS
Die Sammlungen sind so geschnitten, dass ein Git-basiertes CMS sie direkt bearbeiten kann. Bausteine wie ::grafik[id] werden dort zu Editor-Komponenten mit Auswahlfeld.
# Skizze für Sveltia oder Decap CMS (nicht getestet)
backend:
name: github
repo: randomsnowflake/was-kostet-bonn
branch: main
publish_mode: editorial_workflow # Branch und Pull Request je Beitrag
collections:
- name: beitraege
label: Beiträge
folder: website/src/v4/content/beitraege
extension: md
create: true
fields:
- { name: titel, label: Titel, widget: string }
- { name: dachzeile, label: Dachzeile, widget: string, required: false }
- { name: vorspann, label: Vorspann, widget: text }
- name: format
label: Format
widget: select
options: [bericht, erklaerstueck, analyse, faktencheck,
datenreport, werkzeug, kommentar, gastbeitrag, pro-contra]
- { name: themen, label: Themen, widget: list }
- { name: autoren, label: Autoren, widget: list }
- { name: body, label: Text, widget: markdown }