cms.c2sgmbh/docs/anleitungen/SEO_ERWEITERUNG.md
Martin Porwoll a88e4f60d0 test: add E2E and integration tests with documentation
Tests:
- Update frontend.e2e.spec.ts with locale testing
- Add search.e2e.spec.ts for search functionality
- Add i18n.int.spec.ts for localization tests
- Add search.int.spec.ts for search integration
- Update playwright.config.ts

Documentation:
- Add CLAUDE.md with project instructions
- Add docs/ directory with detailed documentation
- Add scripts/ for utility scripts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-01 08:19:52 +00:00

4.4 KiB

SEO-Erweiterung

Übersicht

Diese Dokumentation beschreibt die implementierten SEO-Features für das Payload CMS Multi-Tenant System.

Implementierte Features

1. Dynamische Sitemap (/sitemap.xml)

Datei: /src/app/sitemap.ts

Die Sitemap wird dynamisch aus der Datenbank generiert und enthält:

  • Startseite (Priorität: 1.0, Änderungshäufigkeit: täglich)
  • Alle veröffentlichten Seiten (Priorität: 0.8, Änderungshäufigkeit: wöchentlich)
  • Alle veröffentlichten Posts mit typ-basierter URL (Priorität: 0.6, Änderungshäufigkeit: monatlich)

URL-Schema für Posts:

Post-Typ URL-Prefix
blog /blog/{slug}
news /news/{slug}
press /presse/{slug}
announcement /aktuelles/{slug}

2. Robots.txt (/robots.txt)

Datei: /src/app/robots.ts

Konfiguriert Crawler-Zugriff:

User-Agent: *
Allow: /
Disallow: /admin
Disallow: /admin/*
Disallow: /api/*
Disallow: /_next/*
Disallow: /media/*

User-Agent: Googlebot
Allow: /
Disallow: /admin
Disallow: /api

Host: https://pl.c2sgmbh.de
Sitemap: https://pl.c2sgmbh.de/sitemap.xml

3. Structured Data (JSON-LD)

Datei: /src/lib/structuredData.ts

Bietet Helper-Funktionen für Schema.org-konforme JSON-LD Daten:

Verfügbare Funktionen

Funktion Beschreibung
generateOrganizationSchema() Organization Schema
generateArticleSchema() Article Schema für Blog-Posts
generateNewsArticleSchema() NewsArticle Schema
generateWebPageSchema() WebPage Schema
generateBreadcrumbSchema() BreadcrumbList Schema
generateFAQSchema() FAQPage Schema
generateReviewSchema() Review/Testimonial Schema
generateAggregateRatingSchema() AggregateRating Schema
generateLocalBusinessSchema() LocalBusiness Schema
generateWebSiteSchema() WebSite Schema mit SearchAction
combineSchemas() Kombiniert mehrere Schemas
renderJsonLd() Sicheres Rendering von JSON-LD

Verwendungsbeispiel

import { generateArticleSchema, renderJsonLd } from '@/lib/structuredData'

export default function BlogPost({ post }) {
  const schema = generateArticleSchema({
    title: post.title,
    description: post.excerpt,
    slug: post.slug,
    publishedAt: post.publishedAt,
    updatedAt: post.updatedAt,
    author: post.author,
    featuredImage: post.featuredImage,
    categories: post.categories,
  }, 'https://example.com')

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: renderJsonLd(schema) }}
      />
      <article>...</article>
    </>
  )
}

4. SEO Settings Global

Datei: /src/globals/SEOSettings.ts

Globale SEO-Konfiguration im Admin-Panel unter "Einstellungen > SEO Einstellungen":

Meta-Defaults

  • Titel-Suffix (z.B. "| Firmenname")
  • Standard Meta-Beschreibung
  • Standard Social Media Bild
  • Standard Keywords

Organisation (Schema.org)

  • Firmenname & rechtlicher Name
  • Unternehmensbeschreibung
  • Logo
  • Gründungsdatum

Kontaktdaten

  • E-Mail
  • Telefon
  • Fax

Adresse

  • Straße & Hausnummer
  • PLZ, Stadt, Region
  • Land & Ländercode

Geo-Koordinaten

  • Breitengrad
  • Längengrad

Social Media Profile

  • Plattform (Facebook, Instagram, Twitter, LinkedIn, YouTube, etc.)
  • Profil-URL

Local Business

  • Schema aktivieren/deaktivieren
  • Geschäftstyp (Arztpraxis, Anwaltskanzlei, Restaurant, etc.)
  • Preiskategorie (€ bis €€€€)
  • Öffnungszeiten

Robots & Indexierung

  • Indexierung erlauben/verbieten
  • Zusätzliche Pfade ausschließen

Verifizierungscodes

  • Google Search Console
  • Bing Webmaster Tools
  • Yandex Webmaster

Datenbank-Tabellen

Die Migration 20251130_150000_blocks_tables.ts erstellt:

  • seo_settings - Haupttabelle für SEO-Einstellungen
  • seo_settings_meta_defaults_keywords - Keywords Array
  • seo_settings_social_profiles - Social Media Profile
  • seo_settings_local_business_opening_hours - Öffnungszeiten
  • seo_settings_robots_additional_disallow - Ausgeschlossene Pfade

URLs

Nächste Schritte

  1. SEO Settings im Admin-Panel konfigurieren
  2. JSON-LD in Frontend-Templates einbinden
  3. Meta-Tags in Layout integrieren
  4. Google Search Console einrichten