$npx -y skills add norahe0304-art/30x-seo --skill 30x-seo-sitemapAnalyze existing XML sitemaps or generate new ones with industry templates. Validates format, URLs, and structure. Use when user says "sitemap", "generate sitemap", "sitemap issues", or "XML sitemap".
| 1 | # Sitemap Analysis & Generation |
| 2 | |
| 3 | ## Mode 1: Analyze Existing Sitemap |
| 4 | |
| 5 | ### Validation Checks |
| 6 | - Valid XML format |
| 7 | - URL count <50,000 per file (protocol limit) |
| 8 | - All URLs return HTTP 200 |
| 9 | - `<lastmod>` dates are accurate (not all identical) |
| 10 | - No deprecated tags: `<priority>` and `<changefreq>` are ignored by Google |
| 11 | - Sitemap referenced in robots.txt |
| 12 | - Compare crawled pages vs sitemap — flag missing pages |
| 13 | |
| 14 | ### Quality Signals |
| 15 | - Sitemap index file if >50k URLs |
| 16 | - Split by content type (pages, posts, images, videos) |
| 17 | - No non-canonical URLs in sitemap |
| 18 | - No noindexed URLs in sitemap |
| 19 | - No redirected URLs in sitemap |
| 20 | - HTTPS URLs only (no HTTP) |
| 21 | |
| 22 | ### Common Issues |
| 23 | | Issue | Severity | Fix | |
| 24 | |-------|----------|-----| |
| 25 | | >50k URLs in single file | Critical | Split with sitemap index | |
| 26 | | Non-200 URLs | High | Remove or fix broken URLs | |
| 27 | | Noindexed URLs included | High | Remove from sitemap | |
| 28 | | Redirected URLs included | Medium | Update to final URLs | |
| 29 | | All identical lastmod | Low | Use actual modification dates | |
| 30 | | Priority/changefreq used | Info | Can remove (ignored by Google) | |
| 31 | |
| 32 | ## Mode 2: Generate New Sitemap |
| 33 | |
| 34 | ### Process |
| 35 | 1. Ask for business type (or auto-detect from existing site) |
| 36 | 2. Load industry template from `assets/` directory |
| 37 | 3. Interactive structure planning with user |
| 38 | 4. Apply quality gates: |
| 39 | - ⚠️ WARNING at 30+ location pages (require 60%+ unique content) |
| 40 | - 🛑 HARD STOP at 50+ location pages (require justification) |
| 41 | 5. Generate valid XML output |
| 42 | 6. Split at 50k URLs with sitemap index |
| 43 | 7. Generate STRUCTURE.md documentation |
| 44 | |
| 45 | ### Safe Programmatic Pages (OK at scale) |
| 46 | ✅ Integration pages (with real setup docs) |
| 47 | ✅ Template/tool pages (with downloadable content) |
| 48 | ✅ Glossary pages (200+ word definitions) |
| 49 | ✅ Product pages (unique specs, reviews) |
| 50 | ✅ User profile pages (user-generated content) |
| 51 | |
| 52 | ### Penalty Risk (avoid at scale) |
| 53 | ❌ Location pages with only city name swapped |
| 54 | ❌ "Best [tool] for [industry]" without industry-specific value |
| 55 | ❌ "[Competitor] alternative" without real comparison data |
| 56 | ❌ AI-generated pages without human review and unique value |
| 57 | |
| 58 | ## Sitemap Format |
| 59 | |
| 60 | ### Standard Sitemap |
| 61 | ```xml |
| 62 | <?xml version="1.0" encoding="UTF-8"?> |
| 63 | <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
| 64 | <url> |
| 65 | <loc>https://example.com/page</loc> |
| 66 | <lastmod>2026-02-07</lastmod> |
| 67 | </url> |
| 68 | </urlset> |
| 69 | ``` |
| 70 | |
| 71 | ### Sitemap Index (for >50k URLs) |
| 72 | ```xml |
| 73 | <?xml version="1.0" encoding="UTF-8"?> |
| 74 | <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
| 75 | <sitemap> |
| 76 | <loc>https://example.com/sitemap-pages.xml</loc> |
| 77 | <lastmod>2026-02-07</lastmod> |
| 78 | </sitemap> |
| 79 | <sitemap> |
| 80 | <loc>https://example.com/sitemap-posts.xml</loc> |
| 81 | <lastmod>2026-02-07</lastmod> |
| 82 | </sitemap> |
| 83 | </sitemapindex> |
| 84 | ``` |
| 85 | |
| 86 | ## Output |
| 87 | |
| 88 | ### For Analysis |
| 89 | - `VALIDATION-REPORT.md` — analysis results |
| 90 | - Issues list with severity |
| 91 | - Recommendations |
| 92 | |
| 93 | ### For Generation |
| 94 | - `sitemap.xml` (or split files with index) |
| 95 | - `STRUCTURE.md` — site architecture documentation |
| 96 | - URL count and organization summary |
| 97 | |
| 98 | [PROTOCOL]: Update this header on changes, then check CLAUDE.md |