Een nieuw CMS. En dan meteen de vraag waar het altijd op vastloopt: hoe krijgen we alles wat er nu staat, daar netjes in?
Meestal wordt dat handwerk. Iemand zet twee browservensters naast elkaar, kopieert een pagina, plakt hem, zoekt de afbeelding erbij, tikt de SEO-titel over. Keer driehonderd. Na twee weken zit diegene op pagina negentig en is de kwaliteit al gezakt. De laatste honderd pagina's krijgen aantoonbaar minder aandacht dan de eerste tien.
En dan de dingen die niemand ziet gebeuren. Oude urls die verdwijnen zonder dat er een 301-redirect naar de nieuwe plek wijst. Interne links die naar een 404 gaan. Metadata die niet meeverhuist omdat het oude systeem die in een veld had staan dat het nieuwe niet kent. Je gaat live, je verkeer zakt, en je weet drie weken lang niet precies waarom.
Hoe het dan wel gaat, van begin tot eind.
Eerst verzamel je de urls, dan pas de tekst
Een migratie begint niet bij AI. Hij begint bij een lijst.
Je opent jouwsite.nl/sitemap.xml. Daar staat, als het goed is, elke pagina die je site zelf kent. Is er geen sitemap, dan laat je een crawler vanaf de homepage elke link volgen tot hij niets nieuws meer tegenkomt. De uitkomst is een lijst van bijvoorbeeld 340 urls.
Daarna haal je van elke url de HTML op. Eén verzoek per pagina, netjes achter elkaar, met een pauze ertussen zodat je je eigen server niet omver duwt. Dat is een script van dertig regels. Er komt geen AI aan te pas.
En daar loop je tegen het eerste echte probleem aan. Bij veel moderne sites krijg je met zo'n verzoek een vrijwel lege pagina terug: een skelet met een verwijzing naar een JavaScript-bestand, en verder niets. De tekst die je bezoeker ziet, wordt pas in de browser opgebouwd. Je scraper haalt het karkas op en mist de inhoud.
De oplossing is een headless browser: een echte browser zonder venster, die de pagina laadt, het JavaScript uitvoert en je daarna de opgebouwde HTML teruggeeft. Trager, want je start per pagina een browser op. Maar je krijgt wel wat de bezoeker krijgt.
Test dit op vijf pagina's voordat je er 340 doet. Een lege scrape van je hele site merk je anders pas als je al een week verder bent.
Het script dat je niet zelf hoeft te schrijven
Hier zit de verschuiving die de meeste ondernemers missen.
Vijf jaar geleden was dit verhaal onbruikbaar zonder programmeur. Een crawler bouwen, HTML uit elkaar peuteren, een headless browser aansturen: dat was werk voor iemand die dat kon. Dus belde je een partij die het deed, en die rekende dat script mee.
Nu schrijft AI dat script. Je beschrijft wat je wilt, je krijgt de crawler terug, je draait hem, hij klapt eruit op pagina zeven, je plakt de foutmelding terug en krijgt een werkende versie. Datzelfde geldt voor de scripts die de velden straks op hun plek zetten.
Je hoeft niet te kunnen programmeren. Je moet wel kunnen controleren of het klopt. Dat is een andere vaardigheid, en dat is de vaardigheid die telt.
Van één brok HTML naar losse velden
Nu pas begint het echte AI-werk: die opgehaalde HTML omzetten naar gestructureerde velden.
Een oude pagina is één brok opmaak waarin titel, intro, body, klantquote en call-to-action door elkaar staan. Een taalmodel leest dat en zet het uit elkaar in de velden die je nieuwe contentmodel kent. Kop hier, intro daar, quote in het quote-veld.
Datzelfde model vult de velden die vroeger leeg bleven. Alt-teksten bij afbeeldingen die er nooit waren. Meta-descriptions voor pagina's die die nooit kregen. En het maakt de redirect-tabel: oude url naast nieuwe url, honderden regels, in een uur in plaats van in een week.
Waar de oude tekst verouderd is, kan het model herschrijven. Let op dat woord: kan. Daar zit precies de valkuil.
Drie deuren naar het nieuwe CMS
Je hebt nu per pagina een net pakketje velden. Dat moet het nieuwe systeem in. Er zijn drie routes, en de volgorde is geen kwestie van smaak.
De API is de eerste keus. Sanity, Contentful, Strapi en WordPress hebben allemaal een interface waarmee je programmatisch pagina's aanmaakt. Je script stuurt 340 pagina's naar binnen en krijgt van elke pagina te horen of het gelukt is. Snel, herhaalbaar, en als er iets misgaat draai je hem opnieuw. Kan het via de API, dan doe je het via de API.
Een importer is de tweede. Sommige systemen slikken een CSV of een XML-bestand. Prima route, met één beperking: de importer bepaalt welke velden je mag vullen. Wat er niet in past, doe je alsnog met de hand.
Computer use is de derde, en pas als de andere twee dicht zitten. Soms heeft het nieuwe CMS geen bruikbare API, of zit de beheeromgeving op slot. Dan laat je een AI-agent de beheeromgeving letterlijk bedienen. Inloggen, klikken op "nieuwe pagina", de velden invullen, opslaan, door naar de volgende. Precies wat een stagiair zou doen, alleen klaagt hij niet en werkt hij door.
Wees eerlijk over wat dat is. Het is trager: een agent die klikt doet er seconden over waar een API milliseconden nodig heeft. En het is brozer. Verandert er een knop, of laadt een veld een halve seconde te traag, dan breekt de run. Je moet erbij blijven kijken.
Maar het werkt op systemen waar geen enkele API bestaat. En dat zijn er meer dan je denkt: oude branchepakketten, zelfgebouwde beheerschermen, dat ene CMS dat een neef in 2014 in elkaar heeft gezet. Voor die gevallen was handwerk tot voor kort het enige antwoord. Nu niet meer.
De valkuil is niet dat AI het niet kan, maar dat het te veel doet
Vraag een model om vierhonderd pagina's over te zetten en het doet er standaard iets bij. Het maakt de zin net wat vlotter. Het schrapt een alinea die het overbodig vond. Het vult een gat dat er stond met iets plausibels dat nergens vandaan komt.
Dat is fataal bij een migratie, want je weet niet meer welke pagina's je nog kunt vertrouwen. Eén pagina met een gehallucineerd garantietermijn of een prijs die nooit bestond, en je hebt een probleem dat groter is dan de tijdwinst.
Dus je vangt het af. Migreer eerst naar staging, nooit rechtstreeks naar live. Draai een diff tussen oud en nieuw op elke pagina, zodat elke wijziging in de tekst zichtbaar wordt in plaats van dat je erop moet vertrouwen. Trek een steekproef van dertig pagina's die een mens woord voor woord naast het origineel legt. En crawl je staging-site op 404's voordat je de dns omzet, niet erna.
Belangrijker nog: scheid de twee opdrachten. Migreren en herschrijven zijn verschillende klussen. Doe eerst een strikte, saaie, één-op-één overzetting waarbij het model niets mag verzinnen. Herschrijven doe je daarna, per pagina, bewust.
Het echte werk zit vóór de eerste pagina
En hier verandert er iets fundamenteels. Als het overzetten van een pagina bijna niets meer kost, is "hoe krijgen we alles over" niet langer de vraag. De vraag wordt: wat verdient het om mee te gaan?
De meeste MKB-sites die tien jaar meelopen dragen een staart mee. Nieuwsberichten uit 2019. Drie dienstpagina's die hetzelfde zeggen. Een vacature die al lang vervuld is. Bij handwerk migreer je die mee, want besluiten kost meer moeite dan kopiëren. Als kopiëren gratis wordt, is dat excuus weg.
Wat een mens houdt is dus niet het tikwerk. Het is het contentmodel bepalen, want een model dat de oude rommel netjes naboots levert een nieuwe site op met dezelfde rommel. Het is de knoop doorhakken over wat wél en niet meegaat. Het is de tone of voice bewaken. En het is de eindcontrole vóór livegang, waarbij een mens tekent voor wat er staat.
Stel je een installatiebedrijf in Woerden voor met achtentwintig man en 340 pagina's. Even meerekenen met ronde getallen, puur als illustratie: op handkracht is dat weken werk waarna iemand doodmoe is en de site precies hetzelfde is als hiervoor, alleen mooier. Met AI is het overzetten een fractie daarvan. Maar de winst zit niet in die uren. De winst zit erin dat de eigenaar nu tijd overhoudt om 340 terug te brengen naar 120 pagina's die kloppen.
Begin bij de lijst, niet bij het CMS
De eerste handeling is geen technische. Exporteer een lijst van alle url's van je huidige site, met per pagina het aantal bezoekers van het afgelopen jaar erbij. Ga die lijst langs met één vraag per regel: verdient deze pagina een plek op de nieuwe site?
Die lijst is je migratieplan. Zonder die lijst migreer je je rommel mee, alleen sneller dan vroeger.



