Cómo eliminar redirecciones del Sitemap y mejorar el Crawl Budget

SEO, Wordpress

Te enseño como mejorar el Crawl Budget de tu proyecto eliminando las redirecciones del Sitemap.

  • Tiempo de implementación: 10 min
  • Nivel de dificultad: Fácil

Si quieres saltarte las explicaciones previas e ir a la solución rápida haz clic aquí:

Qué es el Crawl Budget y por qué hay que optimizarlo para mejorar el SEO

El “Crawl Budget” (Presupuesto de Rastreo) se refiere a la cantidad de recursos que los motores de búsqueda, como Google, están dispuestos a gastar para rastrear e indexar el contenido de un sitio web. Este concepto es especialmente relevante para sitios web grandes o de crecimiento rápido, ya que un buen manejo del Crawl Budget puede ayudar a que las páginas nuevas o actualizadas sean indexadas más rápidamente.

El Crawl Budget se ve influenciado por diversos factores, entre los que destacan el Crawl Rate Limit (Límite de Tasa de Rastreo), que se refiere a la cantidad máxima de rastreo que los motores de búsqueda realizarán en un sitio web sin afectar negativamente la experiencia del usuario en el sitio. Además, la Crawl Demand (Demanda de Rastreo) juega un papel crucial; si un sitio es popular y se actualiza con frecuencia, es probable que los motores de búsqueda lo rastreen más a menudo. Por último, la Crawl Health (Salud del Rastreo) también es determinante, ya que los sitios que responden rápidamente y tienen menos errores serán rastreados de manera más eficiente por los motores de búsqueda.

La optimización del Crawl Budget es esencial por múltiples razones: facilita una indexación más rápida de las páginas nuevas o actualizadas en los motores de búsqueda, maximiza la eficiencia en el uso de los recursos de rastreo, lo cual es crucial para sitios grandes con miles o millones de páginas, y contribuye a mejorar la visibilidad de un sitio en los resultados de búsqueda, potenciando así su SEO.

Uno de los trabajos de un buen SEO consiste en optimizar este Presupuesto de Rastreo.

Las redirecciones empeoran el Crawl Budget

Las redirecciones pueden afectar negativamente el Crawl Budget por varias razones:

  1. Tiempo Extra de Procesamiento:
    • Cuando un motor de búsqueda encuentra una redirección, necesita seguir esa redirección para llegar al contenido actualizado. Esto implica un tiempo adicional de procesamiento que de otra manera no sería necesario si se accediera directamente a la página final.
  2. Cadenas de Redirecciones:
    • A veces, puede haber múltiples redirecciones en una cadena (por ejemplo, la página A redirige a la página B, que a su vez redirige a la página C). Las cadenas de redirecciones son especialmente problemáticas ya que consumen más tiempo y recursos del motor de búsqueda. Esto puede agotar rápidamente el Crawl Budget, especialmente en sitios web grandes.
  3. Descubrimiento e Indexación Retardada:
    • Todo esto puede hacer que el Buscador tarde más tiempo en descubrir e indexar contenido nuevo o actualizado. Esto puede afectar la visibilidad y el ranking de las páginas en los resultados de búsqueda.
  4. Errores de Redirección:
    • Las redirecciones incorrectas o mal configuradas también pueden resultar en errores, como bucles de redirección, que pueden detener el proceso de rastreo.

Es aconsejable minimizar el número de redirecciones, asegurar que estén configuradas correctamente, y evitar cadenas de redirecciones largas.

El gran daño que hacen las redirecciones en el Sitemap al Presupuesto de Rastreo

Incluir páginas redirigidas en el Sitemap puede perjudicar el Crawl Budget, y es una práctica totalmente no recomendada en SEO. Cuando aparecen redirecciones en el sitemap, estamos haciendo que el rastreador, una y otra vez, desperdicie recursos que podrían ser usados para indexar otras págians. Esto provocará un retraso en la indexación del contenido nuevo o actualizado debido a la adición de pasos extra en el proceso de rastreo.

Ten en cuenta también, que un Sitemap lleno de redirecciones puede dar una impresión de desactualización o mal mantenimiento del sitio, lo cual podría ser tomado como una señal negativa por los motores de búsqueda.

Para remediar esto y optimizar el Crawl Budget, es vital mantener el Sitemap actualizado, eliminando las URLs redirigidas y asegurando que solo las URLs finales y relevantes estén incluidas.

Qué es lo que hace que aparezcan redirecciones en el Sitemap

Comento el caso más habitual, que es aquel en el que nuestro WordPress tiene instalado un plugin SEO del tipo Yoast SEO o Rankmath, estos plugins generan automáticamente el sitemap a partir de las páginas, entradas, categorías, etiquetas y usuarios que tengamos en el CMS. Con frecuencia sucede que al crear redirigir una página/entrada/categoría hacia otro sitio no se borra esa página/entrada/categoría obsoleta, y por lo tanto sigue siendo insertada en el sitemap, provocando lo que comentaba en el punto anterior.

Cómo eliminar las redirecciones del Sitemap

  1. Lo primero es utilizar una herramienta como Screaming Frog para analizar las URLs del sitemap y detectar las redirecciones. También se puede hacer con Ahrefs/Sixtrix/Semrush, haciendo uso de su función de Auditoría. El problema es que todas estas herramientas son de pago. Por eso he implementado una solución gratuita que puedas usar y que te explico en el siguiente punto.
  2. Una vez obtenida la lista de Redirecciones del sitemap, hay que encontrar las páginas/entradas/categorías en WordPress y pasarlas a Borrador o eliminarlas, para que no aparezcan más. Para hacer esto he desarrollado este plugin gratuito: WP Permalink Search Plugin. Descárgalo, instálalo, y con y sigue las instrucciones de esa entrada para localizar y eliminar estas Páginas/Entradas/Categorías.

Script para detectar Redirecciones en el Sitemap

Este script de Python tomará una URL de un sitio o una URL de un sitemap directamente, luego buscará y analizará el/los sitemap(s) listado(s) en el archivo robots.txt del sitio para encontrar URLs redirigidas. El script preguntará si también se quieren analizar las URLs de imágenes. Durante toda la ejecución se informará de las URLs procesadas, y al terminar generará 3 archivos, uno con las URLs procesadas, otro con las omitidas, y otro con las que tienen redirección. ¡Increíble! ¿verdad? Y 100% gratis.

# -------------------------------------------------------------
# Autor: Daniel Pajuelo
# Web: https://danielpajuelo.com
# Versión: 1.0
# -------------------------------------------------------------

import requests
from bs4 import BeautifulSoup
import os
import argparse
import time

procesadas = set()
redirecciones = set()
omitidas = set()

def request(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
    }
    return requests.get(url, headers=headers)

def find_sitemaps(url):
    print(f'Buscando sitemaps en {url}')
    robots_txt_url = url.rstrip('/') + '/robots.txt'
    response = request(robots_txt_url)
    sitemaps = []
    if response.status_code == 200:
        lines = response.text.strip().split('\n')
        for line in lines:
            if line.lower().startswith('sitemap:'):
                sitemap_url = line.split(':', 1)[1].strip()
                sitemaps.append(sitemap_url)
    else:
        print(f'No se pudo acceder a {robots_txt_url}, código de estado {response.status_code}')
    return sitemaps

def check_redirects(url):
    print(f'Chequeando URL: {url}')  
    procesadas.add(url)
    response = requests.head(url, headers={'User-Agent': 'Mozilla/5.0'}, allow_redirects=False)
    if response.status_code in (301, 302):
        print(f'URL de redirección encontrada: {url}')
        redirecciones.add(url)
    return None

def process_url(url, args):
    parsed_url = urlparse(url)
    if parsed_url.query:
        print(f'Omitiendo URL con parámetros: {url}')
        omitidas.add(url)
        return
    if url.endswith(('.jpg', '.jpeg', '.png', '.gif', '.svg', '.bmp', '.tiff', '.webp')) and not args.img:
        print(f'Omitiendo URL de imagen: {url}')
        omitidas.add(url)
    else:
        check_redirects(url)

def process_sitemap(url, args):
    print(f'Procesando sitemap {url}')
    sitemaps = [url]
    while sitemaps:
        sitemap_url = sitemaps.pop()
        if not sitemap_url:
            print(f'URL vacía, omitiendo...')
            continue
        response = request(sitemap_url)
        if response.status_code == 200:
            soup = BeautifulSoup(response.content, 'xml')
            smaps = [loc.text.split('\n')[0] for loc in soup.find_all('sitemap') if loc.text.strip()]
            urls = [loc.text.split('\n')[0] for loc in soup.find_all('loc') if loc.text.strip()]
            sitemaps.extend(smaps)
            for url in urls:
                if url.endswith('.xml'):
                    sitemaps.append(url)
                else:
                    process_url(url, args)
        else:
            print(f'No se pudo acceder a {sitemap_url}, código de estado {response.status_code}')

def main():
    inicio = time.time()
    parser = argparse.ArgumentParser(description='Encuentra redirecciones en un sitio web o sitemap.')
    parser.add_argument('url', help='La URL del sitio web o la URL del sitemap.')
    args = parser.parse_args()
    
    user_input = input("¿Quieres incluir URLs de imágenes en el análisis? (y/n): ").lower()
    args.img = user_input == 'y'
    
    url = args.url
    sitemaps = find_sitemaps(url)
    if not sitemaps:
        sitemaps.append(url)

    for sitemap_url in sitemaps:
        process_sitemap(sitemap_url, args)
    
    nombre_base = url.replace('https://', '').replace('http://', '').replace('/', '_')
    
    if procesadas:
        with open(f'{nombre_base}_URLs_Procesadas.txt', 'w') as f:
            for procesada in procesadas:
                f.write(procesada + '\n')
        print(f"Listado de URLs procesadas guardado en {os.path.abspath(f'{nombre_base}_URLs_Procesadas.txt')}")
    
    if redirecciones:
        with open(f'{nombre_base}_URLs_con_redireccion.txt', 'w') as f:
            for redireccion in redirecciones:
                f.write(redireccion + '\n')
        print(f"Listado de redirecciones guardado en {os.path.abspath(f'{nombre_base}_URLs_con_redireccion.txt')}")
    
    if omitidas:
        with open(f'{nombre_base}_URLs_Omitidas.txt', 'w') as f:
            for omitida in omitidas:
                f.write(omitida + '\n')
        print(f"Listado de URLs omitidas guardado en {os.path.abspath(f'{nombre_base}_URLs_Omitidas.txt')}")
    
    else:
        print("No se encontraron redirecciones ni URLs omitidas.")
    
    fin = time.time()
    print(f'Tiempo de ejecución: {fin - inicio:.2f} segundos')
    print(f'Total de URLs procesadas: {len(procesadas)}')
    print(f'Total de URLs con redirecciones: {len(redirecciones)}')
    print(f'Total de URLs omitidas: {len(omitidas)}')

if __name__ == '__main__':
    main()

Ejemplo de uso del script

Revisar un sitio web para encontrar redirecciones desde su robots.txt. Reemplaza ‘https://yourwebsite.com’ con la URL del sitio web que deseas revisar:

python script.py https://yourwebsite.com

Esta ejecución buscará los sitemaps mencionados en el robots.txt del sitio web proporcionado, verificará las redirecciones y generará tres archivos, uno con todas las URLs procesadas, otro con las URLs redirigidas encontradas y otro con las URLs omitidas. Si el sitemap contiene otros sitemaps agregados navegará por todos ellos. También verificará las URLs de imágenes si las hubiera en el sitemap.

Continua leyendo

google crawl js

Cómo Google indexa contenido JS en 2024

El último estudio de MERJ y Vercel revela cómo Google maneja la renderización e indexación de JavaScript en 2024, desmintiendo mitos comunes sobre el SEO para sitios pesados en JS. En este artículo explico las implicaciones qie todo esto tiene para el SEO, ofreciendo algunas recomendaciones clave para optimizar sitios web que utilizan frameworks como React y Next.js.

Qué es la Canibalización SEO: Cómo detectar y solucionar

La canibalización SEO ocurre cuando varias páginas de un mismo dominio compiten por las mismas palabras clave, afectando negativamente al SEO. Te explico cómo detectar y solucionar las canibalizaciones.

Bloquear la indexación de ficheros PDF: ¡Mejora el SEO!

Te explico en 2 minutos como prevenir que los motores de búsqueda indexen los ficheros PDF de tu sitio web, y así evitar canibalizaciones SEO.