maconda.de — Relaunch-Review / Anleitung

Arbeitsanleitung

Wie der Arbeitsbereich eingerichtet ist, wie die Tools ausgeführt werden und wie es weitergeht.

Datenfluss

maconda.de (live) → nur GET → scrape.py → zwischenspeichern → dashboard/project/ → prüfen, dann verschieben → dashboard/content/ + inventory/ → Astro Build → dieses Dashboard

Der Scraper speichert immer zuerst in dashboard/project/. Niemals direkt in dashboard/content/ neu ausführen — das würde manuell geprüfte Inhalte ohne Warnung überschreiben. Dateien von project/ nach content/ nur verschieben, nachdem die Ausgabe überprüft wurde.

Aktueller Stand

Phase Was gemacht wurde Status
0 Sitemap & IA — Zielstruktur, URL-Entscheidungen ✓ Abgeschlossen
1 76 Seiten + 214 Beiträge gescrapped → dashboard/content/ ✓ Abgeschlossen
2 Inhaltsprüfung — strukturelle Artefakte bereinigt, Texte verbatim ✓ Abgeschlossen
3 Komponentenübersicht — 15 Bricks-Komponenten in components.yaml ✓ Abgeschlossen
4 Seitenweiter Wireframe — wireframe-prompt.md in einer neuen Claude-Sitzung verwenden Ausstehend
5 Weiterleitungs- & Meta-Plan — 36 Seiten-Weiterleitungen + 214 Beitrags-Weiterleitungen in redirects.csv ✓ Abgeschlossen

Einrichtung

Python-Umgebung (Scraper & Skripte)

Einmalig vom Repo-Root ausführen. Die venv ist bereits eingerichtet, wenn der Scraper zuvor ausgeführt wurde.

cd /Users/manc/Projects/maconda-organizer
python3 -m venv .venv
.venv/bin/pip install playwright beautifulsoup4 markdownify pyyaml lxml requests
.venv/bin/playwright install chromium

Dashboard (diese App)

Dev-Server auf localhost:4321. Aus dem dashboard/-Verzeichnis ausführen.

cd /Users/manc/Projects/maconda-organizer/dashboard
npm install        # first time only
npm run dev        # dev server → http://localhost:4321
npm run build      # production build → dist/

Skript-Referenz

Alle Skripte werden vom Repo-Root mit .venv/bin/python <script> ausgeführt.

Skript Phase Funktion Schreibt nach
scrape.py 1 Crawlt die Live-Site via Sitemap, rendert jede URL mit Playwright, extrahiert Inhalte + Meta als Markdown, erstellt Fullpage-Screenshots, paart DE/EN via hreflang. dashboard/project/ (Zwischenspeicher)
apply_components.py 3 Schreibt die components:-Liste aus components.yaml in jedes Seiten-Frontmatter. Nach Aktualisierung der Komponentenübersicht ausführen. dashboard/content/pages/**/de.md + en.md überschreibt Dateien
check_coverage.py 3 Prüft, ob jede Seite eine nicht-leere Komponentenliste hat und alle referenzierten Komponentennamen in components.yaml existieren. Schreibgeschützt — jederzeit sicher ausführbar. nur stdout
fill_phase5.py 5 Füllt proposed_url in allen Seiten-Frontmatters und regeneriert dashboard/inventory/redirects.csv mit old_url → new_url → note. Enthält die URL-Entscheidungsregeln. dashboard/content/pages/**/de.md + en.md · inventory/redirects.csv überschreibt Dateien
meta_check.py 5 Durchsucht alle Seiten-Frontmatters nach fehlenden meta_description und erstellt eine meta-checklist.md-Zusammenfassung. dashboard/inventory/meta-checklist.md

Scraper erneut ausführen

Vollständiger Neucrawl

Der Scraper speichert die Ausgabe immer unter dashboard/project/. Das bestehende dashboard/content/ wird niemals automatisch verändert.

.venv/bin/python scrape.py https://www.maconda.de

Nach dem Lauf: dashboard/project/content/ und dashboard/project/inventory/ prüfen, dann manuell in dashboard/content/ und dashboard/inventory/ verschieben.

Einzelne URL (Stichprobe oder neue Seite)

.venv/bin/python scrape.py https://www.maconda.de https://www.maconda.de/karriere/analyst/

Zusätzliche URLs nach der Basis-Domain werden zusätzlich zur Sitemap gescrapped. Nützlich für Seiten, die nicht in der Sitemap sind, oder zum Aktualisieren eines einzelnen Eintrags.

Bei Selektor-Problemen

Der Scraper holt Inhalte aus zwei Containern (site-spezifisch):

  • Banner (H1 + Intro): .header-banner .header-text
  • Body: #content .site-content

Falls dem extrahierten Markdown die Überschrift fehlt oder Nav/Footer-Inhalte eingezogen werden, das gerenderte DOM nach dem richtigen Selektor inspizieren und BANNER_SELECTOR / CONTENT_SELECTORS oben in scrape.py aktualisieren. Immer an einer einzelnen URL testen, bevor alles neu gecrawlt wird.

Wie geht es weiter

Phase 4 — ausstehend

Seitenweiter Wireframe

Eine neue Claude-Sitzung in diesem Repo öffnen und den Inhalt von wireframe-prompt.md als erste Nachricht einfügen. Dieser Prompt informiert Claude über den aktuellen Stand (Phasen 0–3 + 5 abgeschlossen) und weist an, einen statischen, abhängigkeitsfreien HTML-Wireframe unter wireframe/ zu erstellen.

Ausgabe: wireframe/index.html + ein Partial pro Komponente:Variante + eine zusammengebaute Seite pro Gruppe. Low-Fi beschriftete Boxen — kein Design-Comp.

Nach dem Wireframe

Bricks-Aufbau — was dieses Dashboard bietet

Komponenten → 15 Komponenten mit Varianten und Optionen — diese zuerst in Bricks bauen. Die Komponentenliste jeder Seite ist in ihrem Frontmatter.
Sitemap → Vollständiges altes → neues URL-Mapping. Die Spalten „Neu DE / Neu EN" verwenden, um Bricks-Seiten-Slugs von Anfang an korrekt zu konfigurieren.
Weiterleitungen → 36 Seiten-Weiterleitungen + 214 Beitrags-Weiterleitungen. Vor dem Domain-Wechsel in WP Redirection (oder Cloudflare) eintragen. Beitrags-Weiterleitungen verwenden zwei Wildcard-Regex-Regeln.
Seiten → Vollständige Inhalte für jede Seite — Überschriften, Wörteranzahl, vorhandene Meta. Während des Bricks-Aufbaus als Inhaltsquelle nutzen.
Meta-Audit → 59 Seiten fehlen Meta-Beschreibungen. Diese müssen vor dem Launch verfasst werden — außerdem hreflang-Paare mit dem neuen URL-Mapping prüfen.
Go-live-Checkliste
  • Alle 301-Weiterleitungen vor dem DNS-Wechsel in WP Redirection (oder Cloudflare) aktiv
  • Wildcard-Beitrags-Weiterleitungsregeln aktiv: ^/([^/]+)/$ → /aktuelles/$1/ und ^/en/([^/]+)/$ → /en/news/$1/
  • hreflang-Alternativen für jedes DE/EN-Seitenpaar mit den neuen URLs konfiguriert
  • 59 fehlende Seiten-Meta-Beschreibungen verfasst
  • og:image seitenspezifisch für wichtige Serviceseiten und Startseite gesetzt
  • Google Search Console nach dem Launch auf neuer Domain / neuem Pfad verifiziert

Grundregeln

Nur lesender Zugriff auf die Live-Site
Scraping erfolgt ausschließlich per GET-Anfragen. Niemals versuchen, sich einzuloggen, Formulare abzusenden oder auf die Produktionssite zu schreiben.
Inhalte bleiben verbatim
Dieser Arbeitsbereich migriert Inhalte — er schreibt sie nicht um. Kein Umformulieren, Zusammenfassen, Übersetzen oder „Verbessern" von Seitentexten. Das Umschreiben erfolgt später, außerhalb dieses Projekts.
Sprachen bleiben getrennt und gepaart
en.md und de.md für dasselbe Konzept liegen im selben dashboard/content/pages/<group>/-Ordner. Sprachen niemals in einer Datei mischen.
Komponenten werden abgeleitet, nicht erfunden
Jede Komponente in components.yaml muss auf Abschnitte zurückgehen, die tatsächlich auf gescrappten Seiten vorkommen. Wenn eine neue Komponente nötig scheint, zuerst markieren, bevor sie hinzugefügt wird.
Vor dem Überschreiben manuell bearbeiteter Dateien fragen
Den Scraper erneut über bearbeitete dashboard/content/-Dateien auszuführen oder ein manuell befülltes CSV neu zu generieren birgt Datenverlustgefahr. Immer zuerst in dashboard/project/ zwischenspeichern und vor dem Verschieben vergleichen.

Siehe auch

Komponenten → 15 Bricks-Komponenten mit Varianten, Optionen und Verwendungsnachweis.
Sitemap / IA → Vollständiges altes → neues URL-Mapping für den Bricks-Aufbau.