Desafíos
Dashboards

Radar competitivo

Dado un dominio, mostrar dónde está parado contra sus competidores directos.

Cómo

  1. Traer la ficha del sitio: posición, PerfoScore, Core Web Vitals y vertical.
  2. Buscar los tres competidores de arriba y los tres de abajo por tráfico.
  3. Comparar contra el mejor del grupo.
  4. Terminar en una recomendación, no en un gráfico.

Datos

Copiá el texto en SKILL.md, dentro de .claude/skills/.

PerfoRank

Generar key

Tráfico, PerfoScore y Core Web Vitals de ~1.600 ecommerce argentinos.

Key gratuita. Vence a las 23:59 del día que la generás.

SKILL.md
---
name: perforank
description: Consultar el ranking de ecommerce de Argentina de PerfoRank (tráfico, PerfoScore, Core Web Vitals, plataforma y vertical de cada tienda). Usar cuando se pida analizar, comparar o rankear tiendas online argentinas, buscar competidores de un ecommerce, ver quién lidera una vertical o una plataforma (VTEX, Tiendanube, Shopify, WooCommerce, Magento), o evaluar la performance web de un sitio de ecommerce argentino.
---

# PerfoRank MCP — Hackathon

Datos de ~1600 ecommerce de **Argentina**, período `2026-08`, medidos con Chrome UX Report y resumidos en un **PerfoScore** (0-100).

## 1. Conseguir la key (obligatorio, 1 min)

Ir a **https://perforank.com/hackathon-mcp**, completar nombre / email / URL de ecommerce → devuelve una key `prmcp_...`.

> ⚠️ **La key vence a las 23:59:59 del mismo día** y se muestra **una sola vez**. Guardala apenas la generes.
> Cuota: **200 llamadas totales**, **12 por minuto**.

## 2. Consultar

El endpoint es `https://perforank.com/mcp` — JSON-RPC 2.0 sobre HTTP POST. Pese al nombre, no hace falta ningún cliente MCP: es un POST común, se llama con `curl` o `fetch`.

```bash
curl -s https://perforank.com/mcp \
  -H "Authorization: Bearer $PERFORANK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"get_site","arguments":{"url":"gangahome.com.ar"}}}'
```

También acepta un formato corto no-JSON-RPC:

```bash
curl -s "https://perforank.com/mcp?key=$PERFORANK_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tool":"get_site","arguments":{"url":"gangahome.com.ar"}}'
```

Autenticación: `Authorization: Bearer prmcp_...`, header `X-Perfo-Key`, query `?key=`, o campo `api_key` en el body. Cualquiera sirve.

## 3. Tools disponibles

| Tool | Argumentos | Devuelve |
|---|---|---|
| `get_site` | `url` (requerido) | Ficha de una tienda: posición, tráfico, PerfoScore, CWV, plataforma, vertical, delta vs. mes anterior |
| `compare_2_sites` | `url_a`, `url_b` (requeridos) | Ambas fichas + `better_in` (quién gana en tráfico, performance y LCP) |
| `find_nearby_site` | `url` (requerido) | 3 competidores arriba y 3 abajo por tráfico |
| `get_top_by_vertical` | `vertical` (requerido), `sort` (`traffic`\|`performance`), `limit` (1-10) | Hasta 10 tiendas de esa vertical |
| `get_platform_snapshot` | `platform` (requerido), `limit` (1-5) | Cuántas tiendas de esa plataforma hay en el Top 100, PerfoScore promedio y líderes |

### Valores exactos de `vertical`

Es **sensible a mayúsculas y acentos**. Si no matchea, devuelve `rows: []` sin error — no es un bug, es el nombre mal escrito.

```
Marketplaces
Indumentaria y Calzado
Electro y Tecno
Salud y Belleza
Deportes y Fitness
Muebles, Hogar y Deco
Super, Gastronomía y Bodegas
Otros
```

Para descubrir la vertical de cualquier tienda: `get_site` la devuelve en el campo `vertical`.

### Valores exactos de `platform`

```
vtex   tiendanube   woocommerce   magento   shopify_alt2   demandware   otros
```

⚠️ Shopify se llama **`shopify_alt2`**, no `shopify` (`shopify` devuelve 0 resultados).

## 4. Cómo leer la respuesta

```json
{
  "found": true,
  "period": "2026-08",
  "site": {
    "url": "gangahome.com.ar",
    "platform": "tiendanube",
    "position": 72,          // ranking por tráfico en Argentina
    "traffic_rank": 88412,   // rank global de tráfico (menor = más tráfico)
    "perfo_score": 64,       // 0-100
    "lcp": "3.85s", "inp": "86ms", "cls": "0.080",
    "cwv_status": "NI"       // GOOD | NI (needs improvement) | POOR
  },
  "positions": { "traffic": 72, "performance": 1447 },
  "vertical": "Muebles, Hogar y Deco",
  "change_vs_previous": { "traffic_rank_delta": 770, "perfo_score_delta": -2 }
}
```

Notas de interpretación:
- `position` y `positions.traffic` son el ranking por tráfico; `positions.performance` es el ranking por PerfoScore. Una tienda puede ser #72 en tráfico y #1447 en performance.
- `traffic_rank_delta` **positivo** = el rank global subió de número = **perdió** tráfico relativo.
- Muchas tiendas chicas tienen `perfo_score: 100` con `cwv_status: GOOD`; el score satura arriba.
- `vertical` puede venir `null` en tiendas de cola larga.

## 5. Errores y límites

| Situación | Respuesta |
|---|---|
| Tienda no está en el dataset | `{"found": false, "message": "No encontramos esa tienda..."}` — HTTP 200, no es error |
| Más de 12 req/min | `-32000 "Throttling activo. Espera unos segundos y proba de nuevo."` |
| Sin key | HTTP 400, `-32000 "Falta API key."` |
| Tool mal escrita | `-32000 "Tool no disponible."` |

**Manejo del throttling:** al iterar sobre varias tiendas, esperar ~6 s entre llamadas o hacer retry con backoff ante `-32000`. Con 200 llamadas de cuota, conviene cachear resultados en memoria durante la hackathon en vez de repetir consultas.

Otros límites conocidos:
- `tools/list` responde **sin autenticación**; solo `tools/call` valida la key.
- Solo Argentina. El sitio web muestra Brasil, Chile, Colombia, México, Perú y Uruguay, pero este endpoint no los expone.
- Solo POST. `GET /mcp` devuelve 400.

## 6. Ideas de uso para la hackathon

- **Benchmark competitivo:** `get_site` de la tienda propia → `find_nearby_site` para los 6 competidores directos → `compare_2_sites` contra el mejor.
- **Informe de vertical:** `get_top_by_vertical` con `sort=performance` vs. `sort=traffic` y mostrar quién tiene tráfico pero mala performance (oportunidad comercial).
- **Argumento de migración de plataforma:** `get_platform_snapshot` de dos plataformas y comparar PerfoScore promedio en el Top 100.
- **Agente de diagnóstico:** dado un dominio, devolver ficha + posición en su vertical + los 3 rivales más cercanos, en lenguaje natural.

La idea

Alguien de marketing escribe el dominio de su tienda y recibe una pantalla que le dice contra quién compite, dónde pierde y qué conviene tocar primero.

El dato ya está resuelto: la skill lo trae. El desafío es la lectura. Un ranking crudo no sirve; el valor aparece cuando la pantalla se anima a decir una sola cosa.

Sirve tanto un dashboard web como un informe que se genere solo. Lo que se evalúa es si el que lo mira sabe qué hacer después.