brosh

Una herramienta de captura de pantalla de navegador para tomar capturas de pantalla desplazables de páginas web usando Playwright, con soporte para identificación inteligente de secciones y múltiples formatos de salida.

Documentación

brosh

A browser window unspooling a whole web page into one long scroll

Capturas de pantalla de páginas completas, desde la línea de comandos o desde tu propio código, con los píxeles, el texto y el HTML entregados todos juntos.

Brosh controla un navegador real (Chrome, Edge o Safari) mediante Playwright, se desplaza por una página y captura cada sección como imagen, además del texto visible como Markdown y, si lo deseas, el HTML subyacente. Diseñado para agentes de IA que necesitan ver una página, no solo obtener su código fuente.

  • Captura con desplazamiento: una sola toma, serie de fotogramas o PNG animado de todo el desplazamiento
  • Extrae el texto visible (Markdown) y, opcionalmente, HTML minificado junto con cada captura
  • CLI, API de Python síncrona/asíncrona y un servidor MCP para Claude y otras herramientas de IA
  • Se conecta a tu sesión existente de Chrome/Edge (incluidas cookies, inicios de sesión y extensiones) o inicia una nueva
  • Multiplataforma: macOS, Windows, Linux

Inicio rápido

pip install brosh
playwright install

Ese segundo comando es importante: Playwright necesita sus propios binarios de navegador, y pip install brosh no los descarga. Si lo omites, cada captura fallará con un error de navegador no encontrado.

Entonces:

brosh shot "https://example.com"

Las capturas se guardan en ~/Pictures/brosh por defecto, con el nombre {domain}-{timestamp}-{scroll%}-{section}.png.

Instalación

# uv (recommended)
uv tool install brosh

# pip
pip install brosh

# run without installing
uvx brosh shot "https://example.com"

Sea cual sea la ruta que elijas, no olvides playwright install después.

Consulta Instalación para versiones binarias, pipx y configuraciones desde el código fuente.

Uso de la CLI

# Basic capture
brosh shot "https://example.com"

# Animated PNG of the whole scroll
brosh shot "https://example.com" --output_format apng

# Custom viewport, JSON output with HTML included
brosh --width 1920 --height 1080 shot "https://example.com" --fetch_html --json > page.json

# Reuse a running browser instance across multiple shots
brosh --app chrome run
brosh --app chrome shot "https://example.com"
brosh --app chrome quit

Las opciones globales (--app, --width, --height, --zoom, --output_dir, --subdirs, --verbose, --json) van antes del comando; las opciones del comando van después. Tablas completas de opciones: Referencia de CLI.

API de Python

from brosh import capture_webpage

result = capture_webpage(
    url="https://example.com",
    width=1280,
    height=720,
    output_format="jpg",
    scale=75,
)
for path, metadata in result.items():
    print(path, metadata["text"][:80])
import asyncio
from brosh import capture_webpage_async

async def main():
    result = await capture_webpage_async(
        url="https://docs.python.org/3/",
        fetch_html=True,
        max_frames=3,
    )
    print(list(result))

asyncio.run(main())

Ambas API devuelven un dict que asigna las rutas de archivos guardados a metadatos (selector, text, opcionalmente html). Detalles y funciones de conveniencia: API de Python.

Modo servidor MCP

Brosh incluye un servidor MCP para que las herramientas de IA puedan solicitar una captura de pantalla en medio de una conversación.

claude mcp add brosh -- brosh-mcp

O añade esto a la configuración de tu cliente MCP:

{
  "mcpServers": {
    "brosh": {
      "command": "brosh-mcp"
    }
  }
}

Reinicia tu cliente y pídele que «use brosh para capturar example.com y muéstrame el texto». Configuración completa, incluidas las configuraciones basadas en uvx: Modo servidor MCP.

Documentación

Todo lo demás (arquitectura, referencia completa de comandos, formato de salida/JSON, solución de problemas) está en twardoch.github.io/brosh.

Licencia

MIT. Consulta LICENCIA.

Creado por Adam Twardoch con Playwright, python-fire y FastMCP.