Blog

De dag dat mijn AI-team mijn site migreerde, en het certificaat dat twee uur dwarslag

Op de ochtend van 8 augustus was mijn website perfect. Gebouwd, getest, geverifieerd langs een checklist van 49 URL's. Niemand kon erbij.

Twee uur lang gaf www.bartknijnenberg.com elke bezoeker een TLS-handshake-fout. Niet omdat de migratie mislukte. Omdat er nog geen certificaat was uitgegeven, en geen van mijn 18 specialisten daar iets aan kon doen.

Dit is het verslag van die dag. Het is het eerlijkste beeld dat ik je kan geven van een AI-team in productie: het meeste werk gedaan voordat ik wakker was, en de laatste meter geblokkeerd door iets waar alleen een mens met een DNS-paneel bij kan.

Waarom de site weg moest

Mijn oude homepage draaide op een CMS, met de echte inhoud via code-injecties erin geplakt. Zag er prima uit. Voor een AI-crawler: 531 tekens leesbare tekst.

Vijfhonderdeenendertig. Dat is geen website, dat is een visitekaartje met een lange laadtijd. ChatGPT, Perplexity en de AI-antwoorden van Google lezen de kale HTML, en mijn kale HTML zei bijna niets. De CMS-pagina's die wél serverside renderden hadden 987 KB HTML nodig voor 1.337 zichtbare tekens.

Ik verkoop marketing die draait op vindbaar zijn. Mijn eigen site was onzichtbaar voor de snelst groeiende vorm van zoeken. Dat gat moest dicht.

Wat er klaarstond vóór de overstap

De migratie begon niet op migratiedag. Die begon nachten eerder, in de vaste dienst van het team tussen 22:30 en 07:00.

De specialisten bouwden een statische versie van de site: kale HTML uit één copy-bron, geen framework, geen externe requests. Pagina's die nog niet mee konden (pricing, contact, destijds ook de blog) bleven op het CMS draaien achter een rewrite-proxy, zodat elke URL blijft leven en pagina's één voor één kunnen verhuizen. En ze schreven een verificatiescript dat alle 49 URL's langsloopt en statuscodes, redirects en inhoudsmarkers controleert.

Dat laatste is belangrijker dan de build zelf. Een migratie zonder checklist is een hoop. Een migratie mét verify-live.py is een claim die je kunt toetsen.

Build + verificatiescript nachten ervoor ochtend DNS omgezet handshake-fouten ≈ 2 uur mens Handmatige cert-uitgifte HTTPS 200, 308 49/49 groen
De migratiedag als volgorde: de build en het verificatiescript stonden nachten eerder klaar, de DNS-omzetting en de storing van ongeveer twee uur vielen in de ochtend, en de handmatige uitgifte is getekend als ruit omdat het letterlijk een menselijke poort was.

Toen hield het certificaat alles tegen

De DNS-omzetting was aan mij. Ik zette het domein die ochtend om naar de nieuwe host, zag de apex-redirect verschijnen, en wachtte tot www zou volgen.

Dat gebeurde niet. Het TLS-certificaat voor www bleef ongeveer twee uur in de uitgifte hangen. Elke request kreeg een handshake-fout: de apex stuurde bezoekers met een 301 vrolijk een muur in. De site lag plat, en het dashboard zei dat alles in orde was.

Nu het ongemakkelijke deel. Het hele systeem, 18 specialisten met al hun reviewpoorten, stond volledig operationeel te wezen terwijl de site onbereikbaar was. De specialisten konden bouwen en verifiëren. Op een hosting-dashboard klikken konden ze niet, en dat hoort ook zo.

De site lag plat, en het dashboard zei dat alles in orde was.

De fix was één commando

Eén regel in een terminal: npx vercel certs issue www.bartknijnenberg.com

Dat was het. Handmatige certificaat-uitgifte, een paar seconden wachten, en www antwoordde over HTTPS met een 200. HTTP ging netjes doorsturen naar HTTPS met een 308, precies zoals ontworpen. Twee uur storing, één regel fix.

Dit incident staat op de teampagina van de site zelf, met datum. Niet uit masochisme. Een systeem dat alleen zijn successen rapporteert is een systeem dat je niet kunt vertrouwen, en ik zou geen marketinginfrastructuur kopen van iemand wiens statuspagina nog nooit rood heeft gezien.

Oude CMS-injectie 531 tekens Eerste statische build 2.616 tekens Live op migratiedag 5.528 tekens 0 5.528
Leesbare tekens op de homepage voor een AI-crawler, exact zoals in dit artikel: 531 in de oude injectie-opzet, 2.616 in de eerste statische build, 5.528 live op migratiedag. De CMS-proxypagina’s hebben 987 KB HTML nodig voor 1.337 zichtbare tekens.

De meting daarna

Het verificatiescript draaide zodra het certificaat er was: 49 van de 49 URL's groen. Het eigen domein indexeerbaar, de hosting-kopie op noindex, elke redirect de juiste kant op.

Toen de cijfers waar het allemaal om begonnen was. De homepage ging van 531 leesbare tekens in de oude injectie-opzet, naar 2.616 in de eerste statische versie, naar 5.528 live die dag met de herschreven copy. Een AI-crawler kreeg bij mij ruwweg tien keer zoveel te lezen. De CMS-proxypagina's, met hun 987 KB voor 1.337 zichtbare tekens, zijn nu de slinkende uitzondering in plaats van de regel.

Twee weken later stond Bing van nul pagina's van dit domein op 40 in de index. Correlatie is geen causatie. Maar crawlers indexeren niet wat ze niet kunnen lezen.

Wie deed wat, eerlijk

De specialisten: de volledige statische build, de copy-migratie, het verificatiescript, de voor- en nametingen, en de analyse die überhaupt de aanleiding was om te migreren.

Ik: de DNS-omzetting, het certificaat-commando, en de GO op de deploy. Elke publicatiestap in dit systeem is bewust menselijk. Dat is geen beperking die ik tolereer, dat is het ontwerp. De goedkeuringsstap is het format, niet de voetnoot.

Als je AI-teams aan het beoordelen bent, is dit de vraag om te stellen. Niet "is het autonoom?", maar "waar houdt de autonomie precies op, en wie staat daar dan?"

Wat er volgende migratie anders gaat

Eén regel schoof omhoog in de checklist: eerst het certificaat uitgeven, dán de DNS omzetten. De storing van twee uur bestond omdat de uitgifte pas startte toen er verkeer kwam, en niets in het plan die stap expliciet had gemaakt.

Zo voelt het runnen van een AI-marketingteam in de praktijk: het systeem wordt elke keer dat er iets breekt een beetje moeilijker te breken. Het nachtlogboek van het team, inclusief de missers, staat openbaar op /nl/vannacht, en de veelgestelde vragen beantwoorden wat mensen me het vaakst over de opzet vragen.

De site waarop je dit leest is de site die uit die dag kwam. Elke pagina die jij kunt bereiken, kan een AI-crawler lezen. En het certificaat gaat tegenwoordig eerst.


Wil je dit eens doorpraten voor jouw bedrijf?

De snelste route is de contactpagina. Wil je liever eerst verder lezen, dan pakt de pagina ernaast op waar dit artikel stopt.