SEO, AEO och agent-vänlighet är inbyggt i coreAI:s hemsida som tre lager i samma respons: en central SEO-byggare producerar head-taggar och JSON-LD, en .md-yta serverar samma innehåll som ren markdown till AI-bottar, och ett eget sitemap-kommando håller bägge delar uppdaterade vid varje omindexering. Alla tre lagren läser från samma markdown-dokument – inget är bolt-on.
#Vad vi hämtar från befintliga paket
Tre paket täcker det grundläggande, så att vi slipper underhålla det själva:
prezet/prezet– markdown-CMS som indexerar en lokaliserad content-mapp till en SQLite-fil. Varje rubrik, ingress och FAQ-post är en markdown-fil, och innehållet hämtas via Prezets query-API.spatie/laravel-markdown-response– global URL-rewrite-middleware som skalar.mdfrån en URL och förhandlartext/markdownmotAccept-headern. Vi får agent-vänliga URL:er utan att duplicera rutter.spatie/laravel-sitemap– primitiver för att bygga sitemap-XML och ett sitemap-index. Vi orkestrerar vad som hamnar i det.
Inget av dem hanterar JSON-LD eller AEO – det är där egna komponenter tar över.
#Vad vi har byggt själva
Fem byggstenar, ett jobb var:
- En SEO-byggare som varje controller använder för att producera en
seo-view-variabel. Den sätter sidtitel med varumärkessuffix, slår av och på frivilliga scheman (FAQ, brödsmulor), och räknar ut canonical och hreflang utifrån listan över stödda lokaler. - Fem schema.org-byggare – Organization, WebSite, FAQPage, BreadcrumbList och Article – var och en en ren klass med en build-metod som returnerar JSON-LD som associativ array. Testbart i isolation och identiskt över sidor.
- En central head-partial som är enda stället i kodbasen där
<title>,<meta>,<link rel="canonical">, hreflang-alternativ, OG-taggar och<script type="application/ld+json">renderas. Sidor kan inte skriva sin egen head. - En markdown-driver med en assembler per redaktionell sida – serverar markdown 1:1 från källorna när en agent ber om det. Vi konverterar aldrig den renderade HTML:en tillbaka till markdown; vi läser samma
.md-filer som Blade-mallarna, så agenten ser exakt det författaren skrev. /llms.txtoch/llms-full.txt– ett index över marknadsföringssidorna plus de 20 senaste artiklarna, och alla sidor samlade i ett dokument. Båda ärnoindexoch på engelska.
Ett eget sitemap-kommando orkestrerar XML:en till tre filer: sitemap.xml som index, sitemap-pages.xml för marknadsföringssidor × språk, och sitemap-articles.xml där en centralt underhållen blocklista filtrerar bort marknadsrelaterade sektioner så att dessa dokument inte läcker in i artikel-sitemappen. Efter varje omindexering åsidosätter vi Prezets sitemap-hook och kör dessutom en cache-flush mot markdown-ytan, så att agenterna aldrig läser föråldrat innehåll.
#AEO: tre regler vi graderar varje text mot
AEO (Answer Engine Optimization) är inte ett bibliotek, det är tre redaktionella regler som är inbyggda i skrivprocessen och dokumenterade i en intern stilguide:
- Svar först. Första meningen i varje ingress och varje FAQ-svar slår fast svaret. Ingen uppvärmning, inga retoriska frågor, inget "låt oss titta närmare på…".
- En H1 per sida. Hero:n äger den enda
<h1>. Alla andra sektionsrubriker är<h2>, nästade<h3>. Hopp i nivå är förbjudet. - Inga "klicka här"-CTA:er. Länktext beskriver målet ("Se prislistan", "Beställ nu"), inte gesten.
Reglerna upprätthålls i kodgranskning, inte av lint – men det är därför svarsmotorer som ChatGPT Search och Perplexity faktiskt klarar att plocka rätt mening från en coreAI-sida.
#Hur AI-agenter ser sidan
Tre triggers byter HTML mot markdown på de redaktionella rutterna: .md-suffix i URL:en, Accept: text/markdown-headern, och kända bot-user-agents som GPTBot och ClaudeBot. Alla tre leder till samma respons – källmarkdownen författaren skrev, inte en konvertering av den renderade HTML:en. Transaktionella rutter (/order, /contact) hålls utanför middlewaren, så /order.md returnerar vanlig HTML.
Vill du se det själv? Hämta den här artikeln som markdown – samma URL, bara med .md på slutet. Det är exakt den respons GPTBot och ClaudeBot får när de besöker /articles/seo-aeo-and-agent-visibility.
Resultatet är att samma innehåll publiceras till människor, sökmotorer och AI-agenter utan duplicering: författaren skriver en markdown, och tre ytor levererar den där mottagaren letar.