Crawl-delay on msnbot can override bingbot rules in robots.txt
What this page documents This page documents an observed robots.txt behaviour in Bing crawling based on server log…
Briljant
Hoe je met data, embeddings en een beetje Python je content eindelijk opschoont
Na positieve reacties op mijn LinkedIn post deel ik hier mijn eerste experiment met Python en embeddings om content te analyseren. Deze methode combineert harde data (verkeer, conversies) met inhoudelijke relevantie via openAI om te bepalen welke content waardevol is en wat weg kan. Belangrijk: ik ben zelf een Python-beginner en dit is vooral bedoeld als inspiratie. Er zijn vast betere methodes, maar deze werkt voor mij. Zie het als een startpunt om je eigen aanpak te ontwikkelen.
We kennen ze allemaal: die eindeloze stroom blogs, FAQ’s en how-to’s, vooral geschreven om te “ranken” en omdat we allemaal aan de EEAT moeten! We schreven (schrijven) echt nog veel te veel voor machines; niet omdat iemand écht zat te wachten op het antwoord, maar omdat een keywordtool zei dat er volume op zat. En ja, dan gaan de SEO’s rennen.
Het resultaat? Talloze contentsecties, blogs en kennisbanken die uitpuilen van digitale bagger. Honderden pagina’s waar niemand blij van wordt. Niet de bezoeker, niet de klant, en zeker Google (en andere Search Engine’s) niet meer anno al een tijdje.
We weten stiekem allemaal dat het grootste deel van die content compleet irrelevant is. Maar ja, opschonen… Dat schuiven we voor ons uit. Want waar begin je? En hoe bepaal je wat weg kan, zonder nattevingerwerk? En weten we wel echt zeker dat het niets bijdraagt? We zijn ook gewoon bang om kwijt te raken wat we hebben als we iets ouds aanpassen.
We zijn een tijd geleden begonnen met het aanpakken van deze low quality content. en dat wil eigenlijk zeggen, we zijn gaan kijken wat nou wel werkt en wat niet, wat is Low quality uberhaupt? Eerst deden we dat handmatig – goed werk kost nou eenmaal tijd, en het is ook nog eens erg “satis” (ja ik probeer ook jong van taal te blijven) om alles handmatig te valideren. Maar zodra je honderd(en) pagina’s moet nalopen, weet je: dit is niet schaalbaar.
Daarom hebben we het omgedraaid. Niet meer denken vanuit “is deze tekst goed?”, maar vanuit:
En dat bepaal je niet alleen op gevoel, maar vooral op basis van data én een schaalbare manier om inhoudelijke relevantie te meten.
Voordat je ook maar nadenkt over verwijderen of aanpassen, moet je één ding helder hebben: wat staat er allemaal live, en wat doet het? En om daar achter te komen geen sprookjes of luchtkastelen, maar gewoon echt analyseren. Data vergaren en dat doet deze dino echt nog steeds in Excel.
We hebben daarom alle content bij elkaar geharkt in een overzicht. Maar niet alleen URL’s en titels, ook:
Het resultaat is geen mooie grafiek of dashboard, maar een monstrueuze sheet vol data en feiten. Alles samengebracht in een draaitabel, waarin je met wat slimme Excel-indexformules elk onderwerp kunt terugvinden, analyseren en onderbrengen in overzichtelijke draaitabellen. Zo zie je wat echt presteert, wat achterblijft, en wat alleen maar doet alsof het belangrijk is.
Je hebt nu een mooie set data. Je weet welke pagina’s/secties of onderwerpen verkeer krijgen, welke indexeerbaar zijn, en welke gewoon vulling zijn zonder enige prestatie. Daar kun je al keuzes op maken, maar misschien is de content in potentie juist wel goed maar heeft het aanpassing nodig. Je weet dus na die analyse nog steeds niet of die content ook inhoudelijk iets toevoegt.
En nee, daar heb je geen Yoast-bolletje of keyword dichtheid of minimaal aantal woorden of weetikveel dan ook voor nodig.
Wat je wél nodig hebt, is een manier om te meten of een pagina antwoord geeft op een vraag van je bezoeker. Niet of een bepaald zoekwoord erin voorkomt, maar of de inhoud aansluit bij de bedoeling achter die vraag. Dat kan aan de ene kant door handmatig de recordings uit Mouseflow of Hotjar te raadplegen, maar ook dat is niet schaalbaar.
Dat is waar embeddings in beeld komen.
Klinkt spannend, maar het is eigenlijk heel simpel.
Embeddings zorgen ervoor dat je tekst niet meer als losse woorden ziet, maar als een getallenreeks die de betekenis van die tekst vastlegt. Een soort coördinaat in een digitale ruimte waar teksten die inhoudelijk op elkaar lijken, automatisch dicht bij elkaar liggen.
Dus stel, je hebt de vraag:
“Hoe was ik mijn hond op de juiste manier?”
En je hebt een blog met de titel:
“Tips voor het wassen van een hond.”
Met embeddings kun je berekenen hoe dicht die twee bij elkaar liggen qua betekenis. Dat gaat veel verder dan simpel keyword-matchen. Je ziet of de content écht antwoord geeft op de vraag, ook als de exacte woorden anders zijn (in dit voorbeeld gat het om de hele tekst achter de titel, niet alleen om het matchen van de titel dus).
Je laat Python voor elke vraag en elke contentpagina een embedding berekenen, en daarna vergelijk je die met elkaar. De uitkomst is een relevantie-score. Hoe hoger die score, hoe beter jouw content aansluit op de vraag.
Je voegt die score toe aan je bestaande data (je Excel-lijst). Zo krijg je een compleet beeld:
| URL | Vertoningen | CTR | Keywords | Sessies | Bezoekers | Transacties | Relevantie-score |
|---|---|---|---|---|---|---|---|
| /blog/hond-wassen | 1200 | 3.2% | 15 | 180 | 251 | 5 | 0.89 |
| /blog/hoe-vaak-wassen | 30 | 1.1% | 2 | 3 | 20 | 0 | 0.22 |
| /faq/wassen-hond | 0 | 0% | 1 | 0 | 3 | 0 | 0.91 |
Nu wordt het interessant. Maar onthoud: deze data is input voor beslissingen, niet de beslissing zelf:
Ja, dit kun je heel lang vooruit blijven duwen maar het is een kwestie van gewoon doen. Dit is hoe je jouw content kritisch tegen het licht houdt met data, embeddings en een beetje Python.
Begin met een volledige export van je content. Nee, niet alleen de URL’s, maar álle relevante data:
Gooi alles in één overzicht. Excel is prima – maak hier je centrale dashboard van. Elke regel is een URL, elke kolom een belangrijke metric. Het hoeft niet mooi, het moet compleet zijn.
Niet verzonnen SEO-zoekwoorden, maar vragen die mensen daadwerkelijk stellen:
Doel: een lijst met échte vragen waarop jouw content antwoord zou moeten geven.
Hier komt de magie:
Ik deel straks een voorbeeldscript waarmee je zo aan de slag kunt. Maar let op, dit is MIJN knutselwerk en ik ben GEEN programmeur.
Voeg die relevantie-scores toe aan je Excel-lijst. Nu heb je per pagina:
Dit is waar het overzicht ontstaat. Geen discussies meer over gevoel, maar harde feiten als basis voor een teambeslissing. Nogmaals de data dient als input, niet als reden.
Gebruik een scorecard-systeem waarbij elke factor bijdraagt aan de totale waarde van een pagina. Let op! Dit is een voorbeeld, jouw uiteindelijke beslissing is case-afhankelijk en dient ook samengenomen te worden met het gehele team:
| Factor | Weging | Uitleg |
|---|---|---|
| Verkeer (alle kanalen) | 25% | Organisch, betaald, direct, social, referral – diversiteit is positief |
| Conversiewaarde | 25% | Directe omzet, leads, micro-conversies |
| SEO prestaties | 15% | Rankings, CTR, vertoningen, aantal keywords |
| Content relevantie | 15% | Embedding-score, bounce rate, time on page |
| Technische gezondheid | 10% | Crawlability, Core Web Vitals, mobile-ready |
| Strategische waarde | 10% | Past bij doelgroep, ondersteunt customer journey, merkpositionering |
Deze methode zorgt ervoor dat geen enkele metric dominant is, maar dat de gezamenlijke waarde van content bepaalt wat je ermee doet. Gebruik de data als hulpmiddel, niet als eindoordeel.
Opschonen is geen eenmalige actie. Plan dit periodiek in. Nu je het proces deels hebt geautomatiseerd, is het makkelijk om regelmatig te checken wat nog waardevol is.
En onthoud: less is more. Liever 100 goede pagina’s dan 500 die alleen maar in de weg staan.
Nee, je hoeft écht geen developer te zijn. Je moet gewoon even weten welke stappen je zet. Met deze uitleg draai je binnen no-time je eigen contentanalyse.
Ik ben zelf pas net begonnen met Python. Er zijn waarschijnlijk veel betere, snellere en slimmere methodes om dit aan te pakken. Zie dit vooral als een eerste opstap en inspiratie. Zoals met alles geldt: er zijn duizend wegen naar Rome. Gebruik wat voor jou werkt en schroom niet om het aan te passen!
Eerst even wat huiswerk:
Klaar? Mooi.
Maak op je computer een duidelijke map. Bijvoorbeeld zoiets:
/content-analyse/
├── vragen.csv (je klantvragen uit AlsoAsked of GSC)
├── content.csv (je huidige website-content)
├── analyse_script.py (dit is straks jouw Python script)
└── output/ (hier komt straks je resultaat)
Tip: Heb je HTML-bestanden of onhandige formats? Gebruik een eenvoudige editor als Notepad++ (gratis download) met een HTML-plugin. Daarmee maak je snel schoon leesbare teksten voor je analyse.
Ga naar platform.openai.com en maak een betaald account aan. Ja, helaas niet gratis, maar ook niet duur (denk aan paar euro per analyse).
Hieronder de basiscode van het Python-script (anoniem en compact). Maak in VS Code het bestand analyse_script.py aan en plak dit erin:
import pandas as pd
import openai
import numpy as np
import os
from sklearn.metrics.pairwise import cosine_similarity
# Vul hier je eigen API key in
openai.api_key = "JOUW_API_KEY_HIER" # Beter: gebruik os.getenv('OPENAI_API_KEY')
# Laad je bestanden
try:
vragen_df = pd.read_csv('vragen.csv', encoding='utf-8')
content_df = pd.read_csv('content.csv', encoding='utf-8')
except FileNotFoundError as e:
print(f"Fout: Bestand niet gevonden - {e}")
exit()
# Functie om embeddings op te halen
def get_embedding(text):
response = openai.Embedding.create(
input=text,
model='text-embedding-ada-002'
)
return response['data'][0]['embedding']
# Maak embeddings
vragen_df['embedding'] = vragen_df['vraag'].apply(get_embedding)
content_df['embedding'] = content_df['content'].apply(get_embedding)
# Bereken relevantie
resultaten = []
for _, vraag_row in vragen_df.iterrows():
for _, content_row in content_df.iterrows():
score = cosine_similarity(
[vraag_row['embedding']], [content_row['embedding']]
)[0][0]
resultaten.append({
'vraag': vraag_row['vraag'],
'pagina': content_row['url'],
'score': score
})
# Opslaan als CSV
resultaten_df = pd.DataFrame(resultaten)
resultaten_df.to_csv('output/resultaten.csv', index=False)
print("Klaar! Check je 'output/resultaten.csv'.")
Belangrijk:
Open in VS Code onderaan de terminal (Ctrl+`) en voer uit:
pip install openai pandas numpy scikit-learn
Daarna start je het script met:
python analyse_script.py
Je ziet nu vanzelf hoe Python voor je aan de slag gaat.
Zie je errors en kom je er niet uit? Gewoon even aan ChatGPT vragen:
“Ik krijg deze foutmelding [kopieer de fout]. Kun je me helpen?”
Serieus, werkt altijd.
Je hebt nu in /output/resultaten.csv een heldere lijst:
| vraag | pagina | score |
|---|---|---|
| Hoe was ik een hond? | /blog/hond-wassen | 0.89 |
| Hoe vaak was je een kat? | /blog/hoe-vaak-wassen | 0.45 |
Zo zie je direct welke pagina’s écht antwoorden op je klantvragen, en welke niet.
Ik heb nu uitgelegd hoe je content snel en slim kunt beoordelen op basis van data én inhoudelijke relevantie. Werkt prima, maar ik wil nog even wat valkuilen en tips delen uit eigen ervaring:
Kortom: cijfers én gezond verstand samen gebruiken, en belangrijke beslissingen altijd valideren met je team.
Contentmarketing draait niet om zo veel mogelijk publiceren. Het gaat om wat je toevoegt aan het leven van je klant.
Met deze aanpak kun je concreet zien wat weg kan, wat beter moet, en waar je niets aan hoeft te doen. Je houdt content over die ertoe doet, en je maakt je site beter voor je klant. En ja, daar worden zoekmachines óók blij van.
Stop met content produceren “voor de SEO”. Begin met content produceren omdat iemand er daadwerkelijk wat aan heeft.
Persoonlijke noot: Ik deel dit als inspiratie en leermoment. Ik ben geen LLM-expert of developer, maar een praktijkprofessional die graag experimenteert. Er zijn ongetwijfeld betere manieren om dit aan te pakken – laat me weten als jij die kent!
What this page documents This page documents an observed robots.txt behaviour in Bing crawling based on server log…
Elke paar maanden lijkt onze industrie weer een nieuwe hype, shortcut, afkorting, monetizationmodel uit te vinden waar je…
Er is geen samenvatting, omdat dit een beschermd bericht is.