DesafíosDashboards
Radar competitivo
Dado un dominio, mostrar dónde está parado contra sus competidores directos.
Cómo
- Traer la ficha del sitio: posición, PerfoScore, Core Web Vitals y vertical.
- Buscar los tres competidores de arriba y los tres de abajo por tráfico.
- Comparar contra el mejor del grupo.
- Terminar en una recomendación, no en un gráfico.
Datos
Copiá el texto en SKILL.md, dentro de .claude/skills/.
PerfoRank
Generar keyTrá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.