Hoe deze controle werkt
Scanaris zoekt in de HTML van je pagina naar alle <script type="application/ld+json">-tags, probeert elke als JSON te parsen en controleert of het resultaat @context of @type bevat, wat een schema.org-blok onderscheidt van willekeurige JSON. Eén geldig blok is genoeg om geen bevinding te krijgen. Is er geen, of zijn de aanwezige niet te parsen (een komma te veel, een niet-gesloten aanhalingsteken), dan opent hij een bevinding met lage ernst. Hij beoordeelt niet of het gekozen type passend is of of er eigenschappen ontbreken; alleen of er iets is dat Google en AI-assistenten kunnen lezen.
Waarom dit belangrijk is
Gestructureerde data is de manier om een machine ondubbelzinnig te vertellen wat je pagina is: dit is een organisatie met deze naam en dit logo, dit is een artikel geschreven door deze persoon op deze datum, dit is een product voor deze prijs met deze beoordelingen. Google gebruikt het voor rich results (sterren, prijzen, uitklapbare vragen, kruimelpaden) en om entiteiten te begrijpen. AI-assistenten gebruiken het voor hetzelfde maar met meer gewicht, omdat het hun het interpreteren van de HTML bespaart: een pagina met goed gedefinieerde Article en Organization wordt eerder geciteerd met correcte bronvermelding dan een waar het model moet raden wie hem schreef. Het is lage ernst omdat het ontbreken je uit geen enkele index haalt; het maakt je alleen moeilijker te begrijpen.
Hoe je het oplost
Op de homepage minimaal Organization en WebSite:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://jouwdomein.nl/#org",
"name": "Jouw bedrijf",
"url": "https://jouwdomein.nl/",
"logo": "https://jouwdomein.nl/logo.png",
"sameAs": ["https://github.com/jouwbedrijf", "https://www.linkedin.com/company/jouwbedrijf"]
},
{
"@type": "WebSite",
"url": "https://jouwdomein.nl/",
"name": "Jouw bedrijf",
"publisher": { "@id": "https://jouwdomein.nl/#org" }
}
]
}
</script>
- Per paginatype:
ArticleofBlogPostingbij berichten (metauthor,datePublished,dateModified);Productmetoffersop productpagina's;SoftwareApplicationals je software verkoopt;FAQPagewaar echte vragen en antwoorden staan;BreadcrumbListvoor kruimelpaden. - Nuxt:
useHead({ script: [{ type: 'application/ld+json', innerHTML: JSON.stringify(data) }] })op elke pagina, of de schema.org-module die het uit componenten genereert. - Next.js: een
<script type="application/ld+json">-tag in de layout of pagina met de geserialiseerde JSON. - WordPress: Yoast en Rank Math genereren
Organization,WebSite,Articleen kruimelpaden zonder code aan te raken.
De data moet overeenkomen met wat op de pagina zichtbaar is: Google bestraft het markeren van beoordelingen of prijzen die niet bestaan. En de sameAs naar je openbare profielen is wat je entiteit verbindt met wat de modellen al over je weten uit andere bronnen.
Controleer of het opgelost is
curl -s https://jouwdomein.nl | grep -oE '<script type="application/ld\+json">[^<]*' | head -c 600
Je JSON moet eruit komen. Plak hem daarna in Googles test voor rich results of de schema.org-validator: beide vertellen je of hij syntactisch correct is en welke aanbevolen eigenschappen ontbreken.
Veelgestelde vragen
JSON-LD of microdata in de HTML?
JSON-LD. Het is het formaat dat Google aanbeveelt, het staat in een apart blok zonder de template te vervuilen en het is vanuit elk framework het makkelijkst te genereren.
Ik heb FAQPage toegevoegd en Google toont de uitklapbare vragen niet.
Sinds 2023 toont Google dat rich result alleen voor overheids- en gezondheidssites. De markup blijft nuttig zodat AI-assistenten je vragen en antwoorden kunnen extraheren, en daarvoor meet deze controle het. Waarom sommige sites geciteerd worden en andere niet, staat in gestructureerde data en AI-citaties.
Vervangt dit de titel en beschrijving?
Nee, het vult ze aan. De titel en meta description blijven wat Google toont; SEO-metadata meet ze. Gestructureerde data is wat machines daarbovenop begrijpen.