Files
fn_registry/functions/browser/cdp_screenshot_bytes.md
T
egutierrez 8742cb25be feat(browser): auto-commit con 60 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 11:42:31 +02:00

3.2 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
cdp_screenshot_bytes function go browser 1.0.0 impure func CdpScreenshotBytes(c *CDPConn, opts CdpScreenshotOpts) ([]byte, string, error) Captura un screenshot de la pagina actual via Page.captureScreenshot y devuelve los bytes de imagen ya decodificados junto con su mimeType, sin tocar el disco. mimeType es image/jpeg si opts pide JPEG, si no image/png. Soporta viewport o pagina completa: en modo FullPage usa Page.getLayoutMetrics (cssContentSize) para construir un clip que cubre la altura real del documento. Primitiva reutilizable para devolver la imagen al LLM como image content.
chrome
cdp
browser
automation
screenshot
devtools
png
image
navegator
false error_go_core
encoding/base64
fmt
name desc
c conexión CDP activa
name desc
opts opciones de captura (FullPage, Quality, Format)
bytes de imagen decodificados + mimeType (image/png o image/jpeg), o error si falla la captura false
functions/browser/cdp_screenshot.go

Ejemplo

conn, _ := CdpConnect(9222)
CdpNavigate(conn, "https://example.com")

imgData, mimeType, err := CdpScreenshotBytes(conn, CdpScreenshotOpts{
    FullPage: true,
    Format:   "png",
})
// imgData: bytes PNG listos para enviar al LLM como image content
// mimeType: "image/png"

Cuando usarla

Cuando necesitas la imagen capturada en memoria, no en disco: típicamente para devolverla al LLM como image content (bytes + mimeType) en un MCP o tool, sin pasar por un archivo temporal. Es la primitiva de captura sobre la que compone CdpScreenshot (que persiste a disco). Úsala directamente cuando el destino no es el filesystem.

Gotchas

  • Impura: requiere Chrome vivo: necesita una conexión CDP activa (*CDPConn) contra una instancia de Chrome con el target abierto. No funciona sin navegador.
  • FullPage usa el tamaño real del documento: consulta Page.getLayoutMetrics y construye el clip desde cssContentSize (CSS pixels). Si Chrome no devuelve dimensiones válidas, cae a captura normal con captureBeyondViewport=true en vez de fallar.
  • mimeType según opts, no según extensión: devuelve "image/jpeg" solo cuando opts.Format == "jpeg"; en cualquier otro caso (incluido el default con Format vacío) devuelve "image/png". No hay archivo, así que no infiere nada de una extensión.
  • JPEG quality: solo aplica si Format == "jpeg"; el default es 80.
  • Páginas con lazy-loading: el cssContentSize refleja el DOM en el instante de la captura. Si la página carga contenido al hacer scroll, haz scroll + CdpWaitIdle antes para que la altura sea la final.

Notas

Adición de cdp_screenshot (estilo ADR 0003): el .go vive junto a cdp_screenshot.go en el mismo paquete browser. El struct CdpScreenshotOpts (campos FullPage bool, Quality int, Format string) es compartido con CdpScreenshot. Chrome retorna la imagen como base64; esta función la decodifica a []byte y la devuelve sin escribir a disco. CdpScreenshot compone sobre esta primitiva añadiendo creación de directorio + escritura del archivo.