← Artiklar

Søk

Slik byggjer vi coreai.no synleg for søk, svaremotorar og AI-agentar

coreai.no leverer ferdig HTML med komplett SEO-head, fem JSON-LD-skjema og ei parallell markdown-utgåve av kvar side på same URL – slik at Google, ChatGPT og Claude alle ser nøyaktig det forfattaren har skrive. Vi brukar Prezet og to Spatie-pakkar for det rutinemessige, og byggjer sjølv det som faktisk gjev betre synlegheit.

SEO, AEO og agent-venlegheit er bygd inn i coreAI si heimeside som tre lag i same respons: ein sentral SEO-byggjar produserer head-taggar og JSON-LD, ei .md-overflate serverer same innhald som rein markdown til AI-bots, og ein eigen sitemap-kommando held begge delar oppdaterte ved kvar reindeksering. Alle tre lag les frå dei same markdown-dokumenta – ingenting er bolt-on.

#Kva vi hentar frå eksisterande pakkar

Tre pakkar dekkjer det grunnleggjande, slik at vi slepp å vedlikehalde det sjølve:

  • prezet/prezet – markdown-CMS som indekserer ei lokalisert content-mappe til ei SQLite-fil. Kvar overskrift, ingress og FAQ-oppføring er éi markdown-fil, og innhaldet vert henta via Prezet sitt query-API.
  • spatie/laravel-markdown-response – global URL-rewrite-middleware som peelar .md av ein URL og forhandlar text/markdown mot Accept-headeren. Vi får agent-venlege URL-ar utan å duplisere ruter.
  • spatie/laravel-sitemap – primitiv for å byggje sitemap-XML og ein sitemap-indeks. Vi orkestrerer kva som hamnar i han.

Ingen av dei handterer JSON-LD eller AEO – det er der eigne komponentar tek over.

#Kva vi har bygd sjølve

Fem byggjeklossar, éin jobb kvar:

  • Ein SEO-byggjar som kvar kontroller brukar for å produsere éi seo-view-variabel. Han set sidetittel med varemerke-suffiks, slår av og på frivillige skjema (FAQ, brødsmular), og reknar ut canonical og hreflang frå lista over støtta lokal.
  • Fem schema.org-byggjarar – Organization, WebSite, FAQPage, BreadcrumbList og Article – kvar ein rein klasse med éi build-metode som returnerer JSON-LD som assosiativt array. Testbart i isolasjon og identisk på tvers av sider.
  • Ein sentral head-partial som er einaste stad i kodebasen der <title>, <meta>, <link rel="canonical">, hreflang-alternativ, OG-taggar og <script type="application/ld+json"> vert renderte. Sider kan ikkje skrive sin eigen head.
  • Ein markdown-driver med éin assembler per redaksjonell side – serverer markdown 1:1 frå kjeldene når ein agent ber om det. Vi konverterer aldri den rendra HTML-en tilbake til markdown; vi les same .md-filer som Blade-malane, så agenten ser eksakt det forfattaren skreiv.
  • /llms.txt og /llms-full.txt – ein indeks over marknadsføringssidene pluss dei 20 nyaste artiklane, og alle sidene samla i eitt dokument. Begge er noindex og på engelsk.

Ein eigen sitemap-kommando orkestrerer XML-en til tre filer: sitemap.xml som indeks, sitemap-pages.xml for marknadsføringssidene × språk, og sitemap-articles.xml der ei sentralt vedlikehalden blokkliste filtrerer bort marknadsrelaterte seksjonar slik at desse dokumenta ikkje lekk inn i artikkel-sitemappen. Etter kvar reindeksering overstyrer vi Prezet sin sitemap-hook og køyrer i tillegg ein cache-flush mot markdown-overflata, slik at agentane aldri les utgått innhald.

#AEO: tre reglar vi graderer kvar tekst mot

AEO (Answer Engine Optimization) er ikkje eit bibliotek, det er tre redaksjonelle reglar som er innebygde i skriveprosessen og dokumenterte i ein intern stilguide:

  • Svar først. Første setning i kvar ingress og kvart FAQ-svar slår fast svaret. Inga oppvarming, ingen retoriske spørsmål, ingen "lat oss sjå nærare på…".
  • Éin H1 per side. Hero-en eig den einaste <h1>. Alle andre seksjonstitlar er <h2>, nesta <h3>. Hopp i nivå er forbode.
  • Ingen "klikk her"-CTA-ar. Lenkjetekst skildrar målet ("Sjå prislista", "Bestill no"), ikkje gesten.

Reglane vert handheva i kodegjennomgang, ikkje av lint – men dei er kvifor svar-motorar som ChatGPT Search og Perplexity faktisk klarar å hente ut rett setning frå ei coreAI-side.

#Korleis AI-agentar ser sida

Tre triggerar byter HTML mot markdown på dei redaksjonelle rutene: .md-suffiks i URL-en, Accept: text/markdown-headeren, og kjende bot-user-agents som GPTBot og ClaudeBot. Alle tre fører til same respons – kjeldemarkdownen forfattaren skreiv, ikkje ei konvertering av den rendra HTML-en. Transaksjonelle ruter (/order, /contact) er haldne utanfor middlewaren, så /order.md returnerer vanleg HTML.

Vil du sjå det sjølv? Hent denne artikkelen som markdown – same URL, berre med .md på slutten. Det er nøyaktig den responsen GPTBot og ClaudeBot får når dei besøkjer /articles/seo-aeo-and-agent-visibility.

Resultatet er at same innhald vert publisert til menneske, søkemotorar og AI-agentar utan duplisering: forfattaren skriv éi markdown, og tre overflater leverer henne der mottakaren leitar.