# LLMs.txt PrestaShop — KI-SEO für ChatGPT, Claude & Perplexity

> Vollständige Dokumentation des DataFirefly LLMs.txt Generator Moduls für PrestaShop: Installation, Konfiguration, Cron, benutzerdefinierte Sektionen, Entwickler-Hooks und Fehlerbehebung.

- Seite: <https://www.datafirefly.com/de/documentation/llms-txt-prestashop-seo-ia-chatgpt/>
- Sprache: de
- Aktualisiert am: 2026-07-22
- Weitere Sprachen: [fr](https://www.datafirefly.com/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [en](https://www.datafirefly.com/en/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [es](https://www.datafirefly.com/es/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [it](https://www.datafirefly.com/it/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [pl](https://www.datafirefly.com/pl/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [pt](https://www.datafirefly.com/pt/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md), [nl](https://www.datafirefly.com/nl/documentation/llms-txt-prestashop-seo-ia-chatgpt/index.md)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

## Übersicht

**LLMs.txt PrestaShop** generiert automatisch die Standarddateien `/llms.txt` und `/llms-full.txt` im Stammverzeichnis Ihres Shops gemäß der Spezifikation von [llmstxt.org](https://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.

**Merken:** LLMs lesen diese Dateien, um Ihren Shop zu verstehen, ohne jede Produktseite crawlen zu müssen. Je besser Ihr Katalog präsentiert wird, desto besser wird er in deren Antworten zitiert und empfohlen.

### 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

1. Laden Sie das ZIP über **Module → Modulmanager → Modul hochladen** hoch.
2. Klicken Sie auf **Installieren**.
3. 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 `AdminDfLlmsTxtParent` hinzu.
- 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-`.htaccess` von 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.txt` und `/llms-full.txt` 404 zurück und die physischen Dateien werden gelöscht.
- **Site-Name** (mehrsprachig, multistore) — Erscheint als Hauptüberschrift `# Site-Name` am 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.txt generieren** — Wenn deaktiviert, wird nur `/llms.txt` erzeugt. 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.

**Tipp:** Um die IDs zu finden, gehen Sie zur entsprechenden Liste (Katalog → Kategorien usw.); die ID steht in der ersten Spalte oder in der Bearbeitungs-URL.

### 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.txt`
- `https://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.

**X-Robots-Tag noindex:** bewusst hinzugefügt. `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ür `llms.txt`, Format `['title', 'url', 'description']`.
- `getFullEntries()` — Eintragsliste für `llms-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_headers` optional, aber empfohlen für saubere HTTP-Header.

## Fehlerbehebung

### Die Datei erscheint nicht im Stammverzeichnis

Drei mögliche Ursachen, nach Wahrscheinlichkeit geordnet:

1. **Schreibrechte** — Das Stammverzeichnis von PrestaShop muss vom PHP-Benutzer beschreibbar sein. Prüfen Sie mit `ls -la`. Wenn die Datei `/llms.txt` nach einer Regenerierung nicht existiert, ist das fast immer die Ursache.
2. **Modul deaktiviert** — Prüfen Sie den Schalter „Modul aktivieren" oben in der Konfiguration.
3. **Multistore mit gemeinsamem Stammverzeichnis** — Nur der Standard-Shop schreibt in das Stammverzeichnis. Die anderen Shops werden über `moduleRoutes` ausgeliefert (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:

1. Prüfen Sie, ob der Block `# ~~ dfllmstxt-datafirefly start ~~` in der Stamm-`.htaccess` von PrestaShop vorhanden ist.
2. Wenn er fehlt: deinstallieren und neu installieren Sie das Modul (das erzwingt das erneute Einfügen des Blocks).
3. Prüfen Sie mit `curl -I https://ihr-shop.tld/llms.txt`, dass die Antwort `Content-Type: text/plain; charset=utf-8` enthält.

### Generierung erfolgreich, aber URL liefert 404

Wenn die Regenerierung erfolgreich ist (korrekte Dateigrößen in den Logs), die URL aber 404 zurückgibt:

1. Prüfen Sie, ob die physische Datei im Stammverzeichnis existiert: `ls -la /pfad/prestashop/llms.txt`.
2. 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`.
3. 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.txt` und `/llms-full.txt` im 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.txt` und `/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-`.htaccess` für UTF-8 Content-Type und X-Robots-Tag.
- Option zum Deaktivieren der Generierung von `llms-full.txt`.
