CrawlForge MCP
InicioPlaygroundCasos de usoIntegracionesPreciosDocumentaciónBlog
Cómo hacer un análisis de brecha de palabras clave con un MCP server
Tutorials
Volver al blog
Tutoriales

Cómo hacer un análisis de brecha de palabras clave con un MCP server

C
CrawlForge Team
Equipo de Ingeniería
23 de agosto de 2026
11 min de lectura

En esta página

Respuesta rápida

Un análisis de brecha de palabras clave sobre un MCP server tiene tres fases: descubrir términos candidatos con search_web, extraer posiciones orgánicas reales de Google con serp_rank y después clasificar qué tipo de página ocupa cada hueco del top ten. Esa última fase es la que casi todas las herramientas se saltan y la que decide todo: una SERP llena de homes de proveedores está cerrada diga lo que diga su puntuación de dificultad, mientras que una SERP llena de directorios e hilos de foro está abierta. Presupuesta 5 credits por consulta y cuenta con que cada llamada SERP en vivo tarde entre 10 y 40 segundos, porque lanza una búsqueda real en Google en lugar de leer una caché.

La mayoría de las herramientas de investigación de keywords responden a la pregunta equivocada. Te dicen lo difícil que es un término en una escala del 1 al 100, que es el resumen de un resumen. Lo que de verdad necesitas saber es quién ocupa el top ten y qué tipo de páginas son, porque eso determina si la posición se puede tomar siquiera.

Esta guía monta ese análisis como un pipeline reproducible sobre una conexión MCP. Es el método exacto detrás de nuestro estudio SERP de web scraping de 2026, incluido el error que invalida casi toda la investigación de keywords casera.

Tabla de contenidos

  • Las tres fases
  • El error que convierte la investigación de keywords en ficción
  • Fase 1: descubrir términos candidatos
  • Fase 2: extraer posiciones orgánicas reales
  • Fase 3: clasificar los tipos de página
  • Puntuar la brecha
  • Comprobar la intención antes de comprometerte
  • Coste en credits y tiempo de ejecución
  • Ejecutarlo desde la API REST
  • Preguntas frecuentes

Las tres fases

FaseToolCreditsResponde
Descubrirsearch_web5Qué términos existen y quién aparece
Medirserp_rank5El top ten orgánico real
Clasificaranalyze_content (opcional)3Qué tipo de página es cada resultado

La fase 3 suele ser criterio propio más que una llamada a una tool: estás etiquetando nueve URLs, y eso va más rápido a ojo que por API.

El error que convierte la investigación de keywords en ficción

Empieza por aquí, porque invalida todo lo que viene después.

El orden de resultados de una API de búsqueda no es el ranking de Google. Las herramientas de búsqueda recuperan resultados y luego los reordenan. El search_web de CrawlForge reordena lo que recupera con pesos de BM25, similitud semántica, autoridad y frescura, y lo reporta exactamente así en su respuesta:

Json
{
  "processing": {
    "ranking": {
      "algorithmsUsed": ["bm25", "semantic", "authority", "freshness"],
      "weightsApplied": { "bm25": 0.4, "semantic": 0.3, "authority": 0.2, "freshness": 0.1 }
    }
  }
}

Ese reordenamiento hace que los resultados sean mejores para investigar e inservibles como medición de ranking. Si lees la posición 1 de una API de búsqueda y la registras como un ranking de Google, toda conclusión construida encima está mal.

Usa search_web para saber qué dominios están en juego. Usa serp_rank — que devuelve el propio valor rank_group de Google — para cualquier cosa que vayas a llamar posición.

Fase 1: descubrir términos candidatos

Abre mucho el foco primero. Estás buscando el vocabulario de la categoría, todavía no rankings.

Typescript
import { Client } from '@modelcontextprotocol/sdk/client/index.js';

const client = new Client({ name: 'keyword-gap', version: '1.0.0' });

interface Candidate {
  keyword: string;
  indexedPages: number;
  domains: string[];
}

async function discover(keyword: string): Promise<Candidate> {
  const res = await client.callTool({
    name: 'search_web',
    arguments: { query: keyword, limit: 20 },
  });

  const data = JSON.parse(res.content[0].text);

  return {
    keyword,
    // Google's rough index estimate -- a crowding signal, NOT search volume.
    indexedPages: parseInt(data.total_results ?? '0', 10),
    // Presence only. This order is re-ranked and is not a Google ranking.
    domains: [...new Set(data.results.map((r) => r.displayLink))],
  };
}

Importan dos campos. total_results es el recuento aproximado de Google de páginas que compiten: una señal de saturación, no de volumen. La lista de dominios te dice quién está en la conversación.

Fase 2: extraer posiciones orgánicas reales

Ahora mide. serp_rank lanza una consulta en vivo a Google y devuelve posiciones orgánicas reales, además del listado de competidores.

Typescript
interface RankResult {
  keyword: string;
  found: boolean;
  position: number | null;
  competitors: Array<{ position: number; domain: string; url: string }>;
}

async function measure(keyword: string, target: string): Promise<RankResult> {
  const res = await client.callTool({
    name: 'serp_rank',
    arguments: {
      keyword,
      target,
      location_name: 'United States',
      device: 'desktop',
      depth: 10,
    },
  });

  const data = JSON.parse(res.content[0].text);

  // Unconfigured deployments return configured:false rather than a fake rank.
  if (data.configured === false) {
    throw new Error('serp_rank is not configured on this server');
  }

  return {
    keyword,
    found: data.found,
    position: data.position,
    competitors: (data.results ?? []).map((r) => ({
      position: r.position,
      domain: r.domain,
      url: r.url,
    })),
  };
}

Ejecútalas de forma secuencial, no en paralelo. El endpoint SERP en vivo lanza una consulta real a Google; disparar varias a la vez produce timeouts de forma fiable, no resultados más rápidos.

depth: 10 es el valor por defecto correcto. Escanear más hondo cuesta más y, para un análisis de brecha, las posiciones de la 11 en adelante rara vez cambian la decisión.

Fase 3: clasificar los tipos de página

Esta es la fase que produce el hallazgo de verdad, y es sobre todo criterio.

Para cada uno de los nueve o diez resultados, etiqueta qué tipo de página es:

  • Comercial — home, página de producto, página de precios
  • Contenido de proveedor — artículo de blog o documentación de una empresa
  • Independiente — directorio, hilo de foro, repositorio de código, noticia

Después cuenta los resultados comerciales. Ese único número te dice más que cualquier puntuación de dificultad:

Typescript
type PageType = 'commercial' | 'vendor-content' | 'independent';

function gapScore(labels: PageType[]): 'closed' | 'contested' | 'open' {
  const commercial = labels.filter((l) => l === 'commercial').length;
  if (commercial >= 4) return 'closed';
  if (commercial >= 1) return 'contested';
  return 'open';
}

Aplicado a datos reales de nuestro estudio:

KeywordResultados comercialesVeredicto
web scraping api6 de 9cerrado
firecrawl alternative2 de 9disputado
mcp scraping0 de 8abierto

"web scraping api" está cerrado: seis homes y páginas de producto de proveedores, cada una respaldada por años de construcción de enlaces. Ninguna cantidad de calidad de contenido mueve eso.

"firecrawl alternative" cae en medio. Solo dos resultados son landings comerciales, la página de alternativas de Apify y una página de comparación de Context, pero el resto está denso de artículos de blog de proveedores persiguiendo todos a los mismos clientes que se van. Ganable, saturado, y merece el esfuerzo solo si tienes algo concreto que decir.

"mcp scraping" puntúa como abierto, y la composición explica por qué: dos directorios, un hilo de Reddit, un repositorio de GitHub, tres blogs ajenos y una página de documentación. Nadie ha publicado una página comercial para él.

Puntuar la brecha

Combina las dos señales. Un término merece la pena cuando la SERP está abierta y la saturación es manejable:

Typescript
interface Scored {
  keyword: string;
  verdict: 'closed' | 'contested' | 'open';
  indexedPages: number;
  priority: 'high' | 'medium' | 'skip';
}

function prioritise(c: Candidate, verdict: Scored['verdict']): Scored['priority'] {
  if (verdict === 'closed') return 'skip';
  if (verdict === 'open' && c.indexedPages < 2_000_000) return 'high';
  return 'medium';
}

El umbral es una decisión de criterio, no una ley. Lo que importa es el orden: una SERP abierta con saturación moderada le gana a una SERP disputada con saturación baja, siempre.

Comprobar la intención antes de comprometerte

Un último filtro, y no se puede automatizar.

Lee los títulos del top ten y pregúntate si esa gente quiere comprar lo que vendes. En nuestro estudio, "llm scraper" pasó todos los filtros numéricos — 329.000 páginas compitiendo, claramente del tema — y falló al contacto con los resultados. Buena parte era gente intentando bloquear scrapers: un hilo de YunoHost titulado "Prevent LLM scrapers/trawlers?", un hilo de r/sysadmin sobre cómo combatirlos, Akamai sobre gestión de bots.

Las mismas palabras, la intención opuesta. Posicionar ahí te gana tráfico que nunca convierte y una tasa de rebote que le enseña a Google que tu página es una mala respuesta.

Treinta segundos de lectura pillan lo que ninguna puntuación puede.

Coste en credits y tiempo de ejecución

Un estudio de diez keywords:

ConceptoLlamadasCredits
Descubrimiento10 x search_web50
Medición10 x serp_rank50
Total100

Eso es una décima parte de los 1.000 credits de un solo uso del plan Free.

El tiempo de ejecución es la restricción real. Las consultas SERP en vivo tardaron entre 10 y 41 segundos cada una en nuestras mediciones — la misma keyword varió de 11 a 28 segundos entre ejecuciones consecutivas, porque el endpoint lanza una consulta real a Google cuya latencia depende de la capacidad del proveedor. Diez keywords en secuencia son entre cinco y diez minutos. Pon un timeout de cliente de al menos 60 segundos y ejecuta el trabajo en segundo plano.

Ejecutarlo desde la API REST

Si no estás dentro de un cliente MCP, la misma consulta funciona sobre HTTP:

Bash
curl -X POST https://www.crawlforge.dev/api/v1/tools/serp_rank \
  -H "X-API-Key: $CRAWLFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "mcp scraping",
    "target": "crawlforge.dev",
    "location_name": "United States",
    "depth": 10
  }'

La respuesta REST usa rank y all_positions donde la tool MCP devuelve position; ambas reportan la misma posición orgánica de Google por debajo. Las consultas fallidas — un proveedor inalcanzable, un timeout — devuelven un error y no se cobran.

Hacia dónde seguir

Una vez sabes qué términos están abiertos, el trabajo siguiente es técnico: asegurarte de que las páginas que publiques para ellos sean rastreables y estén bien marcadas. Nuestra guía para automatizar auditorías SEO con CrawlForge cubre esa mitad, y la referencia de la API de serp_rank documenta todos los parámetros usados arriba.

Empieza gratis con 1.000 credits — suficiente para unas 200 comprobaciones de posición.

Pruébalo tú mismo — sin necesidad de registrarte

Ejecuta cualquiera de las 28 herramientas de scraping y extracción de CrawlForge en el playground y luego empieza gratis con 1,000 credits.

1,000 credits gratis • Por única vez • No se requiere tarjeta de crédito

Etiquetas

SEOkeyword-researchtutorialMCPautomationSERP-analysis

Sobre el autor

C

CrawlForge Team

Equipo de Ingeniería

Construimos el MCP server de web scraping más completo. Creamos herramientas que ayudan a los desarrolladores a extraer, analizar y transformar datos web para aplicaciones de IA.

Mantente al día con los últimos artículos

Recibe tutoriales, novedades del producto y consejos de web scraping en tu bandeja de entrada.

Sin spam. Cancela tu suscripción cuando quieras.

Ponlo en práctica

Prueba las herramientas de CrawlForge en cualquier URL — gratis, sin registro.

En esta página

Frequently Asked Questions

¿Qué es un análisis de brecha de palabras clave?+

Un análisis de brecha de palabras clave identifica términos de búsqueda donde existe demanda pero ningún competidor ocupa una posición defendible. La versión habitual compara qué keywords posicionan tus rivales y tú no. La versión más útil examina qué tipo de páginas ocupan el top ten: si son homes y páginas de producto de proveedores, el término está cerrado por mucho que diga su puntuación de dificultad, porque el contenido no desplaza la landing principal de una empresa. Si son directorios, hilos de foro y artículos de blogs ajenos, la posición comercial está sin reclamar y una sola página bien hecha puede quedársela.

¿Por qué el orden de search_web difiere de los rankings reales de Google?+

Porque search_web recupera resultados y luego los reordena usando pesos de BM25, similitud semántica, autoridad y frescura, y reporta esos pesos en el campo processing.ranking de cada respuesta. Ese reordenamiento lo hace mejor para investigar e inutilizable como medición de ranking. Cualquier herramienta de recuperación que reordene resultados se comporta igual. Para registrar una posición necesitas un endpoint que devuelva el valor de ranking orgánico del propio Google, que es lo que proporciona serp_rank. Tratar el orden de una API de búsqueda como ranking es la forma más común de que la investigación de keywords se vuelva ficción.

¿Cuántos credits cuesta un análisis de brecha de palabras clave?+

Tanto search_web como serp_rank cuestan 5 credits por llamada, así que un estudio de diez keywords con una búsqueda de descubrimiento y una comprobación de posición por término cuesta 100 credits en total. Eso es una décima parte de los 1.000 credits de un solo uso incluidos en el plan Free, que equivalen a unas 200 comprobaciones de posición antes de gastar nada. La clasificación opcional de contenido con analyze_content suma 3 credits por página, aunque para una SERP de diez resultados suele ser más rápido etiquetar los tipos de página a ojo que llamar a la API.

¿Por qué tardan tanto las consultas SERP en vivo?+

Porque el endpoint lanza una consulta real a Google en lugar de leer un índice cacheado, y mantiene la conexión abierta mientras lo hace. La latencia oscila mucho según la capacidad del proveedor: en nuestras mediciones la misma keyword devolvió en 11 segundos en una ejecución y en 28 en la siguiente, y una consulta tardó 41 segundos. Pon un timeout de cliente de al menos 60 segundos, ejecuta las consultas de forma secuencial en lugar de en paralelo y trata un estudio de varias keywords como un trabajo en segundo plano. Lanzar varias peticiones concurrentes produce timeouts, no velocidad.

¿Debería apuntar a keywords de mucho volumen o de poca competencia?+

Ninguno de los dos números responde la pregunta por sí solo, y por eso este método ignora ambos al principio. Mucho volumen con una SERP cerrada no vale nada: seis homes de proveedores ocupan "web scraping api", y ningún volumen hace eso ganable. Las puntuaciones de baja competencia también engañan a menudo, porque no ven la intención: "llm scraper" parece atractiva en todas las métricas mientras buena parte de sus resultados es gente intentando bloquear scrapers en vez de comprar uno. Juzga primero la composición del top ten y usa después las estimaciones de saturación para ordenar los términos que sobrevivan.

¿Puedo hacer este análisis sin un cliente MCP?+

Sí. Ambas tools están disponibles sobre HTTP, así que el mismo pipeline funciona desde curl, un trabajo programado o cualquier lenguaje con un cliente HTTP: autentícate con una cabecera X-API-Key o un token Authorization Bearer. Las formas de respuesta difieren ligeramente: el endpoint REST de serp_rank devuelve rank y all_positions donde la tool MCP devuelve position y allPositions, aunque ambas reportan la misma posición orgánica de Google por debajo. Las consultas fallidas devuelven un error y no se cobran, así que un timeout durante un estudio grande te cuesta tiempo, no credits.

Artículos relacionados

La brecha de keywords del web scraping: estudio SERP 2026
Web Scraping

La brecha de keywords del web scraping: estudio SERP 2026

Extrajimos posiciones orgánicas reales de Google para las keywords por las que compite este sector. Los términos heredados son una fortaleza comercial sellada. Los términos de la era MCP no tienen ningún defensor comercial.

C
CrawlForge Team
|
23 ago
|
10m
Cómo usar de verdad CrawlForge MCP en Claude Code
Tutorials

Cómo usar de verdad CrawlForge MCP en Claude Code

¿Instalaste CrawlForge pero Claude nunca lo llama? Los prompts, las reglas de permisos y la configuración de CLAUDE.md que hacen que las MCP tools se disparen de forma fiable en tu terminal.

C
CrawlForge Team
|
13 ago
|
12m
Web scraping con Claude: la guía completa (2026)
Tutorials

Web scraping con Claude: la guía completa (2026)

Web scraping con Claude en 2026: conecta CrawlForge MCP a Claude Desktop, Claude Code o la API y haz scraping de cualquier sitio -- sin código de scraping.

C
CrawlForge Team
|
9 jun
|
12m

Pie de página

CrawlForge MCP

Web scraping empresarial para agentes de IA. 28 herramientas MCP especializadas diseñadas para desarrolladores modernos que crean sistemas inteligentes.

Producto

  • Funciones
  • Playground
  • Precios
  • Casos de uso
  • Integraciones
  • Alternativas
  • Registro de cambios

Recursos

  • Primeros pasos
  • Referencia de la API
  • Plantillas
  • Guías
  • Blog
  • Glosario
  • Preguntas frecuentes
  • Mapa del sitio

Desarrolladores

  • Protocolo MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Empresa

  • Acerca de
  • Contacto
  • Privacidad
  • Términos
  • Uso aceptable
  • Cookies

Mantente al día

Recibe las últimas novedades sobre nuevas herramientas y funciones.

Creado con Next.js y el protocolo MCP

© 2025-2026 CrawlForge. Todos los derechos reservados.