Hackathon Julio 2026 · Setup

Guía de
Conexiones

Todo lo que tenés que dejar configurado antes de arrancar: la base (GitHub, Claude, MCP), el stack de SEO (GSC, GA4, Ahrefs, DataForSEO, Merchant Center, GBP, Screaming Frog) y el de Revenue (HubSpot). Por cada acceso: qué es, cómo se conecta, y cómo validar que anda.

~20 min de setup Credenciales en Passbolt Todo read-only

Esta guía cubre los accesos del hackathon en tres bloques: Base (lo que usa todo el mundo), SEO y Revenue. No hace falta configurar todo: seguí la Base, y después solo lo que necesite tu track. Cada bloque dice qué es, cómo se conecta y cómo validar que funciona.

Las credenciales reales (tokens, keys, secrets, service accounts) no están en este documento — viven en Passbolt. Acá tenés el cómo; los valores los copiás de ahí. Nunca las pegues en repos, issues ni canales abiertos, y nunca las commitees (van en .env, que está gitignoreado).

Base · para todos

GitHub, Claude y MCP

Las tres piezas que usa todo el equipo, sin importar el track. Sin esto no arrancás.

01 · GitHub + GitHub Desktop

Cuenta en la org requerido

Qué es: el repo del hackathon vive en la organización FARO-DataLab en GitHub. Ahí están las ideas, los prototipos y el board. GitHub Desktop es la app con botones para clonar/commit/push sin terminal (ideal si no sos dev).

Cómo se conecta:

  1. Creá (o usá) tu cuenta de GitHub y avisá tu usuario para que te sumen a FARO-DataLab/gkt-hackaton-julio-2026.
  2. Instalá GitHub Desktop, iniciá sesión y File → Clone repository → elegí el repo.
  3. Alternativa por terminal: gh auth login y después gh repo clone FARO-DataLab/gkt-hackaton-julio-2026.
Cómo validar que funciona

En GitHub Desktop, el repo aparece en la lista y ves el historial de commits. Por terminal: gh auth status dice Logged in y gh repo view FARO-DataLab/gkt-hackaton-julio-2026 devuelve el README sin error 404.

02 · Claude Code y Claude Desktop

El agente y la app requerido

Qué es: Claude Desktop es la app para charlar y conectar MCPs; Claude Code es el agente que corre en la terminal y construye. Con tu cuenta de Growketing.

Cómo se conecta:

terminal
# Claude Desktop: descargar de claude.ai/download (Mac/Windows) e iniciar sesión

# Claude Code (CLI) — necesita Node.js
npm install -g @anthropic-ai/claude-code
cd gkt-hackaton-julio-2026
claude            # la 1ª vez abre el navegador para loguearte
Cómo validar que funciona

claude --version imprime una versión; al correr claude entrás a la sesión sin pedir login de nuevo. En Desktop, Settings muestra tu cuenta de Growketing activa. Guía oficial: docs.claude.com/claude-code.

03 · MCP servers

Enchufarle herramientas al agente requerido

Qué es: un MCP es la forma estándar de darle herramientas y datos al agente (un "USB universal"). El más usado acá es el MCP del Data Platform (campañas, métricas, clientes sin tocar SQL); también hay MCPs oficiales de terceros.

Cómo se conecta — Claude Desktop (Settings → Developer → Edit Config, dentro de mcpServers):

claude_desktop_config.json
{
  "mcpServers": {
    "data-platform": {
      "url": "https://mcp.data-platform.growketing.io/mcp",
      "headers": { "Authorization": "Bearer <passbolt>" }
    }
  }
}

Cómo se conecta — Claude Code:

terminal
claude mcp add --transport http data-platform https://mcp.data-platform.growketing.io/mcp \
  --header "Authorization: Bearer <passbolt>"
claude mcp list   # lista los servers configurados y su estado
Cómo validar que funciona

claude mcp list muestra el server como conectado (reiniciá Claude después de editar la config). Prueba de fuego: pedile a Claude "listá los clientes del data platform" y tiene que devolver la lista.

Track SEO

El stack de datos SEO

Search Console, analítica, backlinks, performance y catálogo. Todo de lectura. Algunos accesos están en proceso — abajo aclaro el estado real de cada uno.

04 · Google Search Console + GA4

ADC con analytics@ listo

Qué es: GSC da queries, páginas, impresiones, clics, CTR y posición del orgánico; GA4 da tráfico, usuarios y conversiones. Se acceden con ADC (Application Default Credentials) usando la service account analytics@, que ya tiene acceso de lectura a las propiedades.

Cómo se conecta: lo más simple es a través del MCP del Data Platform (paso 03), que ya expone GSC y GA4. Para acceso directo por API, bajás el JSON de la SA analytics@ de Passbolt y apuntás GOOGLE_APPLICATION_CREDENTIALS a ese archivo:

terminal
# opción A — usuario (abre el navegador, tu cuenta @growketing.com)
gcloud auth application-default login

# opción B — service account analytics@ (JSON de Passbolt)
export GOOGLE_APPLICATION_CREDENTIALS=secrets/analytics-sa.json
Cómo validar que funciona

Vía MCP: "traé las top 10 queries de GSC del cliente X en los últimos 28 días" devuelve datos. Por API: la Search Console API sites.list lista los sitios verificados, y la GA4 Data API runReport devuelve sessions sin error 403 de permisos.

05 · PageSpeed Insights + CrUX

Performance y Core Web Vitals listo

Qué es: PageSpeed Insights corre un Lighthouse de una URL (performance de laboratorio + oportunidades). CrUX (Chrome UX Report) da los Core Web Vitals reales de usuarios (campo). Ambas son APIs de Google con una API key.

Cómo se conecta: copiás la API key de Passbolt y la pasás como query param. Son endpoints públicos, sin OAuth.

terminal
# PageSpeed Insights — Lighthouse de una URL
curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://ejemplo.com&strategy=mobile&key=$PSI_KEY"

# CrUX — Core Web Vitals de campo
curl -X POST "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=$CRUX_KEY" \
  -H "Content-Type: application/json" -d '{"url":"https://ejemplo.com"}'
Cómo validar que funciona

PageSpeed devuelve un JSON con lighthouseResult.categories.performance.score. CrUX devuelve record.metrics con largest_contentful_paint cumulative_layout_shift. Si la key falla, la respuesta trae error.status: "INVALID_ARGUMENT" o 403.

06 · Ahrefs

Backlinks y keywords listo

Qué es: la fuente de backlinks, dominios de referencia, keywords orgánicas y análisis de competidores. Clave para el link gap del track SEO. Se accede con la Ahrefs API v3 (Bearer token).

Cómo se conecta: token de Passbolt en el header Authorization.

terminal
curl "https://api.ahrefs.com/v3/subscription-info/limits-and-usage" \
  -H "Authorization: Bearer <passbolt>"
Cómo validar que funciona

El endpoint limits-and-usage devuelve tu plan y las units disponibles (200). Si el token está mal, es 401. Ojo con no quemar units en pruebas: empezá siempre por ese endpoint barato.

07 · DataForSEO

SERPs y datos a escala sin créditos

Qué es: API para datos de SERP, keywords y rankings a escala (útil cuando Ahrefs no alcanza o querés SERP en vivo). Autenticación Basic (login:password).

Estado: la cuenta existe pero todavía no tiene créditos cargados, así que los endpoints de datos en vivo van a devolver saldo insuficiente. La conexión se puede validar igual (endpoint de cuenta), y el saldo queda como pendiente a destrabar antes de usarlo en serio.

terminal
curl -u "<login>:<passbolt>" "https://api.dataforseo.com/v3/appendix/user_data"
Cómo validar que funciona

user_data responde 200 con tu cuenta → las credenciales andan. Mirá money.balance: si está en 0, la conexión es válida pero falta cargar créditos (los endpoints de tareas darán error de fondos). Marcá ese pendiente y no bloquees el prototipo con datos mock mientras tanto.

08 · Merchant Center

Catálogo y performance de productos listo

Qué es: catálogo y performance de productos vía la Merchant API (v1). Se usa una service account (archivo JSON) con acceso a un grupo de cuentas habilitadas.

Cómo se conecta: bajá el JSON de la SA de Passbolt a secrets/; con eso genera el token solo (scope content).

python
from google.oauth2 import service_account
import google.auth.transport.requests as gtr

SCOPE = "https://www.googleapis.com/auth/content"
creds = service_account.Credentials.from_service_account_file(
    "secrets/gkt-merchant-center.json", scopes=[SCOPE])
creds.refresh(gtr.Request())   # si esto no tira, la SA anda
Cómo validar que funciona

creds.refresh() sin excepción → la SA está OK. Después, un reports:search sobre una cuenta habilitada con SELECT product_view.id FROM product_view LIMIT 5 devuelve filas. Usá v1 (no v1beta). Tablas útiles: product_view product_performance_view.

09 · Google Business Profile

Fichas de negocio / local waitlist

Qué es: la API de Google Business Profile (perfiles de negocio, reseñas, insights locales). Útil para SEO local.

Estado: el acceso a la API está en waitlist — Google todavía no aprobó la cuota del proyecto. Hasta que la habiliten, no hay conexión programática; se puede trabajar sobre exports manuales del panel de GBP.

Cómo validar que funciona

En Google Cloud Console, la Business Profile API figura como habilitada y la cuota deja de ser 0. Mientras siga en waitlist, la validación es simplemente chequear el estado de la solicitud; no la pongas en el camino crítico de ninguna demo.

10 · Screaming Frog

Crawler técnico de sitios licencias a destrabar

Qué es: el crawler de escritorio para auditorías técnicas (títulos, metas, redirects, canonical, status codes, enlaces internos). Se corre en tu máquina; la versión con licencia levanta el límite de 500 URLs y habilita el modo headless para automatizar.

Estado: las licencias están a destrabar — coordinar con IT cuántos seats hay y a quién se le asignan. Sin licencia funciona en modo gratis (tope 500 URLs, sin headless).

Cómo se conecta: instalás la app, y en Licence → Enter Licence Key pegás la key (de Passbolt, cuando esté asignada). Para automatizar, modo headless desde terminal:

terminal (macOS)
screamingfrogseospider --headless --crawl https://ejemplo.com \
  --output-folder ./out --export-tabs "Internal:All"
Cómo validar que funciona

En Licence → Licence Details el estado es activa (sin el límite de 500). Un crawl de una URL cualquiera completa y exporta el CSV de Internal:All con más de 500 filas si el sitio las tiene.

Track Revenue

HubSpot

El CRM donde viven contactos, deals y las automatizaciones comerciales. Para propuestas, follow-ups y el cruce con SEO en los sweet spots.

11 · HubSpot

CRM · conectado con Level Blue listo

Qué es: el CRM del track Revenue: contactos, empresas, deals, pipelines, actividad. La conexión ya está establecida a través de Level Blue (la integración que administra el portal), así que el token/acceso sale de ahí — no se crea una private app nueva por persona.

Cómo se conecta: pedís el token de acceso (gestionado vía Level Blue) desde Passbolt y pegás llamadas contra la HubSpot API v3 con el header Authorization: Bearer. Todo de lectura para el hackathon.

terminal
curl "https://api.hubapi.com/crm/v3/objects/contacts?limit=1" \
  -H "Authorization: Bearer <passbolt>"
Cómo validar que funciona

La llamada a /crm/v3/objects/contacts?limit=1 devuelve 200 con un contacto → el token y los scopes de lectura andan. Un 401 es token vencido/mal; un 403 es scope faltante (pedir el scope correcto vía Level Blue). Nada de escrituras: si algo necesita crear/actualizar en HubSpot, va como borrador con gate humano.


¿Un acceso no anda o falta? No frenes el prototipo: marcá el pendiente en el board y seguí con datos mock. Los estados sin créditos / waitlist / licencias son cosas a destrabar antes o durante la semana, no bloqueantes de arranque.