PS PrestaShop Mittel

AI Competitor — Wettbewerber-Preismonitoring

Wettbewerber-Preisbeobachtung in PrestaShop 8 und 9 installieren und konfigurieren: Wettbewerberprofile, Katalog-Crawl, KI-Extraktion, Alarme und Auswertungen.

Aktualisiert Modulversion 1.1.1

Überblick

AI Competitor beobachtet die Preise Ihrer Wettbewerber direkt aus Ihrem PrestaShop-Backoffice heraus. Sie legen einen Wettbewerber einmal an, mit Namen und Selektoren; das Modul kann anschließend die vollständige Liste seiner Produkte über seine Sitemap holen, sie Ihrem Katalog zuordnen, die Preise in regelmäßigen Abständen messen, nennenswerte Veränderungen erkennen, Sie per E-Mail warnen und einen an Ihrer Strategie ausgerichteten Preis vorschlagen.

Kompatibel mit PrestaShop 8.0 bis 9.x, PHP 7.4 bis 8.3, natives Multistore. Keine Composer-Abhängigkeit, keine externe JavaScript-Bibliothek.

Installation

  1. Öffnen Sie im Backoffice Module → Modulmanager → Modul hochladen.
  2. Laden Sie die Datei dfaicompetitor.zip hoch.
  3. Das Modul legt seine Tabellen und das Menü Katalog → AI Competitor an, das sechs Seiten umfasst: Dashboard, Wettbewerber, überwachte URLs, Wettbewerber-Katalog, Berichte und Auswertungen, Import/Export.

Nach der Installation wird ein eindeutiges Cron-Token erzeugt. Sie finden es im Dashboard des Moduls.

Aktualisierung von einer Version 1.0.x

Laden Sie einfach das neue ZIP über die bestehende Installation. Das Upgrade-Skript legt die neuen Tabellen an, ergänzt die fehlenden Spalten und erzeugt vor allem für jeden bereits verwendeten Wettbewerbernamen ein Wettbewerberprofil, bevor es die zugehörigen URLs daran hängt. Ihre vorhandenen Daten bleiben erhalten, es ist nichts neu einzugeben.

Ein Paket mit derselben Versionsnummer wie die bereits installierte erneut einzuspielen führt das Upgrade-Skript nicht noch einmal aus, und der PHP-Opcache kann weiterhin die alten Dateien ausliefern. Prüfen Sie nach einem Upload immer die im Dashboard angezeigte Versionsnummer.

Erstkonfiguration

Öffnen Sie Katalog → AI Competitor. Das Dashboard vereint die Statistiken und fünf Konfigurationsblöcke.

KI-Anbieter

Der KI-Fallback ist optional, aber empfehlenswert: er übernimmt, wenn eine Wettbewerberseite weder strukturierte Daten noch einen brauchbaren Selektor bietet. Drei Anbieter werden unterstützt:

  • Mistral AI (Standard), am günstigsten, empfohlenes Modell: mistral-small-latest
  • Anthropic Claude, die beste Genauigkeit bei komplexen Seiten, empfohlenes Modell: claude-haiku-4-5-20251001
  • OpenAI, guter Mittelweg, empfohlenes Modell: gpt-4o-mini

Tragen Sie den API-Schlüssel des gewählten Anbieters ein. Er wird maskiert angezeigt; lassen Sie das Feld bei einem späteren Speichern leer, um den hinterlegten Schlüssel zu behalten. Sie zahlen direkt beim Anbieter, ohne Aufschlag von DataFirefly.

Alarme

  • Benachrichtigungs-E-Mail: Empfänger der Alarm-Zusammenfassungen und des Wochenberichts.
  • Schwellenwert der Veränderung in Prozent, standardmäßig 3 %. Darunter wird kein Alarm erzeugt.
  • Tag des Wochenberichts, standardmäßig Montag.

Scraping

  • URLs je Cron-Stapel: Anzahl der bei jedem Durchlauf gemessenen URLs, standardmäßig 20.
  • Standardintervall in Stunden, auf neue URLs angewendet, standardmäßig 24 h.
  • HTTP-Timeout und User-Agent. Der ausgelieferte User-Agent nennt den Bot beim Namen (DataFireflyBot); manche Seiten erlauben einen benannten Bot, den sie sonst blockieren würden.
  • Aufbewahrung des Verlaufs in Tagen, standardmäßig 180.

Katalog-Crawl

  • Seiten je Abschnitt: Anzahl der in einem Durchgang geöffneten Wettbewerberseiten, standardmäßig 15.
  • Sekunden je Abschnitt: Zeitbudget jedes Durchgangs, standardmäßig 20. Halten Sie es unter Ihrer PHP-max_execution_time.
  • Abgleichschwelle: minimale Titelähnlichkeit, um eine automatische Zuordnung zu akzeptieren, standardmäßig 82.
  • Zuordnungen automatisch überwachen: legt eine überwachte URL an, sobald eine gecrawlte Seite einem Ihrer Produkte zugeordnet wird. Standardmäßig aus.
  • Crawls per Cron weiterführen: standardmäßig an.

Anpassungsstrategie

Drei Strategien bestimmen den vorgeschlagenen Preis, stets ausgehend vom günstigsten Wettbewerber:

  • Angleichen: derselbe Preis wie der niedrigste Wettbewerber.
  • Um X % unterbieten: X % darunter, standardmäßig 1 %.
  • Premium bei X %: X % darüber, für eine bewusste Positionierung im oberen Segment.

Einen Wettbewerber anlegen

Seit Version 1.1.0 ist ein Wettbewerber ein eigener Datensatz und nicht mehr eine bei jeder URL neu eingetippte Bezeichnung. Öffnen Sie Katalog → AI Competitor → Wettbewerber → Hinzufügen. Das Formular hat drei Registerkarten.

Identität

Der überall angezeigte Name, die Domain ohne Schema (beispiel.de), die Währung, das Messintervall, die Option für erzwungene KI-Extraktion und ein freies Notizfeld. Über die Domain ordnet das Modul eine neue URL automatisch dem richtigen Wettbewerber zu.

Selektoren

Die CSS-Selektoren für Preis, Produktname, SKU, Bild und Verfügbarkeit. Lassen Sie sie leer, wenn die Seite JSON-LD veröffentlicht, was bei den meisten modernen Shops der Fall ist. Unterstützte Syntax: Tag, .klasse, #id, [attribut=wert], Nachfahre und direktes Kind. Beispiel: div.product-price > span.amount

Das ist der zentrale Gewinn des Wettbewerberdatensatzes: wenn eine Seite ihr Theme umbaut und ein Selektor bricht, korrigieren Sie ihn hier ein einziges Mal, und die Korrektur wirkt auf alle URLs dieses Wettbewerbers, die keinen eigenen Selektor haben.

Katalog-Crawl

Die Sitemap-URL (leer lassen, um die Sitemap:-Direktiven der robots.txt der Domain zu lesen), die URL einer Kategorieseite als Ausgangspunkt, der Selektor der Produktlinks und der des Links zur nächsten Seite, die URL-Muster zum Behalten oder Verwerfen, die Wartezeit zwischen zwei Anfragen, die Produktobergrenze und die Beachtung der robots.txt.

Die Muster akzeptieren eine einfache Teilzeichenkette oder einen von Schrägstrichen begrenzten regulären Ausdruck. In einem deutschen Shop genügt /produkt/ als Behalten-Muster oft, um die Produktseiten aus einer Sitemap herauszulösen, die auch Blog und CMS-Seiten enthält.

Den Katalog eines Wettbewerbers crawlen

Öffnen Sie Katalog → AI Competitor → Wettbewerber-Katalog, wählen Sie den Wettbewerber, die Entdeckungsquelle und die Produktobergrenze und starten Sie den Crawl.

Zwei Quellen stehen zur Verfügung:

  • Sitemap, empfohlen. Das Modul liest die konfigurierte Sitemap oder die von der robots.txt angekündigte, folgt Sitemap-Indexdateien rekursiv und behält die Adressen, die Ihren Mustern entsprechen.
  • Kategorieseiten, wenn keine Sitemap brauchbar ist. Das Modul startet bei der Listing-URL, sammelt die Produktlinks über den Selektor des Wettbewerbers und folgt dem Link zur nächsten Seite.

Auf die Entdeckung folgt eine Anreicherungsphase, die jede Seite öffnet, Titel, SKU, EAN, Marke, Preis, Verfügbarkeit und Bild entnimmt und den Abgleich mit Ihrem Katalog versucht.

Der Crawl läuft in zeitlich begrenzten Abschnitten, gesteuert von der geöffneten Seite mit einem Fortschrittsbalken, und setzt bei jedem Cron-Durchlauf fort. Eine Sitemap mit Zehntausenden URLs wird verarbeitet, ohne je die max_execution_time von PHP zu erreichen. Sie können die Seite schließen: die Arbeit läuft auf der Cron-Seite weiter.

Der Abgleich mit Ihrem Katalog

Das Modul probiert drei Wege, in absteigender Zuverlässigkeit:

  1. EAN13, gesucht in Ihren Produkten und deren Varianten. Sichere Zuordnung, Punktzahl 100.
  2. Referenz, Lieferantenreferenz oder MPN. Punktzahl 95.
  3. Titelähnlichkeit, mit einer Gewichtung, die Modellnummern und Marken stärker zählt als allgemeine Wörter, und einem Abzug, wenn die beiden Titel sehr unterschiedlich lang sind. Die Punktzahl muss die konfigurierte Schwelle überschreiten, standardmäßig 82.

Jede Katalogzeile zeigt Methode und Punktzahl ihrer Zuordnung. Eine zweifelhafte Zuordnung korrigieren Sie von Hand: das Zuordnungsfeld bietet eine Autovervollständigung über Ihren Katalog, nach Name oder Referenz. Die Schaltflächen Neu zuordnen starten den Vorgang für die nicht zugeordneten Zeilen oder für alle erneut, was nach der Korrektur von Referenzen auf Ihrer Seite nützlich ist.

Eine zugeordnete Zeile wird über ihre Schaltfläche Überwachen zur überwachten URL, oder als Gruppenaktion über eine Auswahl. Die angelegte URL erbt Namen, Selektoren, Währung und Intervall des Wettbewerbers.

Eine URL von Hand hinzufügen

Der Crawl ersetzt die punktuelle Eingabe nicht. Öffnen Sie Katalog → AI Competitor → Überwachte URLs → Hinzufügen:

  • Wettbewerber: der Datensatz, von dem die URL erbt. Leer lassen, um alles von Hand einzugeben.
  • Produkt: aus Ihrem Katalog gewählt.
  • URL: die vollständige Adresse der Produktseite des Wettbewerbers.
  • Wettbewerbername, CSS-Selektor, Währung, Intervall: werden aus dem Wettbewerber übernommen, wenn Sie sie leer lassen.

Wählen Sie keinen Wettbewerber, sucht das Modul denjenigen, dessen Domain zur eingegebenen Adresse passt, und ordnet die URL zu. Die Schaltfläche Scrape jeder Zeile löst eine sofortige Messung aus, praktisch, um eine URL gleich nach dem Anlegen zu prüfen.

Wie die Extraktion arbeitet

Für jede URL probiert das Modul vier Methoden nacheinander und hält bei der ersten erfolgreichen an:

  1. JSON-LD: die strukturierten Product/Offer-Daten, die die große Mehrheit der Onlineshops veröffentlicht. Preis, Währung, Verfügbarkeit und für den Crawl auch Titel, SKU, GTIN und Marke werden ohne Konfiguration direkt gelesen.
  2. OpenGraph: die Meta-Tags product price amount.
  3. CSS-Selektor: der des Wettbewerbers oder der eigene der URL, falls vorhanden.
  4. KI: ein bereinigter HTML-Auszug geht an Ihren Anbieter, der Preis, Währung und Lagerstatus zurückgibt. Internationale Preisformate werden verarbeitet (1 299,90 ebenso wie 1.234,56 oder $49.99).

Beginnen Sie immer ohne CSS-Selektor: JSON-LD genügt in den meisten Fällen. Fügen Sie einen Selektor oder erzwungene KI nur hinzu, wenn die Spalte Status no_price anzeigt.

Import und Export

Die Seite Import / Export dient dazu, eine Konfiguration von einem Shop in einen anderen mitzunehmen.

Wettbewerber als JSON

Der Export erzeugt eine Datei mit Namen, Domains, Selektoren und Crawl-Einstellungen. Haken Sie die einzuschließenden Wettbewerber an, oder haken Sie keinen an, um alle zu exportieren. Beim Import erfolgt die Zuordnung zuerst über den Namen, dann über die Domain; ein Kontrollkästchen entscheidet, ob ein bereits vorhandener Wettbewerber aktualisiert oder übersprungen wird, und ein Vorschaumodus meldet das Ergebnis, ohne etwas zu schreiben.

Überwachte URLs als CSV

Erwartete Spalten: product_id, product_reference, competitor_name, competitor_domain, url, price_selector, currency_iso, use_ai_extraction, scrape_interval_hours, active.

Nur competitor_name und url sind Pflicht, dazu product_id oder product_reference, damit klar ist, zu welchem Produkt die URL gehört. Ein unbekannter Wettbewerbername legt seinen Datensatz automatisch an, sodass eine einzige Datei genügt, um eine ganze Installation aufzusetzen. Das Trennzeichen wird automatisch erkannt, und der Import startet im Vorschaumodus, der Zeile für Zeile meldet, was angelegt, aktualisiert oder übersprungen würde.

Wettbewerber-Katalog als CSV

Export all dessen, was der Crawl gefunden hat, mit zugeordnetem Produkt, Methode und Punktzahl. Ein Kontrollkästchen beschränkt den Export auf zugeordnete Zeilen. Praktisch für eine Auswertung offline oder zum Teilen mit Ihrem Einkauf.

Cron einrichten

Der periodische Betrieb stützt sich auf einen tokengesicherten Endpunkt, der im Dashboard angezeigt wird. Planen Sie seinen Aufruf alle 30 Minuten:

*/30 * * * * curl -s "https://ihr-shop.de/index.php?fc=module&module=dfaicompetitor&controller=cron&token=IHR_TOKEN" > /dev/null

Bei jedem Durchlauf misst der Cron den Stapel der URLs, deren Intervall abgelaufen ist, versendet die anstehenden Alarm-E-Mails, schickt den Wochenbericht am richtigen Tag, führt einen laufenden Katalog-Crawl um einen Abschnitt weiter und räumt den Verlauf jenseits der konfigurierten Aufbewahrung auf. Die Antwort ist eine JSON-Zusammenfassung.

Das Token lässt sich jederzeit im Dashboard neu erzeugen, dann müssen die bestehenden Cron-Jobs angepasst werden. Ein manueller Start ist über die Schaltfläche Run cron now verfügbar.

Alarme

Fünf Alarmtypen werden erzeugt, jeder mit einer Dringlichkeit:

  • price_drop / price_rise: Veränderung über dem Schwellenwert. Eine Veränderung von 10 % oder mehr wird critical.
  • undercut: ein Wettbewerber geht unter Ihren Bruttoverkaufspreis. Immer critical.
  • out_of_stock / back_in_stock: Wechsel der Verfügbarkeit, erkannt über strukturierte Daten oder die KI.
  • scrape_error: erst nach 3 Fehlversuchen in Folge, um das Rauschen vorübergehender Störungen zu beseitigen.

Die Alarme werden je Cron-Durchlauf zu einer einzigen Sammel-E-Mail gebündelt.

Berichte und Auswertungen

Der Bildschirm Berichte und Auswertungen passt in vier Registerkarten hinter einer dauerhaft angezeigten Kennzahlenleiste: verglichene Produkte, Anteil der Produkte, bei denen Sie am günstigsten sind, mittlerer Abstand zum Marktboden, offene Alarme, Zustand des Scrapings. Ein Zeitraumwähler deckt 7, 30 oder 90 Tage ab.

Überblick

Ihre Marktposition als Balken (am günstigsten, in der Mitte, am teuersten), die Produkte, bei denen Sie beim Preis verlieren, nach absteigendem Abstand sortiert, jene mit Spielraum nach oben, eine Tabelle je Wettbewerber, die zeigt, wer Sie am häufigsten unterbietet, und die von der KI verfasste Zusammenfassung. Die Chancen lassen sich als CSV exportieren.

Alarme

Die nach Typ, Dringlichkeit, Status und Freitext filterbare Liste, mit einem Diagramm des Tagesvolumens je Dringlichkeit. Jede Zeile wird ohne Neuladen quittiert oder wieder geöffnet, und der Zähler offener Alarme aktualisiert sich in der Leiste.

Produktanalyse

Wählen Sie ein überwachtes Produkt: das Modul zeichnet Ihren Preis gegen den jedes Wettbewerbers über den Zeitraum, zeigt den Anpassungsvorschlag mit aktuellem und vorgeschlagenem Preis nebeneinander und listet die Quellen mit einer Schaltfläche für die sofortige Messung.

Seit Version 1.1.0 speichert jede Messung auch Ihren eigenen Preis zum jeweiligen Zeitpunkt. Das macht den Verlauf der Abstände rekonstruierbar. In einem von 1.0.x aktualisierten Shop wird die Kurve Ihres Preises erst ab den Messungen nach dem Update exakt; davor greift das Modul auf Ihren aktuellen Preis zurück.

Zustand

Die URLs, die scheitern, mit Status, Anzahl der Fehlversuche in Folge, letztem Fehler und einer Schaltfläche zum erneuten Versuch, dazu eine Erfolgsquote je Wettbewerber. Das ist die erste Stelle, an der man nachsieht, wenn eine Zahl falsch wirkt: ein Wettbewerber, dessen Scraping ausgefallen ist, verzerrt die Mittelwerte.

Preisvorschlag

In der Registerkarte Produktanalyse zeigt das Modul Ihren aktuellen Preis, Minimum, Mittelwert und Maximum der Wettbewerber, die Quellen und den Preisvorschlag nach Ihrer Strategie. Die Schaltfläche Übernehmen schreibt den Preis in das PrestaShop-Produkt.

Die Übernahme erfolgt nie automatisch. Das ist bewusst so, um Abwärtsspiralen zwischen Wettbewerbern mit demselben Werkzeug zu vermeiden. Die Umrechnung von brutto nach netto erfolgt automatisch nach dem Steuersatz des Produkts.

Fehlerbehebung

Der Crawl findet keine Seite

Prüfen Sie zuerst, ob die Domain des Wettbewerbers ohne Schema und ohne www. eingetragen ist. Öffnen Sie dann https://domain/robots.txt im Browser: enthält sie keine Sitemap:-Direktive, tragen Sie die Sitemap-URL von Hand im Wettbewerberdatensatz ein. Existiert die Sitemap, wird aber nichts behalten, ist Ihr Filtermuster vermutlich zu streng: leeren Sie es, um zu sehen, was zurückkommt, und ziehen Sie es dann enger.

Der Crawl findet Seiten, die keine Produkte sind

Tragen Sie als Behalten-Muster das Segment ein, das den Produktseiten der Website gemeinsam ist, etwa /produkt/ oder /p/, und als Verwerfen-Muster das, was das Ergebnis verunreinigt, etwa /blog/. Leeren Sie danach den Katalog des Wettbewerbers und starten Sie neu.

Viele Seiten bleiben ohne Zuordnung

Sehen Sie zuerst nach, ob die Wettbewerberseiten eine SKU oder eine EAN ausweisen: ohne gemeinsame Kennung kann nur die Titelähnlichkeit greifen. Tragen Sie den SKU-Selektor im Wettbewerberdatensatz ein, starten Sie den Crawl neu und nutzen Sie dann Neu zuordnen. Weichen Ihre Titel stark von denen des Wettbewerbers ab, senken Sie die Abgleichschwelle auf 75 und prüfen Sie die entstandenen Zuordnungen, bevor Sie es dabei belassen.

Status „no_price“

Keine der Methoden hat einen Preis gefunden. Prüfen Sie die URL im Browser, ergänzen Sie einen Preis-CSS-Selektor im Wettbewerberdatensatz oder aktivieren Sie die erzwungene KI-Extraktion.

Status „error“ oder „blocked“

error bedeutet, dass die Seite nicht geantwortet hat (HTTP 400 und höher oder Timeout). blocked bedeutet, dass die robots.txt der Website diese Adresse unserem Bot untersagt. Im ersten Fall passen Sie den User-Agent an, erhöhen das Timeout oder weiten das Intervall. Im zweiten ist es eine Entscheidung der Zielseite, die Sie abwägen müssen.

Die KI-Extraktion funktioniert nicht

Prüfen Sie, ob der API-Schlüssel gültig ist und das Modell bei Ihrem Anbieter existiert. Fehler bei KI-Aufrufen werden unter Erweiterte Einstellungen → Logs mit dem Präfix [dfaicompetitor] protokolliert.

Die E-Mails kommen nicht an

Testen Sie die E-Mail-Konfiguration von PrestaShop unter Erweiterte Einstellungen → E-Mail. Das Modul nutzt das native Mailsystem mit eigenen Vorlagen auf Französisch und Englisch.

Gute Praxis und Konformität

  • Lassen Sie die Beachtung der robots.txt aktiv. Sie gilt für die Entdeckung wie für das Lesen der Produktseiten, hält ein veröffentlichtes Crawl-delay ein und wendet die Vorrangregel des Standards an: passen ein Allow und ein Disallow beide, gewinnt die längere Regel.
  • Halten Sie beim ersten Crawl einer Ihnen unbekannten Website eine Wartezeit von mindestens einer Sekunde und eine vernünftige Produktobergrenze ein.
  • Weiten Sie die Messintervalle: 6 bis 24 h je URL genügen für Preisbeobachtung völlig.
  • Behalten Sie einen erkennbaren User-Agent. Das ist die in der Wettbewerbsbeobachtung erwartete faire Praxis, und manche Seiten dulden einen benannten Bot, den sie sonst blockieren würden.
  • Das Lesen öffentlicher Preise ist in Europa in der Regel zulässig, für die Verwendung der erhobenen Daten und die Bewertung der Nutzungsbedingungen der Zielseiten bleiben Sie jedoch verantwortlich.
War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren