# 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: für onepager implementiert in `tools/anti-ai-lint.py` mit Vokabel-Blacklist in `tools/anti-ai-blacklist.yaml`. Läuft am Ende von `build.sh` über alle `build//index.html`. Severity `warn` (Build geht durch) vs. `fail` (Build bricht ab). Whitelist via ``-Kommentar oder `anti_ai_allow:`-Liste in `site.yaml`. Notfall-Override: `build.sh --skip-lint`. - 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 `