From d33ce9ea5588b2289677c4a6a4e36671a7fdd4e0 Mon Sep 17 00:00:00 2001 From: mAi Date: Wed, 29 Apr 2026 14:30:37 +0200 Subject: [PATCH] =?UTF-8?q?mAi:=20#8=20-=20GEO+SEO=20Guideline=20f=C3=BCr?= =?UTF-8?q?=20m's=20Web-Projekte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recherche-Output: docs/geo-seo-guideline.md. Enthält: - GEO-Grundlagen mit harten Zahlen (Princeton-Paper, +40% Sichtbarkeit; Top-Third-Regel 44.2% der ChatGPT-Citations) - Konkrete Hebel: Schema.org/JSON-LD, E-E-A-T, llms.txt-Realitätscheck, Anti-AI-Text-Filter, Off-Site/Multi-Source, Crawler-Steuerung - SEO 2026 Baseline (Helpful Content im Core, INP <200ms, EEAT) - Stack-Übersetzung: onepager, flexsiebels.de, msbls.de, paliad.de, youpc.org mit konkreten Maßnahmen pro Stack - Checkliste pro neuer Site - Maintenance-Routinen (monatlich, quartalsweise, jährlich) - 19 Quellen mit URLs Implementierung nicht im Scope. Folge-Issues pro Stack später. --- docs/geo-seo-guideline.md | 589 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 589 insertions(+) create mode 100644 docs/geo-seo-guideline.md diff --git a/docs/geo-seo-guideline.md b/docs/geo-seo-guideline.md new file mode 100644 index 0000000..56fe8e1 --- /dev/null +++ b/docs/geo-seo-guideline.md @@ -0,0 +1,589 @@ +# GEO + SEO Guideline für m's Web-Projekte + +Stand: 2026-04-29. Interne Arbeitsgrundlage. Keine Marketing-Aussage. + +Ziel: Konkrete, belegte Empfehlungen, was bei neuen und bestehenden Sites gemacht werden soll, damit sie (a) klassisch gefunden werden und (b) als Quelle in LLM-Antworten auftauchen. Implementierung ist nicht Teil dieses Dokuments – jede Empfehlung wird später als eigenes Issue umgesetzt. + +## Inhalt + +1. [Worum es geht](#1-worum-es-geht) +2. [GEO grundsätzlich](#2-geo-grundsätzlich) +3. [GEO konkret – die Hebel](#3-geo-konkret--die-hebel) + - 3.1 [Top-Third-Regel](#31-top-third-regel) + - 3.2 [Zahlen und Zitate, nicht Adjektive](#32-zahlen-und-zitate-nicht-adjektive) + - 3.3 [Schema.org / JSON-LD](#33-schemaorg--json-ld) + - 3.4 [E-E-A-T und Author-Identität](#34-e-e-a-t-und-author-identität) + - 3.5 [Zentrale JSON-Faktendatei](#35-zentrale-json-faktendatei) + - 3.6 [Anti-AI-Text-Filter](#36-anti-ai-text-filter) + - 3.7 [Off-Site und Multi-Source](#37-off-site-und-multi-source) + - 3.8 [`llms.txt` – Realitätscheck](#38-llmstxt--realitätscheck) + - 3.9 [Crawler-Steuerung](#39-crawler-steuerung) +4. [SEO 2026 Baseline](#4-seo-2026-baseline) +5. [Übersetzung auf m's Stacks](#5-übersetzung-auf-ms-stacks) + - 5.1 [onepager](#51-onepager-bash--caddy) + - 5.2 [flexsiebels.de](#52-flexsiebelsde-fresh--preact) + - 5.3 [msbls.de](#53-msblsde-nginx-static) + - 5.4 [paliad.de](#54-paliadde-nextjs--go) + - 5.5 [youpc.org](#55-youpcorg-nextjs-content-heavy) +6. [Checkliste pro neuer Site](#6-checkliste-pro-neuer-site) +7. [Maintenance](#7-maintenance) +8. [Quellen](#8-quellen) + +--- + +## 1. Worum es geht + +Zwei Disziplinen, ein gemeinsames Ziel: + +- **SEO** – in der klassischen Google-Trefferliste auftauchen. +- **GEO** (Generative Engine Optimization) – als zitierte Quelle in LLM-Antworten auftauchen (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews). + +Warum jetzt: Bei Suchanfragen, für die Google AI Overviews zeigt, ist die Klickrate auf organische Treffer um ~61 % gefallen, und 83 % dieser Anfragen enden ohne einen einzigen Klick auf irgendeine Website [^almcorp-aio]. Das verschiebt den Schwerpunkt von "ranke top 3" auf "werde von der KI genannt". + +Wichtigste empirische Beobachtung: 88 % der von KI zitierten URLs ranken nicht in Googles Top 10 für die jeweilige Frage [^digitalbloom]. GEO ist also nicht ein Spezialfall von SEO. Beide laufen parallel und teilen viele Signale (Inhaltsqualität, Schema, EEAT), aber GEO honoriert andere Strukturen. + +Konsequenz: Beides bedienen, kein Stack ist zu klein dafür. + +--- + +## 2. GEO grundsätzlich + +**Was hat empirisch funktioniert** (Princeton GEO-Paper, KDD 2024, n = GEO-bench Multi-Domain Queries): + +| Methode | Visibility-Lift | +|---|---| +| Statistics Addition (Zahlen einsetzen) | bis +41 % auf Position-Adjusted Word Count | +| Quotation Addition (Direktzitate von Quellen) | starke Verbesserung über alle Metriken | +| Citation Addition (Quellenangaben) | besonders in faktenlastigen Domains | +| Authoritative Tone | besonders bei historischen/Erklärinhalten | +| Fluency Optimization | marginal | +| Keyword Stuffing | marginal bis negativ | + +Quelle: Aggarwal et al., 2024 [^geo-paper]. Bis zu +40 % Sichtbarkeit gegenüber Baseline durch Kombination. + +**Die Hebel sind nicht universell.** Citation-Optimierung hilft bei Sachfragen, Statistik-Addition bei Recht und Verwaltung, Authoritative Style bei Geschichte/Erklärung. Pro Site/Topic prüfen, welche Domain-Klasse zutrifft. + +**LLMs zitieren Quellen sehr unterschiedlich:** + +- ChatGPT-Citations dominiert von Wikipedia (zwischen 26 % und 48 % je nach Studie und Kategorie) [^digitalbloom][^discoveredlabs]. +- Perplexity holt im Januar 2026 ~24 % aller Citations von Reddit [^almcorp-reddit]. +- YouTube hat Reddit Q1 2026 als meistzitierte Quelle in LLM-Antworten überholt (~16 % vs. ~10 %) [^georaiser]. +- Gemini bevorzugt offizielle Sites und News. +- ChatGPT nutzt Bings Echtzeit-Index, Claude größtenteils sein Trainings-Set + Search-Bot, Perplexity crawlt kontinuierlich [^discoveredlabs]. + +Daraus folgt: Eigene Domain-Authority allein reicht nicht. Off-Site-Präsenz (Wikipedia, Reddit, YouTube) ist relevant. + +--- + +## 3. GEO konkret – die Hebel + +### 3.1 Top-Third-Regel + +44,2 % aller von ChatGPT zitierten Passagen kommen aus dem ersten Drittel der Seite (n = 18 012, p ≈ 0) [^almcorp-topthird]. Die Verteilung ist eine "Ski-Rampe": vorne hoch, hinten flach. + +**Konsequenz für Seitenaufbau:** + +- Erstes sichtbares Element nach dem H1: eine **nüchterne, präzise Definition** des Themas oder Produkts. Kein Marketing-Lead, keine Begrüßung, keine Vision Statement. +- H1 sollte die Kernfrage benennen, nicht den Markennamen flexen. +- Erste 100–200 Wörter: was, wer, wann, warum. Mit Zahlen wo möglich. +- Lange Hero-Sections mit Animation und drei Buzzwords sind GEO-toxisch – die KI sieht da nichts Zitierfähiges. + +**Negativbeispiel** (ein typischer onepager-Hero): +``` +{{name}} – die nächste Stufe der digitalen Selbstdarstellung +{{tagline mit drei Adjektiven}} +``` + +**Besser:** +``` +{{name}}: {{rolle/funktion}} mit Sitz in {{ort}}, tätig seit {{jahr}}. +Schwerpunkte: {{drei konkrete Themen}}. +``` + +### 3.2 Zahlen und Zitate, nicht Adjektive + +Aus dem Princeton-Paper: Statistik-Addition lieferte den größten Einzeleffekt. Das deckt sich mit m's Beispiel "660 000 Schweizer Entscheide wird zitiert, 'umfangreiche Datenbank' nicht." + +Regeln: + +- Jede Behauptung mit messbarem Inhalt **bekommt eine Zahl**. Nicht "groß" sondern "1,2 Mio. Datensätze". Nicht "etabliert" sondern "seit 2014". +- Relative Behauptungen (mehr/weniger/größer) **brauchen einen Vergleichswert**. +- Direktzitate von Originalquellen (Gerichten, Behörden, Studien) im Volltext einbinden, nicht paraphrasieren. Mit Quellenangabe. +- Quellennachweise sind keine Fußnoten-Kosmetik – LLMs gewichten Aussagen mit verifizierbarer Quelle höher. + +### 3.3 Schema.org / JSON-LD + +**Ist umstritten – hier der Stand:** + +- BrightEdge: +44 % AI-Citations bei Sites mit Schema + FAQ-Markup [^searchengineland-schema]. +- Search/Atlas-Studie Dezember 2024: keine Korrelation zwischen Schema-Coverage und Citation-Rate [^searchengineland-schema] (zitiert in derselben Quelle als Gegenbefund). +- Data World: GPT-4 geht von 16 % auf 54 % korrekte Antworten, wenn der Inhalt strukturiert vorliegt [^digidop]. +- Google empfiehlt JSON-LD seit Mai 2025 explizit für AI-optimierte Inhalte [^digidop]. +- SearchVIU (Oktober 2025) bestätigt, dass ChatGPT, Claude, Perplexity und Gemini Schema beim direkten Seitenabruf parsen [^digidop]. + +**Pragmatische Linie:** Schema ist Pflicht für content-relevante Seiten, aber kein Ersatz für gute Inhalte. Man verzichtet darauf nicht, aber man erwartet von ihm allein keine Wunder. + +**Welche Typen lohnen sich:** + +| Typ | Wann | Wofür | +|---|---|---| +| `Person` | Author-/About-Seiten | E-E-A-T-Anker | +| `Organization` | Firmen-Sites, Brand-Hubs | Entity-Konsolidierung | +| `Article` / `BlogPosting` | Editorial, Blog | Datierung, Author-Bindung | +| `FAQPage` | Antwortlisten | LLM-Verständnis (Google-SERP-Feature ist seit 2023 stark eingeschränkt, der Schema-Wert für LLMs bleibt) | +| `Product` | Produktseiten | B2B/Commerce | +| `BreadcrumbList` | Tiefe Sitemaps | Pfad-Verständnis | +| `WebSite` mit `SearchAction` | Hauptseiten | Sitelinks-Suchbox | + +**JSON-LD ist Pflichtformat.** Microdata und RDFa nicht mehr verwenden. + +**Person-Schema-Skelett für Author-Pages:** + +```html + +``` + +`sameAs` ist der wichtigste Single-Punkt – damit verbindet die KI denselben Entity über Domains hinweg. Wikidata-Eintrag erstellen sobald genug öffentliche Belege existieren. + +### 3.4 E-E-A-T und Author-Identität + +Googles offizielles Framework, das auch LLM-Citation-Algorithmen nachweislich abbilden [^upgrowth]. Trustworthiness ist 2025 das wichtigste der vier [^wearetg]. + +Praktische Anker pro Site: + +- **Identifizierbarer Author** mit Klarnamen, Foto, Lebenslauf, Verifikations-Links (Schema.org `Person` + `sameAs`). +- **Impressum / Kontakt** klar erreichbar (haben wir – `shared/impressum.js`). +- **Veröffentlichungsdatum + letzte Änderung** sichtbar (`datePublished`, `dateModified`). +- **Editorial Transparency**: bei AI-generierten Inhalten Hinweis auf den Prozess (haben wir – `shared/ai-disclosure.js` und `msbls.de/ki`). +- **HTTPS, gültige Zertifikate, kein Mixed Content** (Caddy macht das ohnehin). + +Konkretes Vorgehen für m's Domain-Cluster: + +- `msbls.de` ist die zentrale Author-Identität für alles unter flexsiebels (siehe Memory: msbls = Marke unter flexsiebels-Umbrella). Eine vollständige Author-Page dort, mit `Person`-Schema, Wikidata-`sameAs`, Liste der relevanten Projekte. +- Alle Sub-Sites (ichbinotto, mai-otto, lexsiebels, heygoldi etc.) verlinken über `worksFor`/`creator` zurück auf diese kanonische Identität. + +### 3.5 Zentrale JSON-Faktendatei + +m's Idee aus der Issue: eine Single-Source-of-Truth-Datei mit Produktfakten, von der Templates und KI-Bots gleichermaßen lesen. + +Empfohlener Aufbau: + +- Pro Stack/Site eine Datei `facts.json` (oder `products.json`, `team.json`) am Repo-Root. +- Rendert in Build/Render-Pipeline in JSON-LD und in HTML-Text. +- Wird zusätzlich als `application/json` an einer stabilen URL (z. B. `/facts.json`) ausgeliefert – LLM-Crawler und eigene Tools können sie direkt lesen. + +Beispiel-Skelett: +```json +{ + "@context": "https://schema.org", + "@type": "Organization", + "name": "flexsiebels", + "founded": "2014", + "founder": { "@type": "Person", "name": "Matthias Siebels" }, + "numberOfEmployees": 1, + "address": "...", + "products": [ + { "@type": "Product", "name": "youpc", "description": "UPC case database, 1600+ judgments", "url": "https://youpc.org" }, + { "@type": "Product", "name": "paliad", "description": "...", "url": "https://paliad.de" } + ] +} +``` + +Wert: jede neue Site, jede Author-Page, jede Subdomain referenziert dieselbe kanonische Faktenmenge. Konsistente Aussagen über Domains hinweg sind ein starkes Trust-Signal für LLM-Entity-Konsolidierung. + +### 3.6 Anti-AI-Text-Filter + +Wikipedias Maintainer-Community hat 2024–2026 die zuverlässigsten Marker für AI-Text dokumentiert [^wiki-ai-signs]. Wir wollen den Eindruck vermeiden – sowohl gegenüber menschlichen Lesern als auch gegenüber EEAT-Algorithmen, die "Originalität" prüfen. + +**Vokabel-Blacklist (häufige Cluster):** + +``` +delve, tapestry, testament, intricate, garnered, bolstered, enduring, +robust, comprehensive, meticulous, interplay, landscape, pivotal, +underscore, additionally, furthermore, moreover, crucial, +showcasing, highlighting, enhance, align with, ecosystem, +seamless, leverage, unleash, navigate, dive into, in the realm of +``` + +Mehrere dieser Wörter im selben Absatz sind das stärkste Tell. + +**Syntax-Marker:** + +- "Ist/sind" wird ersetzt durch "fungiert als / dient als / markiert / weist auf / kennzeichnet". → Echtes "ist" zulassen. +- "Nicht nur X, sondern auch Y" als Standard-Phrasenformel. → Sparsam. +- Drei-Adjektiv-Reihen ("schnell, sicher und skalierbar"). → Eines reicht. +- Unnötige Synonyme nur um Wiederholung zu vermeiden. → Wiederholen ist okay. + +**Struktur-Marker:** + +- Title Case in Überschriften. → Sentence case oder UPPERCASE, nie Mixed Title Case. +- "**Header:** Beschreibung"-Bullet-Listen mechanisch über die ganze Seite. → Nur wenn der Inhalt das wirklich ist. +- Em-Dashes statt Komma/Klammer-/Doppelpunkt. → Sparsam, gezielt. +- Zwanghaftes Fettsetzen jedes "Schlüsselbegriffs". → Selten und mit Grund. + +**Inhalts-Marker:** + +- "Ein Meilenstein in...", "ein Beweis für...", "in der sich entwickelnden Landschaft von...", "hat Spuren hinterlassen". → Nicht. +- Vage Attribution an "Experten", "Beobachter", "Branchenberichte" ohne Namen. → Quelle benennen oder Aussage streichen. +- Standard-Schluss-Sektion "Herausforderungen und Perspektiven" mit "Trotz seiner [positiven Wörter] steht [Subjekt] vor Herausforderungen ... bleibt aber zuversichtlich". → Streichen. + +**Praktische Umsetzung:** + +- Lint-Skript im Build (`scripts/anti-ai-lint.sh`) das Vokabel-Blacklist über alle `index.html` und `*.md` läuft, mit Schwellenwert (z. B. mehr als 3 Marker pro 500 Wörter → Warnung). +- Bei AI-generierten Drafts: bewusst gegen die Blacklist redigieren. +- Vor Veröffentlichung laut lesen. Wenn es klingt wie ein Pressemitteilungs-Bot, ist es einer. + +### 3.7 Off-Site und Multi-Source + +Brand-Search-Volumen korreliert mit LLM-Citations stärker (r ≈ 0,33) als klassische Backlinks [^thedigitalbloom]. Das heißt: erwähnt zu werden – auch ohne Link – schlägt verlinkt zu werden mit niedrigem Search-Volumen. + +Praktische Hebel: + +- **Wikipedia / Wikidata**: wenn ein Projekt oder Begriff es rechtfertigt, einen Eintrag oder ein Wikidata-Item anlegen. Wikipedia ist die meistzitierte Quelle in ChatGPT. +- **Reddit / Hacker News / Lobsters**: organische Posts in einschlägigen Subreddits/Threads, in denen die Lösung als Antwort auf eine konkrete Frage erwähnt wird. Kein Drop-and-Run-Marketing – wird abgestraft und nicht zitiert. +- **YouTube**: für Themen mit visuellem Anteil (UPC-Hearings, Code-Walkthroughs, Demos) ist YouTube 2026 die meistzitierte LLM-Quelle [^georaiser]. Auch kurze, gut betitelte Videos zählen. +- **GitHub / Gitea (öffentlich)**: technische Themen werden über öffentlichen Code zitiert. Public Repos mit ordentlichem README sind stille Zitatmagneten. +- **Fachportale, Verbandsseiten, Veranstalter-Seiten**: Wenn dort Erwähnungen mit Klarnamen + Domain auftauchen, wird das Profil verfestigt. + +Dies ist langfristig. Keine Ad-hoc-Aktion, sondern ein Punkt auf jeder Quartals-Routine: gibt es eine plausible Erwähnung, die gerade fehlt? + +### 3.8 `llms.txt` – Realitätscheck + +m's Issue-Beispiel nennt `llms.txt`. Hier die nüchterne Lage: + +- Spezifikation von Jeremy Howard (Answer.AI), September 2024 [^llmstxt-org]. +- Adoption laut SE Ranking: 10,13 % von 300 000 Domains [^aeopress]. +- Kein einziger der großen Anbieter (OpenAI, Anthropic, Google, Meta, Mistral) bestätigt offiziell, dass `llms.txt` als Retrieval- oder Ranking-Signal benutzt wird [^aeopress][^almcorp-llmstxt]. +- ALM Corp hat `llms.txt` in ein XGBoost-Citation-Modell geworfen: Entfernen der Variable verbesserte die Modellgenauigkeit – sprich: kein erklärbarer Effekt [^almcorp-llmstxt]. + +**Empfehlung:** + +- **Für Doku-/API-/Content-heavy Sites** (youpc, paliad, msbls/ki, lexsiebels) **machen**, weil: + - kostet ~30 Minuten Arbeit + - schadet nicht + - wird zumindest von einigen Tools (Cursor, Mintlify-Hosted Docs) tatsächlich konsumiert + - signalisiert Engagement an den nächsten Standard, falls einer der großen Anbieter doch noch andockt +- **Für die onepager-Satire-Sites** (Wortspiel-Domains): überspringen. Aufwand vs. Nutzen lohnt nicht. +- **Niemals als alleinige GEO-Strategie verkaufen.** Die echten Hebel sind Inhalt, Schema, EEAT. + +**Mini-Spec:** Markdown-Datei an `/llms.txt` (Root). H1 = Site-Name, Blockquote = Kurzbeschreibung, dann Listen mit `- [Titel](URL): Notiz`. Optionale `## Optional`-Sektion für Inhalte, die bei knapper Context-Window weggelassen werden dürfen. + +Beispiel `llms.txt` (für youpc.org): +```markdown +# youpc.org – Unified Patent Court Case Database + +> Database of UPC and EPO judgments. 1600+ decisions across all UPC divisions +> since 2023, fully searchable, with structured data extraction (holdings, +> legal principles, citation graphs). + +## Core resources + +- [About / Methodology](https://youpc.org/about): scope, sources, extraction methodology +- [All judgments](https://youpc.org/cases): full list with filters by division, judge, year +- [Divisions overview](https://youpc.org/divisions): jurisdiction map and judges per division +- [Topics index](https://youpc.org/topics): patent law issues with leading cases per topic + +## Optional + +- [Author / Editor](https://msbls.de/): credentials of the editor +- [Disclosure on AI use](https://msbls.de/ki): which parts of the workflow involve LLMs +``` + +`llms-full.txt` (analoge Datei mit eingeschlossenen Volltexten) nur dann erzeugen, wenn der Site-Inhalt klein genug ist, dass das in ein Context-Fenster passt – sonst ist es Larping. + +### 3.9 Crawler-Steuerung + +Die wichtigsten User-Agents 2026 [^aicarma][^almcorp-claude]: + +| Agent | Anbieter | Zweck | Block lohnt? | +|---|---|---|---| +| `GPTBot` | OpenAI | Training | Wenn man nicht trainieren lassen will | +| `OAI-SearchBot` | OpenAI | ChatGPT-Search-Index | **Niemals** blocken (sonst keine Citations) | +| `ChatGPT-User` | OpenAI | User-getriggerter Live-Fetch | **Niemals** blocken | +| `ClaudeBot` | Anthropic | Training | Wenn man nicht trainieren lassen will | +| `Claude-User` | Anthropic | User-getriggerter Live-Fetch | **Niemals** blocken | +| `Claude-SearchBot` | Anthropic | Claude-Search-Index | **Niemals** blocken | +| `PerplexityBot` | Perplexity | Index | **Niemals** blocken | +| `Perplexity-User` | Perplexity | Live-Fetch | **Niemals** blocken | +| `Google-Extended` | Google | Gemini-Training | Wenn man nicht trainieren lassen will | +| `Googlebot` | Google | Klassischer Google-Index | **Niemals** blocken | +| `CCBot` | Common Crawl | Training-Datenbasis für viele LLMs | Optional blocken | + +**Veraltet, nicht mehr verwenden** in `robots.txt`: `Claude-Web`, `anthropic-ai` – das sind tote Strings, ein Block dort blockt nichts mehr. + +**m's Default für die eigenen Domains:** alle Bots erlauben. Das Material soll zitiert werden – das ist der Sinn der Übung. Keine Site hat kommerziellen Trainings-Schutz-Bedarf. + +Beispiel `robots.txt` (Standardposition): +``` +User-agent: * +Allow: / + +Sitemap: https://example.de/sitemap.xml +``` + +Falls *spezifisch das Trainings-Set* nicht beliefert werden soll (für eine Site, deren Inhalt sensibel oder kommerziell ist), getrennte Direktiven: +``` +User-agent: GPTBot +Disallow: / + +User-agent: ClaudeBot +Disallow: / + +User-agent: Google-Extended +Disallow: / + +# Wichtig: Search-Bots NICHT blocken +User-agent: OAI-SearchBot +Allow: / +User-agent: Claude-SearchBot +Allow: / +User-agent: PerplexityBot +Allow: / +``` + +--- + +## 4. SEO 2026 Baseline + +Was nach wie vor zählt – und was sich geändert hat. + +**Helpful Content Update:** Seit 2024–2025 in den Core-Algorithmus integriert, kein eigenständiges Update mehr [^saffronedge]. Das System läuft kontinuierlich. Praktisch: Inhalt, der wie für Suchmaschinen geschrieben wirkt, verliert. + +**E-E-A-T:** Trustworthiness ist 2025 die wichtigste der vier Säulen. Klare Angaben zu Author, Quellen, Korrekturpolitik, Veröffentlichungsdatum [^wearetg]. + +**Core Web Vitals (75. Perzentil)** [^corewebvitals]: + +| Metrik | Gut | Ausreichend | Schlecht | +|---|---|---|---| +| LCP | ≤ 2,5 s | 2,5–4,0 s | > 4,0 s | +| INP | ≤ 200 ms | 200–500 ms | > 500 ms | +| CLS | ≤ 0,1 | 0,1–0,25 | > 0,25 | + +INP (eingeführt März 2024 als Ersatz für FID) ist 2026 die meistgerissene Metrik – 43 % der Sites scheitern dort [^corewebvitals]. Heißt: JavaScript, das auf den Main-Thread blockt, kostet messbar. Bei Onepagern ist das eher unproblematisch (wenig JS); bei Next.js-Stacks der Hebel. + +**Was nicht mehr relevant ist:** + +- FAQ-Rich-Snippets in Google-SERPs sind seit 2023 stark eingeschränkt (nur noch für autoritative Health-/Government-Quellen). Schema-Markup trotzdem behalten – wegen LLMs. +- HowTo-Rich-Snippets desktop-only. +- Keyword-Density als Metrik – tot. +- Meta-Keywords – seit Ewigkeiten tot. + +**Was synergetisch mit GEO funktioniert:** + +- Saubere Heading-Hierarchie (H1 → H2 → H3) hilft beiden. +- Klare Frage-Antwort-Struktur (H2 = Frage, Absatz = Antwort) wird sowohl in Google-AI-Overviews als auch in LLM-Antworten zitiert. +- Internal Linking zwischen thematisch verwandten Seiten verstärkt Topical Authority für beide. +- Sitemap.xml weiterhin Pflicht für Discovery. +- Mobile-First-Indexierung ist seit 2023 Standard. Mobile-Rendering muss vollständig sein, nicht nur reduziert. + +--- + +## 5. Übersetzung auf m's Stacks + +### 5.1 onepager (Bash + Caddy) + +**Architektur-Recap:** `sites//` mit `site.yaml` + `index.html`. `render.sh` ersetzt Platzhalter im gewählten Template. `generate-caddyfile.sh` generiert Caddy-Routen pro Host. Custom-Sites mit `template: custom` werden roh kopiert. + +**Was jetzt geht – ohne Refactor:** + +- Pro Site eine `llms.txt` und `robots.txt` direkt in `sites//` ablegen. Build-Script kopiert sie nach `build//`. Caddy bedient das automatisch. +- Pro kommerzieller / persönlicher Site (ichbinotto, mai-otto, lexsiebels, heygoldi, smartin3, martinsiebels) ein JSON-LD-Block direkt in `index.html` einfügen, statisch. +- Satire-Sites (kAInco, kIlemma, orAKIl etc.): bewusst kein Schema, kein llms.txt. Sie sind keine Quellen, sie sind Wortspiele. Das ehrlich lassen. + +**Was lohnt – als Template-Erweiterung:** + +- `templates/base.html` um Schema-Slot erweitern: `{{schema_jsonld}}`. `render.sh` füllt ihn aus `site.yaml` (`schema:` Block). +- `site.yaml` Schema-Beispiel: + ```yaml + schema: + type: Person + sameAs: + - https://msbls.de/ + - https://github.com/... + ``` +- `render.sh` Template-Erweiterung: `datePublished` / `dateModified` aus Git-Metadaten ableiten. +- Top-Third-Disziplin pro Template: `tagline` + erste `section` müssen sachlich sein, nicht poetisch. Templates sind hier neutral – die Disziplin ist beim Inhalt. + +**Top-Third anwenden:** `person-dark`/`person-light`/`product-dark` haben heute Hero mit Name + Tagline. Tagline ist der erste zitierfähige Satz – muss eine Definition sein, nicht Stimmung. + +**Beispiel `sites/lexsiebels/site.yaml`** (heute): +```yaml +tagline: "Wo Recht und Code zusammenfinden" +``` + +**Besser:** +```yaml +tagline: "Patentanwalt mit Schwerpunkt UPC-Verfahren und Software-Patente, Sankt Augustin, seit 2014." +``` + +**Caddyfile:** kein Eingriff nötig, alle Header (HSTS, Cache-Control) macht Caddy schon. + +### 5.2 flexsiebels.de (Fresh + Preact) + +**Vorteil:** SSR liefert vollständiges HTML beim ersten Request – LLMs sehen den fertigen Inhalt, nicht eine leere SPA-Hülle. Das ist gegenüber CSR-only-Stacks ein Riesenvorsprung. + +**Was umsetzen:** + +- ``-Komponente um JSON-LD erweitern. Eine wiederverwendbare ``-Komponente, die das richtige Schema rendert. +- Pro Author/Über-Seite: `Person`-Schema mit `sameAs`-Block. +- Pro Article: `Article`-Schema mit `datePublished`, `dateModified`, `author`. +- `/static/llms.txt` und `/static/robots.txt` als statische Files. +- `routes/_app.tsx`: globale Meta-Tags (description, og:image) einheitlich. +- INP achten: keine teuren Hydration-Listener auf nicht-interaktiven Bereichen. Fresh ist hier ohnehin sparsam (Islands-Architektur). + +**Author-Hub:** `flexsiebels.de/matthias` (oder `/team/matthias`) als zentrale Author-Page mit vollem `Person`-Schema, von der alle anderen Sites über `worksFor`/`creator`/`sameAs` zeigen. + +### 5.3 msbls.de (nginx static) + +**Status:** statisch ausgeliefert, `/ki` ist Transparenzseite (siehe Memory: Issue #2). + +**Maßnahmen:** + +- `/about` (oder `/matthias`) als kanonische Author-Page anlegen. Vollständiges `Person`-Schema, alle `sameAs`. Diese URL wird zur Schema-Ankerseite für alle anderen Domains. +- `/llms.txt` und `/robots.txt` an Root. +- `/ki` mit `Article`-Schema markieren. +- nginx-Config: `expires 7d` für CSS/JS, `expires 30d` für Fonts/Bilder. Cache-Control korrekt setzen. +- Sitemap.xml automatisch generieren (statisches Template oder `tree`-basiert). + +### 5.4 paliad.de (Next.js + Go) + +**Kontext:** kommerzieller B2B-Stack. Hier ist GEO am direktesten ROI-relevant. + +**Maßnahmen:** + +- Next.js Metadata API systematisch nutzen (`generateMetadata` pro Route). +- JSON-LD über `