# AI Search Readiness (GEO/AEO) — Score 19/100

## Was funktioniert
- SSR-Static-Serving via nginx: AI-Crawler erhalten den vollen HTML-Inhalt ohne JavaScript-Abhängigkeit — kein Rendering-Problem
- HTTP/2 aktiv, schnelle Antwortzeit (7,4 KB), ETag-Caching vorhanden
- JSON-LD ProfessionalService-Block mit name, founder (Gökhan Köse), address (Annastraße 27, 44793 Bochum), vatID (DE327767879) — Basis-Entitätssignal vorhanden
- robots.txt 404 = RFC 9309 Implicit Allow-All: GPTBot, ClaudeBot, PerplexityBot, Google-Extended haben uneingeschränkten Crawl-Zugang
- Security-Header vorhanden: x-content-type-options, x-frame-options, referrer-policy, permissions-policy
- Meta-Description nennt Bochum + Mittelstand-Zielgruppe, lang=de gesetzt, robots=index,follow aktiv
- OpenGraph-Grundset (title, description, type, url, locale) vorhanden

## Findings

### [Critical] Extreme Thin Content — keine zitierbaren Passagen (Citability-Killer #1)
**Befund:** Die gesamte Homepage umfasst 106 Wörter. Die längste Textpassage enthält 6 Wörter ('Konzept, Bau, Betrieb. End-to-End, eine Hand.'). Der GEO-Standard für AI-zitierbare Passagen liegt bei 134–167 Wörtern pro Abschnitt mit einer direkten Antwort in den ersten 40–60 Wörtern. ChatGPT, Perplexity und Google AIO können koeseo.de schlicht nicht zitieren, weil kein extrahierbarer Inhalt existiert — nur Marketing-Taglines ohne Substanz. Gemessen: extracted text 852 Zeichen, longest <p> 6 Wörter, 0 Statistiken, 0 Quellenangaben, 0 Erklärungstexte. Dimension Citability: 8/100.

**Fix:** Jede der 4 Service-Sections (AI-Agenten, Infrastruktur, Kassensysteme, CRM & Workflows) um einen 150–200-Wörter-Block erweitern. Struktur pro Block: (1) Was ist es — direkte Definition in einem Satz, (2) Wer braucht das — konkretes Use-Case-Beispiel mit Zahlen (z.B. 'Ein Gastronomiebetrieb mit 3 Standorten reduziert manuelle Bestelleingaben um ~80 %'), (3) Was liefert koeseo konkret — Deliverables. Auf der Leistungen-Unterseite zusätzlich eine FAQ-Section mit 5–8 Fragen im H3-Format ('Was kostet ein AI-Agent für KMU?', 'Wie lange dauert eine Implementierung?'). Ziel: Gesamttext Homepage + Leistungen > 1.200 Wörter.

### [Critical] llms.txt fehlt — keine maschinenlesbare AI-Inhaltsdeklaration
**Befund:** https://koeseo.de/llms.txt liefert HTTP 404. Die llms.txt-Spezifikation (Answer.AI/Jeremy Howard) ermöglicht es AI-Systemen, strukturiert zu verstehen, welche Inhalte für das Zitieren freigegeben sind, welche Hauptthemen die Site abdeckt und wie Inhalte zu interpretieren sind. Besonders für eine Firma, die AI-Infrastruktur verkauft, ist das Fehlen dieser Datei ein Glaubwürdigkeitssignal — Kunden und AI-Systeme, die die Site analysieren, sehen dass der Anbieter die eigene Technologie nicht konsequent einsetzt.

**Fix:** Datei /llms.txt anlegen mit: (1) # koeseo — AI- und IT-Infrastruktur (Titelzeile), (2) > Einzelkaufmann Gökhan Köse, Bochum. Konzept, Bau und Betrieb von AI-Agenten, Server-Infrastruktur, Kassensystemen und CRM-Workflows für Mittelstand und Solo-Operators. (3) ## Docs-Section mit Links zu /leistungen, /kontakt, /impressum. (4) RSL-1.0-Lizenzhinweis für Training-Opt-out falls gewünscht. Außerdem in robots.txt (sobald diese existiert) einen Link auf llms.txt eintragen: 'Sitemap: https://koeseo.de/llms.txt'.

### [High] Keine Entitäts-Disambiguierung im Schema — sameAs, telephone, openingHours fehlen
**Befund:** Das JSON-LD enthält name, address und founder, aber kein sameAs-Array. AI-Systeme (insbesondere Knowledge-Graph-basierte wie Google) nutzen sameAs um koeseo/Gökhan Köse mit externen Entitäten (LinkedIn-Profil, GitHub, Xing, Wikidata falls vorhanden) zu verknüpfen und Vertrauens-Score zu erhöhen. Zusätzlich fehlen telephone (NAP-Vollständigkeit), openingHours ('Mo-Fr 09:00-18:00'), priceRange und aggregateRating. Die E-Mail goekhan.koese@gmail.com statt einer @koeseo.de-Adresse ist ein schwaches Autoritätssignal. Brand-Mention-Korrelation mit AI-Zitierungen: YouTube ~0,737, Reddit hoch, Wikipedia hoch — keinerlei Signale dieser Art sind auffindbar (keine Social-Links auf der Site, kein externer Verweis außer ec.europa.eu).

**Fix:** JSON-LD um folgende Felder erweitern: 'telephone': '+49-XXX-XXXXXX', 'sameAs': ['https://www.linkedin.com/in/goekhan-koese/', 'https://github.com/koeseo'] (nur reale, aktive Profile eintragen), 'openingHours': 'Mo-Fr 09:00-18:00'. E-Mail-Adresse auf kontakt@koeseo.de umstellen (Mailcow ist bereits vorhanden). Mittelfristig: LinkedIn-Company-Page für koeseo anlegen und in sameAs referenzieren — LinkedIn-Präsenz hat hohe Korrelation mit AI-Zitierungen im B2B-Segment.

### [High] Kein robots.txt — keine explizite AI-Crawler-Policy
**Befund:** https://koeseo.de/robots.txt liefert HTTP 404. Gemäß RFC 9309 bedeutet ein fehlendes robots.txt implizites Allow-All — das ist für die aktuelle Crawl-Sichtbarkeit korrekt und positiv. Aber: (1) Ohne robots.txt kann kein Training-Opt-out für CCBot/anthropic-ai/cohere-ai gesetzt werden, (2) AI-Suchmaschinen können den Sitemap-Pfad nicht aus robots.txt lesen, (3) das Fehlen signalisiert fehlende technische Pflege — ein Negativsignal für Authority-Scoring.

**Fix:** robots.txt anlegen mit explizitem Allow für AI-Suchcrawler und optionalem Training-Opt-out: 'User-agent: *\nAllow: /\n\nUser-agent: GPTBot\nAllow: /\n\nUser-agent: ClaudeBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nUser-agent: Google-Extended\nAllow: /\n\n# Training-Opt-out (optional)\nUser-agent: CCBot\nDisallow: /\n\nSitemap: https://koeseo.de/sitemap.xml'. Die Entscheidung über Training-Opt-out (CCBot/anthropic-ai) liegt bei Gökhan — für AI-Search-Sichtbarkeit ist Allow-All das richtige Setup.

### [Medium] Kein Canonical-Tag, kein og:image, kein sitemap.xml
**Befund:** Canonical-Tag fehlt komplett (verifiziert: grep auf <link rel=canonical liefert kein Ergebnis). og:image fehlt (0 og:image-Meta-Tags gefunden). sitemap.xml liefert 404. Der Canonical-Tag ist für AI-Overviews relevant, da Google bei der Indexierung Canonical-Signale nutzt um Duplikat-Inhalte zu deduplicieren. Das fehlende og:image verhindert Preview-Thumbnails in AI-generierten Antworten, die URLs referenzieren. Das letzte HTML-Modifikationsdatum ist 09.05.2026 — über 2 Monate alt ohne Sitemap-Update-Signal.

**Fix:** 1. Canonical: <link rel='canonical' href='https://koeseo.de/' /> im <head> hinzufügen. 2. og:image: Ein 1200x630px Bild erstellen (Logo + 'AI & IT-Infrastruktur · Bochum') und als <meta property='og:image' content='https://koeseo.de/og-image.png'> einbinden. 3. sitemap.xml anlegen mit den 4 URLs: /, /leistungen, /impressum, /datenschutz — jede mit <lastmod> und <changefreq>monthly</changefreq>. 4. Twitter-Cards hinzufügen: <meta name='twitter:card' content='summary_large_image'> + title/description/image.

### [Medium] Kein HSTS-Header (Strict-Transport-Security fehlt)
**Befund:** curl -sI https://koeseo.de liefert keinen Strict-Transport-Security-Header. HTTP/2 und HTTPS sind aktiv, aber ohne HSTS können Nutzer und Crawler theoretisch auf HTTP umgeleitet werden. Google und Perplexity berücksichtigen HTTPS-Signalstärke bei Trust-Scoring. Gemessen: alle anderen Security-Header sind vorhanden (x-content-type-options, x-frame-options, referrer-policy, permissions-policy), HSTS ist die einzige Lücke.

**Fix:** In der nginx-Konfiguration für koeseo.de den Header hinzufügen: 'add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;'. Nach 90 Tagen problemlosem Betrieb auf 'max-age=63072000; includeSubDomains; preload' erweitern und bei hstspreload.org einreichen.

---
*Evidenz: Live geprüft via curl (2026-07-19): HTTP-Status-Codes für llms.txt (404), robots.txt (404), sitemap.xml (404), impressum (200), datenschutz (200). Response-Header aller Endpoints analysiert. Homepage-HTML vollständig geparsed (7.406 Bytes): Wortanzahl, Paragraph-Längen, JSON-LD, Meta-Tags, externe Links, Social-Links. Passage-Level-Scoring gegen 134–167-Wörter-Ziel berechnet. GEO-Score: Citability 8/100, Structural Readability 28/100, Multi-Modal 5/100, Authority & Brand 18/100, Technical Accessibility 35/100 — gewichtetes Gesamt 19/100. Einschränkung: Brand-Mention-Analyse (Wikipedia/Reddit/YouTube) nicht via Live-Suche verifiziert, da keine Social-Links auf der Site vorhanden und keine externen Signale auffindbar — als fehlend gewertet. Platform-spezifische ChatGPT/Perplexity-Sichtbarkeit nicht via DataForSEO gemessen (kein MCP-Tool verfügbar).*
