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
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.