LLMs.txt en AEO voor Shopware: complete gids
LLMs.txt & AEO installeren, configureren en gebruiken: endpoints llms.txt / llms-full.txt / robots-ai.txt, gestructureerde gegevens Schema.org (FAQPage, HowTo, Speakable, verrijkte Product), aangepaste AEO-velden, CLI en PSR-6-cache voor Shopware 6.7.
Overzicht
DataFirefly LLMs.txt & AEO is een Shopware 6.7-plugin die uw shop zichtbaar en begrijpelijk maakt voor AI-antwoordmachines (ChatGPT, Claude, Perplexity, Gemini). Hij werkt op drie complementaire vlakken:
- llms.txt / llms-full.txt: twee bestanden conform de specificatie llmstxt.org, automatisch gegenereerd in de wortel van elk sales channel, in elke actieve taal.
- Schema.org JSON-LD: automatische invoeging van gestructureerde gegevens op alle pagina’s: Organization, verrijkte Product, BreadcrumbList, FAQPage, HowTo en Speakable.
- Aansturing van AI-crawlers: een endpoint
/robots-ai.txtmet individuele controle over 9 bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, Bingbot, Meta-ExternalAgent, CCBot, cohere-ai).
Vereisten: Shopware 6.7.0+, PHP 8.2+, MySQL 8.0+ of MariaDB 10.6+. De plugin werkt op de standaard storefront en op aangepaste thema’s (Twig-overerving).
Installatie
Via ZIP (aanbevolen)
- Download
DataFireflyLlmsAeo.zipvanuit uw klantaccount. - Shopware-administration → Extensies → Mijn extensies → Extensie uploaden.
- Klik op Installeren en daarna op Activeren.
- Leeg de cache: Instellingen → Systeem → Cache en index, of via de CLI:
bin/console cache:clear
Via de CLI
unzip DataFireflyLlmsAeo.zip -d custom/plugins/
bin/console plugin:refresh
bin/console plugin:install --activate DataFireflyLlmsAeo
bin/console cache:clear
Bij de activering installeert de plugin automatisch de set aangepaste velden datafirefly_aeo op producten, categorieën, CMS-pagina’s en fabrikanten. Er is geen handmatige migratie nodig.
Compilatie van de administratie-assets
Als de administratiemodule na de activering niet onder Marketing verschijnt:
bin/console bundle:dump
./bin/build-administration.sh
bin/console cache:clear
Configuratie
De configuratie staat onder Instellingen → Systeem → Extensies → DataFirefly llms.txt & AEO. Ze is per sales channel in te stellen: kies bovenaan een specifiek kanaal in de kiezer om de globale waarden te overschrijven.
Kaart “Algemeen”
- Module activeren: globale schakelaar (per sales channel).
- Auteur van de site: gebruikt in de koptekst van het llms.txt.
- Beschrijving van de site: blockquote in de koptekst van het llms.txt; beschrijf uw shop in 1 tot 2 zinnen, gericht op AI.
- Cacheduur: TTL in seconden (standaard 3600).
Kaart “llms.txt”
- CMS-pagina’s, categorieën, merken en/of producten opnemen.
- Maximum aantal producten in de index.
- Inactieve producten opnemen: standaard uitgeschakeld, laat dit in productie uit staan.
Kaart “AEO en Schema.org”
- Afzonderlijke schakelaars: Organization, verrijkte Product, BreadcrumbList, FAQPage, HowTo, Speakable.
- Logo en URL van de organisatie: overschrijven de waarden van het sales channel.
- Telefoon, contact-e-mail, sociale profielen: voeden het Organization-schema (
contactPoint,sameAs).
Kaart “AI-crawlers”
Voor elk van de 9 bots zijn er drie modi:
- Toegestaan: volledige toegang (geen beperkende richtlijn).
- Geweigerd:
Disallow: /voor die bot. - Selectief:
Disallowop de paden die u opsomt (één per regel, bijvoorbeeld/checkout/,/account/).
De inhoud van /robots-ai.txt wordt niet automatisch samengevoegd met uw hoofdbestand robots.txt. Kopieer de inhoud ervan in uw robots.txt, of voeg een herschrijfregel op de server toe (zie het hoofdstuk Integratie met robots.txt).
De drie endpoints
| URL | Inhoud | Headers |
|---|---|---|
/llms.txt |
Beknopte index: pagina’s, categorieën, merken, producten, Optional | text/plain; charset=UTF-8, X-Robots-Tag: noindex, publieke cache |
/llms-full.txt |
Volledige inhoud: opgeschoonde beschrijvingen, SKU, EAN, merk, gegroepeerde kenmerken, FAQ | idem |
/robots-ai.txt |
Blok met User-agent-richtlijnen voor de 9 AI-crawlers | idem |
Snelle controle na de installatie:
curl -I https://uw-shop.tld/llms.txt
curl -I https://uw-shop.tld/llms-full.txt
curl -I https://uw-shop.tld/robots-ai.txt
Elk sales channel biedt zijn eigen bestanden aan op zijn eigen domein, in elke actieve taal (de gelokaliseerde URL’s volgen de domeinconfiguratie van het kanaal).
Aangepaste AEO-velden
De set datafirefly_aeo is beschikbaar op producten, categorieën, CMS-pagina’s en fabrikanten, op het tabblad Aangepaste velden van elke entiteit.
| Veld | Type | Gebruik |
|---|---|---|
datafirefly_aeo_summary |
Tekst | Samenvatting van 1 tot 2 zinnen die in het llms.txt de afgekapte beschrijving vervangt |
datafirefly_aeo_faq |
JSON | Gestructureerde FAQ, ingevoegd als FAQPage JSON-LD |
datafirefly_aeo_howto |
JSON | Gestructureerde handleiding, ingevoegd als HowTo JSON-LD |
datafirefly_aeo_speakable |
Tekst | Korte tekst voor spraakassistenten (30 tot 40 uitspreekbare woorden) |
datafirefly_aeo_exclude |
Boolean | Sluit de entiteit uit van het llms.txt en het llms-full.txt |
Formaat van het FAQ-veld
[
{
"q": "Hoe lang duurt de levering?",
"a": "Standaardlevering duurt 2 tot 4 werkdagen in Nederland en België."
},
{
"q": "Wat is uw retourbeleid?",
"a": "U hebt 30 dagen om een ongebruikt product terug te sturen."
}
]
Formaat van het HowTo-veld
{
"name": "Hoe u het product installeert",
"totalTime": "PT15M",
"steps": [
{ "name": "Voorbereiding", "text": "Pak de onderdelen uit." },
{ "name": "Montage", "text": "Volg het meegeleverde schema." },
{ "name": "Controle", "text": "Test de werking." }
]
}
Aangepaste velden van Shopware zijn vertaalbaar: vul de FAQ in elke taal in via de taalkiezer van de productkaart. De plugin leest de waarde in de taal van de aanvraagcontext.
Gestructureerde gegevens Schema.org
De plugin voegt JSON-LD in de head-tag in via het template storefront/layout/meta.html.twig (Twig-overerving, compatibel met aangepaste thema’s). Gegenereerde schema’s:
- Organization: op alle pagina’s: naam, logo, URL,
contactPoint,sameAs(sociale profielen). - Verrijkte Product: op de productpagina’s:
gtin13(uit de EAN),mpn,sku,brand(fabrikant),additionalProperty(kenmerken gegroepeerd per eigenschappengroep),aggregateRating(uit de native reviews van Shopware indien aanwezig). - BreadcrumbList: volledig kruimelpad van de huidige pagina.
- FAQPage: als het veld
datafirefly_aeo_faqop de entiteit van de pagina is ingevuld. - HowTo: als het veld
datafirefly_aeo_howtois ingevuld. - Speakable: CSS-selectors
h1,.product-detail-name,.product-detail-description-text,.cms-element-text,[data-speakable], plus de tekst uit het specifieke veld.
Aanbevolen validatie na de livegang:
- Schema.org Validator: plak de URL van een productpagina.
- Google Rich Results Test.
Administratiemodule
Onder Marketing → DataFirefly llms.txt & AEO:
- Live voorbeeld van het llms.txt of het llms-full.txt, met monospace-weergave.
- Sales channel-kiezer: bekijk elk kanaal afzonderlijk.
- Cache ongeldig maken met één klik (per kanaal of globaal).
- De publieke URL openen en naar het klembord kopiëren.
CLI-commando’s en automatisering
datafirefly:llms-txt:generate
# Het llms.txt van een sales channel genereren (weergegeven op de standaarduitvoer)
bin/console datafirefly:llms-txt:generate --sales-channel=<id>
# Volledige versie, weggeschreven naar een bestand, zonder de cache te gebruiken
bin/console datafirefly:llms-txt:generate --sales-channel=<id> --full --output=/tmp/llms-full.txt --no-cache
datafirefly:llms-txt:warm
# De cache van alle sales channels maal alle actieve talen opwarmen
bin/console datafirefly:llms-txt:warm
# Hergeneratie forceren, ook als de cache nog geldig is
bin/console datafirefly:llms-txt:warm --force
# Alleen het llms.txt opwarmen (zonder het llms-full.txt)
bin/console datafirefly:llms-txt:warm --skip-full
Aanbevolen cron
# Dagelijkse opwarming om 03.15 uur
15 3 * * * cd /var/www/shopware && php bin/console datafirefly:llms-txt:warm --quiet
Bij de activering wordt ook een geplande taak van Shopware geregistreerd: als uw Messenger-worker en de scheduled task runner draaien, warmt de cache automatisch op zonder systeemcron.
Integratie met robots.txt
Er zijn twee manieren om de AI-richtlijnen in uw hoofdbestand robots.txt beschikbaar te stellen:
Handmatig kopiëren
Open /robots-ai.txt, kopieer het gegenereerde blok en plak het in uw bestaande robots.txt. Herhaal dit na elke wijziging van de botconfiguratie.
Herschrijving op de server (aanbevolen als robots.txt volledig door de plugin wordt beheerd)
# nginx
location = /robots.txt {
rewrite ^ /robots-ai.txt last;
}
# Apache (.htaccess)
RewriteRule ^robots.txt$ /robots-ai.txt [L]
Gebruik de volledige herschrijving alleen als u geen andere richtlijnen in robots.txt hoeft te behouden (sitemap, bestaande SEO-uitsluitingen). Kies bij twijfel voor het handmatig kopiëren van het AI-blok.
Cache en prestaties
- PSR-6-cache op de pool
cache.objectvan Shopware, getagd metdatafirefly_llms_aeo. - Sleutels per sales channel en taal: elke combinatie heeft haar eigen invoer.
- Instelbare TTL (standaard 3600 s).
- Ongeldig maken: knop in de admin (per kanaal of globaal), commando
warm --force, of natuurlijke vervaltijd. - Compatibel met een geclusterde cache (Redis): het ongeldig maken op tags werkt op alle adapters die tags ondersteunen.
Probleemoplossing
De endpoints geven een 404 terug
- Controleer of de plugin daadwerkelijk geactiveerd is (niet alleen geïnstalleerd).
- Leeg de HTTP-cache en de applicatiecache:
bin/console cache:clear. - Gebruikt u een reverse proxy of CDN, leeg die dan ook.
Fout “Attempted to call an undefined method named getHeader” op de navigatiepagina’s
Bug opgelost in versie 1.0.1: op sommige Shopware 6.7-installaties biedt NavigationPage geen getHeader(). Werk bij naar 1.0.1 (defensieve extractie van de actieve categorie). Als u al op 1.0.1 zit en de fout blijft optreden, leeg dan de PHP-opcodecache (opcache_reset of PHP-FPM herstarten).
De adminmodule verschijnt niet onder Marketing
Compileer de administratie-assets (zie Installatie) en forceer daarna het herladen van de browser (Ctrl+Shift+R).
Het llms.txt is leeg of onvolledig
- Controleer de schakelaars voor het opnemen van CMS-pagina’s, categorieën, merken en producten in de kaart “llms.txt”.
- Controleer of de productlimiet niet op 0 staat.
- Controleer het veld
datafirefly_aeo_excludeop de ontbrekende entiteiten. - Maak de cache ongeldig en herlaad daarna.
De JSON-LD verschijnt niet in de broncode
- Controleer of “Module activeren” en de Schema.org-schakelaars actief zijn voor het juiste sales channel.
- Als uw thema
storefront/layout/meta.html.twigoverschrijft zonder{{ parent() }}op het betreffende block, gaat de invoeging verloren: herstel de aanroep van de parent.
Changelog
1.0.1, 21-05-2026
- Correctie: defensieve extractie van de actieve categorie op de navigatiepagina’s (fout
getHeader()op sommige 6.7-installaties).
1.0.0, 21-05-2026
- Eerste versie: llms.txt en llms-full.txt, 6 JSON-LD-schema’s, robots-ai.txt (9 bots), aangepaste AEO-velden, adminmodule in Vue 3, 2 CLI-commando’s, geplande taak, snippets FR/EN/DE.