Over Gestructureerde Data

Wanneer zoekmachines zoals Google zoekresultaten laat zien, dan zie je soms dat sommige resultaten op een aparte manier worden getoond. Wanneer je bijvoorbeeld naar een film zoekt, dan worden ook gelijk de review-scores van RottenTomatoes getoond, wanneer je zoekt naar een muzikant dan zie je hun discografie, of je ziet de openingstijden wanneer je zoekt naar een winkel.

Tot voor kort ging ik er van uit dat deze informatie door bedrijven zelf wordt opgegeven door middel van hun Google Business account of iets dergelijks. En hoewel dat deels klopt, is er ook nog een andere manier waarop zoekmachines aan deze informatie kunnen komen; Getructureerde Data (Structured Data).

Wat is Gestructureerde Data?

Structured Data is eigenlijk niets meer dan een speciaal JSON object met een speciaal schema dat je ergens op de pagina plaatst. Dit object bevat inhoudelijke informatie over de desbetreffende pagina.

Dat ziet er ongeveer zo uit:

<head>
	... header informatie ...
	<script type="application/ld+json">
	{
		"@context": "https://schema.org",
		"@type": "WebSite",
		"@id": "https://mywebsite.com/#website",
		"url": "https://mywebsite.com",
		"name": "My Website - By Me"
	}
	</script>
</head>
... rest van pagina ...

Zoals je ziet, is het niets meer dan een script tag met het application/ld+json type. Verder moet de inhoud aan het gedeclareerde type voldoen. Op Schema.org kun je zien welke types er allemaal bestaan, en welke waardes vereist zijn.

Wat moet er in staan?

Structured data is bedoeld om extra informatie te geven over een webpagina. Als gevolg moet het JSON Object data bevatten over de informatie die daadwerkelijk op de pagina staat (zichtbaar voor de eindgebruiker).

Via een @id value kunnen de indexers de verschillende stukjes data aan elkaar relateren.

NB. De waarde van @id mag je zelf bepalen! Zolang je maar zeker bent dat het uniek is. Standaard is {url}/#{schema type} .

Voorbeeld

Mijn website is bedoeld als persoonlijke pagina. Op de homepagina op het basis URL zou ik bijvoorbeeld kunnen plaatsen:

{
	"@context": "https://schema.org",
	"@type": "WebSite",
	"@id": "https://simonmb.xyz/#website",
	"url": "https://simonmb.xyz",
	"name": "Peroonlijke website van Simon Meulenbeek",
	"description": "Mijn persoonlijke website met mijn schrijfsels, projecten en muziek"
	"owner": {
		"@type": "Person",
		"@id": "https://simonmb.xyz/#owner",
		"givenName": "Simon",
		"familyName": "Meulenbeek"
	}
}

Als ik vervolgens een contactpagina zou hebben met mijn adres en contact gegevens dan zou op die pagina staan:

{
	"@context": "https://schema.org",
	"@type": "ContactPage",
	"name": "Contact met Simon",
	"mainEntity": {
		"@id": "https://simonmb.xyz/#owner",
		"@type": "Person",
		"adress": {
			"@type": "PostalAddress",
			"addressCountry": "NL",
			"addressLocality": "Enschede"
		},
		"email": "myemail@email.com",
		"telephone": "+31612345678"
	}
}

Dus 2 belangrijke regels:

  • Data op de plek waar het zichtbaar is op de website
  • Gebruik de @id waarde om alles aan elkaar te koppelen.

N.B.: Dit is geen volledig voorbeeld. Voor een echte website zou je zoveel mogelijk informatie toevoegen dat het schema toelaat, zonder dingen te herhalen.