# Plan: Vereinheitlichung aller Artikel-Cronjobs für brettspiel-news.de
> **Ziel:** Alle 10 artikelproduzierenden Cronjobs liefern konsistent fehlerfreie HTML-Artikel ohne manuelle Nachkorrektur. Kein Job publiziert ohne Qualitätsnachweis nach Joomla.
**Stand:** 22. Juni 2026 | **Autor:** Basti (CvD Redaktion)
---
## 1. Bestandsaufnahme: Alle Artikel-Jobs
| # | Job-ID | Name | Zeit | Skills | Publiziert? | Probleme |
|---|---|---|---|---|---|---|
| 1 | `5399bf408bd1` | Nächtlicher Deal-Artikel | täglich 03:00 | amazon-brettspiel-deals, deal-grafik-workflow | ✅ Joomla | Read-More doppelt, Bild manchmal falsch |
| 2 | `a3a4e5236143` | Amazon-Deals Montag | Mo 09:00 | amazon-brettspiel-deals | ✅ Joomla | Read-More doppelt |
| 3 | `a506d9cea05d` | Amazon-Deals Donnerstag | Do 09:00 | amazon-brettspiel-deals | ✅ Joomla | Noch nie gelaufen |
| 4 | `5666a1b8ed83` | Samstag: Alle Shops | Sa 09:00 | partner-shop-links, amazon-brettspiel-deals | ✅ Joomla | Noch nie gelaufen |
| 5 | `ddfd96310e95` | Sonntag: Kinderspiele | So 09:00 | amazon-brettspiel-deals | ✅ Joomla | Read-More doppelt |
| 6 | `2c158c141090` | Sonntag: Crowdfunding | So 09:00 | web-research, journalistic-article-writing | ❌ Nur HTML | URLs geraten, alte Daten, kein Bild |
| 7 | `6e6eb5bd0cc8` | BGA Weekly Update | Di 09:00 | bga-news-scraper, journalistic-article-writing | ✅ Joomla | Unbekannt |
| 8 | `f3c583a4779f` | Fantasywelt Vorbest. (Fr) | Fr 07:00 | fantasywelt-neuheiten | ✅ Joomla | Unbekannt |
| 9 | `32839f09c412` | Fantasywelt Neuheiten (Mi) | Mi 09:00 | fantasywelt-neuheiten | ❌ Telegram | Nur Stats |
| 10 | `a35a31dbdf1c` | Fantasywelt Vorbest. Fr | Fr 09:00 | fantasywelt-neuheiten | ❌ Telegram | Nur Stats |
---
## 2. Wiederkehrende Fehler (systematisch)
### 🔴 KRITISCH: Doppelter Read-More-Break
**Symptom:** `
` gefolgt von `
` → Joomla zeigt zwei Trennlinien.
**Ursache:** Das HTML-Template oder der Prompt enthält ein `
` direkt nach dem Read-More.
**Betroffene Jobs:** 1, 2, 3, 4, 5, 6, 7
### 🔴 KRITISCH: Fremd-Content nach Artikel-Ende
**Symptom:** QC-Zeile, Meta-Notizen oder Prompt-Reste erscheinen unter dem Artikel.
**Ursache:** `article_server.py` strippt nicht alle internen Marker. Sub-Agenten schreiben Debug-Output in den Body.
**Betroffene Jobs:** Alle
### 🔴 KRITISCH: Bild-Format `image_intro`
**Symptom:** Bild wird nicht angezeigt, obwohl API "200" meldet.
**Ursache:** `image_intro` muss Format `images/.../file.jpg#joomlaImage://local-images/Spiele/.../file.jpg` haben. Absolute HTTPS-URLs werden von Joomla-Frontend ignoriert.
**Betroffene Jobs:** Alle die per API publizieren
### 🟠 MITTEL: Geratene/veraltete URLs
**Symptom:** Kampagnen-Links führen zu 404.
**Ursache:** URLs werden aus Projektnamen konstruiert statt aus echten Quellen (GF-API, EBG-Scraping).
**Betroffene Jobs:** 6 (Crowdfunding)
### 🟠 MITTEL: Umlaut-Verlust durch write_file
**Symptom:** ä→a, ö→o, ü→u, ß→ss.
**Ursache:** Encoding-Bug in `write_file` bei HTML-Dateien.
**Betroffene Jobs:** Alle die write_file nutzen
### 🟡 NIEDRIG: QC fehlt vor Joomla-Publish
**Symptom:** Fehlerhafte Artikel gehen live ohne menschliche Sichtung.
**Ursache:** Jobs publizieren direkt, keine Quality-Gate.
**Betroffene Jobs:** 1, 2, 3, 4, 5, 7, 8
---
## 3. Der einheitliche Standard
**JEDER Artikel-Job MUSS ab sofort diese Checkliste erfüllen:**
### Phase A: Daten beschaffen
- [ ] A1: Nur aus verifizierten Quellen (APIs, Scraping mit wget+Firefox-UA)
- [ ] A2: URLs NIE raten — entweder aus API (`projectHomeUrl`) oder Scraping
- [ ] A3: Daten mit Zeitstempel speichern (für Debugging)
### Phase B: Artikel schreiben
- [ ] B1: Template `templates/article.html` aus journalistic-article-writing Skill
- [ ] B2: `
` NACH Absatz 1 — **KEIN `
` davor oder danach**
- [ ] B3: `` (NICHT `
`) — sonst kein Index-Eintrag
- [ ] B4: Meta-Description + Keywords im ``
- [ ] B5: Quellen-Überschrift: `
Quellen` (NICHT `
`)
- [ ] B6: KEINE Emojis, KEINE Icons
- [ ] B7: Genderneutral (Partizipien)
- [ ] B8: Spieletitel in ``
- [ ] B9: ALLE Links `target="_blank"`
- [ ] B10: KEINE Meta-Zeile im Body (Titel, Datum, Lesezeit)
### Phase C: Umlaut-Korrektur
- [ ] C1: `python3 fix_umlauts.py artikel_*.html`
- [ ] C2: Manueller Zweitpass: Titel + erste 2 Absätze + Quellen prüfen
- [ ] C3: `grep -n 'a\b\|o\b\|u\b'` auf verdächtige Wörter ohne Umlaut
### Phase D: Read-More-Verifikation (NEU)
- [ ] D1: `grep -c 'system-readmore' artikel_*.html` → muss GENAU 1 sein
- [ ] D2: `grep -A1 'system-readmore' artikel_*.html` → nächste Zeile darf KEIN `
` enthalten
- [ ] D3: NACH dem Read-More: erstes Zeichen muss `` oder `
` sein, nicht `
`
### Phase E: Artikel-Ende-Verifikation (NEU)
- [ ] E1: Letzte 5 Zeilen prüfen: kein Debug-Output, keine Prompt-Reste
- [ ] E2: Artikel endet mit `\n\n