Sitemaps
Set up nextjs-seo-manager to serve dynamic sitemaps managed from your dashboard.
Pages Router
- Create a
sitemapsfolder insidepages. - Create
pages/sitemaps/[pid].js. - Export the
SitemapHelpercomponent:
// pages/sitemaps/[pid].js
import SEOInit from "nextjs-seo-manager/init";
import SitemapHelper from "nextjs-seo-manager/sitemapshelper";
SEOInit({
projectId: process.env.SEO_MANAGER_PROJECT_ID,
secretKey: process.env.SEO_MANAGER_SECRET_KEY,
});
export default SitemapHelper;
App Router
For the App Router, use the helper functions from nextjs-seo-manager/sitemapbasichelper to create a route handler.
- Create
app/sitemap.xml/route.ts(orapp/sitemaps/[pid]/route.tsif you need multiple sitemaps). - Export a
GEThandler:
// app/sitemap.xml/route.ts
import { NextRequest, NextResponse } from "next/server";
import SEOInit from "nextjs-seo-manager/init";
import {
generateSitemapXml,
createFallbackSitemapXml,
extractRequestDataFromRequest,
} from "nextjs-seo-manager/sitemapbasichelper";
SEOInit({
projectId: process.env.SEO_MANAGER_PROJECT_ID,
secretKey: process.env.SEO_MANAGER_SECRET_KEY,
});
export async function GET(request: NextRequest) {
try {
const requestData = extractRequestDataFromRequest(request);
const sitemapXml = await generateSitemapXml(requestData);
return new NextResponse(sitemapXml, {
headers: { "Content-Type": "text/xml" },
});
} catch (error) {
const origin = new URL(request.url).origin;
const fallback = createFallbackSitemapXml(origin);
return new NextResponse(fallback, {
headers: { "Content-Type": "text/xml" },
});
}
}
Helper Functions
generateSitemapXml(requestData)— calls the SEO Manager API and returns sitemap XML as a string.createFallbackSitemapXml(origin)— returns a minimal sitemap XML with just the homepage, useful as an error fallback.extractRequestDataFromRequest(request)— extracts the pathname and headers from the Next.js request object.
To configure sitemap settings (max size, folder path), visit your dashboard.