0Pricing
React Academy · Lektion

Metadata API und SEO im App Router

Exportieren Sie statische und dynamische Metadata-Objekte, um Seitentitel, Beschreibungen und OG-Tags festzulegen.

Metadata API und SEO im App Router ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Metadaten wichtig sind

Gute Metadaten (Titel, Beschreibung, OG-Tags) verbessern das SEO-Ranking und die Vorschauen beim Teilen in sozialen Netzwerken. Der App Router von Next.js stellt eine typsichere Metadata API bereit, die <head>-Tags serverseitig erzeugt.

Statischer Metadaten-Export

Exportieren Sie aus einer beliebigen page.tsx oder layout.tsx ein metadata-Objekt, um statische Tags für dieses Segment festzulegen.

import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: 'My App',
  description: 'The best app ever built',
  keywords: ['react', 'nextjs', 'typescript'],
};

export default function Page() { return <main>Hello</main>; }

Titelvorlagen

Verwenden Sie title.template in einem Layout, damit untergeordnete Seiten automatisch einen formatierten Titel erhalten, ohne den Namen der Website zu wiederholen.

// app/layout.tsx
export const metadata: Metadata = {
  title: {
    template: '%s | My App',
    default: 'My App',
  },
};

// app/about/page.tsx
export const metadata: Metadata = {
  title: 'About', // renders as "About | My App"
};

Dynamische Metadaten mit generateMetadata

Exportieren Sie für Routen mit datenabhängigen Tags eine asynchrone Funktion generateMetadata – sie erhält params und die Metadaten des übergeordneten Elements.

export async function generateMetadata({ params }: { params: { id: string } }): Promise<Metadata> {
  const product = await getProduct(params.id);
  return {
    title: product.name,
    description: product.summary,
    openGraph: {
      title: product.name,
      images: [product.imageUrl],
    },
  };
}

Open-Graph-Tags

Der Schlüssel openGraph legt OG-Tags für das Teilen in sozialen Netzwerken wie Facebook, LinkedIn und Slack fest.

export const metadata: Metadata = {
  openGraph: {
    title: 'My Product',
    description: 'Buy now!',
    url: 'https://example.com/product',
    siteName: 'My App',
    images: [{ url: 'https://example.com/og.png', width: 1200, height: 630 }],
    type: 'website',
    locale: 'en_US',
  },
};

Twitter-Card-Tags

Der Schlüssel twitter legt Twitter-spezifische Card-Metadaten für umfangreiche Vorschauen in Tweets fest.

twitter: {
  card: 'summary_large_image',
  title: 'My Product',
  description: 'Buy now!',
  images: ['https://example.com/twitter.png'],
  creator: '@myhandle',
},

Robots und Canonical

Steuern Sie das Crawling mit robots und legen Sie kanonische URLs fest, um Nachteile durch doppelte Inhalte zu vermeiden.

export const metadata: Metadata = {
  robots: { index: true, follow: true, googleBot: { index: true } },
  alternates: { canonical: 'https://example.com/products' },
};

Favicons und Icons

Legen Sie Icon-Dateien mit reservierten Namen (icon.png, apple-icon.png, favicon.ico) in app/ ab oder deklarieren Sie sie in metadata.icons.

// Convention: place app/icon.png → auto-detected as favicon

// Or declare explicitly:
export const metadata: Metadata = {
  icons: {
    icon: '/icon.png',
    apple: '/apple-icon.png',
    shortcut: '/shortcut-icon.png',
  },
};

OG-Bilder mit ImageResponse erzeugen

Verwenden Sie ImageResponse aus next/og in einer route.ts, um dynamische OG-Bilder zu erzeugen, deren JSX als PNG gerendert wird.

// app/og/route.ts
import { ImageResponse } from 'next/og';

export async function GET(req: Request) {
  const { searchParams } = new URL(req.url);
  const title = searchParams.get('title') ?? 'Default';
  return new ImageResponse(
    <div style={{ fontSize: 48, background: '#fff', width: '100%', height: '100%' }}>
      {title}
    </div>,
    { width: 1200, height: 630 }
  );
}

Strukturierte Daten (JSON-LD)

Fügen Sie strukturierte JSON-LD-Daten hinzu, indem Sie ein <script>-Tag in das JSX der Seite einfügen – dies ist nicht Teil der Metadata API, funktioniert aber zusammen mit ihr.

export default function ProductPage({ product }) {
  const jsonLd = {
    '@context': 'https://schema.org',
    '@type': 'Product',
    name: product.name,
    price: product.price,
  };
  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
      <h1>{product.name}</h1>
    </>
  );
}

Metadaten überprüfen

Verwenden Sie die Browser-DevTools (Tab „Network“, HTML-Quelltext anzeigen) oder Tools wie opengraph.xyz, um zu überprüfen, ob Ihre Metadaten im serverseitigen HTML korrekt gerendert werden.

Kurztest

Welche Funktion der Next.js Metadata API ermöglicht es untergeordneten Seiten, ein gemeinsames Titel-Suffix wie „About | My App“ zu übernehmen und anzupassen?

Zusammenfassung

Exportieren Sie metadata für statische Tags oder generateMetadata() für dynamische. Verwenden Sie title.template in Layouts für DRY-Titel, setzen Sie openGraph und twitter für Vorschauen in sozialen Netzwerken ein und verwenden Sie ImageResponse in einem Routen-Handler, um dynamische OG-Bilder bereitzustellen.

Häufig gestellte Fragen

Ist die Lektion „Metadata API und SEO im App Router“ kostenlos?

Ja — der vollständige Text von „Metadata API und SEO im App Router“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Metadata API und SEO im App Router“?

Exportieren Sie statische und dynamische Metadata-Objekte, um Seitentitel, Beschreibungen und OG-Tags festzulegen. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Metadata API und SEO im App Router“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Dateikonventionen im App Router
  2. Server- und Client-Components in Next.js
  3. Dynamische Routes und Route-Gruppen
  4. Metadata API und SEO im App Router
← Zurück zu React Academy