fix: <style>-Blöcke aus allen 24 Artikeln entfernt + Skill korrigiert
- artikel_*.html: 24 Dateien von <style>-Blöcken befreit (body, max-width zerstören Joomla) - journalistic-article-writing SKILL.md: falsche 'AUSNAHME 09.07.' entfernt - Ursache: Skill-Kommentar erlaubte Sub-Agenten <style> 'für Vorschau' — kein Gatekeeper existiert
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Baut aus kombi_deals.html den Joomla-Artikel-HTML."""
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
KOMBI_FILE = "/home/hermes/workspace/kombi_deals_2026-07-06.html"
|
||||
OUTPUT = "/home/hermes/workspace/artikel_deals_montag_2026-07-06.html"
|
||||
|
||||
with open(KOMBI_FILE) as f:
|
||||
raw = f.read()
|
||||
|
||||
# Extrahiere den <article>...</article> Block (ohne <article>-Tag selbst)
|
||||
m = re.search(r"<article>(.*?)</article>", raw, re.DOTALL)
|
||||
if not m:
|
||||
print("ERROR: Kein <article> gefunden")
|
||||
exit(1)
|
||||
body_inner = m.group(1)
|
||||
|
||||
# Ersetze den Amazon-Disclaimer durch Quellen-Footer
|
||||
body_inner = body_inner.replace(
|
||||
'<p class="meta" style="margin-top:2rem;">Preise und Verfügbarkeit können sich schnell ändern. Über die Links (60pro05-21) kauft ihr zum gleichen Preis — Amazon zahlt eine kleine Provision.</p>',
|
||||
'<p><span style="text-decoration: underline;"><strong>Quellen</strong></span><br>Amazon.de (CreatorAPI 3.2), BoardGameGeek XML API v2. Stand: 06.07.2026, 09:15 Uhr. Preise inkl. MwSt. und ggf. Versandkosten. Alle Angaben ohne Gewähr.</p>'
|
||||
)
|
||||
|
||||
# Ersetze h1 durch Hook-Titel
|
||||
body_inner = body_inner.replace(
|
||||
'<h1>Brettspiel-Angebote auf Amazon</h1>',
|
||||
'<h1>Jumanji, Monopoly und Evacuation: Die 30 besten Brettspiel-Deals der Woche auf Amazon</h1>'
|
||||
)
|
||||
|
||||
# Ersetze p.meta mit Datum
|
||||
body_inner = re.sub(
|
||||
r'<p class="meta">.*?</p>',
|
||||
'<p class="meta">Stand: 06. Juli 2026</p>',
|
||||
body_inner,
|
||||
count=1
|
||||
)
|
||||
|
||||
# Entferne onerror-Attribute (nicht Joomla-kompatibel)
|
||||
body_inner = re.sub(r'\s+onerror="[^"]*"', '', body_inner)
|
||||
|
||||
# Entferne <br><span style="color:#888">Brand</span><br> aus Non-Brettspiel-Deals
|
||||
# (das sind zusätzliche Marken-Info die im Artikel stört)
|
||||
body_inner = re.sub(r'<br><span style="color:#888;font-size:0\.85rem;">[^<]*</span>', '', body_inner)
|
||||
|
||||
# Baue Intro-Text + Read-More
|
||||
intro = """<p>Der Montag bringt frische Brettspiel-Deals auf Amazon: Von Jumanji mit 67 % Rabatt über den Strategiespiel-Klassiker Risiko bis hin zu Vladimír Suchýs „Evacuation" mit 45 % Nachlass — wir haben die 30 attraktivsten Angebote der Woche zusammengestellt. Dazu wie immer die besten Deals aus sieben weiteren Kategorien.</p>
|
||||
<hr id="system-readmore" />"""
|
||||
|
||||
# Fulltext = Intro + Rest des Body (ohne das erste h1+p.meta, die sind schon im Intro)
|
||||
# Extrahiere alles NACH dem ersten p.meta (die Deal-Liste)
|
||||
parts = re.split(r'<p class="meta">.*?</p>', body_inner, maxsplit=1)
|
||||
if len(parts) >= 2:
|
||||
fulltext = intro + "\n" + parts[1]
|
||||
else:
|
||||
fulltext = intro + "\n" + body_inner
|
||||
|
||||
# Baue den finalen Artikel-HTML
|
||||
meta_desc = "Jumanji -67%, Evacuation -45%, Cascadia -32%: Die 30 besten Brettspiel-Deals der Woche auf Amazon — plus Heißluftfritteusen, Laptops, Apple & mehr."
|
||||
meta_keys = "Brettspiel, Deals, Amazon, Angebote, Jumanji, Evacuation, Cascadia, Everdell, Brettspiel-Deals, reduziert"
|
||||
|
||||
html = f"""<!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="{meta_desc}">
|
||||
<meta name="keywords" content="{meta_keys}">
|
||||
<meta name="author" content="Daniel Krause">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Jumanji, Monopoly und Evacuation: Die 30 besten Brettspiel-Deals der Woche auf Amazon</title>
|
||||
</head>
|
||||
<body>
|
||||
{fulltext}
|
||||
</body>
|
||||
</html>"""
|
||||
|
||||
with open(OUTPUT, "w") as f:
|
||||
f.write(html)
|
||||
|
||||
print(f"Artikel geschrieben: {OUTPUT}")
|
||||
print(f"Größe: {len(html)} Zeichen")
|
||||
Reference in New Issue
Block a user