# So bauen wir coreai.no sichtbar für Suche, Antwortmaschinen und KI-Agenten

SEO, AEO und Agent-Tauglichkeit sind in der coreAI-Homepage als drei Schichten derselben Antwort eingebaut: Ein zentraler SEO-Builder produziert Head-Tags und JSON-LD, eine `.md`-Oberfläche liefert denselben Inhalt als reines Markdown an KI-Bots, und ein eigener Sitemap-Befehl hält beides bei jedem Reindex aktuell. Alle drei Schichten lesen aus denselben Markdown-Dokumenten – nichts ist nachträglich aufgesetzt.

## Was wir aus bestehenden Paketen beziehen

Drei Pakete decken die Grundlagen ab, sodass wir sie nicht selbst pflegen müssen:

- `prezet/prezet` – Markdown-CMS, das einen lokalisierten Content-Ordner in eine SQLite-Datei indexiert. Jede Überschrift, jeder Lead und jeder FAQ-Eintrag ist eine Markdown-Datei, und der Inhalt wird über die Query-API von Prezet abgerufen.
- `spatie/laravel-markdown-response` – globale URL-Rewrite-Middleware, die `.md` von einer URL abzieht und `text/markdown` gegen den `Accept`-Header verhandelt. So bekommen wir agent-freundliche URLs, ohne Routen zu duplizieren.
- `spatie/laravel-sitemap` – Primitive für den Aufbau von Sitemap-XML und einem Sitemap-Index. Wir orchestrieren, was darin landet.

Keines dieser Pakete übernimmt JSON-LD oder AEO – dafür sind eigene Komponenten zuständig.

## Was wir selbst gebaut haben

Fünf Bausteine, je eine Aufgabe:

- Ein SEO-Builder, den jeder Controller nutzt, um eine `seo`-View-Variable zu erzeugen. Er setzt den Seitentitel mit Markensuffix, schaltet optionale Schemas (FAQ, Brotkrumen) ein und aus, und berechnet Canonical und hreflang aus der Liste der unterstützten Sprachen.
- Fünf schema.org-Builder – Organization, WebSite, FAQPage, BreadcrumbList und Article – jeweils eine reine Klasse mit einer build-Methode, die JSON-LD als assoziatives Array zurückgibt. Isoliert testbar und seitenübergreifend identisch.
- Ein zentrales Head-Partial, das die einzige Stelle in der Codebasis ist, an der `<title>`, `<meta>`, `<link rel="canonical">`, hreflang-Alternativen, OG-Tags und `<script type="application/ld+json">` gerendert werden. Seiten dürfen ihren eigenen Head nicht schreiben.
- Ein Markdown-Driver mit einem Assembler pro redaktionelle Seite – liefert Markdown 1:1 aus den Quellen, wenn ein Agent danach fragt. Wir konvertieren das gerenderte HTML nie zurück zu Markdown; wir lesen dieselben `.md`-Dateien wie die Blade-Templates, damit der Agent exakt sieht, was die Autorin geschrieben hat.
- `/llms.txt` und `/llms-full.txt` – ein Index der Marketing-Seiten plus der 20 neuesten Artikel, und alle Seiten in einem Dokument zusammengefasst. Beide sind `noindex` und auf Englisch.

Ein eigener Sitemap-Befehl orchestriert das XML zu drei Dateien: `sitemap.xml` als Index, `sitemap-pages.xml` für die Marketing-Seiten × Sprachen, und `sitemap-articles.xml`, in dem eine zentral gepflegte Blockliste marketingbezogene Sektionen herausfiltert, damit diese Dokumente nicht in die Artikel-Sitemap lecken. Nach jedem Reindex überschreiben wir den Sitemap-Hook von Prezet und führen zusätzlich einen Cache-Flush gegen die Markdown-Oberfläche aus, sodass Agenten nie veralteten Inhalt lesen.

## AEO: drei Regeln, gegen die wir jeden Text bewerten

AEO (Answer Engine Optimization) ist keine Bibliothek, sondern drei redaktionelle Regeln, die in den Schreibprozess eingebaut und in einer internen Stilrichtlinie dokumentiert sind:

- **Antwort zuerst.** Der erste Satz jedes Leads und jeder FAQ-Antwort stellt die Antwort fest. Kein Aufwärmen, keine rhetorischen Fragen, kein „Schauen wir uns das genauer an…".
- **Eine H1 pro Seite.** Der Hero-Bereich besitzt die einzige `<h1>`. Alle anderen Sektionstitel sind `<h2>`, verschachtelte sind `<h3>`. Stufensprünge sind verboten.
- **Keine „Hier klicken"-CTAs.** Linktext beschreibt das Ziel („Preise ansehen", „Jetzt bestellen"), nicht die Geste.

Die Regeln werden im Code-Review durchgesetzt, nicht per Lint – aber sie sind der Grund, warum Antwortmaschinen wie ChatGPT Search und Perplexity tatsächlich den richtigen Satz aus einer coreAI-Seite extrahieren können.

## Wie KI-Agenten die Seite sehen

Drei Trigger tauschen HTML gegen Markdown auf den redaktionellen Routen: `.md`-Suffix in der URL, der `Accept: text/markdown`-Header und bekannte Bot-User-Agents wie `GPTBot` und `ClaudeBot`. Alle drei führen zur gleichen Antwort – das Quell-Markdown der Autorin, keine Konvertierung des gerenderten HTML. Transaktionale Routen (`/order`, `/contact`) sind aus der Middleware ausgenommen, sodass `/order.md` reguläres HTML zurückgibt.

Wollen Sie es selbst sehen? [Diesen Artikel als Markdown abrufen](https://coreai.no/articles/seo-aeo-and-agent-visibility.md) – dieselbe URL, nur mit `.md` am Ende. Genau diese Antwort erhalten `GPTBot` und `ClaudeBot`, wenn sie `/articles/seo-aeo-and-agent-visibility` besuchen.

Das Ergebnis: Derselbe Inhalt wird an Menschen, Suchmaschinen und KI-Agenten ohne Duplizierung publiziert – die Autorin schreibt ein Markdown, und drei Oberflächen liefern es dort aus, wo der Empfänger sucht.