Skill detail

seo-sitemap

Analyzes or generates XML sitemaps with validation checks, industry templates, and quality gates for structure and URL coverage.

MatchDirectRecommended for SEO
Sourceagricidaniel/​claude-seoExternal source
Reported installs6,597Popularity signal only

Inspect before use

Read the source instructions and check the requirements before you install this skill.

Saved source preview

SKILL.md

The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.

---
name: seo-sitemap
description: >
  Analyze 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".
user-invocable: true
argument-hint: "[url or generate]"
license: MIT
metadata:
  author: AgriciDaniel
  version: "2.4.2"
  category: seo
---

# Sitemap Analysis & Generation

## Mode 1: Analyze Existing Sitemap

Discover candidates before reporting a sitemap missing:

```bash
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run sitemap_discovery.py <url> --json
```

The helper reads every bounded `Sitemap:` declaration in robots.txt, validates
cross-host targets through the shared SSRF-safe fetch layer, and still probes
common paths when a declared sitemap is stale or invalid. Use only entries in
`found`; preserve declared failures as findings instead of treating a robots.txt
line alone as proof that a sitemap works.

### Validation Checks
- Valid XML format
- Per-file limit: **≤50,000 URLs AND ≤50MB uncompressed** (whichever is hit first)
- All URLs return HTTP 200
- `<lastmod>` accurate: must be a valid **W3C Datetime** and reflect the **last
  significant content change** (main content, structured data, links, not
  copyright/boilerplate edits). Google only honours `<lastmod>` when consistently
  and verifiably accurate, so warn when values are suspiciously uniform or newer
  than the page's real content.
- No deprecated tags: `<priority>` and `<changefreq>` are ignored by Google
- Sitemap referenced in robots.txt
- Compare crawled pages vs sitemap; flag missing pages

### Quality Signals
- Sitemap index file if >50k URLs
- Split by content type (pages, posts, images, videos)
- No non-canonical URLs in sitemap
- No noindexed URLs in sitemap
- No redirected URLs in sitemap
- HTTPS URLs only (no HTTP)

### Common Issues
| Issue | Severity | Fix |
|-------|----------|-----|
| >50k URLs in single file | Critical | Split with sitemap index |
| >50MB uncompressed single file | Critical | Split with sitemap index |
| Non-200 URLs | High | Remove or fix broken URLs |
| Noindexed URLs included | High | Remove from sitemap |
| Redirected URLs included | Medium | Update to final URLs |
| All identical lastmod | Low | Use actual modification dates |
| Priority/changefreq used | Info | Can remove (ignored by Google) |

### Extension sitemaps (image / video / news)

Google documents three subtypes with their own rules, validate per-subtype:
- **Image** (`http://www.google.com/schemas/sitemap-image/1.1`): only two valid
  tags remain, `<image:image>` and `<image:loc>` (max **1,000** `<image:image>`
  per `<url>`). `<image:caption>`/`<image:geo_location>`/`<image:title>`/
 `<image:license>` were deprecated (2022), flag as info-level removable.
- **Video**: required `<video:video>` with `<video:thumbnail_loc>`,
  `<video:title>`, `<video:description>`, plus `<video:content_loc>` or
  `<video:player_loc>`; mRSS also supported. Flag deprecated/removed tags
  (`<video:category>`, `<video:gallery_loc>`, `<video:price>`, `<video:tvshow>`,
  player autoplay/allow_embed) as info-level removable; recheck Google docs before citing a removal date.
- **News**: max **1,000** `<news:news>` per file (not 50,000); include only
  articles from the **last 2 days**; required `<news:publication>`/`<news:name>`/
  `<news:language>`/`<news:publication_date>`/`<news:title>`; submit/discover through
  Search Console or robots.txt/sitemap index; use Publisher Center only for
  publication management where relevant. When the `news:` namespace is detected, override the generic
  50k check with the 1,000 cap.

## Mode 2: Generate New Sitemap

### Process
1. Ask for business type (or auto-detect from existing site)
2. Load industry template from `../seo-plan/assets/` directory
3. Interactive structure planning with user
4. Apply quality gates:
   - ⚠️ WARNING at 30+ location pages (require 60%+ unique content)
   - 🛑 HARD STOP at 50+
Read the full source on GitHub (opens external page)
Context

Related work