# Search Experience Optimization — Score 25/100

## Was funktioniert
- HTTP 200, 134 ms Ladezeit (live gemessen via curl)
- 4 Security-Header vorhanden: x-content-type-options=nosniff, x-frame-options=SAMEORIGIN, referrer-policy, permissions-policy
- JSON-LD ProfessionalService mit korrekter Adresse (Annastraße 27 Bochum 44793 DE) + vatID + founder
- Meta-Description mit lokalem Bezug: 'Aus Bochum.' – knapper, präziser Brand-Anker
- Honeypot-Spam-Schutz im Kontaktformular (name='website', position:absolute;left:-9999px)
- DSGVO-Consent-Checkbox mit Datenschutzlink im Formular
- Accessibility: skip-link, aria-label auf nav, aria-live auf form-status, label-for-Verknüpfungen durchgängig
- lang=de + viewport + charset UTF-8 korrekt gesetzt
- Hero-Eyebrow 'Bochum' + Meta-Description 'Aus Bochum' – lokaler Anker ist vorhanden, nur nicht ausgebaut
- Kontaktformular mit Pflichtfeld-Validierung und novalidate-Fallback live vorhanden

## Findings

### [Critical] CRITICAL: Page-Type-Mismatch – 1-Seiter vs. dedizierte Location-Landing-Pages im SERP
**Befund:** SERP-Analyse für 'KI Agentur Bochum' (live, 2026-07-19): 9 von 10 Ergebnissen sind dedizierte Sub-Pages von auswärtigen Agenturen (/locations/bochum, /service/ki-agentur-bochum/, /ki-agentur/bochum) mit 1.500–4.000+ Wörtern. koeseo.de antwortet mit einer 230-Wort-Homepage (live gemessen via Python-Textextraktion aus curl-Output). SERP-Dominant-Type: Service + Location Landing Page, Konfidenz 90 %. Kritische Ironie: Alle SERP-Konkurrenten sind Nicht-Bochumer Agenturen (Berlin, Hamburg, Frankfurt) mit reinen SEO-City-Pages. koeseo hat die einzige echte Bochumer Adresse im Feld (Annastraße 27, live in JSON-LD verifiziert) – und nutzt diesen Authentizitätsvorteil nicht. Mismatch-Schwere: CRITICAL.

**Fix:** Dedizierte Seite /ki-agentur-bochum/ erstellen mit H1 'KI-Agentur Bochum – AI-Agenten & IT-Infrastruktur für den Mittelstand', Ortsnennung in den ersten 100 Wörtern, mindestens 1.200 Wörter Fließtext, Abschnitte: Leistungsdetails (je 150-200 Wörter), Prozess (Analyse → Konzept → Bau → Betrieb), Referenzen, FAQ (5+ Fragen), Bochum/NRW-Kontext explizit ('Ruhrgebiet', 'NRW-Mittelstand'). Canonical der Homepage auf diese Seite zeigen lassen oder Homepage als inhaltliche Erweiterung ausbauen. Der lokale Authentizitätsvorteil gegenüber SEO-City-Page-Konkurrenten ist ein messbarer SERP-Hebel – er muss nur mit Inhalt gefüllt werden.

### [Critical] CRITICAL: Thin Content – 230 sichtbare Wörter gegen 1.500-4.000-Wort-Konkurrenz
**Befund:** Live gemessen (Python, curl): 230 sichtbare Wörter gesamt auf der gesamten Homepage. Service-Karten haben 4–8 Wörter Beschreibungstext ('Automation, die im Tagesgeschäft mitarbeitet' = 6 Wörter, 'Eigener Server. DSGVO-konform. Wartbar.' = 5 Wörter). SERP-Benchmark für 'KI Agentur Bochum': mindestens 1.200 Wörter (aus Analyse der Top-10-Seiten). Vollständig fehlend: Prozessbeschreibung, Technologie-Stack, Branchenbeispiele, FAQ-Block, Case Studies, Über-uns-Abschnitt. Google hat keine ausreichende inhaltliche Grundlage zur Intent-Zuordnung der Seite.

**Fix:** Für jede der 4 Leistungskarten (AI-Agenten, Infrastruktur, Kassensysteme, CRM & Workflows) eine Beschreibung von 150-200 Wörtern schreiben – konkreter Nutzen, typischer Anwendungsfall, Technologie-Hinweis. Abschnitt 'Unser Ansatz' hinzufügen (4 Phasen: Analyse, Konzept, Bau, Betrieb – je 3-4 Sätze). FAQ-Block mit 5 realen Entscheiderfragen (z.B. 'Wie lange dauert ein AI-Agenten-Projekt?', 'Was kostet IT-Infrastruktur im laufenden Betrieb?', 'Sind eure Lösungen DSGVO-konform?'). Zielgröße: 1.200+ Wörter auf der primären Rankingpage.

### [High] HIGH: Authority-Vacuum – kein Social Proof, kein Gründerprofil, Gmail als Kontakt
**Befund:** Live verifiziert (Python grep auf vollständigem HTML): Keine Referenzen, Testimonials, Kunden-Logos oder Case Studies auf der Seite (grep auf 'referenz', 'testimonial', 'kunde' = False). Kontakt-Email ist goekhan.koese@gmail.com (live im HTML sichtbar) – kein Business-Domain-Email. Kein LinkedIn-Link (grep = False). Kein Gründerfoto. In JSON-LD nur 'founder': 'Gökhan Köse' als String ohne URL. Alle 10 analysierten SERP-Wettbewerber haben mindestens Gründer-Bio oder Team-Sektion. Gmail-Adresse für B2B-Entscheider ein messbarer Vertrauenssignal-Verlust.

**Fix:** (a) Business-Email hallo@koeseo.de anlegen und als primären Kontakt einsetzen – Gmail ersetzen im HTML + Schema. (b) Abschnitt 'Wer steckt dahinter' mit Gründer-Foto und 3-4-zeiliger Bio ('Gökhan Köse, Bochum. 10+ Jahre IT-Infrastruktur...'). (c) Mindestens 2 anonymisierte Projektreferenzen als konkreten Block ('Mittelstand-Kunde, Ruhrgebiet, 50 MA: AI-Agenten für Posteingang – 4h Zeitersparnis/Tag'). (d) LinkedIn-Profil verlinken + sameAs in Schema einbinden.

### [High] HIGH: Schema unvollständig – telephone, sameAs, openingHours, Service-Schemas fehlen
**Befund:** Live verifiziert (Python grep auf JSON-LD-Block): ProfessionalService + address + founder + vatID vorhanden. Fehlend: telephone (grep = False), sameAs (grep = False), openingHoursSpecification (grep = False), aggregateRating, priceRange. Keine @type Service-Blöcke für die 4 Leistungen. Kein FAQPage-Schema. Ohne telephone und openingHours ist die Seite nicht Local-Pack-fähig – der 3-Treffer-Block bei standortbezogenen Suchanfragen bleibt unerreichbar.

**Fix:** JSON-LD erweitern um: telephone (auch wenn Kontaktform bevorzugt – für Local Pack nötig), sameAs mit LinkedIn-URL, openingHoursSpecification Mo-Fr 09:00-18:00, priceRange '€€'. Für jede der 4 Leistungen einen @type Service-Block hinzufügen (name, description, provider). FAQPage-Schema anlegen, sobald FAQ-Abschnitt existiert.

### [High] HIGH: Null Media – kein einziges Bild auf der gesamten Seite
**Befund:** Live verifiziert: HTML enthält 0 <img>-Tags. Kein Team-Foto, kein Projekt-Screenshot, kein Logo, keine Infografik, kein og:image. Alle 10 analysierten SERP-Wettbewerber haben mindestens ein Team-Foto und ein grafisches Element. Google Image-Search: koeseo.de liefert keinen indexierbaren Bild-Content. Fehlende og:image-Angabe bedeutet leeres Snippet beim Teilen auf LinkedIn und X/Twitter.

**Fix:** Mindestens 3 Bilder einbinden: (1) Profilfoto Gökhan Köse im Gründer-Abschnitt (WebP, alt='Gökhan Köse, KI-Agentur Bochum'), (2) abstraktes Leistungs-Visual (Server/Netzwerk-Kontext, alt='IT-Infrastruktur Bochum – koeseo'), (3) og:image 1200×630px für Social-Snippets. Alle Bilder mit sprechenden alt-Attributen und Bochum-Keyword.

### [Medium] MEDIUM: Canonical-Tag und Twitter/X-Cards fehlen
**Befund:** Live verifiziert (Python grep = False für beide): Kein <link rel='canonical'> im Head. Kein twitter:card, twitter:title, twitter:description Meta-Tag. og:image fehlt. Beim Teilen auf LinkedIn oder X erscheint ein leeres Snippet ohne Vorschaubild. Canonical-Fehlen erhöht das Risiko von Duplicate-Content-Signalen wenn die Seite über http:// oder mit Trailing-Slash-Varianten gecrawlt wird.

**Fix:** Head ergänzen um: <link rel='canonical' href='https://koeseo.de/'>, <meta name='twitter:card' content='summary_large_image'>, <meta name='twitter:title'>, <meta name='twitter:description'>, <meta name='twitter:image'>. og:image mit 1200×630px-Bild belegen (identisch mit Twitter-Image kann verwendet werden).

### [Medium] MEDIUM: robots.txt und sitemap.xml fehlen – beide 404
**Befund:** Aus Basis-Fakten bekannt (nicht erneut geprüft per Aufgabenstellung): robots.txt = 404, sitemap.xml = 404. GSC-Zugang ist konfiguriert (laut Basis-Fakten: sc-domain:koeseo.de, Service Account aktiv) – GSC meldet fehlende Sitemap als Fehler. Googlebot crawlt ohne Steuerungsdatei.

**Fix:** robots.txt anlegen: 'User-agent: * / Allow: / / Sitemap: https://koeseo.de/sitemap.xml'. sitemap.xml mit den 5 bekannten Seiten erstellen (/, /impressum, /datenschutz + ggf. /leistungen, /kontakt wenn als eigene URLs geplant). Sitemap in GSC einreichen.

### [Medium] MEDIUM: Kontaktform-CTA zu hochschwellig – 'Erstgespräch'-Framing fehlt
**Befund:** CTA-Text live: 'Projekt anfragen' (Hero-Button) und 'Anfrage senden' (Form-Submit). SERP-Wettbewerber formulieren niedrigschwelliger: 'Kostenloses 30-min Erstgespräch', 'Kostenlose KI-Potenzialanalyse', 'Unverbindlich anfragen'. Der aktuelle Wortlaut setzt ein laufendes Projekt voraus – schließt Entscheider in der Orientierungsphase aus. User Story: Als Mittelstands-GF will ich einen unverbindlichen Erstkontakt, kein sofortiges Projekt-Briefing.

**Fix:** Hero-CTA umbenennen zu 'Kostenloses Erstgespräch anfragen'. Form-Headline ändern zu '30 Minuten. Klarer Vorschlag.' (oder 'Unverbindliches Erstgespräch – Rückmeldung innerhalb 24 h'). Optional: Kalender-Widget (Calendly o.ä.) als zweite CTA-Option neben dem Formular einbinden.

### [Low] LOW: HSTS-Header fehlt
**Befund:** Live verifiziert (curl -sI Header-Check, 2026-07-19): Strict-Transport-Security Header ist nicht im Response vorhanden. Die anderen 4 Security-Header sind gesetzt. Ohne HSTS können Downgrade-Attacken auf HTTP nicht ausgeschlossen werden; Browser zeigen keinen Preload-Status.

**Fix:** Nginx-Config ergänzen: add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains' always; – in den HTTPS-Server-Block. Nach stabiler Laufzeit (mind. 1 Monat) optional preload-Flag hinzufügen und auf hstspreload.org einreichen.

### [Info] Info: Google Business Profile nicht mit Schema verknüpft – Local Pack unerreichbar
**Befund:** Kein sameAs-Eintrag in JSON-LD (live verifiziert). Kein GBP-Link. Für die Query 'KI Agentur Bochum' gibt es ein potenzielles Local 3-Pack SERP-Feature. Ohne verifiziertes GBP mit Übereinstimmung zu NAP (Name/Adresse/Telefon) in Schema ist koeseo dort nicht sichtbar. SERP-Wettbewerber ohne echte Bochumer Adresse können dieses Feature nicht belegen – koeseo könnte es exklusiv besetzen.

**Fix:** Google Business Profile für koeseo / Gökhan Köse anlegen und verifizieren (Annastraße 27, 44793 Bochum). Kategorie: 'IT-Dienstleistungen' oder 'Software-Unternehmen'. GBP-URL als sameAs in JSON-LD eintragen. telephone und openingHours in Schema ergänzen (Voraussetzung für Local Pack Eligibility). Wenn GBP aktiv: LinkedIn, Xing und ggf. Branchenverzeichnisse (wlw.de, yelp.de) als weitere sameAs-Einträge.

---
*Evidenz: Verifiziert via curl (HTTP-Status 200, 134ms, 7.383 Bytes, Security-Header live), Python-Textextraktion aus curl-Output (230 sichtbare Wörter, grep auf 20+ HTML-Elemente), WebSearch für SERP-Analyse (3 Queries: 'KI Agentur Bochum NRW Mittelstand', 'AI Agenten Automatisierung Mittelstand', 'KI Agentur Bochum IT Infrastruktur 2026' – gesamt 30 SERP-Ergebnisse analysiert). JavaScript-Rendering nicht separat ausgeführt – Seite ist statisches HTML (nginx, kein SPA-Shell im Response erkannt, Playwright-Fallback nicht nötig). GSC-Daten nicht abgerufen (GSC-Skripte nicht aufgerufen, nur Basis-Fakten aus Aufgabenstellung verwendet). Live-Datum: 2026-07-19. SERP-Sichtung ohne Geo-Targeting (kein Berlin/Bochum-IP-Lock) – lokale SERP-Platzierungen können abweichen.*
