Install
$ agentstack add skill-zacharticulatev-designer-pro-and-seo-seo-sitemap ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
seo-sitemap
Family: seo Status: Stable
Purpose
Audit and generation for XML sitemaps. The script handles structure deterministically (well-formed XML, the 50,000-URL / 50 MB protocol limits, automatic sitemap-index splitting, absolute-URL checks); the skill layers the live quality gates that catch the most common silent issues: URLs that 404, are noindexed, or canonicalize elsewhere should never be in a sitemap.
Triggers
- "sitemap" / "xml sitemap"
- "generate sitemap" / "sitemap index"
- "sitemap issues"
Inputs
- A sitemap file/URL (audit), or a list of URLs (generate)
- Optional: base URL (for index child links) and a lastmod date
Steps
- Validate structure:
`` python3 "${CLAUDE_PLUGIN_ROOT}/scripts/seo/sitemap_tools.py" --validate sitemap.xml ` Checks well-formedness, root type (urlset vs sitemapindex), URL count vs the 50,000 limit, file size vs 50 MB, and that every ` is absolute http(s).
- Apply the live quality gates (the high-value part): for a sample of the
sitemap's URLs, confirm via seo-page/fetch that each returns 200, is not noindexed, and does not canonicalize to a different URL. Flag any that fail — these silently waste crawl budget.
- Generate a fresh sitemap from a URL list when needed:
`` python3 "${CLAUDE_PLUGIN_ROOT}/scripts/seo/sitemap_tools.py" --generate --urls urls.txt --out sitemap.xml \ --base-url https://site.com --lastmod 2026-06-01 `` It splits into a sitemap index automatically past 50,000 URLs.
- Lastmod discipline: set
lastmodfrom real content-change dates, not
auto-bumped to today on every regen (Google learns to distrust it otherwise).
- Robots: confirm
robots.txthas aSitemap:directive pointing to it.
Capability routing
This skill follows the plugin's capability-tier cascade (references/CAPABILITY-TIERS.md) and always produces a validated sitemap:
- Tier 1 — Firecrawl MCP. When connected, crawl the live site to discover the
true URL set (including JS-only pages) before validating or generating.
- Tier 2 — built-in (the default). Otherwise
sitemap_tools.pyvalidates
structure deterministically and generates a sitemaps.org-compliant file from a URL list, with site_map.py supplying the robots + sitemap-recursion inventory. Fully offline — this is the product.
- Tier 4 — guided. If the URL set must come from a JS-rendered crawl and
Firecrawl isn't connected, deliver the structural validation + generation and name what a full crawl would add.
```capability-routing capability: site-map tier1: Firecrawl MCP tier1signal: FIRECRAWLAPIKEY | FIRECRAWLAPIURL tier2: sitemaptools.py (validate + generate, sitemaps.org limits) + sitemap.py (robots + sitemap recursion -> URL inventory) tier2yields: validated sitemaps.org-compliant sitemap + 404/noindex/canonical offender list, zero spend tier3: none tier3signal: none tier4: paste the sitemap or URL list; add a Firecrawl MCP to discover JS-only URLs for a full inventory needstier1: none
Always end by stating which tier ran and what a full crawl would add.
## Outputs
- Structure validation report
- Quality-gate results (404 / noindex / canonical-elsewhere offenders)
- Generated sitemap(s) + index for large sites
## Dependencies
- `scripts/seo/sitemap_tools.py` (required) — Python 3.10+, standard library only
- `seo-page` (optional — for the per-URL live quality gates)
## Notes
The "no noindex, no canonical-elsewhere" gates catch the most common silent sitemap
issue. Structure is validated offline; the live gates need URL fetches.
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [ZachArticulateV](https://github.com/ZachArticulateV)
- **Source:** [ZachArticulateV/designer-pro-and-seo](https://github.com/ZachArticulateV/designer-pro-and-seo)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.