PAS7 Studio
Zurück zu allen Artikeln

Next.js Sitemap Hreflang für App Router und Static Export: @pas7/nextjs-sitemap-hreflang

Ein praxisnaher Leitfaden zu Next.js Sitemap Hreflang für App Router und Static Export: Hreflang-Alternativen und x-default generieren, sitemap.xml ergänzen oder korrigieren, Hreflang in CI validieren und gemischte Content-Pipelines unterstützen.

Geeignet fürFrontend-EngineersTechnical-SEO-EngineersNext.js-Teams mit mehrsprachigen WebsitesTech Leads, die Sitemap-Validierung in CI standardisieren
Redaktionelles Cover mit einem Next.js-Sitemap-Workflow, Hreflang-Alternativen, x-default, App Router MetadataRoute.Sitemap und XML-Validierung in CI

Am einfachsten versteht man das Paket als Sitemap-Workflow-Tool und nicht nur als Hilfsfunktion. Es deckt Generierung, XML-Patching, Validierung und gemischtes Routing an einer Stelle ab. [1][2][3]

Erzeugt Hreflang-Alternativen für App Router MetadataRoute.Sitemap. [1][4]
Fügt Hreflang direkt in generierte sitemap.xml ein oder korrigiert es dort. [1]
Validiert Sitemap-Hreflang in CI statt XML von Hand zu prüfen. [1][3]
Unterstützt gemischte Content-Pipelines aus .ts, .json, .md/.mdx oder CMS-Daten. [1]
Behandelt hybride Routing-Muster wie Prefix, Suffix und Locale-Segment innerhalb einer Site. [1][2]
Liefert maschinenlesbare JSON-Reports und eindeutige Exit Codes für CI. [1][3]

Die eigentliche Schwierigkeit ist meist nicht, eine mehrsprachige Sitemap einmal zu erzeugen. Die Schwierigkeit liegt darin, korrekte Alternate-Language-URLs beizubehalten, wenn die Site wächst. Statische Seiten folgen oft einem Locale-Muster, Content-Hubs einem anderen und Detailseiten einem dritten. In der Praxis mischt eine mehrsprachige Website häufig Homepage-Routing, lokalisierte Hubs und locale-segmentierte Detailseiten. [1][2]

Der Next.js App Router bietet mit MetadataRoute.Sitemap einen sauberen Weg, Sitemap-Einträge zu erzeugen, löst aber nicht jede Hreflang-Routing-Regel automatisch. Die offizielle Dokumentation erklärt Dateikonvention und Ausgabeformat der Sitemap, während ein Paket wie dieses die Lücke bei Alternate-Language-Verknüpfung und routingbewusster Validierung schließt. [1][4]

Auch Googles Hreflang-Empfehlungen erhöhen den Anspruch. Alternative URLs sollten vollständig qualifiziert sein, Seiten sollten auf sich selbst und auf ihre Alternativen verweisen, und x-default kann für sprachneutrale Fallback-Seiten sinnvoll sein. Bei kleinen Sites ist das noch überschaubar, bei URLs aus mehreren Pipelines aber schnell fehleranfällig. [5][6]

Das eigentliche Problem

Sitemap-Hreflang wird fragil, wenn Routing-Regeln an mehreren Stellen leben und mehrsprachige Alternativen nicht mehr zur realen Site-Struktur passen. [1][2][5]

Der schnellste Einstieg ist die App-Router-Generierung mit einem Routing-Helper und withHreflangFromRouting.

01

Das Routing-Modell definieren

Das Paket enthält Helper wie routingPrefixAsNeeded und routingPAS7, um zu beschreiben, wie Locales in URLs erscheinen. [1][2]

02

Eine normale MetadataRoute.Sitemap-Liste aufbauen

Sie starten mit Standard-Sitemap-Einträgen wie /blog oder /about und lassen das Paket daraus Hreflang-Alternativen auf Basis des Routing-Modells ableiten. [1][4]

03

Die Einträge mit Hreflang-Generierung erweitern

Im README-Quickstart wird withHreflangFromRouting(entries, routing, { baseUrl, ensureXDefault: true }) verwendet, sodass die Sitemap-Generierung nah an normalem App-Router-Code bleibt. [1]

Warum sich das sauber anfühlt

Das Paket bleibt nah an der nativen Sitemap-Generierung im App Router, statt von Anfang an einen separaten XML-only-Workflow zu erzwingen. [1][4]

Die Routing-Helper sind der Punkt, an dem das Paket mehr wird als nur ein kleiner Hreflang-Wrapper.

Comparison pointMusterTypischer Einsatz
Prefix as neededStartseiten und einfache lokalisierte Routen wie /, /uk, /deSinnvoll, wenn die Default-Locale ohne Prefix bleiben soll und andere Locales einen Prefix brauchen
Suffix localeContent-Hubs und statische Seiten wie /blog/uk oder /contact/ukSinnvoll, wenn Hub-Seiten einem Suffix-Locale-Muster statt eines prefixed Pfads folgen
Locale segmentDetailseiten wie /blog/en/slug oder /blog/uk/slugSinnvoll, wenn Content-Einträge ein stabiles locale-aware Detail-Routing brauchen
Mixed prefix pagesOptionale Ausnahmen wie /uk/about neben anderen Routing-StilenSinnvoll, wenn eine Site mehrere Legacy- oder bereichsbasierte Routing-Regeln mischt

Wo der Mehrwert sichtbar wird

Wenn Ihre Site mehrere Routing-Muster kombiniert, gibt das Paket Ihnen einen zentralen Ort, um diese Logik zu beschreiben, statt Alternativen Seite für Seite hart zu codieren. [1][2]

Viele Teams erzeugen Sitemap-Einträge nicht direkt aus einem einzigen TypeScript-Array. Sie haben bereits Manifeste, Frontmatter-Exports oder CMS-normalisierte Daten.

Diese Bildunterstützung ist ein schönes Detail, weil sie gut dazu passt, wie moderne statische Sites Inhalte tatsächlich speichern. Ein Beitrag hat oft ein zentrales Cover und mehrere verschachtelte Screenshots. Die Dokumentation zeigt, wie sich beides in den Sitemap-Eintrag übernehmen lässt, statt nur die oberste URL zu behalten. [1]

Ein minimales Beispiel aus dem README sieht so aus:

TS
import { createSitemapEntriesFromManifest } from "@pas7/nextjs-sitemap-hreflang";

const entries = createSitemapEntriesFromManifest(blogManifest, {
  baseUrl: "https://pas7.com.ua",
  sectionPath: "/blog",
  defaultLocale: "en",
  routeStyle: "locale-segment",
});

Manifest-Helper

createSitemapEntriesFromManifest ist für Pipelines gedacht, die bereits Slug-, Locale- und Datumsfelder ausgeben. So bleibt die Sitemap-Generierung an bestehende Content-Manifeste gekoppelt, statt Routing-Logik zu duplizieren. [1]

Unterstützung gemischter Quellen

Das Paket unterstützt ausdrücklich .ts, .json, .md/.mdx und CMS-basierte Content-Pipelines, was den Einsatz über verschiedene Inhaltsquellen hinweg in einem Next.js-Projekt erleichtert. [1]

Bilder in Sitemap-Einträgen

Der Helper kann über imagesFor auch Bilder einbeziehen. Das ist nützlich, wenn Sitemap-Einträge Bild-URLs aus verschachtelten Content-Feldern wie Hero-Covern und Abschnitts-Screenshots enthalten sollen. [1]

Warum das wichtig ist

Das Paket passt besser in reale Content-Systeme, weil es von den Manifesten und Datenquellen ausgehen kann, die Teams bereits haben. [1]

Die CLI ist klein, aber die Trennung zwischen check und inject ist praktisch.

check verwenden

Am besten für Validierung in CI: fehlende Alternativen, XML-Probleme, Origin-Policy-Checks und maschinenlesbare Reports mit --json. [1][3]

inject verwenden

Am besten, wenn die Site bereits eine Sitemap-Datei erzeugt und Sie Hreflang in generiertes XML direkt im Postbuild-Schritt einfügen oder korrigieren wollen. [1]

--prefer verwenden, wenn der Ort der Quelldatei wichtig ist

Die CLI kann public/sitemap.xml, out/sitemap.xml oder sitemap.xml automatisch erkennen, aber eine explizite Präferenz ist sicherer, wenn die Pipeline mehr als einen möglichen Output hat. [1]

Report-Output in CI nicht weglassen

Das JSON-Report-Format ist stabil und enthält Issue-Codes, Entry-URLs, Meldungen, Vorschläge, Summary-Zähler, Input-Pfad und Timing. Das macht Debugging deutlich einfacher als das Parsen von Konsolenlogs. [1][3]

Praktische Regel

check verwenden, wenn CI sauber fehlschlagen soll. inject verwenden, wenn eine bereits generierte sitemap.xml gepatcht werden soll. [1][3]

Die Exit Codes und das JSON-Format machen das Paket leichter automatisierbar als Tools, die nur menschenlesbare Warnungen ausgeben.

Das ist eine der leiseren Stärken des Pakets. Die CLI sagt nicht nur, dass die Validierung fehlgeschlagen ist, sondern unterscheidet zwischen fehlender Eingabe, XML-Fehlern und Validierungsfehlern. Dadurch wird das Verhalten der Pipeline viel nachvollziehbarer. [1]

Auch das Report-Format ist praxisnah: ok, issues[], summary.byCode, inputPath und timingMs. Genau diese Art von Vertrag können CI-Jobs oder Dashboards ohne Rätselraten weiterverarbeiten. [1][3]

0

OK. Validierung erfolgreich. [1]

2

Validierungsfehler, einschließlich --fail-on-missing-Fehlern. [1]

4

Eingabedatei nicht gefunden. [1]

5

Ungültiges XML als Eingabe. [1]

Was das zusätzlich bringt

Das Paket ist nicht nur für die Generierung gebaut, sondern auch für vorhersehbare Automatisierung rund um Sitemap-Hreflang-Prüfungen. [1][3]

Das Paket ist direkt und klar, aber mehrsprachige Sitemap-Workflows scheitern trotzdem oft an bekannten Stellen.

Anzunehmen, dass ein einziges Routing-Muster für die ganze Site reicht. Gemischtes Routing ist üblich, und genau dafür wurde das Paket entworfen. [1][2]

x-default überall als unnötiges Rauschen zu behandeln. In manchen mehrsprachigen Setups ist es als sprachneutraler Fallback sinnvoll, und das Paket kann es mit ensureXDefault erzwingen. [1][6]

Sitemap-Alternativen getrennt von der Content-Pipeline zu halten. Das führt oft zu veralteten Locale-Clustern oder fehlenden Einträgen. [1]

next build ohne nachgelagerte Validierung laufen zu lassen. Sowohl Static Export als auch generiertes XML profitieren von expliziten Checks in CI. [1][3]

Googles Hreflang-Regeln zu vollständig qualifizierten Alternate-URLs und reziproken Sprachvarianten zu ignorieren. Das XML kann korrekt aussehen und trotzdem strukturell unvollständig sein. [5][6]

Realistische Erwartung

Sitemap-Hreflang wird deutlich verlässlicher, wenn Routing, Alternativen und CI-Validierung denselben Regeln folgen. [1][2][3][5]

Diese offiziellen Quellen stützen das Verhalten des Pakets, den Next.js-Sitemap-Kontext und die in diesem Artikel verwendeten Hreflang-Empfehlungen.

Geprüft: 15. März 2026Gilt für: Next.js App Router ProjekteGilt für: Next.js Static Export WorkflowsGilt für: Mehrsprachige und internationale SEO-SetupsGilt für: Manifest-basierte Content-Pipelines

Der schwierige Teil ist meist nicht, Hreflang einmal hinzuzufügen. Der schwierige Teil ist, Alternativen, Routing-Muster, XML-Output und CI-Checks beim Wachstum der Site konsistent zu halten.

PAS7 Studio kann dabei helfen, daraus eine wiederholbare mehrsprachige SEO-Pipeline mit klareren Routing-Regeln, sicherer Sitemap-Validierung und weniger Hreflang-Überraschungen nach dem Deployment zu machen.

Verwandte Artikel

growth

AI SEO / GEO im Jahr 2026: Ihre nächsten Kunden sind nicht Menschen — sondern Agents

Suche verschiebt sich von Klicks zu Antworten. Bots und AI-Agents crawlen, zitieren, empfehlen — und kaufen zunehmend. Erfahren Sie, was AI SEO / GEO bedeutet, warum klassisches SEO nicht mehr reicht und wie PAS7 Studio Marken im agentischen Web sichtbar macht.

blogs

Der leistungsstärkste Chip von Apple? M5 Pro und M5 Max brechen Rekorde

Eine Analyse zu Apple M5 Pro und M5 Max im März 2026. Wir zeigen, warum diese Chips als die stärksten professionellen Laptop-SoCs von Apple gelten können, wie sie sich gegen M4 Pro, M4 Max, M1 Pro, M1 Max schlagen und was der Vergleich mit aktuellen Intel- und AMD-Chips zeigt.

telegram-media-saver

Automatisches Tagging und Suche für gespeicherte Links

Integration mit GDrive/S3/Notion für automatisches Tagging und schnelle Suche über Such-APIs

services

Bot-Entwicklung und Automatisierungs-Dienste

Professionelle Telegram-Bot-Entwicklung und Automatisierung von Geschäftsprozessen: Chatbots, KI-Assistenten, CRM-Integrationen und Prozessautomatisierung.

Professionelle Entwicklung für Ihr Geschäft

Wir erstellen moderne Web-Lösungen und Bots für Unternehmen. Erfahren Sie, wie wir Ihnen helfen können, Ihre Ziele zu erreichen.