Was ein ehrliches SEO-Audit eines Magento-Shops wirklich ans Licht bringt
- seo
- magento
- audit
- e-commerce
Die meisten Magento-Shops, die ich in der Search Console öffne, haben dieselbe Geschichte: vor fünf Jahren von jemandem eingerichtet, der längst weg ist, ein Stapel Module aufeinandergehäuft, und ein Inhaber, der "denkt, das SEO ist schon okay, weil wir etwas Traffic reinkommen sehen". Dieser Traffic läuft meistens auf Markenkenntnis. Die Marke wird von Bestandskunden eingetippt, nicht von Suchenden, die ein Produkt suchen.
Als ich ein SEO-Audit bei einem Shop mit 13.600 Produktseiten in vier Sprachen durchführte, stieß ich auf Dinge, die ich in zehn Jahren Webarbeit nicht mehr gesehen hatte. Unten lege ich dar, was ich fand, wie ich wusste, dass es kaputt war, und was wir taten, um es zu reparieren, ohne die ganze Site umzubauen.
Was ich fand, als ich wirklich hinschaute
Ein SEO-Audit, der nur Lighthouse und einen Crawl ausführt, übersieht 90 Prozent. Ich öffne immer selbst zwanzig Produktseiten in jeder Sprache, kopiere das gerenderte HTML, validiere das JSON-LD separat und vergleiche die hreflang-Ausgabe zwischen den Sprachvarianten. Das kam dabei heraus:

Produkt-JSON-LD war auf 97 Prozent der PDPs ungültig. Nicht "ein Feld vergessen", sondern wirklich kaputt. Das zuständige Modul hatte nl2br() auf die Produktbeschreibung angewendet, bevor es in einen JSON-String gesteckt wurde. Dadurch blieben rohe \r\n in der Ausgabe. Googles Rich Results Test sah ein ungültiges JSON und verwarf die gesamten Structured Data. Ergebnis: null Produktfragmente in den Suchergebnissen, während jeder Mitbewerber mit Sternen und Preisen angezeigt wurde.
Keine einzige Produktseite hatte das Brand-Feld ausgefüllt. Magento hatte ein Attribut manufacturer, aber das JSON-LD-Template las nichts daraus. Das ist ein Häkchen von zwanzig Minuten im Admin, und es war bei allen fünftausend Produkten versäumt worden.
GTIN, EAN und MPN fehlten vollständig. Bei allen 13.600 PDPs. Für einen Shop, der Produkte bekannter Marken weiterverkauft, ist das der Unterschied zwischen Aufnahme oder Ausschluss aus Googles Shopping-Wissensknoten. Das EAN-Attribut saß einfach in der Datenbank, wurde nur nicht an die Structured Data weitergegeben.
96 Prozent der Meta-Titel standen in ALL-CAPS. Jede Seite. In vier Sprachen. Jemand hatte einmal ein Import-Skript mit strtoupper() über die Produktnamen laufen lassen, und danach war das nie rückgängig gemacht worden. Aus Googles Sicht schrie jeder Titel, was 2026 eine weiche Ranking-Penalty einbringt, aber vor allem ein Click-Through-Rate-Problem ist. Menschen klicken nicht auf MARKE PRODUKTLINIE MODELLCODE BESCHREIBUNG ZUBEHÖR.
Das BreadcrumbList-JSON-LD war für Crawler leer. Der sichtbare Breadcrumb auf der Seite funktionierte nur client-seitig, aber das JSON-LD-Modul versuchte dieselbe Catalog-Session zu lesen, bevor Magento sie befüllt hatte. Eine Race Condition zwischen zwei Modulen, bei der die Breadcrumb-Schema-Ausgabe beim Verlierer landete. Crawler sahen also keine Hierarchie.
Das ist keine Liste obskurer Dinge. Das sind die Grundlagen, auf denen Google Produktfragmente aufbaut.
Wie ich das an einem Ort zusammenbekam
Für ein Audit wie dieses benutze ich kein Tool. Tools lassen mich nicht auf die richtige Art suchen. Konkreter Arbeitsablauf:
- Sitemap herunterladen und die ersten 48 PDPs aufziehen mit
curl --silent. Nicht die Homepage jeder Kategorie, sondern die echten Produktseiten. Da sitzt das Geld, und dort verstecken sich 95 Prozent der SEO-Probleme. - Das JSON-LD herausgrepen mit einem kurzen Regex, in separate Dateien speichern und durch den schema.org Validator schicken. Wie viele gültig, wie viele nicht, und wenn nicht gültig: welche Feldkombination fehlt strukturell?
- Headers, hreflang und canonical zwischen den vier Sprachen vergleichen. Nicht per Crawl-Tool, sondern manuell bei zehn Seiten. Ein Mismatch in einem
lang-Attribut macht drei von vier hreflang-Tags in Googles Augen ungültig. - Search Console öffnen und schauen, wie viele Rich Results gültig waren. Das ist dein Endstand. Bei diesem Shop: null. Vergleich das mit deinen Mitbewerbern, und es wird unangenehm.
Der gesamte Prozess dauert keinen Nachmittag, und alles, was ich finde, belege ich mit einer direkten URL und der Validator-Ausgabe. Ein Audit ohne überprüfbare Zahlen ist ein Bauchgefühl, und dein Kunde kann damit nichts anfangen.
Was ich danach tat
Kein Neuaufbau. Kein "machen wir Magento 2.4.7 mit einem PWA-Frontend und alles wird anders". Solche Projekte scheitern, weil sich der Auftraggeber nicht leisten kann, dass der Shop steht, während ein neues Platform eingebaut wird.
Konkret, nach Impact pro Arbeitsstunde sortiert:
- Produkt-JSON-LD-Template neu geschrieben. Der Roh-
\r\n-Bug ließ sich reparieren, indem die bestehende String-Konkatenation durch ein einzelnesjson_encode()über ein PHP-Array ersetzt wurde. Das garantiert gültige Ausgabe, auch bei unordentlichen Quelldaten. Einmal deployed: 100 Prozent gültig, in allen vier Sprachen. 654 gültige Rich Results innerhalb von drei Google-Crawls. - Brand- und GTIN-Attribut gemappt. In Magentos Website-Scope-Config:
brandmappt aufmanufacturer,gtinmappt aufean. Zehn Minuten Arbeit, sofort in der Search Console sichtbar nach der Neuindexierung. - ALL-CAPS-Titel in Title Case via einem hybriden Ansatz. Nicht einfach
ucfirst()über alles, denn dann verliert man Modellnummern und Markencodes (R1,TST,FM10). Ich verwendete zwei Sonnet-Agents, um jedes Wort in unseren 16.000 Titeln als KEEP, LOWER oder TITLE zu klassifizieren, gefolgt von einer deterministischen PHP-Funktion, die die Transformation mit Marken-Dictionary und Minor-Words pro Sprache anwendete. Harte Guardrail:lower(before) == lower(after)pro Zeile. Das garantiert, dass nichts am Inhalt verändert wurde, nur die Groß-/Kleinschreibung. Dem Kunden gegenüber beweisbar. - BreadcrumbList-Schema server-seitig. Ein eigenes ViewModel, das
Home > [tiefste Nicht-Marken-Kategorie] > Produktaus dem Catalog-Tree aufbaut, ohne Abhängigkeit von der Body-Session. Eine Race Condition löst man nicht, indem man Warten einbaut, sondern indem man die Abhängigkeit entfernt.
Für jeden Fix hatte ich ein Live-Diff. Dieselben 48 PDPs vor und nach, dieselben Validatoren, dieselben Search Console-Ansichten. Kein "vertrau mir einfach": wenn der Validator vor dem Fix einen Fehler gab und danach grün wurde, kann ich es zeigen.
Was ich während der Arbeit gelernt habe
Ein paar Dinge, die ich auf Wunsch beim nächsten Magento-Audit wiederholen werde:
- Production-Mode serviert minifizierte view_preprocessed-Kopien. Ein
cache:flushtrifft die nicht. Du musstsetup:static-content:deployausführen und den Varnish-Cache purgen, sonst siehst du einfach dein altes Template wieder. Das kostet dich vier Deploys, bis du verstehst, warum dein Fix nicht sichtbar wird. Verifiziere immer backend-direkt über Port 8080. - Modul-Layout gilt für jede Store-View. Wenn du in
app/code/Vendor/Module/view/frontend/layout/etwas hinzufügst, trifft es auch die siebzehn Shops, die du nicht meinst. Ein Website-Scope-Guard im ViewModel ist kein Luxus, sondern Pflicht. - Search Consoles "nicht indiziert" zählt mit. Bei diesem Shop: 366.000 nicht indizierte URLs gegenüber 14.000 indiziert. Ein Verhältnis von 25 zu 1. Das sind oft Facet-URL-Explosionen, die Crawlbudget auffressen und keinen Wert hinzufügen. Auf
noindexsetzen und aus der Sitemap ausschließen.
Wann du ein Audit wie dieses brauchst
Oft höre ich "wir machen SEO schon über einen Spezialisten". Frag dann mal das: zeig mir zwanzig Produktseiten, bei denen deine Structured Data im Rich Results Test gültig ist. Wenn das nicht innerhalb eines Tages auf dem Tisch liegt, steckt da mehr kaputt drin, als du denkst.
Ein SEO-Audit ist kein Luxusprodukt. Es ist eine Fact-Finding-Runde, die dir zeigt, wo du im Vergleich zu deinen Mitbewerbern in den Suchergebnissen stehst. Mein Preis liegt bei ein paar hundert Euro für einen Shop mit einigen tausend Produkten, und du bekommst eine nach Impact pro Arbeitsstunde priorisierte Liste. Kein "wir könnten noch zehn Dinge dazu machen". Kein Retainer-als-Trojanisches-Pferd.
Direkt reden?
Unsicher, ob dein Shop technisch für Googles Produktwissensknoten bereit ist, oder willst du eine zweite Meinung zu einem laufenden SEO-Projekt? Schreib mir. Ich schaue innerhalb eines Werktages rein.
Bereit loszulegen?
Kontaktiere mich für ein unverbindliches Gespräch über die Möglichkeiten.