Stel je voor dat iemand aan ChatGPT vraagt: "Wat zijn de beste fietsendragers voor een grote gezinsauto?" ChatGPT heeft honderden potentiële bronnen om uit te kiezen. Jouw webshop heeft een complete categorie "Fietsendragers" met 47 producten. Maar wordt jouw pagina geciteerd?
Waarschijnlijk niet. Niet omdat jouw producten slecht zijn, maar omdat jouw categoriepagina geen antwoord geeft op de vraag. Het is een grid van producten met een titel en misschien een zin tekst. Nuttig voor bladeren, waardeloos voor AI.
Dat gaat veranderen. In dit artikel leer je precies hoe je categoriepagina's transformeert naar AI-citeerbare kennisbronnen — zonder je design aan te tasten en zonder kilometers extra tekst te schrijven.
Waarom AI categoriepagina's negeert
AI-modellen zoals ChatGPT, Perplexity en Google's AI Overviews werken als vraag-antwoord machines. Ze zoeken naar pagina's die expliciet een vraag beantwoorden. Een typische categoriepagina heeft drie structurele problemen:
Probleem 1: Geen definitie
De meeste categoriepagina's starten direct met een productgrid. Er staat nergens: "Fietsendragers zijn constructies die je op of aan je auto monteert om fietsen veilig te vervoeren." Zonder definitie weet AI niet wat deze categorie is of waarom hij relevant is voor een vraag.
Probleem 2: Geen keuzecriteria
AI-vragen zijn beslissingsvragen: "Wat is het beste product voor mijn situatie?" Categoriepagina's geven geen antwoord op: Wanneer kies je voor dakdrager vs. trekhaak? Hoeveel gewicht kan een model dragen? Welk type past bij welk automodel? Dit zijn precies de vragen die AI-gebruikers stellen.
Probleem 3: Geen structured data
Zonder CollectionPage en ItemList schema weet een AI-crawler niet dat dit een curated verzameling is met relaties tussen de items. De pagina wordt behandeld als willekeurige content, niet als een gestructureerde kennisbron.
De kern van het probleem: Een categoriepagina die ontworpen is voor bladeren, is niet ontworpen voor AI. Je hebt beide nodig. Het goede nieuws: de aanpassingen zijn minimaal en tasten je conversie niet aan.
De 4 elementen van een AI-citeerbare categoriepagina
Element 1: De definitie-paragraaf (100-150 woorden)
Voeg boven de productgrid een introductietekst toe die drie vragen beantwoordt:
- Wat is dit? — Een heldere definitie van de productcategorie
- Voor wie? — Doelgroep en gebruik-scenario's
- Wanneer kies je dit? — Situaties en behoeften die deze categorie aanpakt
"Bekijk ons uitgebreide aanbod fietsendragers. Met onze ruime keuze vind je altijd de perfecte fietsendrager voor jouw situatie."
"Fietsendragers zijn laadsystemen waarmee je 1-5 fietsen veilig op of aan je auto vervoert. Er zijn drie hoofdtypen: dakdragers (geschikt voor elke auto, max. 15-20 kg per fiets), trekhaakdragers (meest stabiel, vereist trekhaak) en achterklepdragers (geen montage nodig, max. 2-3 fietsen). De keuze hangt af van je auto, fietsgewicht en gebruiksfrequentie."
Element 2: Keuzecriteria-sectie
Na de definitie: een korte sectie met de 3-5 belangrijkste keuzecriteria voor deze categorie. Dit is het type content dat AI letterlijk overneemt bij beslissingsvragen.
Structuur per criterium: [Criterium] — [Uitleg in 1-2 zinnen met concrete waarden].
Voorbeeld voor categorie "Staande bureaus":
- Hoogtebereik — Kies minimaal 60-125 cm. Voor mensen boven 1.90 m: minimaal 70-135 cm.
- Tafelblad breedte — 120 cm voor één monitor, 160 cm voor dual-setup, 200 cm voor uitgebreide werkplekken.
- Motortype — Enkelvoudige motor: stiller, goedkoper. Dubbele motor: sneller (3 cm/s vs. 5 cm/s), geschikt voor zware setups (+25 kg).
Element 3: FAQ-blok met 3-5 vragen
Voeg na de keuzecriteria een klein FAQ-blok toe. Dit zijn de vragen die AI-gebruikers stellen vóórdat ze een product kopen. Maak ze specifiek en geef concrete antwoorden.
Goede FAQ-vragen voor een categoriepagina:
- "Wat is het verschil tussen type A en type B?"
- "Welk [product type] past bij [specifieke situatie]?"
- "Hoeveel kost een goede [categorie] gemiddeld?"
- "Wat moet je checken bij het kopen van een [product]?"
Element 4: CollectionPage + ItemList schema
Structured data vertelt AI-crawlers expliciet: dit is een curated verzameling met individuele items. Combineer CollectionPage met een ItemList van de top-producten (max. 10-15 items voor de schema, niet de volledige catalogus).
CollectionPage schema: Complete implementatie
Hieronder het volledige JSON-LD schema voor een categoriepagina. Implementeer dit in de <head> van elke categoriepagina.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "CollectionPage",
"@id": "https://jouwshop.nl/fietsendragers/",
"name": "Fietsendragers",
"description": "Curated collectie fietsendragers voor 1-5 fietsen. Dakdragers, trekhaakdragers en achterklepdragers van topmerken.",
"url": "https://jouwshop.nl/fietsendragers/",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://jouwshop.nl/" },
{ "@type": "ListItem", "position": 2, "name": "Fietsendragers", "item": "https://jouwshop.nl/fietsendragers/" }
]
},
"mainEntity": {
"@id": "https://jouwshop.nl/fietsendragers/#itemlist"
}
},
{
"@type": "ItemList",
"@id": "https://jouwshop.nl/fietsendragers/#itemlist",
"name": "Fietsendragers Topproducten",
"numberOfItems": 47,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://jouwshop.nl/fietsendragers/thule-velocompact-927.html",
"name": "Thule VeloCompact 927 — 3 fietsen, max. 45 kg, trekhaak"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://jouwshop.nl/fietsendragers/yakima-fullswing-4.html",
"name": "Yakima FullSwing 4 — 4 fietsen, kantelbaar, trekhaak"
},
{
"@type": "ListItem",
"position": 3,
"url": "https://jouwshop.nl/fietsendragers/thule-proride-598.html",
"name": "Thule ProRide 598 — 1 fiets, dakdrager, max. 20 kg"
}
]
}
]
}
Platform implementaties
| Platform | Locatie | Methode | Dynamisch |
|---|---|---|---|
| Shopware 6 | category.html.twig | {% block structured_data %} met Twig-variabelen | Ja |
| WooCommerce | functions.php | woocommerce_archive_description hook | Ja |
| Shopify | collection.liquid | script-tag met Liquid-variabelen | Ja |
| Magento 2 | catalog/category/view.phtml | Block via layout XML + PHTML | Gedeeltelijk |
| Handmatig | HTML <head> | Statisch JSON-LD per pagina | Nee |
Shopware 6: Twig implementatie
{# category.html.twig #}
{% block structured_data %}
{{ parent() }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "CollectionPage",
"name": "{{ page.category.name | e('js') }}",
"description": "{{ page.category.description | striptags | e('js') | slice(0, 200) }}",
"url": "{{ seoUrl('frontend.navigation.page', { navigationId: page.category.id }) | absolute_url }}",
"mainEntity": {
"@id": "#itemlist-{{ page.category.id }}"
}
},
{
"@type": "ItemList",
"@id": "#itemlist-{{ page.category.id }}",
"name": "{{ page.category.name | e('js') }} — Producten",
"numberOfItems": {{ page.listing.total }},
"itemListElement": [
{% for product in page.listing.elements | slice(0, 10) %}
{
"@type": "ListItem",
"position": {{ loop.index }},
"url": "{{ seoUrl('frontend.detail.page', { productId: product.id }) | absolute_url }}",
"name": "{{ product.name | e('js') }}{% if product.description %} — {{ product.description | striptags | e('js') | slice(0, 80) }}{% endif %}"
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
]
}
</script>
{% endblock %}
WooCommerce: PHP implementatie
// functions.php
add_action('woocommerce_archive_description', 'geo_category_schema', 5);
function geo_category_schema() {
if (!is_product_category()) return;
$term = get_queried_object();
$shop_url = get_term_link($term);
$products = wc_get_products([
'category' => [$term->slug],
'limit' => 10,
'status' => 'publish',
'orderby' => 'popularity',
]);
$items = [];
foreach ($products as $i => $product) {
$items[] = [
'@type' => 'ListItem',
'position' => $i + 1,
'url' => get_permalink($product->get_id()),
'name' => $product->get_name() . ' — ' . wp_trim_words($product->get_short_description(), 10),
];
}
$schema = [
'@context' => 'https://schema.org',
'@graph' => [
[
'@type' => 'CollectionPage',
'name' => $term->name,
'description' => wp_strip_all_tags($term->description),
'url' => $shop_url,
'mainEntity' => ['@id' => $shop_url . '#itemlist'],
],
[
'@type' => 'ItemList',
'@id' => $shop_url . '#itemlist',
'name' => $term->name . ' — Producten',
'numberOfItems' => $term->count,
'itemListElement' => $items,
],
],
];
echo '<script type="application/ld+json">' . wp_json_encode($schema, JSON_UNESCAPED_UNICODE) . '</script>';
}
Vergelijkende content: de sleutel tot "beste X voor Y"
De meest waardevolle AI-citaties voor webshops komen van "beste X voor Y"-queries:
- "Beste fietsendrager voor een SUV met trekhaak"
- "Goedkoopste staand bureau voor thuiswerker met beperkt budget"
- "Beste robotmaaier voor een tuin van 500m² met obstakels"
Om geciteerd te worden bij dit type vragen, moet je categoriepagina expliciet de use-cases beschrijven. Een simpele keuzehulp-tabel werkt perfect:
| Als je... | Dan kies je... | Budget |
|---|---|---|
| 3+ fietsen vervoert + trekhaak hebt | Trekhaakdrager (platform) | €200-450 |
| Geen trekhaak + SUV/stationwagen rijdt | Dakdrager (frame) | €80-200 p.p. |
| Incidenteel 1-2 fietsen vervoert | Achterklepdrager | €50-150 |
| E-bikes vervoert (>20 kg per fiets) | Trekhaakdrager met E-bike steun | €300-700 |
Deze tabel is precies het format dat AI-modellen overnemen. Het beantwoordt de beslissingsvraag, bevat concrete waarden, en heeft duidelijke situatie-product-koppelingen.
Let op: Vergelijkende content moet eerlijk zijn. Als AI een verkeerde aanbeveling doet op basis van jouw content en een gebruiker heeft een slechte ervaring, schaadt dat je merk. Wees accuraat, niet alleen overtuigend.
Prioriteitstabel: Welke categoriepagina's eerst?
Je hebt waarschijnlijk tientallen of honderden categoriepagina's. Optimaliseer in deze volgorde:
| Prioriteit | Categorie type | Waarom | GEO impact |
|---|---|---|---|
| 1 | Top-5 best verkochte categorieën | Al bewezen vraag + meest AI-zoekopdrachten | Hoog |
| 2 | Categorieën met veel "vergelijkingsvragen" | AI zoekt keuzehulp — perfect format | Hoog |
| 3 | Seizoensgebonden categorieën | Hoog zoekvolume op specifiek moment | Middel |
| 4 | Niche-categorieën met weinig concurrentie | Makkelijker te domineren in AI-antwoorden | Middel |
| 5 | Overige categorieën | Lagere AI-frequentie voor deze queries | Laag |
Interne linkstructuur voor AI-navigatie
AI-crawlers volgen interne links anders dan Google. Ze zoeken naar contextuele links — links die in de lopende tekst staan en de relatie tussen pagina's uitleggen. Twee patronen die werken:
Patroon 1: Subcategorie-verwijzingen in de tekst
In de definitie-paragraaf: "Binnen dakdragers onderscheiden we frame-dakdragers (fietsen horizontaal) en wiel-dakdragers (fietsen rechtop)."
Dit vertelt AI: er bestaan subcategorieën, en hier is waar ze te vinden zijn. Het bouwt een kennisgraaf van je categoriestructuur.
Patroon 2: "Top 3 in deze categorie"-sectie
Een klein blok met de 3 best verkochte producten + 1-regel beschrijving, gelinkt naar de productpagina's. Dit versterkt de ItemList in je schema met tekst-context.
Veelgemaakte fouten bij categoriepagina-optimalisatie
| Fout | Probleem | Fix |
|---|---|---|
| Tekst verstopt achter "Lees meer" knop | AI laadt geen JavaScript — tekst wordt niet gecrawld | Toon volledige tekst in HTML, geen JS-toggle |
| Generieke tekst voor alle categorieën | AI herkent duplicate content, verliest vertrouwen in bron | Unieke definitie + keuzecriteria per categorie |
| CollectionPage zonder ItemList | Schema is onvolledig — AI mist de producten-relatie | Altijd CollectionPage + ItemList combineren |
| FAQ enkel als accordeon (JS) | FAQ-content geladen via JavaScript = niet indexeerbaar voor AI | FAQ-content statisch in HTML + FAQPage JSON-LD |
| Pagina-nummering zonder canonical | AI indexeert pagina 2, 3... als losse pagina's zonder context | rel="canonical" naar pagina 1 + schema enkel op pagina 1 |
| Lege beschrijving in schema | description="" is erger dan geen schema — signaleert slordigheid | Altijd minimaal 50 tekens in description-veld |
Voor/na voorbeeld: Complete categoriepagina
- Paginatitel: "Fietsendragers"
- Subtitel: "Alle fietsendragers"
- Tekst: "Bekijk ons grote assortiment fietsendragers."
- Productgrid (47 items)
- Geen schema
- Geen FAQ
- GEO Score: 12/100
- Paginatitel: "Fietsendragers — Dakdrager, Trekhaak & Achterklepdrager"
- Definitie-paragraaf: 120 woorden met 3 types uitgelegd
- Keuzehulp-tabel: 4 situaties → aanbeveling + budget
- Productgrid (47 items, onveranderd)
- FAQ-blok: 3 vragen + FAQPage JSON-LD
- CollectionPage + ItemList schema (top 10)
- GEO Score: 71/100
Tijdsinvestering: Bovenstaande optimalisatie kost voor een gemiddelde categoriepagina 45-90 minuten. Voor je top-5 categorieën is dat 4-8 uur totaal — een eenmalige investering die permanent werkt.
4-weekse implementatie roadmap
Audit & Prioritering
Scan alle categoriepagina's (GEO Tool). Identificeer top-10 categorieën op basis van verkoop + zoekvolume. Check welke geen tekst of schema hebben.
Schema Implementatie
Implementeer CollectionPage + ItemList schema voor alle categoriepagina's (dynamisch via Twig/PHP/Liquid). Valideer in Google Rich Results Test.
Content Top-5 Categorieën
Schrijf definitie-paragraaf + keuzehulp-tabel + FAQ voor je 5 best verkochte categorieën. Schema afstemmen op content.
Meten & Uitrollen
Controleer GA4 op AI-traffic naar geciteerde categorieën. Rol optimalisatie uit naar resterende categorieën. Stel kwartaalreminder in voor updates.
Snelle checklist per categoriepagina
- Definitie-paragraaf aanwezig (100-150 woorden, statisch in HTML)
- Keuzecriteria-sectie met concrete waarden
- Keuzehulp-tabel (situatie → aanbeveling → budget)
- FAQ-blok met 3-5 vragen (statisch HTML, niet JS-toggle)
- FAQPage JSON-LD op de pagina
- CollectionPage schema in <head>
- ItemList schema met top-10 producten
- Breadcrumb schema aanwezig
- rel="canonical" op pagina 1 bij paginering
- Subcategorie-links in lopende tekst
Veelgestelde vragen
Check je categoriepagina's op GEO-score
De GEO Tool analyseert alle categoriepagina's van jouw webshop automatisch: schema aanwezig, content kwaliteit, FAQ-dekking en structured data. Gratis scan, geen registratie.
Gratis GEO Scan starten →