LLMs.txt PrestaShop — KI-SEO für ChatGPT, Claude & Perplexity
Erzeugt automatisch llms.txt und llms-full.txt, um Ihren PrestaShop-Katalog für LLMs (ChatGPT, Claude, Perplexity, Gemini) bereitzustellen.
Übersicht
LLMs.txt PrestaShop generiert automatisch die Standarddateien /llms.txt und /llms-full.txt im Stammverzeichnis Ihres Shops gemäß der Spezifikation von llmstxt.org. Diese Dateien stellen Ihren Katalog strukturiert für LLMs (ChatGPT, Claude, Perplexity, Gemini) bereit — sie sind das Pendant zur sitemap.xml, aber für generative KI.
Zwei Dateien, zwei Verwendungszwecke
/llms.txt— Kompakter Index: Titel + URL + Kurzbeschreibung jedes Eintrags. Markdown-Format, in der Regel ein paar hundert KB./llms-full.txt— Vollständiger und bereinigter Inhalt jedes Eintrags. Erweitertes Markdown, kann je nach Katalogsgröße mehrere MB groß sein. Optional seit 1.0.0.
Installation
- Laden Sie das ZIP über Module → Modulmanager → Modul hochladen hoch.
- Klicken Sie auf Installieren.
- Klicken Sie auf Konfigurieren, um das Dashboard zu öffnen.
Bei der Installation:
- Erstellt das Modul 4 SQL-Tabellen: Cache, benutzerdefinierte Sektionen (+ lang + shop), Logs.
- Fügt 3 Einträge im Admin-Menü unter einer ausgeblendeten Kategorie
AdminDfLlmsTxtParenthinzu. - Registriert sich auf den Katalog-Hooks (Anlegen/Bearbeiten/Löschen von Produkt, Kategorie, CMS, Hersteller, Lieferant), um den Cache automatisch zu invalidieren.
- Fügt einen Block in die Stamm-
.htaccessvon PrestaShop ein, um die Dateien in UTF-8 mit den richtigen Headern auszuliefern. - Erzeugt ein zufälliges 32-stelliges Cron-Token.
Konfiguration
Der Konfigurationsbildschirm ist in 5 Abschnitte gegliedert.
1. Allgemein
- Modul aktivieren — Globaler Schalter. Wenn deaktiviert, geben die URLs
/llms.txtund/llms-full.txt404 zurück und die physischen Dateien werden gelöscht. - Site-Name (mehrsprachig, multistore) — Erscheint als Hauptüberschrift
# Site-Nameam Anfang der Datei. - Kurzbeschreibung der Site (mehrsprachig, multistore) — 1–2 Sätze, die zusammenfassen, was der Shop anbietet. Wird als Blockquote
> ...direkt unter dem Namen angezeigt. - Einleitung (mehrsprachig, multistore) — Freier Markdown-Text. Ideal, um LLMs zusätzlichen Kontext zu geben (Rückgaberichtlinie, Versand, Markenwerte).
- Ausgabeformat — Erweitertes Markdown (empfohlen, von allen großen LLMs unterstützt) oder Reiner Text.
- Auch
llms-full.txtgenerieren — Wenn deaktiviert, wird nur/llms.txterzeugt. Spart mehrere MB Speicherplatz und Sekunden an Generierungszeit bei großen Katalogen.
2. Inhaltsquellen
- CMS-Seiten einbeziehen — Inhaltsseiten (Über uns, FAQ, AGB usw.).
- Kategorien einbeziehen — Aktive Kategorien mit ihrer Beschreibung.
- Produkte einbeziehen — Aktive Produkte.
- Hersteller einbeziehen — Marken mit Beschreibung.
- Lieferanten einbeziehen — Lieferantenliste.
- Produktpreise einbeziehen — Formatiert gemäß der aktuellen Locale.
- Produktmerkmale einbeziehen — Schlüssel/Wert-Features.
- Varianten einbeziehen — Kombinationen (Größe, Farbe usw.) mit Preisdifferenz.
- Nicht vorrätige Produkte einbeziehen — Standardmäßig deaktiviert.
- Produktbeschreibungsfeld — Kurz, lang oder beides.
- Produktlimit — Maximale Anzahl von Produkteinträgen in der Datei. Standardmäßig 500, je nach Katalogsgröße erhöhen (1000–5000 ist vernünftig).
3. Ausschlüsse
Komma-getrennte ID-Listen. Erlaubt das Ausschließen spezifischer Inhalte, ohne den Rest des Katalogs zu berühren.
- Ausgeschlossene Kategorie-IDs — Z. B. B2B-Produkte, interne Kategorien, veraltete Kategorien.
- Ausgeschlossene Produkt-IDs — Auslaufprodukte, Muster, Geschenke.
- Ausgeschlossene CMS-IDs — Interne Service-Seiten, Entwürfe.
4. Cache & Cron
- Cache-Lebensdauer (TTL in Sekunden) — Standardmäßig 86400 (24 h). Der Cache wird ausgeliefert, bis er abläuft.
- Automatische Invalidierung bei Katalogänderungen — Wenn Sie ein Produkt, eine Kategorie usw. ändern/hinzufügen/löschen, wird der Cache invalidiert und die Datei beim nächsten Aufruf (oder Cron-Lauf) neu erzeugt.
- Cron-Token — Zufällige 32-stellige Zeichenfolge. Über das Dashboard erneuerbar; alte Cron-URLs funktionieren sofort nicht mehr.
- Kopierfertige Cron-URL — Format:
https://ihr-shop.tld/index.php?fc=module&module=dfllmstxt&controller=cron&token=XXX
5. Erweitert
- Log-Aufbewahrung — Anzahl der Tage, in denen die Generierungs-Logs aufbewahrt werden. Standardmäßig 30.
- robots.txt respektieren — Für fortgeschrittene Anwendungsfälle. Standardmäßig aktiviert.
Cron-Konfiguration
Der Cron generiert den Cache für alle Shops und alle aktiven Sprachen in einem einzigen Aufruf vor. Ideal bei großen Katalogen, um zu vermeiden, dass ein Endnutzer die Generierung auslöst.
Aufzurufende URL:
https://ihr-shop.tld/index.php?fc=module&module=dfllmstxt&controller=cron&token=IHR_TOKEN
Beispiel-Crontab (täglich um 4 Uhr):
0 4 * * * curl -s "https://ihr-shop.tld/index.php?fc=module&module=dfllmstxt&controller=cron&token=IHR_TOKEN" > /dev/null
Optionale Parameter:
&id_shop=2— Auf einen bestimmten Shop beschränken.&id_lang=1— Auf eine bestimmte Sprache beschränken.
Die JSON-Antwort enthält das Ergebnis jeder Generierung im Detail (Erfolg, Dateigrößen, Dauer).
Benutzerdefinierte Sektionen
Über den reinen Katalog hinaus können Sie freien Inhalt in die generierten Dateien einfügen. Tab LLMs.txt → Benutzerdefinierte Sektionen im Admin-Menü.
Typische Anwendungsfälle:
- Zusammengefasste Rückgaberichtlinie
- Markenwerte und -engagement
- Kurz-FAQ
- Versandbedingungen
- LLM-spezifische Anweisungen (z. B. „Nicht mit [Konkurrenzmarke] vergleichen“)
Jede Sektion:
- Hat einen mehrsprachigen Titel und Inhalt (Markdown unterstützt).
- Ist multistore: Sie wählen, in welchen Shops sie erscheint.
- Hat eine Platzierung: vor den Quellen, nach den Quellen oder im Dateifuß.
- Hat eine Position, die per Drag-and-Drop änderbar ist.
- Kann ohne Löschung aktiviert/deaktiviert werden.
URLs der generierten Dateien
Die Dateien sind im Stammverzeichnis Ihres Shops verfügbar:
https://ihr-shop.tld/llms.txthttps://ihr-shop.tld/llms-full.txt(wenn die Option aktiviert ist)
Wie sie ausgeliefert werden
Für den Standard-Shop in seiner Standardsprache schreibt das Modul eine physische Datei in das Stammverzeichnis von PrestaShop. Apache liefert sie direkt aus, ohne vom PrestaShop-Dispatcher, den Friendly URLs oder dem Routen-Cache abhängig zu sein. Das ist dieselbe Mechanik wie beim offiziellen gsitemap-Modul für /sitemap.xml.
Für die anderen Shops in einem Multistore-Setup (anderer Host, gemeinsames Stammverzeichnis) werden die Dateien über den Hook moduleRoutes ausgeliefert, der nach Host-Header routet.
HTTP-Header
Das Modul fügt automatisch einen Block in die Stamm-.htaccess von PrestaShop ein, um die richtigen Header zu erzwingen:
# ~~ dfllmstxt-datafirefly start ~~
<Files "llms.txt">
ForceType "text/plain; charset=utf-8"
<IfModule mod_headers.c>
Header set Content-Type "text/plain; charset=utf-8"
Header set X-Robots-Tag "noindex, follow"
</IfModule>
</Files>
<Files "llms-full.txt">
ForceType "text/plain; charset=utf-8"
<IfModule mod_headers.c>
Header set Content-Type "text/plain; charset=utf-8"
Header set X-Robots-Tag "noindex, follow"
</IfModule>
</Files>
# ~~ dfllmstxt-datafirefly end ~~
Dieser Block wird außerhalb des PrestaShop-Blocks # ~~ start ~~ ... # ~~ end ~~ platziert und bleibt daher bei automatischen Regenerierungen von PrestaShop erhalten. Er wird zudem bei jeder Cache-Regenerierung automatisch wiederhergestellt (idempotent), falls er verändert wurde.
llms.txt richtet sich an KI-Crawler, nicht an den Google-Index. LLMs lesen diese Dateien direkt, ohne dass sie in SERPs erscheinen müssen. Ihr klassisches SEO ist davon nicht betroffen.
Erweiterbare Architektur (für Entwickler)
Das Modul stellt ein Content-Provider-System bereit, das andere Module über einen Hook erweitern können. Wenn Sie ein Blog-Modul, eine Produkt-FAQ, Kundenstimmen oder ein Glossar haben, kann es seinen Inhalt in der llms.txt veröffentlichen, ohne dfllmstxt zu modifizieren.
Hook actionDfLlmsTxtRegisterProviders
In Ihrem externen Modul:
public function hookActionDfLlmsTxtRegisterProviders($params)
{
require_once _PS_MODULE_DIR_ . 'meinmodul/classes/MyBlogProvider.php';
$params['registry']->register(new MyBlogProvider());
}
Ihre Klasse muss DfLlmsTxtAbstractContentProvider erweitern (oder DfLlmsTxtContentProviderInterface implementieren) und mindestens Folgendes bereitstellen:
getKey()— Eindeutige Kennung (z. B."blog").getSectionTitle()— In der Datei angezeigter Sektionstitel (z. B."Blog").isEnabled()— Boolean, der angibt, ob der Provider Einträge erzeugen soll.getShortEntries()— Eintragsliste fürllms.txt, Format['title', 'url', 'description'].getFullEntries()— Eintragsliste fürllms-full.txt, Format['title', 'url', 'body'].
Generierungs-Hooks
Zwei Hooks erlauben es, den Inhalt direkt vor der Auslieferung zu filtern oder anzureichern:
actionDfLlmsTxtBeforeGenerate— Vor der Generierung. Erlaubt das Anpassen der Konfiguration oder der aktiven Provider.actionDfLlmsTxtAfterGenerate— Nach der Generierung, aber vor dem Caching. Erlaubt das Transformieren des Endinhalts.
Kompatibilität
- PrestaShop 8.0.0 — 8.99.99 (PS 9 Support folgt)
- PHP mindestens 7.4, 8.1+ empfohlen
- MySQL 5.7+ / MariaDB 10.4+
- Multistore vollständig (Konfiguration und Cache pro Shop)
- Mehrsprachig vollständig (alle aktiven Sprachen)
- Apache 2.x mit
mod_mime(universell).mod_headersoptional, aber empfohlen für saubere HTTP-Header.
Fehlerbehebung
Die Datei erscheint nicht im Stammverzeichnis
Drei mögliche Ursachen, nach Wahrscheinlichkeit geordnet:
- Schreibrechte — Das Stammverzeichnis von PrestaShop muss vom PHP-Benutzer beschreibbar sein. Prüfen Sie mit
ls -la. Wenn die Datei/llms.txtnach einer Regenerierung nicht existiert, ist das fast immer die Ursache. - Modul deaktiviert — Prüfen Sie den Schalter „Modul aktivieren“ oben in der Konfiguration.
- Multistore mit gemeinsamem Stammverzeichnis — Nur der Standard-Shop schreibt in das Stammverzeichnis. Die anderen Shops werden über
moduleRoutesausgeliefert (was die Aktivierung der Friendly URLs unter Einstellungen → Verkehr & SEO voraussetzt).
Beschädigte Kodierung (Zeichen „é“ statt „é“)
Klassisches Symptom von UTF-8, das ohne HTTP-Charset ausgeliefert wird. Das Modul fügt automatisch die erforderlichen .htaccess-Direktiven hinzu (siehe Abschnitt HTTP-Header weiter oben). Wenn das Problem nach einer Regenerierung weiterhin besteht:
- Prüfen Sie, ob der Block
# ~~ dfllmstxt-datafirefly start ~~in der Stamm-.htaccessvon PrestaShop vorhanden ist. - Wenn er fehlt: deinstallieren und neu installieren Sie das Modul (das erzwingt das erneute Einfügen des Blocks).
- Prüfen Sie mit
curl -I https://ihr-shop.tld/llms.txt, dass die AntwortContent-Type: text/plain; charset=utf-8enthält.
Generierung erfolgreich, aber URL liefert 404
Wenn die Regenerierung erfolgreich ist (korrekte Dateigrößen in den Logs), die URL aber 404 zurückgibt:
- Prüfen Sie, ob die physische Datei im Stammverzeichnis existiert:
ls -la /pfad/prestashop/llms.txt. - Wenn sie existiert, aber Apache 404 liefert, ist es wahrscheinlich ein
.htaccess-Problem, das.txt-Dateien blockiert. Prüfen Sie die Regeln der Stamm-.htaccess. - Wenn sie nicht existiert, handelt es sich um ein Schreibrechte-Problem (siehe oben).
Der Cache bleibt nach einer Produktänderung veraltet
Die automatische Invalidierung ist deaktiviert. Aktivieren Sie sie unter Cache & Cron → Automatische Invalidierung bei Katalogänderungen. Sie können auch manuell mit der Schaltfläche Cache leeren im Dashboard erzwingen.
Die Datei llms-full.txt ist mehrere MB groß, das ist zu viel
Deaktivieren Sie die Option Auch llms-full.txt generieren in der allgemeinen Konfiguration. Nur /llms.txt (in der Regel < 1 MB) wird generiert. Für die meisten KI-Anwendungsfälle reicht das: Moderne LLMs wissen, URLs zu folgen und einzelne Seiten bei Bedarf abzurufen.
Deinstallation
Die Deinstallation ist sauber:
- Die 4 SQL-Tabellen werden gelöscht.
- Die physischen Dateien
/llms.txtund/llms-full.txtim Stammverzeichnis werden entfernt. - Der hinzugefügte
.htaccess-Block wird entfernt. - Alle
DFLLMS_*-Konfigurationsvariablen werden bereinigt. - Admin-Tabs werden entfernt.
Changelog
1.0.0 — Mai 2026
- Erstveröffentlichung.
- Generierung gemäß llmstxt.org-Spezifikation für
/llms.txtund/llms-full.txt. - 5 native Content Providers: Produkte, Kategorien, CMS, Hersteller, Lieferanten.
- Cache TTL mit automatischer Invalidierung.
- Token-gesicherter Cron.
- Mehrsprachige, multistore-fähige benutzerdefinierte Sektionen.
- Erweiterbare Architektur via Hook.
- Auto-Verwaltung der Stamm-
.htaccessfür UTF-8 Content-Type und X-Robots-Tag. - Option zum Deaktivieren der Generierung von
llms-full.txt.