Bas de Kort

 ██████╗  █████╗ ███████╗    ██████╗ ███████╗    ██╗  ██╗ ██████╗ ██████╗ ████████╗
 ██╔══██╗██╔══██╗██╔════╝    ██╔══██╗██╔════╝    ██║ ██╔╝██╔═══██╗██╔══██╗╚══██╔══╝
 ██████╔╝███████║███████╗    ██║  ██║█████╗      █████╔╝ ██║   ██║██████╔╝   ██║
 ██╔══██╗██╔══██║╚════██║    ██║  ██║██╔══╝      ██╔═██╗ ██║   ██║██╔══██╗   ██║
 ██████╔╝██║  ██║███████║    ██████╔╝███████╗    ██║  ██╗╚██████╔╝██║  ██║   ██║
 ╚═════╝ ╚═╝  ╚═╝╚══════╝    ╚═════╝ ╚══════╝    ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═╝   ╚═╝

aura.md

Aura SEO & GEO
Jaar
2026
Rol
Maker & Lead Developer
Klant
Eigen product
Stack
  • PHP 8.4
  • WordPress
  • JSON-LD / Schema.org
  • Anthropic API
  • OpenAI API
  • PHPUnit

Aanleiding

SEO-plugins voor WordPress zijn er genoeg, maar de meeste komen uit een tijd waarin één zoekmachine de baas was. Ze vullen een meta-titel en een description, en daar houdt het op. Terwijl de vraag inmiddels breder is: niet alleen "vindt Google me?", maar "begrijpt een AI-zoeksysteem waar deze pagina over gaat en wie erachter zit?".

Dat tweede stuk, GEO oftewel generative engine optimization, kwam nergens fatsoenlijk terug. Aura is mijn antwoord: een SEO-plugin voor moderne WordPress 7+ projecten die zowel de klassieke zoekmachine als de generatieve AI serieus neemt.

Oplossing

Aura pakt drie dingen op die je normaal over drie plugins en een handmatig proces zou verdelen:

  • AI-generatie: meta-titels, descriptions en andere SEO-velden met één druk op de knop, via Claude of OpenAI. Twee modi: alleen lege velden vullen, of bestaande overschrijven. De mens houdt de regie; de AI doet het typewerk.
  • Structured data: een samenhangende JSON-LD entity-graph (LocalBusiness, WebSite, Person, BreadcrumbList en meer) in plaats van losse snippets. Zo begrijpen zowel Google als AI-systemen de context, de auteur en de organisatie achter de site.
  • Scoring: elke pagina krijgt een score op twee assen, SEO én GEO, live bijgewerkt in de Gutenberg-editor terwijl je typt. Daaronder een checklist per onderwerp (van canonieke URL en leesbaarheid tot citeerbare feiten en rijke pagina-entiteiten) die laat zien wat aanwezig, gedeeltelijk of afwezig is. Met historische snapshots zie je de vooruitgang: geen vaag stoplicht, maar een onderbouwd oordeel per pagina en voor de site als geheel.

Onder de motorkap

Aura is de grootste van mijn plugins en navenant gelaagd (PHP 8.4, PSR-4, ~75 testklassen):

  • Een provider-abstractie met inwisselbare clients voor Claude en OpenAI: request-builders, response-mappers en een JSON-fence-stripper vangen de eigenaardigheden van elke API op, achter één interface.
  • Een generation-pijplijn (prompt-builder, post-reader, field-writer) die inhoud leest, een prompt opbouwt en het resultaat gecontroleerd terugschrijft naar de juiste velden.
  • Een output-laag die de entity-graph en schema.org-types opbouwt uit een eigen vocabulaire, met page-type-resolver en breadcrumb-trail. Concreet: uit een pagina leidt Aura bijvoorbeeld een Service met bijbehorende Offer-entiteiten (naam, prijs, valuta) af en schrijft die als JSON-LD naar de <head>.
  • Een scoring-engine met axis-scorers, een topic-catalogus, relevance-resolver en een aggregator die pagina-scores optelt tot een site-analyse; plus cron-jobs die score-snapshots wegschrijven voor de historie.

Alles wat AI-afhankelijk is, is bewust geïsoleerd en getest, zodat de plugin voorspelbaar blijft ook als een model dat niet is.

Status

In productie bij WordPress-klanten van basdekort.nl, waar de JSON-LD-graph en de meta-output live draaien. Actief doorontwikkeld (v2.6.0): een SEO-plugin die niet blijft hangen in 2015, maar meebeweegt met hoe er in 2026 gezocht wordt.