← Artikler

Søk

Slik bygger vi coreai.no synlig for søk, svaremotorer og AI-agenter

coreai.no leverer ferdig HTML med komplett SEO-head, fem JSON-LD-skjemaer og en parallell markdown-utgave av hver side på samme URL – slik at Google, ChatGPT og Claude alle ser nøyaktig det forfatteren har skrevet. Vi bruker Prezet og to Spatie-pakker for det rutinemessige, og bygger selv det som faktisk gir bedre synlighet.

SEO, AEO og agent-vennlighet er bygget inn i coreAI sin hjemmeside som tre lag i samme respons: en sentral SEO-bygger produserer head-tagger og JSON-LD, en .md-overflate serverer samme innhold som ren markdown til AI-bots, og en egen sitemap-kommando holder begge deler oppdatert ved hver reindeksering. Alle tre lag leser fra de samme markdown-dokumentene – ingenting er bolt-on.

#Hva vi henter fra eksisterende pakker

Tre pakker dekker det grunnleggende, slik at vi slipper å vedlikeholde det selv:

  • prezet/prezet – markdown-CMS som indekserer en lokalisert content-mappe til en SQLite-fil. Hver overskrift, ingress og FAQ-oppføring er én markdown-fil, og innholdet hentes via Prezets query-API.
  • spatie/laravel-markdown-response – global URL-rewrite-middleware som peeler .md av en URL og forhandler text/markdown mot Accept-headeren. Vi får agent-vennlige URL-er uten å duplisere ruter.
  • spatie/laravel-sitemap – primitiver for å bygge sitemap-XML og en sitemap-indeks. Vi orkestrerer hva som havner i den.

Ingen av dem håndterer JSON-LD eller AEO – det er der egne komponenter tar over.

#Hva vi har bygget selv

Fem byggeklosser, én jobb hver:

  • En SEO-bygger med som hver kontroller bruker for å produsere én seo-view-variabel. Den setter sidetittel med varemerke-suffiks, slår av og på frivillige skjema (FAQ, brødsmuler), og regner ut canonical og hreflang fra lista over støttede lokaler.
  • Fem schema.org-byggere – Organization, WebSite, FAQPage, BreadcrumbList og Article – hver en ren klasse med én build-metode som returnerer JSON-LD som assosiativt array. Testbart i isolasjon og identisk på tvers av sider.
  • En sentral head-partial som er eneste sted i kodebasen der <title>, <meta>, <link rel="canonical">, hreflang-alternativer, OG-tagger og <script type="application/ld+json"> blir rendret. Sider kan ikke skrive sin egen head.
  • En markdown-driver med én assembler per redaksjonelle side – serverer markdown 1:1 fra kildene når en agent ber om det. Vi konverterer aldri den rendrede HTML-en tilbake til markdown; vi leser samme .md-filer som Blade-malene, så agenten ser eksakt det forfatteren skrev.
  • /llms.txt og /llms-full.txt – en indeks over markedsføringssidene pluss de 20 nyeste artiklene, og alle sidene samlet i ett dokument. Begge er noindex og på engelsk.

En egen sitemap-kommando orkestrerer XML-en til tre filer: sitemap.xml som indeks, sitemap-pages.xml for markedsføringssidene × språk, og sitemap-articles.xml der en sentralt vedlikeholdt blokkliste filtrerer bort markedsrelaterte seksjoner slik at disse dokumentene ikke lekker inn i artikkel-sitemappen. Etter hver reindeksering overstyrer vi Prezets sitemap-hook og kjører i tillegg en cache-flush mot markdown-overflaten, slik at agentene aldri leser utgått innhold.

#AEO: tre regler vi grader hver tekst mot

AEO (Answer Engine Optimization) er ikke et bibliotek, det er tre redaksjonelle regler som er innebygd i skrive-prosessen og dokumentert i en intern stilguide:

  • Svar først. Første setning i hver ingress og hvert FAQ-svar slår fast svaret. Ingen oppvarming, ingen retoriske spørsmål, ingen "la oss se nærmere på…".
  • Én H1 per side. Hero-en eier den eneste <h1>. Alle andre seksjonstitler er <h2>, nestede <h3>. Hopp i nivå er forbudt.
  • Ingen "klikk her"-CTA-er. Lenketekst beskriver målet ("Se prislisten", "Bestill nå"), ikke gesten.

Reglene håndheves i kodegjennomgang, ikke av lint – men de er hvorfor svar-motorer som ChatGPT Search og Perplexity faktisk klarer å hente ut riktig setning fra en coreAI-side.

#Hvordan AI-agenter ser siden

Tre triggere bytter HTML mot markdown på de redaksjonelle rutene: .md-suffiks i URL-en, Accept: text/markdown-headeren, og kjente bot-user-agents som GPTBot og ClaudeBot. Alle tre fører til samme respons – kildemarkdownen forfatteren skrev, ikke en konvertering av den rendrede HTML-en. Transaksjonelle ruter (/order, /contact) er holdt utenfor middlewaren, så /order.md returnerer vanlig HTML.

Vil du se det selv? Hent denne artikkelen som markdown – samme URL, bare med .md på slutten. Det er nøyaktig den responsen GPTBot og ClaudeBot får når de besøker /articles/seo-aeo-and-agent-visibility.

Resultatet er at samme innhold publiseres til mennesker, søkemotorer og AI-agenter uten duplisering: forfatteren skriver én markdown, og tre overflater leverer den der mottakeren leter.