MCPInstall

web-scraper

Scrape web pages and save as HTML or Markdown (with text and images). Minimal dependencies - only requests and beautifulsoup4. Use when the user provides a URL and wants to download/archive the content locally.

Installs
227
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/agentbay-ai/agentbay-skills --skill web-scraper
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads web-scraper automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Web Scraper

Fetch web page content (text + images) and save as HTML or Markdown locally.

Minimal dependencies: Only requires requests and beautifulsoup4 - no browser automation.

Default behavior: Downloads images to local images/ directory automatically.

Quick start

Single page

{baseDir}/scripts/scrape.py --url "https://example.com" --format html --output /tmp/page.html
{baseDir}/scripts/scrape.py --url "https://example.com" --format md --output /tmp/page.md

Recursive (follow links)

{baseDir}/scripts/scrape.py --url "https://docs.example.com" --format md --recursive --max-depth 2 --output ~/Downloads/docs-archive

Setup

Requires Python 3.8+ and minimal dependencies:

cd {baseDir}
pip install -r requirements.txt

Or install manually:

pip install requests beautifulsoup4

Note: No browser or driver needed - uses pure HTTP requests.

Inputs to collect

Single page mode

  • URL: The web page to scrape (required)
  • Format: html or md (default: html)
  • Output path: Where to save the file (default: current directory with auto-generated name)
  • Images: Downloads images by default (use --no-download-images to disable)

Recursive mode (--recursive)

  • URL: Starting point for recursive scraping
  • Format: html or md
  • Output directory: Where to save all scraped pages
  • Max depth: How many levels deep to follow links (default: 2)
  • Max pages: Maximum total pages to scrape (default: 50)
  • Domain filter: Whether to stay within same domain (default: yes)
  • Images: Downloads images by default

Conversation Flow

  1. Ask user for the URL to scrape
  2. Ask preferred output format (HTML or Markdown)
    • Note: Both formats include text and images by default
    • HTML: Preserves original structure with downloaded images
    • Markdown: Clean text format with downloaded images in images/ folder
  3. For recursive mode: Ask max depth and max pages (optional, has sensible defaults)
  4. Ask where to save (or suggest a default path like /tmp/ or ~/Downloads/)
  5. Run the script and confirm success
  6. Show the saved file/directory path

Examples

Single Page Scraping

Save as HTML

{baseDir}/scripts/scrape.py --url "https://docs.openclaw.ai/start/quickstart" --format html --output ~/Downloads/openclaw-quickstart.html

Save as Markdown (with images, default)

{baseDir}/scripts/scrape.py --url "https://en.wikipedia.org/wiki/Web_scraping" --format md --output ~/Documents/web-scraping.md

Result: Creates web-scraping.md + images/ folder with all downloaded images (text + images).

Without downloading images (optional)

{baseDir}/scripts/scrape.py --url "https://example.com" --format md --no-download-images

Result: Only text + image URLs (not downloaded locally).

Auto-generate filename

{baseDir}/scripts/scrape.py --url "https://example.com" --format html
# Saves to: example-com-{timestamp}.html

Recursive Scraping

Basic recursive crawl (depth 2, same domain, with images)

{baseDir}/scripts/scrape.py --url "https://docs.example.com" --format md --recursive --output ~/Downloads/docs-archive

Output structure (text + images for all pages):

docs-archive/
├── index.md
├── getting-started.md
├── api/
│   ├── authentication.md
│   └── endpoints.md
└── images/              # Shared images from all pages
    ├── logo.png
    └── diagram.svg

Deep crawl with custom limits

{baseDir}/scripts/scrape.py \
  --url "https://blog.example.com" \
  --format html \
  --recursive \
  --max-depth 3 \
  --max-pages 100 \
  --output ~/Archives/blog-backup

Ignore robots.txt (use with caution)

{baseDir}/scripts/scrape.py \
  --url "https://example.com" \
  --format md \
  --recursive \
  --no-respect-robots \
  --rate-limit 1.0

Faster scraping (reduced rate limit)

{baseDir}/scripts/scrape.py \
  --url "https://yoursite.com" \
  --format md \
  --recursive \
  --rate-limit 0.2

Features

Single Page Mode

  • HTML output: Preserves original page structure
    • ✅ Clean, readable HTML document
    • ✅ All images downloaded to images/ folder
    • ✅ Suitable for offline viewing
  • Markdown output: Extracts clean text content
    • ✅ Auto-downloads images to local images/ directory (default)
    • ✅ Converts image URLs to relative paths
    • ✅ Clean, readable format for archiving
    • ✅ Fallback to original URLs if download fails
    • Use --no-download-images flag to keep original URLs only
  • Simple and fast: Pure HTTP requests, no browser needed
  • Auto filename: Generates safe filename from URL if not specified

Recursive Mode (--recursive)

  • ✅ Intelligent link discovery: Automatically follows all links on crawled pages
  • ✅ Depth control: --max-depth limits how many levels deep to crawl (default: 2)
  • ✅ Page limit: --max-pages caps total pages to prevent runaway crawls (default: 50)
  • ✅ Domain filtering: --same-domain keeps crawl within starting domain (default: on)
  • ✅ robots.txt compliance: Respects site's crawling rules by default
  • ✅ Rate limiting: --rate-limit adds delay between requests (default: 0.5s)
  • ✅ Smart URL filtering: Skips images, scripts, CSS, and duplicate URLs
  • ✅ Progress tracking: Real-time console output with success/fail/skip counts
  • ✅ Organized output: Preserves URL structure in directory hierarchy
  • ✅ Efficient crawling: Sequential with rate limiting to respect servers

Guardrails

Single Page Mode

  • Respect robots.txt and site terms of service
  • Some sites may block automated access; this tool uses standard HTTP requests
  • Large pages with many images may take time to download

Recursive Mode

  • Start small: Test with --max-depth 1 --max-pages 10 first
  • Respect robots.txt: Default is on; only use --no-respect-robots for your own sites
  • Rate limiting: Default 0.5s is polite; don't go below 0.2s for public sites
  • Same domain: Strongly recommended to keep --same-domain enabled
  • Monitor progress: Watch for high fail rates (may indicate blocking)
  • Storage: Recursive crawls can generate many files; ensure sufficient disk space
  • Legal: Ensure you have permission to crawl and archive the target site

Troubleshooting

  • Connection errors: Check your internet connection and URL validity
  • 403/blocked: Some sites block scrapers; the tool uses realistic User-Agent headers
  • Timeout: Increase --timeout flag for slow-loading pages (value in seconds)
  • Image download fails: Images will fall back to original URLs
  • Missing images: Some sites use JavaScript to load images dynamically (not supported)

FAQ

What does the web-scraper skill do?

Scrape web pages and save as HTML or Markdown (with text and images). Minimal dependencies - only requests and beautifulsoup4. Use when the user provides a URL and wants to download/archive the content locally.

How do I install web-scraper?

Run npx skills add https://github.com/agentbay-ai/agentbay-skills --skill web-scraper in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/web-scraper/ (personal) or .claude/skills/web-scraper/ (project).

Which AI agents can use web-scraper?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is web-scraper safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains web-scraper?

It is published by agentbay-ai in agentbay-ai/agentbay-skills. It has 227 recorded installs.

More from agentbay-ai/agentbay-skills

View all →

stock-watcher

agentbay-ai/agentbay-skills

Manage and monitor a personal stock watchlist with support for adding, removing, listing stocks, and summarizing their recent performance using data from 10jqka.com.cn. Use when the user wants to track specific stocks, get performance summaries, or manage their watchlist.

weibo-hot-search

agentbay-ai/agentbay-skills

查询微博热搜信息。当用户想要查询微博热搜榜、文娱热搜、热度排行时使用此skill。

523 installs

boss-job-search

agentbay-ai/agentbay-skills

Open the skill to read its SKILL.md instructions.

356 installs

find-skills

agentbay-ai/agentbay-skills

Open the skill to read its SKILL.md instructions.

212 installs

douban-movie-review

agentbay-ai/agentbay-skills

Open the skill to read its SKILL.md instructions.

qwen-wanx-comic-gen

agentbay-ai/agentbay-skills

Open the skill to read its SKILL.md instructions.

132 installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs