Files
graph_explorer/issues/0029-enrichers-cdp.md
T
egutierrez 9042110ea2 docs(issues): plan enrichers asincronos + recoleccion web (0026-0030)
Cinco issues que componen el plan:
- 0026: sistema de jobs (infra, contrato wire)
- 0027: tipo Webpage + cache de documentos
- 0028: enricher fetch_webpage (MVP end-to-end)
- 0028b: enrichers extract_domain / extract_links / extract_text_entities
- 0029: variantes CDP (Chrome headless, screenshot)
- 0030: macro "Deep enrich" + expand_domain

Tambien anade los issues previos 0012-0025 que estaban untracked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:24:13 +02:00

1.9 KiB

id, title, status, priority, created, depends_on
id title status priority created depends_on
0029 Enrichers via Chrome headless (CDP) — fetch_webpage_browser, fetch_screenshot pending medium 2026-05-01
0028

Objetivo

Variantes de los enrichers basicos que usan Chrome headless via CDP, para sitios con contenido renderizado por JavaScript (SPA, paginas con auth visual, etc.) o cuando se quiere capturar evidencia visual.

1. fetch_webpage_browser

applies_to: [Url, Webpage]
emits: [Domain]
relations: [BELONGS_TO]
params:
  - { name: chrome_port, type: int, default: 9222 }
  - { name: wait_after_load_ms, type: int, default: 1500 }
  • Usa funciones del registry:
    • chrome_launch_go_browser — lanza Chrome en port (reusa si ya esta).
    • cdp_connect_go_browser
    • cdp_navigate_go_browser
    • cdp_wait_load_go_browser
    • cdp_get_html_go_browser — DOM post-JS.
  • El run.py shell-out a un binario Go pequeno o llama estas funciones via un wrapper Python que invoca el Go function como subprocess.
  • Decision pendiente: empaquetar las funciones Go en un binario CLI cdp-fetcher que el run.py invoque, o reescribir la logica en Python con pychrome / playwright. Preferencia: binario Go para reusar las funciones del registry.

2. fetch_screenshot

applies_to: [Webpage, Url]
params:
  - { name: full_page, type: bool, default: true }
  • cdp_screenshot_go_browser → guarda cache/<sha>.png.
  • node_updates: anade screenshot_path a metadata del Webpage.
  • No emite entidades nuevas.

Definicion de hecho

  • fetch_webpage_browser extrae correctamente DOM de una SPA (test: twitter.com, linkedin.com publico).
  • fetch_screenshot produce PNG legible en el cache.
  • Inspector del nodo Webpage muestra una preview del screenshot cuando screenshot_path existe (mejora UI opcional).

Out of scope

  • Login flows / auth via CDP — fuera de v1.
  • Adblock / fingerprint evasion — el user-agent default es suficiente.