Guides sitemap creation, auditing, and optimization for search engine discovery.
When invoking: On first use, if helpful, open with 1–2 sentences on what this skill covers and why it matters, then provide the main output. On subsequent use or when the user asks to skip, go directly to the main output.
Generate an XML Sitemap that complies with the sitemaps.org protocol from the project's page list, and declare it in robots.txt.
Check for project context first: If .claude/project-context.md or .cursor/project-context.md exists, read it for site URL and page structure.
Identify:
https://example.com)| Item | Spec |
|---|---|
| ------ | ------ |
| Single sitemap limit | 50,000 URLs, 50MB (uncompressed) |
| Sitemap index | When exceeding limit, split and have main index reference sub-sitemaps |
| Encoding | UTF-8 |
| URL format | Full URL, same host, include https:// |
| Required tags | |
| Optional tags | , , |
| Field | Description | Recommendation |
|---|---|---|
| ------- | -------------- | --------------- |
| url | Full URL | https://example.com/path |
| lastModified | Page last modified time | Use page metadata, ISO 8601; use YYYY-MM-DD or omit when no data |
| changeFrequency | Update frequency | Home daily, list pages weekly, content pages monthly |
| priority | Relative importance | Home 1.0, aggregate pages 0.9, content pages 0.7–0.8, others 0.5–0.6 |
YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS+TZD), e.g. 2025-01-15, 2025-01-15T14:30:00+08:00.new Date() for lastmod—causes all URLs to share the same timestamp; search engines may ignore.always, hourly, daily, weekly, monthly, yearly, never./sitemap.xml directly./sitemap/posts.xml, /sitemap/pages.xml, /sitemap/zh.xml, /sitemap/en.xml./sitemap.xml or /sitemap-index.xml, each entry as ... ./sitemap/zh.xml, /sitemap/en.xml./sitemap/zh-posts.xml, /sitemap/en-posts.xml.For multilingual sites, add xhtml:link hreflang alternates inside each entry. Recommended for large sites (100+ multilingual pages); centralizes hreflang management.
Rules:
x-default pointing to default locale.xmlns:xhtml="http://www.w3.org/1999/xhtml" namespace. typically uses default-locale (clean) URL; x-default points there too.<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/page</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/page" />
<xhtml:link rel="alternate" hreflang="zh" href="https://example.com/zh/page" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
</url>
</urlset>
List all language sitemaps in sitemap index; include in robots.txt.
| Tech Stack | Implementation |
|---|---|
| ------------ | ----------------- |
| Next.js App Router | app/sitemap.ts export MetadataRoute.Sitemap or generateSitemaps |
| Next.js Pages Router | pages/sitemap.xml.ts or getServerSideProps return XML |
| Astro | src/pages/sitemap-index.xml.ts or @astrojs/sitemap |
| Vite / Static build | Build script generates public/sitemap.xml |
| Other | Generate static /sitemap.xml or return dynamically via API |
'/((?!api|_next|sitemap|sitemap-index|.\\..).*)'.//zh, /en)/api/, /admin/, /_next/*Create a config (e.g., site-pages-config.ts) that exports:
modifiedDate per page for accurate lastmodgetAllPageUrls(baseUrl) for sitemap and IndexNowWhy: Sitemap, IndexNow, and feed can all import from the same config—no duplicate URL maintenance. IndexNow should use the same URL list; avoid separate hardcoded lists.
Add to robots.txt:
Sitemap: https://example.com/sitemap.xml
With multiple sitemaps, only declare the main index.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2025-01-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/page</loc>
<lastmod>2025-01-10</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap/pages.xml</loc>
<lastmod>2025-01-15</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/posts.xml</loc>
<lastmod>2025-01-14</lastmod>
</sitemap>
</sitemapindex>
| Issue | Cause / Fix |
|---|---|
| ------- | ------------- |
| Sitemap 404 | Build failure, wrong path, incorrect export; check routes and deployment |
| Missing pages | URLs not in data source, filtered or excluded |
| lastmod anomaly | Avoid new Date(); use modifiedDate from page metadata |
| Google not indexing | Submit sitemap in GSC; check Coverage (google-search-console) and robots |
| EN/ZH URL mismatch | Use unified data source; share same list when generating by locale |
共 1 个版本