Detectar canibalización de keywords con una sola query

· 5 min de lectura

Qué es la canibalización de keywords

La canibalización ocurre cuando un sitio web tiene dos o más URLs que compiten por la misma keyword en los resultados de Google. En lugar de que una página fuerte rankee bien, la autoridad se divide entre varias páginas y ninguna alcanza su potencial máximo.

Los síntomas típicos son: posiciones inestables (la keyword sube y baja frecuentemente), CTR bajo respecto a la posición, y cambios de URL en los resultados (Google alterna entre mostrar una página u otra para la misma keyword).

El impacto de la canibalización varía según el tipo de sitio. En un ecommerce con miles de páginas de producto, es habitual que categorías y subcategorías compitan por las mismas keywords genéricas. En un blog, la canibalización suele ocurrir cuando se publican múltiples artículos sobre temas similares sin una estructura de contenido clara. En ambos casos, el primer paso para resolver el problema es detectarlo con datos concretos.

Por qué las herramientas tradicionales no alcanzan

La interfaz de Google Search Console muestra las keywords de cada URL, pero no tiene un informe que cruce keywords con URLs para detectar canibalización. Las herramientas comerciales (Semrush, Ahrefs) ofrecen informes de canibalización, pero con datos de sus propios crawlers, no con datos reales de impresiones de Google.

Los datos de GSC exportados a BigQuery son los más fiables para este análisis porque reflejan exactamente cómo Google muestra las URLs para cada keyword.

La query

La query de canibalización del catálogo de Queryteca usa dos CTEs:

WITH keyword_urls AS (
  -- Paso 1: métricas por combinación keyword + URL
  SELECT
    query AS keyword, url,
    SUM(clicks) AS clics,
    SUM(impressions) AS impresiones,
    ROUND(SUM(sum_top_position + impressions) / SUM(impressions), 2) AS posicion_media
  FROM `your-project.searchconsole.searchdata_url_impression`
  WHERE data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY) AND CURRENT_DATE()
    AND search_type = 'WEB'
  GROUP BY keyword, url
  HAVING impresiones >= 10
),
keywords_canibalizadas AS (
  -- Paso 2: keywords con 2+ URLs
  SELECT keyword, COUNT(DISTINCT url) AS urls_compitiendo
  FROM keyword_urls
  GROUP BY keyword
  HAVING urls_compitiendo >= 2
)
-- Paso 3: detalle completo
SELECT ku.keyword, kc.urls_compitiendo, ku.url, ku.clics, ku.impresiones, ku.posicion_media
FROM keyword_urls ku
INNER JOIN keywords_canibalizadas kc ON ku.keyword = kc.keyword
ORDER BY kc.urls_compitiendo DESC, ku.keyword, ku.clics DESC

Cómo interpretar los resultados

El resultado muestra cada keyword canibalizada con todas las URLs que compiten por ella, ordenadas por número de clics. Para cada caso, las preguntas a responder son:

  • Hay una URL claramente dominante? Si una URL tiene el 80% de los clics y las demás tienen cifras marginales, la canibalización es leve. Puede bastar con ajustar el internal linking.
  • Las URLs se reparten los clics de forma similar? Esto indica canibalización activa. Google no tiene claro cuál mostrar y alterna entre ellas. Aquí conviene consolidar contenido.
  • Las posiciones medias son muy distintas? Si una URL rankea en posición 5 y otra en posición 25, la segunda probablemente no está causando daño real. Si ambas están entre 5 y 10, la competencia es directa.

Acciones según el tipo de canibalización

Contenido duplicado o muy similar

Si dos URLs cubren esencialmente el mismo tema, la solución suele ser consolidar: elegir la URL más fuerte, mover el contenido relevante de la otra a esta, y redirigir (301) la URL eliminada.

Contenido complementario

Si las URLs cubren aspectos distintos del mismo tema (ej: una guía general y un tutorial específico), la solución es diferenciar con internal linking claro y optimización de títulos y H1 para que cada página apunte a una variación distinta de la keyword.

Páginas de categoría vs páginas de contenido

Es común que una página de categoría y un artículo del blog compitan por la misma keyword. Aquí la decisión depende de la intención de búsqueda: si la keyword es informacional, el artículo debería rankear; si es transaccional, la categoría.

Monitoreo continuo

La canibalización no es un problema que se resuelve una vez. A medida que se publica nuevo contenido, pueden aparecer nuevos casos. Ejecutar esta query mensualmente permite detectar canibalización temprana, antes de que afecte significativamente al rendimiento. La query se puede programar como Scheduled Query en BigQuery para tener un reporte automático.

Para completar el análisis, conviene cruzar los datos de canibalización con los de keywords que convierten: la canibalización de una keyword de alto valor merece atención urgente; la de una keyword informacional de bajo impacto puede esperar.

Una variante avanzada de este análisis es comparar los datos de canibalización en dos periodos distintos (por ejemplo, los últimos 28 días frente a los 28 días anteriores). Si una keyword aparece como canibalizada en el periodo reciente pero no en el anterior, es probable que un contenido nuevo haya empezado a competir con uno existente. Detectar estos casos tempranamente, antes de que afecten las posiciones de forma significativa, permite tomar decisiones correctivas con rapidez: ajustar el enfoque del nuevo contenido, añadir canonical tags, o reforzar el internal linking hacia la URL que se desea posicionar.

¿Quieres practicar? Explora el catálogo de queries

Ver catálogo