brosh

Uma ferramenta de captura de tela de navegador para capturar screenshots com rolagem de páginas da web usando Playwright, com suporte para identificação inteligente de seções e múltiplos formatos de saída.

Documentação

brosh

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

Capturas de tela de páginas inteiras no navegador, a partir da linha de comando ou do seu próprio código, com os pixels, o texto e o HTML todos devolvidos juntos.

O Brosh controla um navegador real (Chrome, Edge ou Safari) via Playwright, percorre uma página e captura cada seção como imagem — além do texto visível como Markdown e, se você quiser, o HTML subjacente. Feito para agentes de IA que precisam ver uma página, não apenas buscar sua fonte.

  • Captura com rolagem: foto única, série de quadros ou PNG animado de toda a rolagem
  • Extrai texto visível (Markdown) e, opcionalmente, HTML minificado junto com cada captura de tela
  • CLI, API Python síncrona/assíncrona e um servidor MCP para Claude e outras ferramentas de IA
  • Conecta-se à sua sessão existente do Chrome/Edge (cookies, logins, extensões incluídos) ou inicia uma nova
  • Multiplataforma: macOS, Windows, Linux

Início Rápido

pip install brosh
playwright install

Esse segundo comando é importante: o Playwright precisa dos próprios binários do navegador, e o pip install brosh não os baixa. Pule-o e toda captura falhará com um erro de navegador não encontrado.

Depois:

brosh shot "https://example.com"

As capturas de tela são salvas em ~/Pictures/brosh por padrão, nomeadas como {domain}-{timestamp}-{scroll%}-{section}.png.

Instalação

# uv (recommended)
uv tool install brosh

# pip
pip install brosh

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

Qualquer que seja o caminho escolhido, não se esqueça do playwright install depois.

Consulte Instalação para versões binárias, pipx e configurações a partir do código-fonte.

Uso da 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

As opções globais (--app, --width, --height, --zoom, --output_dir, --subdirs, --verbose, --json) vão antes do comando; as opções do comando vão depois. Tabelas completas de opções: Referência da CLI.

API 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 as APIs retornam um dicionário mapeando os caminhos dos arquivos salvos para metadados (selector, text, opcionalmente html). Detalhes e funções de conveniência: API Python.

Modo Servidor MCP

O Brosh inclui um servidor MCP para que ferramentas de IA possam solicitar uma captura de tela durante a conversa.

claude mcp add brosh -- brosh-mcp

Ou adicione isto à configuração do seu cliente MCP:

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

Reinicie o cliente e peça para "usar o brosh para capturar example.com e me mostrar o texto." Configuração completa, incluindo configurações baseadas em uvx: Modo Servidor MCP.

Documentação

Todo o resto — arquitetura, referência completa de comandos, formato de saída/JSON, solução de problemas — está em twardoch.github.io/brosh.

Licença

MIT. Consulte LICENÇA.

Criado por Adam Twardoch com Playwright, python-fire e FastMCP.