SW Shopware 6 Mittel

LLMs.txt & AEO Shopware — Komplettes Handbuch

LLMs.txt & AEO installieren, konfigurieren und betreiben: Endpoints llms.txt / llms-full.txt / robots-ai.txt, strukturierte Schema.org-Daten (FAQPage, HowTo, Speakable, angereichertes Product), AEO Custom Fields, CLI und PSR-6-Cache für Shopware 6.7.

Aktualisiert Modulversion 1.0.1

Überblick

DataFirefly LLMs.txt & AEO ist ein Shopware 6.7 Plugin, das Ihren Shop für KI-Answer-Engines (ChatGPT, Claude, Perplexity, Gemini) sichtbar und verständlich macht. Es wirkt auf drei komplementären Ebenen:

  • llms.txt / llms-full.txt — zwei Dateien gemäß der llmstxt.org-Spezifikation, automatisch generiert im Root jedes Sales-Channels, in jeder aktiven Sprache.
  • Schema.org JSON-LD — automatische Einbettung strukturierter Daten auf jeder Seite: Organization, angereichertes Product, BreadcrumbList, FAQPage, HowTo und Speakable.
  • KI-Crawler-Steuerung — ein /robots-ai.txt Endpoint mit individueller Kontrolle über 9 Bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, Bingbot, Meta-ExternalAgent, CCBot, cohere-ai).

Voraussetzungen: Shopware 6.7.0+, PHP 8.2+, MySQL 8.0+ oder MariaDB 10.6+. Das Plugin funktioniert mit dem Standard-Storefront und Custom Themes (Twig-Vererbung).

Installation

Via ZIP (empfohlen)

  1. Laden Sie DataFireflyLlmsAeo.zip aus Ihrem Kundenkonto herunter.
  2. Shopware Administration → Erweiterungen → Meine Erweiterungen → Erweiterung hochladen.
  3. Klicken Sie auf Installieren, dann Aktivieren.
  4. Cache leeren: Einstellungen → System → Caches & Indizes, oder via CLI:
bin/console cache:clear

Via CLI

unzip DataFireflyLlmsAeo.zip -d custom/plugins/
bin/console plugin:refresh
bin/console plugin:install --activate DataFireflyLlmsAeo
bin/console cache:clear

Bei der Aktivierung installiert das Plugin automatisch das Custom-Field-Set datafirefly_aeo auf Produkten, Kategorien, CMS-Seiten und Herstellern. Keine manuelle Migration erforderlich.

Kompilierung der Administrations-Assets

Falls das Administrationsmodul nach der Aktivierung nicht unter Marketing erscheint:

bin/console bundle:dump
./bin/build-administration.sh
bin/console cache:clear

Konfiguration

Die Konfiguration befindet sich unter Einstellungen → System → Erweiterungen → DataFirefly llms.txt & AEO. Sie ist Sales-Channel-bezogen: Wählen Sie im oberen Selektor einen bestimmten Kanal, um die globalen Werte zu überschreiben.

Karte „Allgemein“

  • Modul aktivieren — globaler Schalter (pro Sales-Channel).
  • Website-Autor — im llms.txt-Header verwendet.
  • Website-Beschreibung — Header-Blockquote des llms.txt; beschreiben Sie Ihren Shop in 1-2 KI-orientierten Sätzen.
  • Cache-Lebensdauer — TTL in Sekunden (Standard: 3600).

Karte „llms.txt“

  • CMS-Seiten, Kategorien, Marken und/oder Produkte einbeziehen.
  • Maximale Anzahl der Produkte im Index.
  • Inaktive Produkte einbeziehen — standardmäßig aus; in Produktion ausgeschaltet lassen.

Karte „AEO & Schema.org“

  • Individuelle Toggles: Organization, angereichertes Product, BreadcrumbList, FAQPage, HowTo, Speakable.
  • Logo und URL der Organisation — überschreiben die Sales-Channel-Werte.
  • Telefon, Kontakt-E-Mail, Social-Profile — speisen das Organization-Schema (contactPoint, sameAs).

Karte „KI-Crawler“

Für jeden der 9 Bots drei Modi:

  • Erlaubt — voller Zugriff (keine restriktive Direktive).
  • AbgelehntDisallow: / für diesen Bot.
  • SelektivDisallow auf den von Ihnen gelisteten Pfaden (einer pro Zeile, z. B. /checkout/, /account/).

Der Inhalt von /robots-ai.txt wird nicht automatisch in Ihre Haupt-robots.txt zusammengeführt. Kopieren Sie den Inhalt in Ihre robots.txt oder fügen Sie eine Server-Rewrite-Regel hinzu (siehe robots.txt-Integration).

Die drei Endpoints

URL Inhalt Header
/llms.txt Synthetisches Inhaltsverzeichnis: Seiten, Kategorien, Marken, Produkte, Optional text/plain; charset=UTF-8, X-Robots-Tag: noindex, Public Cache
/llms-full.txt Vollinhalt: bereinigte Beschreibungen, SKU, EAN, Marke, gruppierte Eigenschaften, FAQ ebenso
/robots-ai.txt User-agent-Direktivenblock für die 9 KI-Crawler ebenso

Schnelle Überprüfung nach der Installation:

curl -I https://ihr-shop.tld/llms.txt
curl -I https://ihr-shop.tld/llms-full.txt
curl -I https://ihr-shop.tld/robots-ai.txt

Jeder Sales-Channel stellt seine eigenen Dateien auf seiner eigenen Domain bereit, in jeder aktiven Sprache (lokalisierte URLs folgen der Domain-Konfiguration des Kanals).

AEO Custom Fields

Das Set datafirefly_aeo ist auf Produkten, Kategorien, CMS-Seiten und Herstellern verfügbar, im Reiter Zusatzfelder jeder Entität.

Feld Typ Verwendung
datafirefly_aeo_summary Text 1-2-Satz-Zusammenfassung, im llms.txt anstelle der gekürzten Beschreibung verwendet
datafirefly_aeo_faq JSON Strukturierte FAQ, als FAQPage JSON-LD eingebettet
datafirefly_aeo_howto JSON Strukturiertes Tutorial, als HowTo JSON-LD eingebettet
datafirefly_aeo_speakable Text Kurzer Text für Sprachassistenten (30-40 sprechbare Wörter)
datafirefly_aeo_exclude Boolean Schließt die Entität aus llms.txt und llms-full.txt aus

Format des FAQ-Felds

[
  {
    "q": "Wie lange dauert die Lieferung?",
    "a": "Die Standardlieferung dauert 2 bis 4 Werktage."
  },
  {
    "q": "Wie lautet Ihre Rückgaberichtlinie?",
    "a": "Sie haben 30 Tage Zeit, ein unbenutztes Produkt zurückzugeben."
  }
]

Format des HowTo-Felds

{
  "name": "So installieren Sie das Produkt",
  "totalTime": "PT15M",
  "steps": [
    { "name": "Vorbereitung", "text": "Packen Sie die Komponenten aus." },
    { "name": "Montage", "text": "Folgen Sie dem mitgelieferten Schema." },
    { "name": "Überprüfung", "text": "Testen Sie die Funktion." }
  ]
}

Shopware-Zusatzfelder sind übersetzbar: Füllen Sie die FAQ in jeder Sprache über den Sprachselektor der Produktseite aus. Das Plugin liest den Wert in der Sprache des Anfragekontexts.

Strukturierte Schema.org-Daten

Das Plugin bettet JSON-LD in den <head> ein, über das Template storefront/layout/meta.html.twig (Twig-Vererbung, kompatibel mit Custom Themes). Generierte Schemas:

  • Organization — auf jeder Seite: Name, Logo, URL, contactPoint, sameAs (Social-Profile).
  • Angereichertes Product — auf Produktseiten: gtin13 (aus der EAN), mpn, sku, brand (Hersteller), additionalProperty (Eigenschaften gruppiert nach Eigenschaftsgruppen), aggregateRating (aus nativen Shopware-Bewertungen, falls vorhanden).
  • BreadcrumbList — vollständiger Breadcrumb der aktuellen Seite.
  • FAQPage — wenn das Feld datafirefly_aeo_faq auf der Entität der Seite gefüllt ist.
  • HowTo — wenn das Feld datafirefly_aeo_howto gefüllt ist.
  • Speakable — CSS-Selektoren h1, .product-detail-name, .product-detail-description-text, .cms-element-text, [data-speakable], plus der Text des dedizierten Felds.

Empfohlene Validierung nach dem Go-Live:

Administrationsmodul

Unter Marketing → DataFirefly llms.txt & AEO:

  • Live-Vorschau des llms.txt oder llms-full.txt in Monospace-Darstellung.
  • Sales-Channel-Selektor — jeden Kanal unabhängig vorschauen.
  • Cache-Invalidierung mit einem Klick (pro Kanal oder global).
  • Öffentliche URL öffnen und in die Zwischenablage kopieren.

CLI-Befehle und Automatisierung

datafirefly:llms-txt:generate

# llms.txt eines Sales-Channels generieren (auf Standardausgabe)
bin/console datafirefly:llms-txt:generate --sales-channel=<id>

# Vollversion, in eine Datei geschrieben, ohne Cache
bin/console datafirefly:llms-txt:generate --sales-channel=<id> --full --output=/tmp/llms-full.txt --no-cache

datafirefly:llms-txt:warm

# Cache für alle Sales-Channels x alle aktiven Sprachen vorwärmen
bin/console datafirefly:llms-txt:warm

# Regenerierung erzwingen, auch wenn der Cache noch gültig ist
bin/console datafirefly:llms-txt:warm --force

# Nur llms.txt vorwärmen (ohne llms-full.txt)
bin/console datafirefly:llms-txt:warm --skip-full

Empfohlener Cron

# Tägliches Vorwärmen um 03:15 Uhr
15 3 * * * cd /var/www/shopware && php bin/console datafirefly:llms-txt:warm --quiet

Ein Shopware Scheduled Task wird ebenfalls bei der Aktivierung registriert: Wenn Ihr Messenger-Worker und der Scheduled Task Runner laufen, wärmt sich der Cache automatisch ohne System-Cron vor.

robots.txt-Integration

Zwei Ansätze, um die KI-Direktiven in Ihrer Haupt-robots.txt bereitzustellen:

Manuelle Kopie

Öffnen Sie /robots-ai.txt, kopieren Sie den generierten Block und fügen Sie ihn in Ihre bestehende robots.txt ein. Nach jeder Änderung der Bot-Konfiguration wiederholen.

Server-Rewrite (empfohlen, wenn die robots.txt vollständig vom Plugin verwaltet wird)

# nginx
location = /robots.txt {
    rewrite ^ /robots-ai.txt last;
}

# Apache (.htaccess)
RewriteRule ^robots.txt$ /robots-ai.txt [L]

Verwenden Sie das vollständige Rewrite nur, wenn Sie keine anderen robots.txt-Direktiven zu erhalten haben (Sitemap, bestehende SEO-Ausschlüsse). Im Zweifel bevorzugen Sie die manuelle Kopie des KI-Blocks.

Cache und Performance

  • PSR-6-Cache auf Shopwares cache.object-Pool, getaggt mit datafirefly_llms_aeo.
  • Schlüssel bezogen auf Sales-Channel + Sprache: jede Kombination hat einen eigenen Eintrag.
  • Konfigurierbare TTL (Standard 3600 s).
  • Invalidierung: Admin-Button (pro Kanal oder global), Befehl warm --force, oder natürlicher Ablauf.
  • Kompatibel mit Cluster-Cache (Redis): die tag-basierte Invalidierung funktioniert auf allen taggbaren Adaptern.

Fehlerbehebung

Die Endpoints liefern 404

  1. Prüfen Sie, ob das Plugin aktiviert ist (nicht nur installiert).
  2. Leeren Sie den HTTP-Cache und den Anwendungs-Cache: bin/console cache:clear.
  3. Wenn Sie einen Reverse Proxy/CDN nutzen, purgen Sie diesen ebenfalls.

Fehler „Attempted to call an undefined method named getHeader“ auf Navigationsseiten

Bug behoben in Version 1.0.1: Auf einigen Shopware-6.7-Installationen stellt NavigationPage kein getHeader() bereit. Aktualisieren Sie auf 1.0.1 (defensive Extraktion der aktiven Kategorie). Falls Sie bereits auf 1.0.1 sind und den Fehler weiterhin sehen, leeren Sie den PHP-Opcode-Cache (opcache_reset oder PHP-FPM-Neustart).

Das Admin-Modul erscheint nicht unter Marketing

Kompilieren Sie die Administrations-Assets (siehe Installation) und erzwingen Sie einen Browser-Reload (Strg+Umschalt+R).

Die llms.txt ist leer oder unvollständig

  1. Prüfen Sie die Einbeziehungs-Toggles (CMS-Seiten / Kategorien / Marken / Produkte) in der Karte „llms.txt“.
  2. Prüfen Sie, dass das Produktlimit nicht auf 0 steht.
  3. Kontrollieren Sie das Feld datafirefly_aeo_exclude auf den fehlenden Entitäten.
  4. Invalidieren Sie den Cache und laden Sie neu.

Das JSON-LD erscheint nicht im Quellcode

  1. Prüfen Sie, dass „Modul aktivieren“ und die Schema.org-Toggles für den richtigen Sales-Channel aktiv sind.
  2. Wenn Ihr Theme storefront/layout/meta.html.twig ohne {{ parent() }} auf dem betroffenen Block überschreibt, geht die Einbettung verloren: stellen Sie den Parent-Aufruf wieder her.

Changelog

1.0.1 — 2026-05-21

  • Fix: defensive Extraktion der aktiven Kategorie auf Navigationsseiten (getHeader()-Fehler auf einigen 6.7-Installationen).

1.0.0 — 2026-05-21

  • Erste Version: llms.txt + llms-full.txt, 6 JSON-LD-Schemas, robots-ai.txt (9 Bots), AEO Custom Fields, Vue 3 Admin-Modul, 2 CLI-Befehle, Scheduled Task, Snippets FR/EN/DE.
War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren