Skip to content
MCP ThesaurusMCP Thesaurus

Snapgrab

CommunityIncomplete39/100Claim

pypi snapgrabstdioMITupdated 4mo ago

URL to screenshot with metadata. Claude Vision optimized.

SourceWebsite

What can you do with Snapgrab?

Snapgrab

PyPI Python License Tests

ν•œκ΅­μ–΄ λ¬Έμ„œ Β· llms.txt

URL to screenshot with metadata. Claude Vision optimized.

from snapgrab import capture

result = await capture("https://example.com")
print(result.path)           # /tmp/snapgrab/example_com_desktop_20260317_120000.png
print(result.metadata.title) # "Example Domain"
print(result.vision_tokens)  # ~2764

Features

  • Screenshot capture β€” PNG, JPEG, PDF with full-page support
  • Page metadata β€” title, description, Open Graph tags, favicon, HTTP status
  • Claude Vision optimized β€” auto-resize to 1568px, token cost estimation
  • Viewport presets β€” desktop (1920x1080), tablet (768x1024), mobile (375x812)
  • MCP server included β€” 3 tools for Claude Code / MCP clients
  • Element capture β€” screenshot specific CSS selectors
  • Dark mode β€” force light/dark color scheme

Install

pip install snapgrab

First run will prompt to install Playwright browsers:

playwright install chromium

Usage

Python API

import asyncio
from snapgrab import capture

async def main():
    # Basic screenshot
    result = await capture("https://example.com")

    # Mobile viewport, full page
    result = await capture("https://example.com", viewport="mobile", full_page=True)

    # Dark mode, JPEG format
    result = await capture("https://example.com", dark_mode=True, format="jpeg")

    # Specific element
    result = await capture("https://example.com", selector="#main-content")

    # Custom viewport
    result = await capture("https://example.com", viewport=(1440, 900))

asyncio.run(main())

CLI

snapgrab https://example.com                          # basic PNG
snapgrab https://example.com -v mobile -f             # mobile, full page
snapgrab https://example.com --format jpeg -q 90      # JPEG quality 90
snapgrab https://example.com -s "#hero" --dark-mode   # element + dark mode
snapgrab https://example.com -j                       # JSON output
snapgrab meta https://example.com                     # metadata only

MCP Server

pip install "snapgrab[mcp]"
snapgrab-mcp  # starts stdio MCP server

Tools:

  • capture_screenshot β€” capture URL with metadata and vision token estimate
  • capture_comparison β€” compare desktop vs mobile (or any viewports)
  • extract_page_metadata β€” metadata only, no screenshot

How It Works

flowchart LR
    A["πŸ”— URL"] --> B["Playwright\nlaunch browser"]
    B --> C["πŸ“Έ Screenshot\nfull page / viewport"]
    C --> D["Resize for\nClaude Vision"]
    D --> E["βœ… Image +\nMetadata"]

CaptureResult

result.path            # saved file path
result.format          # "png", "jpeg", "pdf"
result.width           # viewport width
result.height          # page height (full_page) or viewport height
result.file_size       # bytes
result.vision_tokens   # estimated Claude Vision token cost
result.vision_path     # path to Vision-optimized image (≀1568px)
result.processing_time_ms
result.metadata.title
result.metadata.description
result.metadata.og_title
result.metadata.og_image
result.metadata.favicon_url
result.metadata.status_code
result.metadata.url    # final URL after redirects

Used in

  • watchdeck β€” Web page monitoring with visual diffs and safety guards

License

MIT


Part of the QuartzUnit ecosystem β€” composable Python libraries for data collection, extraction, search, and AI agent safety.