Sitemap Content Scraper
by @quareth
Discover website sitemaps from robots.txt and common sitemap locations, choose the right sitemap or content family such as docs, blog, help center, academy,...
clawhub install sitemap-content-scraperπ About This Skill
name: sitemap_content_scraper description: Discover website sitemaps from robots.txt and common sitemap locations, choose the right sitemap or content family such as docs, blog, help center, academy, or changelog, and scrape selected public pages into a local folder as Markdown plus a manifest. metadata: {"openclaw":{"requires":{"bins":["python3"]}}}
Sitemap Content Scraper
Use this skill to turn a public website into a sitemap-driven scraping job. Prefer the existing sitemap structure over ad hoc crawling so the scrape stays bounded, explainable, and easy for the user to steer.
Workflow
1. Ask for the website or URL scope if it is not already provided.
2. Run python3 {baseDir}/scripts/discover_sitemaps.py .
3. Summarize the discovered sitemap inventory in plain language.
4. If user gave a scoped URL (for example https://example.com/docs), use scope_hint_substring from discovery output as default filter guidance.
5. Ask which content family the user wants, such as documentation, knowledge base, blog, academy, changelog, or another category.
6. Map the user request to the most relevant sitemap by name and sample URL patterns.
7. If multiple sitemaps still match, ask the user to choose one or give a tighter scope.
8. Ask for the destination folder if it is missing.
9. Run python3 {baseDir}/scripts/scrape_sitemap.py --sitemap-url , and when a scoped URL was provided add --include-substring unless the user overrides scope.
10. Report what was scraped, where it was saved, and any skipped or failed pages.
Quick Commands
Discover sitemap inventory:
python3 {baseDir}/scripts/discover_sitemaps.py https://example.com
Discover and preserve scope hint from a direct URL prompt:
python3 {baseDir}/scripts/discover_sitemaps.py https://example.com/docs
Scrape one sitemap into a chosen folder:
python3 {baseDir}/scripts/scrape_sitemap.py \
--sitemap-url https://example.com/docs-sitemap.xml \
--output-dir /tmp/example-docs
Filter to a subset of URLs when the sitemap mixes sections:
python3 {baseDir}/scripts/scrape_sitemap.py \
--sitemap-url https://example.com/sitemap.xml \
--output-dir /tmp/example-docs \
--include-substring /docs/ \
--exclude-substring /tag/
Selection Rules
docs-sitemap.xml, post-sitemap.xml, kb-sitemap.xml, or academy-sitemap.xml.discover_sitemaps.py to explain why a sitemap looks like docs, blog, help center, or another category.Output Contract
manifest.json at the output root with success and failure details.Read {baseDir}/references/sitemap-selection.md when mapping user intent to sitemap candidates, handling ambiguous sitemap names, or explaining the output layout.
Trigger Examples
example.com/docs content into ./out/docs."https://example.com/help."example.com and scrape only posts."Guardrails
http and https targets.localhost, private IP ranges, and internal-only hostnames.