Install
openclaw skills install @asale-ai/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".
openclaw skills install @asale-ai/seo-sitemapDiscover candidates before reporting a sitemap missing:
seogeo sitemap-discovery <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.
<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.<priority> and <changefreq> are ignored by Google| 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) |
Google documents three subtypes with their own rules, validate per-subtype:
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: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: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.../seo-plan/assets/ directory✅ Integration pages (with real setup docs) ✅ Template/tool pages (with downloadable content) ✅ Glossary pages (200+ word definitions) ✅ Product pages (unique specs, reviews) ✅ User profile pages (user-generated content)
❌ Location pages with only city name swapped ❌ "Best [tool] for [industry]" without industry-specific value ❌ "[Competitor] alternative" without real comparison data ❌ AI-generated pages without human review and unique value
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/page</loc>
<lastmod>2026-02-07</lastmod>
</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>2026-02-07</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-posts.xml</loc>
<lastmod>2026-02-07</lastmod>
</sitemap>
</sitemapindex>
seogeo sitemap-discovery and report "not found" only
when its found list is empty after declared and common candidates are checkedVALIDATION-REPORT.md: analysis resultssitemap.xml (or split files with index)STRUCTURE.md: site architecture documentation# Find every sitemap: robots.txt declarations plus the well-known paths
seogeo sitemap-discovery https://example.com --json
# Pull the URL list out of the discovered sitemaps
seogeo crawl-sitemap https://example.com --max-pages 500 --json
# What Search Console thinks of the submitted sitemaps
seogeo gsc-sitemaps --property https://example.com/ --json
sitemap-discovery reports every candidate it checked, not just the ones
that worked, so a 404 on /sitemap.xml is visible rather than silent. Each
entry carries kind (urlset, sitemapindex, rss, feed, text) and,
on failure, a specific error.
Two safety behaviours worth knowing when you read the output:
cross_host: true.query_redacted, so a signed sitemap URL never lands in a report.crawl-sitemap follows <sitemapindex> entries into their child sitemaps
automatically and stops at --max-pages.