Automatizaciones — Electron CDP

Automatización de Slack Desktop
con Chrome DevTools Protocol

CULTIVA IA · Extracción automática de métricas de clientes desde Slack nativo cada lunes 08:00h vía n8n + agent-browser

App Slack 4.42 (Electron 32)
Puerto CDP :9222
OS macOS Sequoia
Estado ✓ Conectado
5
Pasos automatizados
12
Elementos capturados
3.2s
Tiempo total ejecución

Pipeline de automatización

Integración n8n → agent-browser CDP → Notion

Cron n8n
Lun 08:00
🖥️
Slack Desktop
:9222 CDP
🔍
Snapshot UI
12 elementos
📋
Extraer datos
Mensajes + métricas
📄
Notion
:9226 CDP
Informe semanal
Auto-generado
1

Lanzar Slack con CDP habilitado

Reiniciar la app con el flag de depuración remota

01_launch_slack.sh PASO 1
1# ── 1. Cerrar Slack si ya está corriendo ────────────────────── 2pkill -a -i "Slack" || true 3sleep 1 4 5# ── 2. Relanzar con puerto CDP 9222 ─────────────────────────── 6open -a "Slack" --args --remote-debugging-port=9222 7sleep 3 # Esperar inicialización del webview 8 9# ── 3. Verificar que CDP responde ───────────────────────────── 10curl -s http://localhost:9222/json/version | jq '.webSocketDebuggerUrl'
Terminal — verificación CDP
$ curl -s http://localhost:9222/json/version | jq '.webSocketDebuggerUrl'
"ws://localhost:9222/devtools/browser/a3f8e12b-4c91-4d02-b6e7-1f5a8cd9e031"

$ curl -s http://localhost:9222/json | jq '.[].title'
"Slack - CULTIVA IA"
"Slack Notifications Webview"
✓ CDP activo en ws://localhost:9222 — 2 targets detectados
2

Conectar y capturar snapshot de la UI

Descubrir los elementos interactivos con agent-browser

02_connect_snapshot.sh PASO 2
1# Conectar al puerto CDP de Slack 2agent-browser connect 9222 3 4# Listar ventanas/webviews disponibles 5agent-browser tab 6 7# Navegar al canal #reportes-clientes 8agent-browser tab --url "*app.slack.com*" 9 10# Capturar snapshot interactivo de todos los elementos 11agent-browser snapshot -i > snapshot_slack.json
Slack — CULTIVA IA [CDP :9222 ✓]
C
CULTIVA IA
# general
# campañas-meta
reportes-clientes
# alertas-automáticas
# dev-agentes
# reportes-clientes — Métricas semanales automáticas de todos los clientes
A
Agente-MonitorHoy 08:01
📊 FreshBox S.L. — ROAS Meta: 4.2× | CPM: 8.30€ | Conversiones: 142
B
Agente-MonitorHoy 08:01
📊 Clínica Vitalys — ROAS Meta: 1.8× | CPM: 14.20€ | Conversiones: 31 ⚠️
M
Agente-MonitorHoy 08:02
📊 ModoRoam Travel — ROAS Meta: 5.1× | CPM: 6.90€ | Conversiones: 204 🚀

Resultado de agent-browser snapshot -i — elementos interactivos detectados:

Ref Rol Nombre / Descripción Estado
@e1textboxBuscar en Slackenfocable
@e2link# generalnavegable
@e3link# campañas-metanavegable
@e4link# reportes-clientes ← activoseleccionado
@e5articleMensaje: Agente-Monitor — FreshBox S.L. ROAS 4.2×texto
@e6articleMensaje: Agente-Monitor — Clínica Vitalys ROAS 1.8×alerta
@e7articleMensaje: Agente-Monitor — ModoRoam Travel ROAS 5.1×texto
@e8textboxRedactar un mensajeeditable
@e9buttonEnviar mensajeclickable
3

Extraer métricas de los mensajes

Leer texto de cada elemento y volcar a JSON estructurado

03_extract_metrics.sh PASO 3
1# Extraer texto de cada mensaje de métricas 2agent-browser get text @e5 > msg_freshbox.txt 3agent-browser get text @e6 > msg_vitalys.txt 4agent-browser get text @e7 > msg_mooroam.txt 5 6# Volcar estado completo de la UI a JSON 7agent-browser snapshot --json > slack_state.json 8 9# Captura de pantalla del canal 10agent-browser screenshot --full reportes-lunes.png

JSON extraído — slack_state.json:

{
  "timestamp": "2026-06-16T08:03:14Z",
  "app": "Slack 4.42 / Electron 32",
  "canal_activo": "#reportes-clientes",
  "clientes": [
    {
      "nombre": "FreshBox S.L.",
      "roas": 4.2,
      "cpm_eur": 8.30,
      "conversiones": 142,
      "alerta": false,
      "ref_elemento": "@e5"
    },
    {
      "nombre": "Clínica Vitalys",
      "roas": 1.8,
      "cpm_eur": 14.20,
      "conversiones": 31,
      "alerta": true,
      "ref_elemento": "@e6"
    },
    {
      "nombre": "ModoRoam Travel",
      "roas": 5.1,
      "cpm_eur": 6.90,
      "conversiones": 204,
      "alerta": false,
      "ref_elemento": "@e7"
    }
  ],
  "screenshot": "reportes-lunes.png",
  "total_elementos": 12,
  "cdp_port": 9222
}
4

Rellenar búsqueda y navegar programáticamente

Usar fill + press para buscar conversaciones por cliente

04_search_client.sh PASO 4
1# Buscar conversaciones de 'Clínica Vitalys' (cliente con alerta) 2agent-browser click @e1 # Foco en buscador 3agent-browser fill @e1 "Clínica Vitalys" 4agent-browser press Enter 5agent-browser wait 1500 # Esperar resultados 6 7# Re-snapshot para ver resultados de búsqueda 8agent-browser snapshot -i 9 10# Captura del resultado de búsqueda 11agent-browser screenshot --annotate busqueda-vitalys.png 12 13# Forzar dark mode para capturas consistentes 14AGENT_BROWSER_COLOR_SCHEME=dark agent-browser screenshot dark-vitalys.png
Terminal — búsqueda interactiva
$ agent-browser fill @e1 "Clínica Vitalys"
✓ filled @e1 ← "Clínica Vitalys"

$ agent-browser press Enter
✓ key pressed: Enter

$ agent-browser snapshot -i
@e11 [listitem] "Clínica Vitalys — #reportes-clientes"
@e12 [listitem] "Clínica Vitalys — MDs con Pablo"
@e13 [listitem] "Clínica Vitalys — briefing Q3 2026"

$ agent-browser screenshot --annotate busqueda-vitalys.png
✓ screenshot saved → busqueda-vitalys.png (1440×900)
5

Volcar el informe a Notion Desktop vía segunda sesión CDP

Multisesión — controlar dos apps Electron simultáneamente

05_dump_notion.sh PASO 5
1# ── Sesión paralela: Slack + Notion ─────────────────────────── 2agent-browser --session slack connect 9222 3 4# Abrir Notion con depuración remota 5open -a "Notion" --args --remote-debugging-port=9226 6sleep 3 7agent-browser --session notion connect 9226 8 9# Navegar a la página "Informe Semanal Clientes" en Notion 10agent-browser --session notion snapshot -i 11agent-browser --session notion fill @n1 "Informe Semanal Clientes" 12agent-browser --session notion press Enter 13agent-browser --session notion click @n3 # Abrir página 14 15# Insertar bloque de métricas 16agent-browser --session notion fill @n8 \ 17 "## Semana 2026-06-16\nFreshBox 4.2× ✅ | Vitalys 1.8× ⚠️ | ModoRoam 5.1× 🚀" 18agent-browser --session notion screenshot notion-informe.png
Terminal — sesiones paralelas Slack + Notion
$ agent-browser --session slack connect 9222
✓ [slack] Connected to ws://localhost:9222

$ agent-browser --session notion connect 9226
✓ [notion] Connected to ws://localhost:9226

— Ambas sesiones activas simultáneamente —

$ agent-browser --session notion screenshot notion-informe.png
✓ [notion] screenshot saved → notion-informe.png (2560×1440)

═══════════════════════════════════════════
✓ Pipeline completado en 3.2s
✓ 3 clientes procesados | 1 alerta detectada
✓ Informe volcado en Notion
✓ 2 screenshots generados
═══════════════════════════════════════════

Resumen del workflow

Qué consigue este script cada lunes a las 08:00h

Apps automatizadas

💬
Slack 4.42
CDP :9222 — extracción métricas
📄
Notion Desktop
CDP :9226 — volcado informe
⚙️
n8n workflow
Cron lun 08:00 — orquestación

Métricas extraídas esta semana

Cliente ROAS Estado
FreshBox S.L. 4.2× OK
Clínica Vitalys 1.8× ALERTA
ModoRoam Travel 5.1× TOP