PS PrestaShop Mittel

Thin Content Detector — Dokumentation

Automatische Erkennung von Thin Content, Duplikaten und Boilerplate in Ihrem PrestaShop-Katalog mit KI-gestützten Anreicherungsvorschlägen. Installation, Schwellenkonfiguration, KI-Anbieter, Cron-Scan und Fehlerbehebung.

Aktualisiert Modulversion 1.0.0

DataFirefly Thin Content Detector scannt automatisch Ihre Produkte, Kategorien und CMS-Seiten in allen aktiven Sprachen Ihres Shops. Es erkennt drei SEO-toxische Muster — zu dünner Inhalt, duplizierte Beschreibungen und von Boilerplate dominierte Seiten — und generiert KI-Anreicherungsvorschläge, die zum Einfügen bereit sind. Diese Anleitung deckt Installation, Konfiguration, tägliche Nutzung, Cron-Planung und Fehlerbehebung ab.

Überblick

Seit dem Helpful Content Update stuft Google aktiv Seiten ab, deren Inhalt zu kurz, zu ähnlich zu anderen Seiten oder zu sehr von wiederholten Elementen dominiert ist. In einem E-Commerce-Katalog sind das typischerweise vom Lieferanten kopierte Produktbeschreibungen, Kategorien mit zwei generischen Sätzen oder Varianten, die 95 % ihrer Beschreibung teilen. Für das bloße Auge unsichtbar bei 500 Produkten — aber kumuliert ist es das, was Ihre Website am Ranking hindert.

Die drei Erkennungstypen

  • Thin Content — Seiten unterhalb der konfigurierbaren Wortzahl-Schwelle. Drei Schweregrade je nach Abstand zur Schwelle (kritisch < 25 %, Warnung 25–75 %, Hinweis 75–100 %).
  • Duplikate — Zwei-Pass-Erkennung: SHA1-Hash für exakte Duplikate (Schweregrad 3), dann Jaccard-Ähnlichkeit ≥ konfigurierbare Schwelle für Quasi-Duplikate (Schweregrad 2).
  • Template-/Inhalt-Verhältnis — identifiziert mit Geschwisterseiten geteilte Tokens (gleiche übergeordnete Kategorie) und berechnet den Prozentsatz eindeutiger Tokens pro Seite. Eine Seite mit 200 Wörtern, aber 90 % Boilerplate ist genauso toxisch wie eine Seite mit 30 Wörtern.

Installation

  1. Laden Sie das Modul-ZIP über Module > Modul-Manager > Modul hochladen hoch.
  2. Klicken Sie auf Installieren. Das Modul erstellt zwei Tabellen (ps_dfthincontent_issue und ps_dfthincontent_scan) und einen Admin-Tab unter Katalog.
  3. Greifen Sie über Katalog > Thin Content (DataFirefly) auf das Modul zu.
Kompatibilität. PrestaShop 8.0 – 9.x, PHP 7.4 – 8.3, MySQL 5.6+ / MariaDB 10.3+. Multishop wird nativ unterstützt (der eindeutige Schlüssel der Probleme enthält id_shop). Keine Composer-Abhängigkeit erforderlich.

Konfiguration

Klicken Sie auf die Schaltfläche Konfiguration in der Modul-Werkzeugleiste. Drei Bereiche sind verfügbar.

Erkennungsschwellen

  • Mindestwortzahl Produkt — Standard 150. Jedes Produkt, dessen lange + kurze Beschreibung zusammen weniger als 150 Wörter enthält, wird markiert.
  • Mindestwortzahl Kategorie — Standard 100.
  • Mindestwortzahl CMS-Seite — Standard 250.
  • Jaccard-Ähnlichkeitsschwelle — Standard 85 %. Darüber gelten zwei Seiten als Quasi-Duplikate.
  • Mindest-Template-Verhältnis — Standard 30 %. Darunter gilt die Seite als zu stark von Boilerplate dominiert.
Welche Schwelle wählen? 150 Wörter pro Produkt ist ein solider Ausgangspunkt für die meisten Shops. Bei Textilien oder Verbrauchsgütern können Sie auf 100 absenken. Bei technischer Elektronik oder Haushaltsartikeln gehen Sie auf 250. Für die Jaccard-Ähnlichkeit fängt 85 % echte Duplikate ab, ohne jede legitime Variante zu markieren; senken Sie auf 75 %, wenn Sie viele sehr ähnliche Varianten differenzieren müssen.

Scan-Ziele

  • Produkte scannen (standardmäßig EIN).
  • Kategorien scannen (standardmäßig EIN).
  • CMS-Seiten scannen (standardmäßig EIN).
  • Automatischer Re-Scan beim Speichern (standardmäßig AUS). Wenn aktiviert, löst jedes Speichern eines Produkts, einer Kategorie oder einer CMS-Seite einen gezielten Re-Test nur dieses Objekts aus. Sie sehen in Echtzeit, ob Ihre Umschreibung die Schwellen überschreitet.

KI-Konfiguration

Anreicherungsvorschläge nutzen einen OpenAI-kompatiblen Endpunkt (Chat Completions). Dies umfasst eine breite Palette von Anbietern:

  • OpenAI — Endpunkt https://api.openai.com/v1/chat/completions, empfohlenes Modell gpt-4o-mini (≈ 0,001 € pro Vorschlag).
  • Mistral AI — Endpunkt https://api.mistral.ai/v1/chat/completions, Modell mistral-small-latest.
  • Groq — Endpunkt https://api.groq.com/openai/v1/chat/completions, Modell llama-3.3-70b-versatile. Sehr schnell.
  • Ollama lokal — Endpunkt http://localhost:11434/v1/chat/completions, jedes heruntergeladene Modell. Null Kosten.
  • Anthropic über einen OpenAI-kompatiblen Proxy.

Auszufüllende Parameter:

  • Endpunkt — vollständige URL zu /v1/chat/completions.
  • Modell — Modellkennung beim Anbieter.
  • API-Schlüssel — Bearer-Token. Verschlüsselt im PrestaShop-Konfigurationssystem gespeichert.
  • Max. Tokens — Standard 600. Ausreichend für einen standardmäßigen Anreicherungsvorschlag.
Der API-Schlüssel ist nicht zwingend erforderlich. Erkennung und Nachverfolgung von Problemen funktionieren ohne KI. Nur Anreicherungsvorschläge benötigen einen konfigurierten Endpunkt. Sie können das Modul auch im reinen Audit-Modus nutzen.

Nutzung — Dashboard

Das Dashboard ist die Startseite des Moduls. Es zeigt:

  • Drei Hauptzähler — Gesamtzahl offener, behobener und ignorierter Probleme.
  • Aufschlüsselung nach Problemtyp — thin / duplicate / template.
  • Aufschlüsselung nach Objekttyp — Produkt / Kategorie / CMS-Seite.
  • Aktuelle Schwellen — Erinnerung an die konfigurierten Werte.
  • Letzte 5 Scans — Datum, Dauer, Anzahl der analysierten Objekte.
  • Schaltfläche „Vollständigen Scan starten“ — löst einen synchronen AJAX-Scan aus. Ein Modal zeigt den Fortschritt und die Zusammenfassung am Ende.

Einen Scan starten

Klicken Sie auf Vollständigen Scan starten. Der Scan durchläuft alle aktiven Sprachen, wendet die drei Analysatoren auf aktivierte Ziele an, persistiert erkannte Probleme in ps_dfthincontent_issue und markiert als fixed die Probleme, die nicht mehr erkannt werden (z. B. wenn Sie seit dem letzten Scan eine Seite angereichert haben).

Bei großen Katalogen (über 5 000 Produkten) ist der Cron-Scan zu bevorzugen (siehe unten). Der synchrone Scan bleibt nutzbar, kann aber die Standard-PHP-Zeitgrenze überschreiten. Der Cron-Scan hebt automatisch die Grenzen set_time_limit(0) und memory_limit 512M auf.

Nutzung — Problemliste

Erreichbar über Probleme ansehen in der Werkzeugleiste. Paginierte Anzeige (50 pro Seite) mit erweiterten Filtern:

  • Status — offen / behoben / ignoriert.
  • Problemtyp — thin / duplicate / template.
  • Objekttyp — Produkt / Kategorie / CMS.
  • Sprache — Filter auf eine der aktiven Sprachen.
  • Freitextsuche — auf den Objektnamen.

Jede Zeile zeigt den Schweregrad (roter / oranger / blauer Punkt), den Problemtyp, den Objekttyp mit Symbol, den Namen, die Sprache, die Wortzahl, die relevante Metrik (% Ähnlichkeit oder % Einzigartigkeit) und drei Aktionsschaltflächen:

  • KI-Vorschlag — öffnet ein Modal mit einem auf Anforderung generierten HTML-Anreicherungsvorschlag (siehe nächster Abschnitt).
  • Als behoben markieren — versetzt das Problem in den Status fixed. Es bleibt im Verlauf, verschmutzt aber nicht mehr die Zähler.
  • Ignorieren — versetzt das Problem in den Status ignored. Nützlich für absichtlich kurze Seiten (z. B. eine legitim kurze „Kontakt“-CMS-Seite).

CSV-Export

Die Schaltfläche CSV exportieren lädt alle Probleme des aktuellen Filters herunter. Der Export wird in Streams ausgegeben (Chunks von 500 Zeilen), um große Kataloge ohne Speichersättigung zu verarbeiten. UTF-8-Kodierung mit BOM zum direkten Öffnen in Excel. Semikolon als Trennzeichen.

KI-Vorschläge

Klicken Sie auf die Schaltfläche KI in einer beliebigen Zeile. Das Modul sendet eine Anfrage an den konfigurierten Endpunkt mit einem dynamisch aus dem Problemtyp und Objekttyp erstellten Prompt:

  • Thin Produkt — anreichern mit USP, Materialien, Verwendung, Herkunft, Garantien.
  • Thin Kategorie — anreichern mit Sortiments-USP, Kaufberatung, Unterkategorie-Vergleich.
  • Thin CMS — redaktionelle Entwicklung, Kontextualisierung, Beispiele.
  • Duplikat — die Seite differenzieren, indem man sich auf das konzentriert, was sie im Vergleich zu ihren Duplikaten einzigartig macht.
  • Template — Boilerplate entfernen, einzigartige Elemente für diese spezifische Seite hinzufügen.

Die Systemnachricht erzwingt einen Rückgabewert in sauberem HTML: nur die Tags p, ul, li, h3. Kein Markdown, keine Root-Tags. Sie können das Ergebnis direkt in das Beschreibungsfeld von TinyMCE einfügen, ohne es zu bereinigen.

Der Vorschlag wird in der Datenbank gespeichert. Wenn Sie das Modal später erneut öffnen, wird er sofort angezeigt, ohne dass ein neuer API-Aufruf erfolgt.

Empfohlener Workflow. Filtern Sie nach kritischem Schweregrad, generieren Sie die Vorschläge nacheinander, kopieren Sie jeden Vorschlag in die entsprechende Seite, speichern Sie. Wenn der automatische Re-Scan aktiviert ist, wechselt das Problem automatisch in fixed, sobald das Speichern die Schwellen überschreitet.

Cron — Geplante Scans

Das Modul stellt einen token-geschützten Cron-Endpunkt bereit, ideal für nächtliche Scans:

https://ihr-shop.com/modules/dfthincontent/cron.php?token=IHR_TOKEN

Das Token wird bei der Installation zufällig generiert und im Konfigurationsbereich angezeigt. Behandeln Sie es vertraulich — es gewährt Zugriff auf das Auslösen eines vollständigen Scans.

Crontab-Beispiel (täglicher Scan um 4 Uhr)

0 4 * * * curl -s "https://ihr-shop.com/modules/dfthincontent/cron.php?token=IHR_TOKEN" > /dev/null 2>&1

Eigenschaften des Cron-Scans

  • set_time_limit(0) — keine PHP-Zeitbegrenzung.
  • memory_limit 512M — automatisch gesetzt.
  • JSON-Rückgabe mit der Anzahl analysierter Objekte, der Anzahl erkannter Probleme und der Gesamtdauer.
  • Validierung mit hash_equals zur Abwehr von Timing-Angriffen.
Token erneuern. Wenn Sie ein Leck des Tokens vermuten, deinstallieren und installieren Sie das Modul neu — ein neues Token wird generiert. Sie können auch den Wert DFTHIN_CRON_TOKEN direkt in der Tabelle ps_configuration ändern.

Technische Architektur

Tabellenstruktur

  • ps_dfthincontent_issue — ein Datensatz pro erkanntem Problem. Eindeutiger Schlüssel: (id_object, object_type, id_lang, id_shop, issue_type). Wichtige Felder: severity (1-3), word_count, content_hash (SHA1), metric_value (% Ähnlichkeit oder Einzigartigkeit), metric_data (JSON mit Details), ai_suggestion, status, object_name, object_url.
  • ps_dfthincontent_scan — Scan-Verlauf. Start- / Enddatum, Dauer, analysierte Elemente nach Typ, Status.

Verwendete Hooks

  • actionAdminControllerSetMedia — Laden von CSS / JS und Bereitstellung der AJAX-URL über Media::addJsDef.
  • actionProductUpdate — Re-Scan des modifizierten Produkts, wenn Auto-Rescan aktiviert ist.
  • actionObjectCategoryUpdateAfter — dasselbe für Kategorien.
  • actionObjectCmsUpdateAfter — dasselbe für CMS-Seiten.

Performance-Grenzen

Die Duplikaterkennung ist intrinsisch O(n²) — jede Seite wird mit allen anderen Seiten desselben Typs / derselben Sprache / desselben Shops verglichen. Um eine Explosion bei sehr großen Katalogen zu vermeiden, wendet das Modul zwei Schutzmechanismen an:

  • Sicherheitsobergrenze bei 1 500 Elementen pro Gruppe (Typ + Sprache + Shop). Darüber hinaus wird die Duplikaterkennung für diese Gruppe deaktiviert — eine Warnung wird protokolliert.
  • Vorfilterung nach Wortzahl — die Jaccard-Ähnlichkeit wird nur zwischen Elementen berechnet, deren Wortzahl in einem Fenster von ±50 % liegt. Dies eliminiert die überwiegende Mehrheit nutzloser Vergleiche.

Fehlerbehebung

Der Scan startet nicht

  1. Öffnen Sie die Netzwerkkonsole des Browsers, klicken Sie auf Vollständigen Scan starten, schauen Sie sich die AJAX-Anfrage zu action=scanFull an.
  2. Wenn die Antwort HTML statt JSON ist, handelt es sich um einen serverseitigen PHP-Fatal — prüfen Sie die PrestaShop- (var/logs/) und PHP-Logs.
  3. Wenn die Antwort 404 ist, überprüfen Sie, ob der Controller AdminDfThinContent korrekt registriert ist (Tabelle ps_tab).
  4. Wenn die Antwort 403 ist, ist das CSRF-Token abgelaufen — laden Sie die Seite neu und versuchen Sie es erneut.

KI-Vorschläge geben einen Fehler zurück

  • Überprüfen Sie, dass der API-Schlüssel korrekt und beim Anbieter aktiv ist.
  • Überprüfen Sie, dass der Server die Endpunkt-URL erreichen kann (ausgehende Firewall, DNS).
  • Bei lokalem Ollama: prüfen Sie, dass der Dienst läuft (ollama serve) und das Modell heruntergeladen ist (ollama pull llama3.3).
  • Konsultieren Sie die PrestaShop-Logs — das Modul protokolliert dort cURL-Fehler und nicht-200-HTTP-Codes.

Der Cron gibt 401 oder 403 zurück

Das übermittelte Token stimmt nicht überein. Holen Sie sich das korrekte Token aus dem Konfigurationsbereich und ersetzen Sie es in Ihrer Crontab. Kein Leerzeichen, kein Zeilenumbruch im Wert.

Legitime Duplikate werden markiert

Dies ist der typische Fall sehr ähnlicher Varianten (Größen desselben Modells, Farben). Drei Optionen:

  • Die Probleme einzeln als ignoriert markieren.
  • Die Jaccard-Ähnlichkeitsschwelle auf 95 % oder mehr anheben.
  • Den Produkt-Scan deaktivieren und nur Kategorien + CMS behalten, wenn Ihr Anwendungsfall keinen Produkt-Scan erfordert.

Deinstallation

Deinstallieren Sie über Module > Modul-Manager > Deinstallieren. Das Modul entfernt sauber beide DB-Tabellen, den Admin-Tab und alle Konfigurationsschlüssel. Keine Rückstände.

Sichern Sie den CSV-Export vor der Deinstallation, wenn Sie den Verlauf der generierten KI-Vorschläge behalten möchten. Sobald die Tabellen gelöscht sind, gehen die Vorschläge verloren.

Ressourcen

War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren