SEO – Search Engine Optimization
Für Google, Bing, DuckDuckGo, Yandex, Ecosia.
Für KI-Auffindbarkeit → GEO Skill. Wenn User "SEO" sagt, prüfe ob GEO auch relevant ist.
Workflow
| Schritt |
Prüfen |
| 1. Analyse |
robots.txt, sitemap, Meta-Tags, OG, JSON-LD, SEO-Felder auf Models |
| 2. Discovery |
robots.txt dynamisch via Route, sitemap.xml dynamisch + gecacht |
| 3. Meta-Tags |
title, description, canonical, hreflang, geo-targeting, OG, Twitter Cards |
| 4. Structured Data |
JSON-LD pro Seitentyp (Organization, Article, Product, FAQ, Breadcrumb) |
| 5. Content |
SEO-Felder auf Models, Focus-Keyword-Analyse, KI-Generierung |
| 6. Redirects |
301 für alte URLs, nie 302 für permanente Weiterleitungen |
| 7. Validierung |
Rich Results Test, Schema.org Validator, OG Debugger |
Core Web Vitals sind Ranking-Faktor. Für Performance-Optimierung → laravel-perf Skill.
robots.txt (Dynamisch)
Route: GET /robots.txt → gecacht 1h
- User-agent: * / Allow: / / Disallow: /admin/, /api/, /livewire/
- Sitemap: {APP_URL}/sitemap.xml
- APP_ENV=local → Disallow: /
- NIEMALS statische Datei in /public/
- Für KI-Crawler → GEO Skill
Sitemap (Dynamisch)
Route: GET /sitemap.xml (Index) + /sitemap-{locale}.xml (pro Sprache)
Cache: 1h, invalidieren bei Content-Änderung
- Nur publizierte Inhalte, <lastmod> aus updated_at
- hreflang-Annotations in Sitemap (xhtml:link)
- Max 50.000 URLs pro Sitemap
Priorities: Homepage 1.0, Archive 0.8-0.9, Details 0.6-0.8, Statisch 0.3-0.5
Meta-Tags (im <head>)
<title>{meta_title} - {site_name}</title> <!-- max 60 Zeichen -->
<meta name="description" content="{...}"> <!-- max 155 Zeichen -->
<link rel="canonical" href="{canonical_url}">
<link rel="alternate" hreflang="de" href="{de_url}">
<link rel="alternate" hreflang="en" href="{en_url}">
<link rel="alternate" hreflang="x-default" href="{default_url}">
<meta name="geo.region" content="AT">
<meta name="google-site-verification" content="{aus Settings}">
Open Graph + Twitter
<meta property="og:type" content="{website|article|product}">
<meta property="og:title" content="{title}">
<meta property="og:description" content="{description}">
<meta property="og:image" content="{1200x630, lokal, max 300KB}">
<meta property="og:image:alt" content="{alt}">
<meta property="og:locale" content="{de_AT|en_US}">
<meta name="twitter:card" content="summary_large_image">
og:type pro Seite: Homepage→website, Blog→article, Produkt→product
Structured Data (JSON-LD)
Nur die wichtigsten – projekt-spezifische (LocalBusiness, TouristAttraction, Event etc.) je nach Bedarf ergänzen:
- Homepage: Organization (name, url, logo, sameAs)
- Blog: Article (headline, datePublished, author, image)
- Alle Seiten: BreadcrumbList
- FAQ-Sektionen: FAQPage
- Produkte: Product (name, offers, price)
Validieren: Google Rich Results Test + Schema.org Validator
SEO-Felder pro Model
meta_title (translatable, max 60 Zeichen)
meta_description (translatable, max 155 Zeichen)
focus_keyword (1-3 Wörter)
Focus-Keyword Score (0-100): Keyword in Titel (15), Description (15), URL (10), Intro (10), Content (10), Länge ≥600 (10), H2-H4 (10), Titel ≤60 (10), Description ≤155 (10)
KI-Generierung: "SEO generieren" Button → Queue-Job → füllt fehlende Felder. Batch über SEO-Dashboard.
Redirects
// 301 für permanente Weiterleitungen (alte URLs, Slug-Änderungen)
Route::redirect('/alter-pfad', '/neuer-pfad', 301);
// Redirect-Tabelle im Admin für dynamische Verwaltung
Audit-Checkliste
DISCOVERY: robots.txt dynamisch, sitemap mit hreflang, nur publizierte Inhalte
META: title+description auf jeder Seite, canonical, hreflang DE+EN+x-default
OG: og:type/title/description/image auf jeder Seite, Default-Bild vorhanden
JSON-LD: Organization+BreadcrumbList minimum, validiert
CONTENT: SEO-Felder auf allen Models, Alt-Texte, Heading-Hierarchie korrekt
REDIRECTS: Alte URLs → 301, keine Ketten, keine Schleifen
PERFORMANCE: Discovery Files gecacht, keine N+1 in Sitemap, <500ms Response
1---2name: seo3description: Klassisches SEO für Laravel-Projekte: robots.txt, sitemap.xml, Meta-Tags, Open Graph, Structured Data (JSON-LD), hreflang, Focus-Keywords, Redirects. Nutze bei: "SEO", "Suchmaschinenoptimierung", "robots.txt", "sitemap", "Open Graph", "OG Tags", "Meta Tags", "Structured Data", "JSON-LD", "Schema.org", "hreflang", "Focus Keyword", "SEO Audit", "SEO Check", "SERP", "Google Search Console", "ranking verbessern", "Canonical URL", "Rich Snippets", "Meta Description", "SEO generieren". Für KI-Auffindbarkeit (ai.txt, llms.txt) → GEO Skill.4---56# SEO – Search Engine Optimization78Für Google, Bing, DuckDuckGo, Yandex, Ecosia.9Für KI-Auffindbarkeit → **GEO Skill**. Wenn User "SEO" sagt, prüfe ob GEO auch relevant ist.1011## Workflow1213| Schritt | Prüfen |14|---|---|15| 1. Analyse | robots.txt, sitemap, Meta-Tags, OG, JSON-LD, SEO-Felder auf Models |16| 2. Discovery | robots.txt dynamisch via Route, sitemap.xml dynamisch + gecacht |17| 3. Meta-Tags | title, description, canonical, hreflang, geo-targeting, OG, Twitter Cards |18| 4. Structured Data | JSON-LD pro Seitentyp (Organization, Article, Product, FAQ, Breadcrumb) |19| 5. Content | SEO-Felder auf Models, Focus-Keyword-Analyse, KI-Generierung |20| 6. Redirects | 301 für alte URLs, nie 302 für permanente Weiterleitungen |21| 7. Validierung | Rich Results Test, Schema.org Validator, OG Debugger |2223> **Core Web Vitals sind Ranking-Faktor.** Für Performance-Optimierung → laravel-perf Skill.2425## robots.txt (Dynamisch)2627```28Route: GET /robots.txt → gecacht 1h29- User-agent: * / Allow: / / Disallow: /admin/, /api/, /livewire/30- Sitemap: {APP_URL}/sitemap.xml31- APP_ENV=local → Disallow: /32- NIEMALS statische Datei in /public/33- Für KI-Crawler → GEO Skill34```3536## Sitemap (Dynamisch)3738```39Route: GET /sitemap.xml (Index) + /sitemap-{locale}.xml (pro Sprache)40Cache: 1h, invalidieren bei Content-Änderung41- Nur publizierte Inhalte, <lastmod> aus updated_at42- hreflang-Annotations in Sitemap (xhtml:link)43- Max 50.000 URLs pro Sitemap44```4546**Priorities:** Homepage 1.0, Archive 0.8-0.9, Details 0.6-0.8, Statisch 0.3-0.54748## Meta-Tags (im `<head>`)4950```html51<title>{meta_title} - {site_name}</title> <!-- max 60 Zeichen -->52<meta name="description" content="{...}"> <!-- max 155 Zeichen -->53<link rel="canonical" href="{canonical_url}">54<link rel="alternate" hreflang="de" href="{de_url}">55<link rel="alternate" hreflang="en" href="{en_url}">56<link rel="alternate" hreflang="x-default" href="{default_url}">57<meta name="geo.region" content="AT">58<meta name="google-site-verification" content="{aus Settings}">59```6061## Open Graph + Twitter6263```html64<meta property="og:type" content="{website|article|product}">65<meta property="og:title" content="{title}">66<meta property="og:description" content="{description}">67<meta property="og:image" content="{1200x630, lokal, max 300KB}">68<meta property="og:image:alt" content="{alt}">69<meta property="og:locale" content="{de_AT|en_US}">70<meta name="twitter:card" content="summary_large_image">71```7273**og:type pro Seite:** Homepage→website, Blog→article, Produkt→product7475## Structured Data (JSON-LD)7677Nur die wichtigsten – projekt-spezifische (LocalBusiness, TouristAttraction, Event etc.) je nach Bedarf ergänzen:7879- **Homepage:** Organization (name, url, logo, sameAs)80- **Blog:** Article (headline, datePublished, author, image)81- **Alle Seiten:** BreadcrumbList82- **FAQ-Sektionen:** FAQPage83- **Produkte:** Product (name, offers, price)8485Validieren: Google Rich Results Test + Schema.org Validator8687## SEO-Felder pro Model8889```90meta_title (translatable, max 60 Zeichen)91meta_description (translatable, max 155 Zeichen)92focus_keyword (1-3 Wörter)93```9495**Focus-Keyword Score (0-100):** Keyword in Titel (15), Description (15), URL (10), Intro (10), Content (10), Länge ≥600 (10), H2-H4 (10), Titel ≤60 (10), Description ≤155 (10)9697**KI-Generierung:** "SEO generieren" Button → Queue-Job → füllt fehlende Felder. Batch über SEO-Dashboard.9899## Redirects100101```php102// 301 für permanente Weiterleitungen (alte URLs, Slug-Änderungen)103Route::redirect('/alter-pfad', '/neuer-pfad', 301);104// Redirect-Tabelle im Admin für dynamische Verwaltung105```106107## Audit-Checkliste108109```110DISCOVERY: robots.txt dynamisch, sitemap mit hreflang, nur publizierte Inhalte111META: title+description auf jeder Seite, canonical, hreflang DE+EN+x-default112OG: og:type/title/description/image auf jeder Seite, Default-Bild vorhanden113JSON-LD: Organization+BreadcrumbList minimum, validiert114CONTENT: SEO-Felder auf allen Models, Alt-Texte, Heading-Hierarchie korrekt115REDIRECTS: Alte URLs → 301, keine Ketten, keine Schleifen116PERFORMANCE: Discovery Files gecacht, keine N+1 in Sitemap, <500ms Response117```