Files
BSN-Chatsystem/references/journalistic-article-writing-skill-backup.md
T

278 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: journalistic-article-writing
description: "Research and write fact-based journalistic articles with linked sources, output as HTML for brettspiel-news.de. Zero-hallucination standard: every factual claim must be verifiable."
---
<!--
HTML-Template für brettspiel-news.de Artikel (Stand: 28.06.2026)
================================================================
⛔ NACH DIESER SESSION GELERNTE FEHLER — NIEMALS:
❌ <style>-Tag im Artikel → zerstört Joomla-Layout. KEINE AUSNAHME. Der Article-Server (port 8890) liefert eigene Vorschau-Styles im Response-HTML — Artikel-Dateien bleiben style-frei. Wer Vorschau-Styles will, patcht den Server, nicht die Artikel.
❌ <style>-Tag im Artikel → zerstört Joomla-Layout. KEINE AUSNAHME. Der Article-Server (port 8890) liefert eigene Vorschau-Styles im Response-HTML — Artikel-Dateien bleiben style-frei. Wer Vorschau-Styles will, patcht den Server, nicht die Artikel.
❌ max-width oder margin:auto auf article → zerstört Joomla-Spalten
❌ Inline-Styles → bsn-CSS-Klassen verwenden (Custom CSS im Joomla-Template)
❌ Dark Mode ignorieren! `.vorbestell-box`, `.bsn-facts`, `.bsn-infobox` haben `background:#fff` — ohne `[data-bs-theme="dark"]`-Override leuchten die weißen Boxen im Dark Mode. → references/bsn-dark-mode.css (in Astroid Custom CSS einfügen, dann Cache leeren)
❌ <h1> im Body → Joomla rendert Überschrift selbst aus <title>-Tag
❌ <p class="bsn-dachzeile"> → nicht erwünscht (Daniel: "hat nichts im Artikel zu suchen")
❌ "Auf einen Blick"-Infobox ohne echte Fakten → sinnfrei, weglassen
❌ Rote Akzentfarbe → IMMER #20228A (BSN-Blau)
❌ Read-More an beliebiger Stelle → NUR nach Lead-Absatz, nirgendwo sonst!
❌ Blockquote mit Inline-Style → Joomla styled <blockquote> selbst
❌ CSS in Artikeln → zentral im Joomla-Template (Astroid → Custom CSS)
❌ "| Brettspiel-Magazin" im <title>
❌ "Weitere Informationen sowie Bildmaterial zum Download gibt es direkt bei…"
❌ Abkürzungen ohne Erklärung bei Erstverwendung
❌ Artikel selbst schreiben → Basti delegiert an Sub-Agenten (CvD, nicht Autor)
❌ Sub-Agenten delegieren OHNE diesen Skill zu laden → Fehlen Meta-Tags, Read-More, target=_blank, korrektes CSS → Artikel unbrauchbar
❌ Nach Delegation KEIN QC (verify_article.sh) → 4 von 6 Artikeln ohne Meta-Tags am 28.06.2026 publiziert
❌ Artikel beginnt direkt mit <body> — KEIN <head>, keine <meta>-Tags → verify_article.sh FAIL (29.06.2026)
❌ Affiliate-Box weglassen bei Spielen im Handel → Pflicht!
❌ VG-Wort-Pixel im Artikel → macht Basti beim Publishing
❌ KEINE Tags (<meta name="bsn-tags">) → 3-5 präzise Tags sind PFLICHT (Daniel, 03.07.2026)
❌ Mehr als 5 Tags → nicht wahllos, sondern treffend (max. 5)
❌ VG-Wort-Pixel im Artikel (wird von Basti beim Publishing nachgerüstet!)
❌ CvD schreibt selbst Artikel → Basti DELEGIERT an Sub-Agenten (Standardmodus). Ausnahme: Wenn Basti direkt sagt „Schreibe einen Artikel über X", schreibt Basti selbst — ohne Sub-Agenten. Siehe redaktion-bsn Skill, Abschnitt „Zwei Modi".
❌ Alte affiliate-box oder <div style="border:...dotted"> → verify_article.sh CHECK 14 lehnt ab (10.07.)
❌ vorbestell-box / bsn-facts mit Inline-style="" → verify_article.sh CHECK 12+13 lehnen ab (10.07.)
❌ Artikel abschließen ohne fix_article_format.py + verify_article.sh → unreleased blockieren (10.07.)
🚨 QC-PIPELINE (10.07.2026 — WAS SERDICHT):
1. Artikel schreiben → HTML im Workspace speichern
2. python3 fix_article_format.py <artikel.html> ← Inline-Styles strippen
3. bash verify_article.sh <artikel.html> ← 15 Checks (inkl. CSS-Compliance)
4. Bei FAIL: NICHT publizieren, Fehler beheben, zurück zu Schritt 2
Sub-Agenten MÜSSEN Schritte 2+3 selbst ausführen, bevor sie "fertig" melden!
❌ Shop-Marketing-Text ungeprüft übernehmen! „VIP-exklusiv" auf Spiele-Offensive-Seiten ist oft Marketing — der Deal kann für ALLE verfügbar sein (10.07. Marajoara #15539). NIE „VIP-exklusiv" in Artikel schreiben, ohne dass Daniel es bestätigt.
❌ FAKTEN ERFINDEN! Sub-Agenten halluzinieren Verlage (30.06.: „Spielworxx" statt Devir), Designer, Quellen-URLs und Awards („Kennerspiel des Jahres 2000" — gab's erst ab 2011). JEDE Behauptung über Verlag, Designer, Award, Spielerzahl, Preis oder URL MUSS per BGG XML API + Primärquelle verifiziert werden. Niemals aus Trainingswissen raten.
❌ BGG-Suche mit generischen Kurznamen („Moustache", „Panorama", „Cities") → matchen falsche Spiele (Wargame statt Legespiel, falsche Edition). Bei mehrdeutigen Titeln Suche MIT Verlag oder Erscheinungsjahr einschränken: `search?query=SPIELNAME+VERLAG`. Wenn BGG-Cover nicht eindeutig zuzuordnen: Fantasywelt-Produktbild als Fallback, NICHT raten!
❌ <br> nach <hr id="system-readmore" /> → erzeugt zwei Trennlinien im Joomla-Editor (Daniel, 30.06.2026). IMMER `<hr id="system-readmore" />` OHNE nachfolgendes `<br>`.
❌ <br> nach <hr id="system-readmore" /> → erzeugt zwei Trennlinien im Joomla-Editor (Daniel, 30.06.2026). IMMER `<hr id="system-readmore" />` OHNE nachfolgendes `<br>`.
`hr#system-readmore` als CSS-Selektor im `<style>`-Block des Artikels → verify_article.sh zählt den CSS-Selektor als Read-More-Instanz mit → False Positive „Read-More: N (muss 1)". Im CSS stattdessen `article hr` oder `hr` verwenden (06.07.2026).
❌ <title>-Tag im <article>-Body → erscheint doppelt im Joomla-Editor. <title> NUR im <head>. Im Body <h2> für die Titel-Zeile verwenden (nicht <h1> — Joomla rendert selbst ein <h1> aus dem <title>-Tag, ein zweites <h1> im Body führt zu doppelten Überschriften). <h2> wird von verify_article.sh akzeptiert.
❌ <dl>/<dt>/<dd> in Artikel-Inhalten → Joomla-Template-CSS-Resets überschreiben das Layout. Stattdessen: <div class="bsn-facts__row"><span class="bsn-facts__label">…</span><span class="bsn-facts__value">…</span></div> (04.07.2026: 21 Artikel zeigten „DesignerName" ohne Trennung)
❌ CSS mit europäischem Komma (font-size:1,2rem) → zerstört CSS-Rendering. CSS MUSS Punkte als Dezimaltrenner (1.2rem, 0.5rem). Preise im Text DÜRFEN europäisches Komma (1,99 €).
❌ ★ (U+2605) in BGG-Badges → verify_article.sh flaggt es als Emoji. Statt „BGG ★8.1" → „BGG 8.1" schreiben.
`hr#system-readmore` als CSS-Selektor im `<style>`-Tag → verify_article.sh zählt CSS-Referenzen als Read-More-Instanzen → False Positive (06.07.). Im CSS immer `article hr` oder `.article hr` verwenden, NIE `system-readmore` in Selektoren.
❌ Umlaut-False-Positives blind „korrigieren"! verify_article.sh meldet manchmal „verdächtige Wörter", die KORREKT sind — z.B. „saubere" (normales deutsches Wort), „Trucker" (aus „Galaxy Trucker"), Eigennamen, englische Begriffe. Wenn fix_umlauts.py False-Positives meldet: Wörter in die WHITELIST des Skripts aufnehmen (scripts/fix_umlauts.py), NICHT den Artikeltext verändern. Siehe scripts/fix_umlauts.py → WHITELIST-Dict.
✅ VERFÜGBARE bsn-KLASSEN:
.bsn-meta — Datum/Lesezeit
.bsn-facts — Spiel-Fakten (Quick-Fact-Kacheln + Detailliste + Mechanik-Pills)
.vorbestell-box — Vorbestell-Box (Split-Layout: Info links, CTA rechts)
.bsn-gamecard — Einzelne Spiel-Vorstellung (mit Desktop-Hover-Lift-Effekt)
.bsn-quellen — Quellen-Block
.bsn-recherche — Recherchestand-Zeile
<blockquote> — Clean, Joomla styled selbst
Dark Mode: alle bsn-Klassen via @media (prefers-color-scheme: dark) + body.dark-Fallback
⛔ NICHT MEHR VERWENDEN: .bsn-infobox, .bsn-table (abgelöst durch .bsn-facts, 04.07.2026)
📂 REFERENZEN:
references/bsn-dark-mode.css — Dark-Mode-CSS für Vorbestell-Box, bsn-facts & Inline-Hintergründe
references/sunday-cross-shop-deal-listing.md — Sonntags-Cross-Shop-Deal-Listing-Format (04.07.)
references/article-pitfalls-2026-06.md — Fallstricke
references/article-server-infrastructure.md — Server-Betriebsregeln
references/editorial-rules-2026-06-24.md — Redaktionelle Regeln
references/delegation-qc-workflow.md — Delegations- & QC-Prozedur
references/bgg-monatsrueckblick-format.md — BGG-Monatsrückblick-Format
references/vorbestell-box-pattern.md — Vorbestell-Box: Split-Layout, Position (04.07.)
references/bsn-dark-mode-vorbestell.css — Dark-Mode-CSS für Vorbestell-Box & bsn-facts (09.07., in Astroid Custom CSS einpflegen)
references/reddit-community-article-pattern.md — Reddit-Community-Artikel: Recherche & Schreibmuster (08.07.)
scripts/bsn_facts_migrate.py — Migration: bsn-infobox → bsn-facts
📐 STRUKTUR (Joomla + Server-Preview):
<title> im <head> = Überschrift
<p class="meta">TAG. MONAT JAHR</p> DIREKT nach <body> — PFLICHT für Server-Listing!
<p class="dachzeile">Kurzzusammenfassung</p> — PFLICHT für Server-Preview
<article> → <title>TITEL</title> — PFLICHT für Server-Preview
Lead-Absatz → <hr id="system-readmore" /> → Rest
Details: references/server-article-structure.md
⛔ Sub-Agenten: KEIN VG-Wort-Pixel einbauen! Wird von Basti nachgerüstet.
⛔ Basti DELEGIERT Schreibarbeit — schreibt NICHT selbst Artikel!
🚨 LOKALISIERUNGS-PFLICHT (08.07.2026): Bei JEDEM Spiel-Artikel MUSS die
deutsche Ausgabe recherchiert werden. BGG boardgameversion checken (nicht nur
Hauptspiel). Verlag, Release-Datum und Preis der dt. Version nennen. Wenn keine
dt. Ausgabe existiert, das transparent machen ("bisher keine dt. Ausgabe angekündigt").
NIEMALS nur die englische Version beschreiben ohne den deutschen Markt zu erwähnen.
Absatz 1 → vorbestell-box → <hr id="system-readmore"> → bsn-facts → Rest
Die vorbestell-box steht NACH dem ersten Inhalts-Absatz und VOR dem Read-More.
🚨 <h2>-TITEL IM BODY (03.07.2026): Das <h2> mit dem Artikel-Titel im Body wird
vom Gatekeeper beim Publish automatisch gestrippt, da Joomla den Titel selbst
rendert. Schreibt ruhig ein <h2> — es dient dem Article-Server als Preview,
aber im Joomla-Editor erscheint es NICHT (keine doppelte Überschrift mehr).
🚨 PUBLISH NUR DURCH BASTI (04.07.2026)! Sub-Agenten schreiben NUR HTML in den Workspace.
NIEMALS publish_gatekeeper.py, NIEMALS curl, NIEMALS Joomla-API direkt aufrufen!
Endprodukt ist IMMER eine HTML-Datei im Workspace. Basti prüft und publiziert.
Nach </article> MUSS ein Prompt-Block für die Titelbild-Generierung folgen:
<!-- NANO-BANANA-PROMPT
Erstelle ein Titelbild für brettspiel-news.de basierend auf dem Cover von SPIELNAME:
- 16:9, 1920×1080, 72 DPI
- Stil: Editorial/Magazin, warme Beleuchtung
- Das Cover liegt auf einem Holzspieltisch, umgeben von Spielmaterial
- Titel des Spiels gut lesbar
- Keine störenden Elemente im Hintergrund
- Farbpalette: an Cover-Farben orientiert
-->
Dieser Prompt wird NIE veröffentlicht. Er dient ausschließlich der Bildgenerierung.
⛔ Prompt-Blöcke (Nano-Banana) NACH </article> platzieren, nicht innerhalb!
⛔ Nano-Banana-Prompt NACH </html> → verify_article.sh FAIL („Letzte Zeile ist nicht </html>"). Prompt MUSS zwischen </article> und </body></html> stehen, nicht danach! (08.07.2026)
🏷️ TAGS (PFLICHT — Daniel, 03.07.2026):
💬 COMMUNITY-ARTIKEL (Spieletreffs, Vereine, Einladungen — 10.07.2026):
Warm, persönlich, einladend. Kein Presse-Deutsch. „Du"-Stil. Konkrete
Szenen statt abstrakter Beschreibungen („Omas Streuselkuchen neben
selbstgemachter Quiche" statt „ein Buffet mit Speisen"). Die Leserin soll
das Gefühl haben, sie könne einfach reinkommen und würde willkommen sein.
Keine Vereinsmeierei, keine Beitrittsaufforderung — Gastfreundschaft first.
Daniel hat diesen Stil als „Volltreffer" bewertet.
3-5 präzise Tags in <meta name="bsn-tags" content="...">. Nicht wahllos!
Verfügbare Tags (Joomla-ID → Name):
2=Deckbauspiel 3=Strategie 4=Solospiel 5=Kartenspiel 6=Crowdfunding
7=Branche 8=Kooperativ 10=Eurogame 11=Tableaubau 12=2-4 Spieler
13=Wirtschaftsspiel 14=2-5 Spieler 15=Area Control 16=2 Spieler
17=Abenteuer 18=Erkunden 19=Labyrinth 20=Bluffen 21=Würfelspiel
22=Echtzeit
Tag-Regeln pro Artikeltyp:
- Crowdfunding-Artikel: Crowdfunding, +Mechaniken des Spiels
- Branchen-News (M&A, Entlassungen): Branche, +Kontext
- Spiel-Review/Preview: Mechaniken (Deckbauspiel, Area Control,…), Spielerzahl
- Vorbestell-News: Mechaniken (Strategie, Würfelspiel,…), Spielerzahl-Tag, ggf. Solospiel
- Deal-Artikel: Strategie/Kartenspiel, Crowdfunding NUR bei Kickstarter-Deals
- BGG-Analyse/Community: Branche, ggf. Strategie
- Kurioses (City of Six Moons): 1-2 passende Tags (z.B. Strategie, Kartenspiel)
📦 VORBESTELL-NEWS (Artikeltyp — rev. 04.07.2026):
Vorbestell-Hinweis-Box NACH dem ersten Absatz, VOR <hr id="system-readmore">:
- Position: Absatz 1 → Box → Read-More → Fact-Box → Rest
- CSS-Klasse: class="vorbestell-box" (Pflicht für Verifikation)
- Inhalt: Preis, Release-Datum, Vorbestell-Link, Affiliate-Disclosure
- Sprache des Spiels explizit nennen („Deutsche Ausgabe", „Englische Ausgabe — nicht lokalisiert")
- Beispiel: siehe references/vorbestell-box-pattern.md (rev. 04.07.2026)
<!-- bsn-meta:... --> KOMMENTAR:
DIREKT nach <p class="meta">, gleiche Zeile oder nächste. Format:
<!-- bsn-meta:TAG. MONAT JAHR -->
Dient dem Artikel-Index-Server zur Extraktion des Datums.
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="KURZBESCHREIBUNG (1-2 Sätze)">
<meta name="keywords" content="KEYWORD1, KEYWORD2, KEYWORD3">
<meta name="bsn-tags" content="TAG1, TAG2, TAG3">
<title>ARTIKEL_TITEL</title>
</head>
<body>
<p class="meta">TAG. MONAT JAHR</p>
<!-- bsn-meta:TAG. MONAT JAHR -->
<p class="dachzeile">DACHZEILE — KERNAUSSAGE IN EINEM SATZ</p>
<article>
<!-- TITEL wird von Joomla aus dem <title>-Tag gerendert — KEIN <h2> mit Titeltext im Body! -->
<!-- Stattdessen direkt mit Lead-Paragraph beginnen -->
<p>LEAD_PARAGRAPH</p>
<!-- Vorbestell-Box: NACH Lead, VOR Read-More. KEINE Inline-Styles! -->
<div class="vorbestell-box">
<div class="vorbestell-box__info">
<span class="vorbestell-box__badge">Vorbestellung</span>
<p class="vorbestell-box__title">SPIELNAME</p>
<ul class="vorbestell-box__meta">
<li><i class="fa-regular fa-calendar" aria-hidden="true"></i> Erscheint am DATUM</li>
<li><i class="fa-solid fa-language" aria-hidden="true"></i> SPRACHINFO</li>
<li><i class="fa-solid fa-store" aria-hidden="true"></i> SHOPNAME</li>
</ul>
</div>
<div class="vorbestell-box__panel">
<div class="vorbestell-box__price">PREIS&nbsp;€</div>
<a class="vorbestell-box__btn" href="AFFILIATE-URL" target="_blank" rel="sponsored noopener">Jetzt vorbestellen</a>
<span class="vorbestell-box__disclosure">Affiliate-Link · Werbung</span>
</div>
</div>
<hr id="system-readmore" />
<!-- Fakten-Box: Quick-Fact-Kacheln + Detailliste + Mechanik-Pills -->
<div class="bsn-facts">
<div class="bsn-facts__header">
<p class="bsn-facts__title">SPIELNAME — Fakten</p>
</div>
<div class="bsn-facts__grid">
<div class="bsn-facts__tile">
<i class="fa-solid fa-users" aria-hidden="true"></i>
<div class="bsn-facts__tile-value">NN</div>
<div class="bsn-facts__tile-label">Personen</div>
</div>
<div class="bsn-facts__tile">
<i class="fa-solid fa-user-check" aria-hidden="true"></i>
<div class="bsn-facts__tile-value">ab N</div>
<div class="bsn-facts__tile-label">Alter</div>
</div>
<div class="bsn-facts__tile">
<i class="fa-regular fa-clock" aria-hidden="true"></i>
<div class="bsn-facts__tile-value">ca. N min</div>
<div class="bsn-facts__tile-label">Spieldauer</div>
</div>
<div class="bsn-facts__tile">
<i class="fa-solid fa-star" aria-hidden="true"></i>
<div class="bsn-facts__tile-value">N,N / 10</div>
<div class="bsn-facts__tile-label">BGG · N Stimmen</div>
</div>
</div>
<div class="bsn-facts__list">
<div class="bsn-facts__row"><span class="bsn-facts__label">Designer</span><span class="bsn-facts__value">NAME</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">Illustration</span><span class="bsn-facts__value">NAME</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">Verlag</span><span class="bsn-facts__value">NAME</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">BGG Weight</span><span class="bsn-facts__value">N,N / 5</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">Sprache</span><span class="bsn-facts__value">SPRACHE</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">Preis</span><span class="bsn-facts__value">PREIS (SHOP)</span></div>
<div class="bsn-facts__row"><span class="bsn-facts__label">Release</span><span class="bsn-facts__value">DATUM</span></div>
</div>
<div class="bsn-facts__tags">
<span class="bsn-facts__tags-label">Mechaniken</span>
<span class="bsn-facts__tag">MECHANIK-1</span>
<span class="bsn-facts__tag">MECHANIK-2</span>
<span class="bsn-facts__tag">MECHANIK-3</span>
</div>
</div>
<h2>ABSCHNITT_EINS</h2>
<p>INHALT</p>
<blockquote>
<p>ZITAT_IMMER_AUF_DEUTSCH</p>
</blockquote>
<h2>ABSCHNITT_ZWEI</h2>
<p>INHALT</p>
<!-- Optional: Spiel-Vorstellung -->
<div class="bsn-gamecard">
<h3>SPIELNAME</h3>
<p class="game-meta">Verlag · Autor · Spielerzahl</p>
<p>BESCHREIBUNG</p>
</div>
<span style="font-size:1.17em;font-weight:bold;display:block;margin:1em 0;"><strong>Quellen</strong></span>
<ol>
<li><a href="VOLLE_URL" target="_blank">QUELLENNAME</a> — Beschreibung (Datum)</li>
</ol>
<p class="bsn-recherche"><em>Recherchestand: DATUM</em></p>
</article>
</body>
</html>