Análisis de archivos de registro para SEO

Vadim Kravcenko
Vadim Kravcenko
· 17 min read

TL;DR: Google Search Console te dice lo que Google quiere que veas. Los registros del servidor te muestran lo que Googlebot hizo realmente. Descubrí que Googlebot estaba dedicando el 73% de su presupuesto de rastreo a URLs con parámetros que se nos habían olvidado. En GSC no aparecía nada raro. Te explico cómo configurar el análisis de archivos de log, qué debes mirar y por qué es la técnica de SEO técnico menos utilizada (y más infravalorada).

GSC se “equivoca” por omisión

Google Search Console es una herramienta fantástica. La uso a diario. Pero tiene un problema fundamental: solo muestra lo que Google ha decidido reportar.

Las estadísticas de rastreo de GSC te dan números agregados — solicitudes totales, tiempo de respuesta promedio, algunos códigos de estado. Lo que no te dice es qué URLs específicas golpeó Googlebot, en qué orden, cuánto tardó cada solicitud, si Googlebot volvió para un segundo pase y renderizar JavaScript, o qué secciones de tu sitio está ignorando por completo.

Ahí está el hueco. Y es enorme.

Los logs del servidor son la verdad sin filtros. Cada solicitud que Googlebot hace a tu servidor queda registrada con una marca de tiempo, la URL exacta, el código de estado, el tiempo de respuesta y la cadena de user agent. Sin resúmenes, sin muestreos y sin que Google decida qué necesitas saber. Datos en crudo.

Voy a ser honesto con algo: ignoré el análisis de archivos de log durante los primeros dos años gestionando SEOJuice. Me parecía algo que hacían los SEOs “enterprise” con contratos de Botify de seis cifras. Me equivoqué. En el momento en que empecé a analizar nuestros propios logs de Nginx, encontré problemas que GSC había estado ocultando durante meses. Desperdicio de presupuesto de rastreo en URLs con parámetros (facetas) que no tocábamos. Errores 5xx que solo ocurrían siguiendo patrones de rastreo de Googlebot. Posts nuevos que Googlebot no había visitado en tres semanas.

Con base en lo que he visto en cientos de sitios: en mi experiencia, casi cualquier sitio con más de 500 páginas tiene al menos un problema de rastreo importante que solo el análisis de logs puede revelar.

Qué contiene realmente un log del servidor

Example of a raw server access log file showing IP addresses, timestamps, and HTTP requests
Un archivo de log de acceso del servidor en formato Combined Log Format con IP, marca de tiempo, método HTTP, ruta de la URL, código de estado y user agent para cada solicitud. Fuente: Semrush Blog

Desglosemos eso:

CampoValorQué significa
Dirección IP66.249.79.45IP de Googlebot (el rango 66.249.x.x es Google)
Timestamp[15/Mar/2026:09:23:17 +0000]Hora exacta de la solicitud
RequestGET /blog/content-decay-guide/ HTTP/2.0Qué URL se rastreó
Código de estado200Respuesta del servidor (200 = OK)
Bytes enviados34521Tamaño de la respuesta en bytes
Referer-Desde dónde vino la solicitud (normalmente vacío para bots)
User AgentGooglebot/2.1Identifica el rastreador
Tiempo de respuesta0.142142 ms para servir la página

Los distintos servidores web usan formatos ligeramente diferentes. El “Combined Log Format” de Apache es casi idéntico al de Nginx. IIS usa un formato extendido W3C con campos separados por espacios y una línea de cabecera que define las columnas. Los datos son los mismos; cambia la disposición.

Los campos críticos para SEO son: user agent (para filtrar bots), URL (para ver qué se está rastreando), código de estado (para encontrar errores) y tiempo de respuesta (para detectar cuellos de botella de rendimiento).

User Agents que necesitas conocer

No todas las solicitudes de Googlebot usan el mismo rastreador. Google emplea user agents distintos según el objetivo, y saber diferenciarlos importa.

Cadena de User AgentQué hacePor qué importa
Googlebot/2.1Rastreador web principalEste es el rastreo base: tus páginas clave
Googlebot-Image/1.0Rastreador de imágenesRastrea imágenes para el índice de Google Imágenes
Googlebot-Video/1.0Rastreador de videoDescubre e indexa contenido de video
Googlebot-NewsRastreador de noticiasSolo relevante si estás en Google News
APIs-GoogleRecuperador AMP/APIObtiene páginas AMP y contenido especial
Chrome/W.X.Y.Z (con Googlebot)Bot de renderizadoEste es el grande. Cuando ves un Chrome UA junto a Googlebot, es el Web Rendering Service: Google ejecutando tu JavaScript

El bot de renderizado es especialmente importante. Cuando Googlebot rastrea por primera vez una página, obtiene el HTML en crudo. Si la página tiene JavaScript, Google pone en cola una segunda solicitud mediante su Web Rendering Service (WRS), que usa un navegador headless Chrome. Esa segunda solicitud aparece en tus logs con una cadena de user agent de Chrome.

Si ves el primer “golpe” de Googlebot, pero nunca el pase de renderizado con Chrome en una página con mucho JS, probablemente Google no está viendo todo tu contenido. Esto es invisible en GSC. Solo el análisis de logs lo revela.

Configura tus logs para análisis SEO

La mayoría de configuraciones por defecto de Nginx y Apache registran datos suficientes para un análisis básico. Pero “básico” no es suficiente. Necesitas el tiempo de respuesta, y la mayoría de defaults no lo incluyen.

Aquí tienes el formato de log de Nginx que uso. Añádelo en tu bloque http dentro de nginx.conf:

log_format seo_analysis '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent '
                        '"$http_referer" "$http_user_agent" '
                        '$request_time $upstream_response_time';

access_log /var/log/nginx/access.log seo_analysis;

Las dos incorporaciones que importan: $request_time (tiempo total desde la solicitud hasta la respuesta) y $upstream_response_time (cuánto tardó tu servidor de aplicaciones, excluyendo la sobrecarga de Nginx). La diferencia entre estos dos números te dice si el cuello de botella está en tu aplicación o en tu capa de proxy.

Para Apache, añade %D (tiempo de solicitud en microsegundos) a tu directiva LogFormat:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" seo_combined
CustomLog /var/log/apache2/access.log seo_combined

El problema del CDN

Aquí es donde se pone molesto. Si estás detrás de Cloudflare, Bunny CDN, Fastly o cualquier otro CDN, los logs de tu servidor de origen solo muestran las solicitudes que pasan la caché. Una página perfectamente cacheada podría ser rastreada por Googlebot 50 veces, y tu origen no vería ni una de esas solicitudes.

Necesitas logs a nivel CDN:

  • Cloudflare: El plan Enterprise incluye Logpush completo a S3, R2 o Datadog. Business y Pro obtienen logs muestreados vía el panel. Plan Free — estás sin suerte.
  • Bunny CDN: Logs en crudo disponibles en todos los planes. Descarga vía API o panel. Esta es una de las razones por las que me gusta Bunny.
  • Fastly: Streaming de logs en tiempo real hacia tu propio endpoint. Flexible, pero requiere configuración.
  • AWS CloudFront: Logs estándar y en tiempo real a S3. Fácil de habilitar.

Si tu CDN no ofrece logging a nivel bots en tu plan, puedes crear una regla para saltarte la caché para user agents de bots conocidos. Así fuerzas a que las solicitudes de bots lleguen a tu origen, donde puedes registrarlas. El intercambio es una carga ligeramente más alta en el origen durante los rastreos.

No estoy del todo seguro de que valga la pena ese intercambio para sitios pequeños. Si recibes 200 solicitudes de Googlebot por día, la carga extra en el origen al saltarte la caché es despreciable. Si recibes 200.000, piensa con cuidado en tu infraestructura antes de activar ese switch.

Rotación y almacenamiento de logs

Los logs se vuelven grandes rápido. Un sitio con 10.000 visitas diarias genera aproximadamente entre 2 y 5 MB de logs de acceso por día. En un año: entre 700 MB y 1.8 GB sin comprimir. Comprimidos con gzip, quizá 50-100 MB.

Para análisis SEO, necesitas como mínimo 90 días de logs. Idealmente 6 meses, para ver patrones de rastreo estacionales y correlacionarlos con actualizaciones del algoritmo. Configura logrotate (Linux) o un job cron para comprimir y archivar logs semanalmente. Elimina cualquier cosa anterior a 6 meses salvo que tengas una razón concreta para conservarla.

Parsear logs con Python: guía práctica

Quiero dedicar esto al fallecido Hamlet Batista, que pionereó el uso de Python para análisis de logs SEO y automatización. Hamlet falleció en 2020, pero su trabajo — especialmente su escritura sobre usar Python y notebooks de Jupyter para SEO técnico — cambió de forma fundamental cómo nuestra industria aborda los problemas con datos. Gran parte de lo que sigue se apoya en patrones que él enseñó a la comunidad SEO.

Aquí tienes un script básico en Python que filtra logs de Nginx para solicitudes de Googlebot y genera las métricas que de verdad importan para SEO. Es muy parecido a lo que ejecuté contra los logs propios de SEOJuice.com.

import re
import csv
from collections import Counter, defaultdict
from datetime import datetime

LOG_PATTERN = re.compile(
    r'(?P<ip>\S+) \S+ \S+ '
    r'\[(?P<timestamp>[^\]]+)\] '
    r'"(?P<method>\S+) (?P<url>\S+) \S+" '
    r'(?P<status>\d{3}) (?P<size>\d+) '
    r'"[^"]*" "(?P<ua>[^"]*)" '
    r'(?P<response_time>[\d.]+)?'
)

GOOGLEBOT_PATTERN = re.compile(r'Googlebot|Google-InspectionTool', re.IGNORECASE)

def parse_log(filepath):
    """Parse Nginx log, return only Googlebot requests."""
    results = []
    with open(filepath, 'r') as f:
        for line in f:
            match = LOG_PATTERN.match(line)
            if not match:
                continue
            if not GOOGLEBOT_PATTERN.search(match.group('ua')):
                continue
            results.append({
                'ip': match.group('ip'),
                'timestamp': match.group('timestamp'),
                'url': match.group('url'),
                'status': int(match.group('status')),
                'size': int(match.group('size')),
                'ua': match.group('ua'),
                'response_time': float(match.group('response_time') or 0),
            })
    return results

def analyze(requests):
    """Generate SEO-relevant metrics from Googlebot requests."""
    url_counts = Counter(r['url'] for r in requests)
    status_counts = Counter(r['status'] for r in requests)
    slow_urls = [
        (r['url'], r['response_time'])
        for r in requests if r['response_time'] > 1.0
    ]

    # Sección: distribución del rastreo
    section_counts = Counter()
    for r in requests:
        parts = r['url'].strip('/').split('/')
        section = parts[0] if parts and parts[0] else '(root)'
        section_counts[section] += 1

    print(f"Total Googlebot requests: {len(requests)}")
    print(f"\n--- Status Code Distribution ---")
    for code, count in status_counts.most_common():
        pct = (count / len(requests)) * 100
        print(f"  {code}: {count} ({pct:.1f}%)")

    print(f"\n--- Top 20 Most Crawled URLs ---")
    for url, count in url_counts.most_common(20):
        print(f"  {count:>5}x  {url}")

    print(f"\n--- Crawl Distribution by Section ---")
    total = len(requests)
    for section, count in section_counts.most_common(10):
        pct = (count / total) * 100
        print(f"  /{section}/: {count} ({pct:.1f}%)")

    print(f"\n--- Slow Responses (>1s) ---")
    for url, time in sorted(slow_urls, key=lambda x: -x[1])[:10]:
        print(f"  {time:.2f}s  {url}")

if __name__ == '__main__':
    requests = parse_log('/var/log/nginx/access.log')
    analyze(requests)

Son quizá 60 líneas de código. Me tomó 20 minutos escribirlo. Y el resultado me mostró de inmediato que Googlebot estaba martillando nuestra sección /tools/ (el 73% de todas las solicitudes de rastreo) mientras tocaba apenas posts nuevos del blog. Ahí estaba el porqué de que nuestro contenido nuevo no se indexara durante semanas.

Para sitios más grandes o monitoreo continuo, necesitas algo más robusto. El stack ELK (Elasticsearch, Logstash, Kibana) es el estándar en la industria para agregación de logs a gran escala. Logstash ingiere y parsea los logs, Elasticsearch los indexa para consultas rápidas y Kibana te da dashboards. Es potente, pero no es trivial de montar: reserva uno o dos días para la configuración inicial.

Las seis métricas que de verdad importan

Hits by Pages report showing crawl frequency distribution across website URLs
El informe Hits by Pages muestra cómo Googlebot distribuye su presupuesto de rastreo entre tus URLs, destacando las páginas que reciben una atención desproporcionada. Fuente: Semrush Blog

La sección /tools/ tenía docenas de combinaciones de parámetros (filtros, opciones de orden, paginación) que generaban miles de URLs rastreables. Googlebot las rastreaba todas, como quien va a por todas. Mientras tanto, nuestro blog — la sección que de verdad impulsa el tráfico orgánico — recibía solo el 11% de la atención de rastreo.

El arreglo fue una combinación de etiquetas canónicas, reglas robots.txt y noindex en variantes con parámetros. También reestructuramos el enlazado interno para reflejar mejor nuestros silos de contenido. En dos semanas, la frecuencia de rastreo del blog se duplicó. Los posts nuevos empezaron a indexarse en días en vez de semanas.

No puedes ver esto en GSC. GSC te da el total de solicitudes de rastreo. No lo desglosa por sección ni te muestra el problema de la distribución.

2. Distribución de códigos de estado

Agrega tus códigos de estado en todas las solicitudes de Googlebot. Así es como se ve una situación saludable:

  • 200 (OK): Debería ser 85-95% de todas las solicitudes
  • 301/302 (Redirecciones): Menos de 10%. Si es más alto, tienes cadenas de redirección o URLs antiguas que aún se están rastreando
  • 304 (No modificado): Normal; significa que Googlebot comprobó y la página no cambió
  • 404 (No encontrado): Menos de 5%. Si es más alto, estás desperdiciando presupuesto de rastreo en páginas muertas
  • 500/503 (Errores del servidor): Casi cero. Cualquier pico aquí es una emergencia

Una vez vi un sitio donde el 22% de las solicitudes de Googlebot devolvían 404. El desarrollador anterior había eliminado una categoría de producto sin redirigir. Googlebot tenía esas URLs en su cola de rastreo y seguía reintentándolas. Veintidós por ciento del presupuesto de rastreo, quemado en páginas que no existían. Durante ocho meses.

3. Tiempo de respuesta por URL

Google ha dicho repetidamente que la velocidad de página es un factor de ranking. Pero Core Web Vitals (que es lo que reporta GSC) mide rendimiento del lado del cliente. El tiempo de respuesta del servidor — cuánto tarda tu servidor en generar y enviar el HTML — es otra cosa, y solo aparece en los logs.

Lo que buscas: cualquier URL donde el tiempo de respuesta supere 500 ms de forma consistente. Por encima de 1 segundo es un problema. Por encima de 2 segundos, Googlebot puede abandonar la solicitud por completo.

Ordena las solicitudes de Googlebot por tiempo de respuesta, de mayor a menor. Las URLs más lentas suelen caer en unas pocas categorías: páginas pesadas en base de datos (listados de productos con filtros complejos), páginas que hacen llamadas a APIs externas durante el renderizado o páginas que generan respuestas grandes (sitemaps, feeds).

4. Patrones de profundidad de rastreo

¿Cuántos clics desde la home necesita Googlebot para llegar a una página? Esto no está directamente en los datos del log, pero puedes inferirlo revisando marcas de tiempo y patrones de referer.

Si Googlebot llega a tu home a las 09:00, tus páginas de categorías principales a las 09:01 y una página de producto profunda a las 09:14 — esa brecha de 14 minutos sugiere que la página está muy anidada. Las páginas que Googlebot descubre tarde en una sesión reciben menos atención.

Un enfoque más simple: compara el conjunto de URLs que Googlebot rastreó contra tu sitemap completo. Cualquier URL del sitemap que Googlebot no ha visitado en 30+ días, a efectos prácticos, está “huérfana” desde la perspectiva de Google, independientemente de lo que diga tu enlazado interno.

5. Proporción entre tráfico de bots y de humanos

Esto es una métrica de seguridad y rendimiento tanto como de SEO. Filtra tus logs por user agent y calcula qué porcentaje de las solicitudes totales proviene de bots frente a usuarios reales.

En la mayoría de sitios, los bots representan 30-50% de todas las solicitudes. Si los bots son 80%+ , probablemente estés siendo “scrapeado” o recibiendo malos bots que desperdician recursos del servidor. Si Googlebot específicamente representa menos de 5% de tu tráfico de bots, es probable que algo más esté consumiendo tu capacidad de servidor y potencialmente ralentizando la capacidad de Google para rastrearte.

6. Páginas huérfanas — lo que Googlebot nunca visita

Esto podría ser el análisis más valioso que puedes hacer. Toma la lista de URLs de tu sitemap o de tu CMS. Compárala con la lista de URLs que Googlebot ha visitado en los últimos 90 días. Cualquier URL que Googlebot no toque es, funcionalmente, invisible.

Causas comunes: la página no tiene enlaces internos hacia ella (una página huérfana real), la página está demasiado profunda en la arquitectura del sitio o la página está bloqueada por una regla de robots.txt que se te pasó.

No entiendo de verdad por qué más SEOs no hacen este análisis de forma rutinaria. Son 10 minutos con el script de Python de arriba y una lista de tus URLs. Cada vez que lo he ejecutado para un cliente, hemos encontrado páginas que supuestamente eran importantes pero que no se rastreaban desde hacía meses.

Patrones reales que deberían ponerte en alerta

La teoría es bonita. Estos son los problemas reales que he encontrado con análisis de logs en sitios reales y que, de otro modo, habrían pasado desapercibidos.

El “engaño” del URL con parámetros

Ya mencioné nuestra experiencia. Pero vale la pena recalcarlo: la navegación facetada, los parámetros de búsqueda, los órdenes y la paginación generan una cantidad exponencial de URLs rastreables. Un catálogo de productos con 500 productos, 8 categorías de filtro y 3 opciones de orden puede generar decenas de miles de URLs. Googlebot intentará rastrearlas todas.

Según la investigación publicada por Botify sobre presupuesto de rastreo (2023), en sitios grandes de e-commerce, hasta 80% del presupuesto de rastreo de Googlebot puede consumirse en URLs con parámetros que devuelven contenido casi idéntico — aunque la cifra exacta varía bastante según el tipo de sitio y la arquitectura. Su CTO, Adrien Menard, ha escrito extensamente sobre esto: el problema de presupuesto de rastreo en sitios grandes no es lograr que Google rastree más; es evitar que Google desperdicie rastreos en URLs de bajo valor.

El problema silencioso de los 5xx

Un cliente tenía errores 503 intermitentes que solo aparecían durante “picos” de rastreo de Googlebot. Su monitoreo (Pingdom, UptimeRobot) mostraba 99.9% de disponibilidad porque esas herramientas revisan una vez por minuto desde una única ubicación. Googlebot golpea entre 10 y 50 páginas en rápida sucesión. Su servidor no podía manejar el pico, lanzó 503s en torno al 15% de las solicitudes de Googlebot y se recuperó en cuestión de segundos.

Las estadísticas de rastreo de GSC mostraban una tasa de error ligeramente más alta. Los logs contaban toda la historia: cada día entre las 2:00 y las 3:00 (UTC), cuando Googlebot tiende a golpear ese sitio, el servidor fallaba bajo carga. Arreglarlo requirió ajustar los conteos de workers de PHP-FPM y el pooling de conexiones a la base de datos. Coste total: dos horas de trabajo de DevOps. Las mejoras en ranking aparecieron en tres semanas.

Contenido nuevo que nadie notaba

Publicamos una guía detallada. Tres semanas después, seguía sin indexarse. En GSC, la URL figuraba como “Descubierta — actualmente no indexada”. Qué útil.

Los logs contaban la historia real: Googlebot nunca había solicitado esa URL. Ni una vez. La página estaba enlazada desde un archivo/tag de la que a su vez solo se habían hecho dos rastreos en 60 días. Googlebot simplemente aún no había seguido el enlace.

El arreglo fue añadir un enlace interno desde una página frecuentemente rastreada (el sidebar de nuestra home). Googlebot golpeó la página nueva en menos de 48 horas. Indexada en una semana. Este es exactamente el tipo de problema que un checklist SEO posterior al lanzamiento debería detectar antes de que se convierta en un problema.

Desperdicio del presupuesto de renderizado

Un cliente SaaS tenía un sitio de marketing construido en Next.js. SSR estaba habilitado — bien. Pero los logs mostraron algo raro: el bot de renderizado con Chrome de Googlebot hacía un segundo pase en absolutamente todas las páginas, incluso en páginas estáticas sencillas que no tenían contenido dinámico del lado del cliente.

El problema era un script de analítica del lado del cliente que modificaba el DOM después de que la página cargaba. Googlebot veía el HTML inicial, luego regresaba para renderizar JS y detectaba contenido diferente (los elementos inyectados por la analítica). Así que seguía re-renderizando para asegurarse de tener la versión final. Estaba consumiendo presupuesto de renderizado en páginas que no lo necesitaban.

El arreglo: mover el script de analítica para cargarlo después del evento DOMContentLoaded con el atributo defer, y asegurarte de que no modifique elementos visibles del DOM. Las solicitudes de renderizado cayeron 60%.

Herramientas para análisis de archivos de log

Semrush Log File Analyzer showing Googlebot activity chart with HTTP status code breakdown
El Log File Analyzer de Semrush muestra la actividad de rastreo de Googlebot durante 30 días con códigos de estado HTTP coloreados para identificar errores rápidamente. Fuente: Semrush Blog

Botify — Nivel enterprise. Ingiere logs a escala, los correlaciona con datos de rastreo y Search Console, y construye dashboards automáticamente. Si gestionas un sitio con millones de páginas, probablemente valga la inversión. Para sitios con menos de 100k páginas, es exagerado. El precio estaba en el rango de cientos por mes cuando lo miré por última vez (a mediados de 2025), aunque la tarifa exacta no es clara y me deja sentimientos encontrados.

JetOctopus — Un punto intermedio sólido. Análisis de logs en la nube con buena visualización. Maneja archivos grandes, se integra con GSC y cuesta bastante menos que Botify. Se lo he recomendado a agencias que gestionan varios sitios medianos.

Python + ELK a medida — Si eres técnico y quieres control total, el script de arriba es un punto de partida. Para monitoreo continuo, canaliza tus logs hacia el stack ELK (Elasticsearch, Logstash, Kibana). Logstash parsea los logs con patrones grok, Elasticsearch los almacena e indexa y Kibana te da dashboards en tiempo real. La configuración toma un día. El coste continuo es solo el servidor: quizá $20-$50 al mes en un VPS pequeño.

GoAccess — Un analizador ligero de logs basado en terminal que genera reportes HTML. No es específico de SEO, pero es sorprendentemente útil para una visión rápida de la actividad de bots y la distribución de códigos de estado. Gratis, rápido, funciona en cualquier servidor. Ideal para el caso de uso “quiero comprobar algo rápido”.

Lo que aprendí al analizar los logs propios de SEOJuice.com

Momento de transparencia. Esto fue lo que encontré cuando ejecuté por primera vez un análisis serio de logs en nuestro propio sitio a finales de 2025.

Hallazgo 1: desperdicio de presupuesto en páginas de herramientas. Nuestras herramientas SEO gratuitas (auditoría de sitio, checker de autoridad de dominio, extractor de keywords, etc.) generan URLs únicas por cada análisis. Cada resultado de herramienta tenía su propia URL. Googlebot las rastreaba en miles. Eran, en su mayoría, páginas superficiales y efímeras que no necesitaban estar en el índice. Añadimos noindex a las páginas de resultados de las herramientas y vimos aumentar la tasa de rastreo del blog en dos semanas.

Hallazgo 2: páginas lentas que dependen de una API. Nuestra página de precios hacía una llamada en tiempo real a la API de Paddle para traer precios actuales. Tiempo de respuesta mediano: 1.8 segundos. Googlebot estaba esperando eso. Cambiamos a cachear los datos de precios con un TTL de 1 hora. El tiempo de respuesta bajó a 90 ms.

Hallazgo 3: cadenas de redirección 301. Después de una reestructuración de URLs, teníamos cadenas como /old-url/medium-url/final-url. El 12% de las solicitudes de Googlebot seguían redirecciones. Cada salto es una solicitud desperdiciada. Simplificamos todas las cadenas a redirecciones de un solo salto en nuestra configuración de Nginx.

Hallazgo 4: rastreo de CSS y JS. Esto me sorprendió. Aproximadamente el 30% de las solicitudes de Googlebot eran para assets estáticos: archivos CSS, bundles de JavaScript y fuentes. Son necesarios para renderizar, pero significaba que solo el 70% de nuestro presupuesto de rastreo iba a páginas de contenido reales. No podíamos eliminarlo (Google necesita esos archivos para renderizar), pero cambió cómo pensamos sobre nuestro presupuesto total de rastreo.

Resultado neto: tras abordar los hallazgos 1-3, el contenido del blog se indexaba 3-4 veces más rápido. Los posts nuevos pasaron de “descubiertos pero no indexados en 2-3 semanas” a “indexados en 3-5 días”. Todo gracias a insights del análisis de logs que GSC nunca mostró.

Cómo ayuda la analítica del crawler de SEOJuice

Construí la función de analítica del crawler en SEOJuice específicamente porque estaba cansado de parsear logs en crudo. Te ofrece los mismos insights sin el trabajo de línea de comandos.

La analítica del crawler de SEOJuice monitorea la actividad de Googlebot en tu sitio y te muestra:

  • Frecuencia de rastreo por página y sección: ver exactamente dónde Google está gastando su presupuesto de rastreo
  • Distribución de códigos de estado a lo largo del tiempo: detectar picos de errores antes de que afecten al ranking
  • Tendencias de tiempo de respuesta: identificar páginas que están ralentizando a Googlebot
  • Páginas no rastreadas: páginas en tu sitemap que Googlebot no ha visitado
  • Actividad de renderizado: qué páginas disparan un segundo pase por el WRS de Google

No reemplaza el análisis de logs en crudo para cada caso de uso. Si necesitas depurar una configuración específica de Nginx o investigar el comportamiento de bots a nivel IP, sigues necesitando los logs en crudo. Pero para el 90% de los casos en los que solo quieres saber “¿Googlebot está rastreando lo correcto?” — es muchísimo más rápido que escribir scripts en Python.

Prueba SEOJuice gratis y conecta tu sitio para ver la analítica del crawler en acción. No hace falta tarjeta de crédito.

Un proceso simple de auditoría mensual de logs

No necesitas mirar los logs todos los días. Este es el routine mensual que sigo:

  1. Descarga o consulta los últimos 30 días de logs (o revisa el panel de tu herramienta de análisis).
  2. Revisa la distribución de códigos de estado. ¿Aumentaron 4xx o 5xx? Investiga de inmediato.
  3. Compara la distribución de rastreo contra la distribución de contenido. ¿Google está rastreando las secciones que te importan, de forma proporcional?
  4. Encuentra URLs no rastreadas. Cruza tu sitemap con las URLs rastreadas. Cualquier cosa no rastreada durante 30+ días recibe un enlace interno desde una página de alto rastreo.
  5. Revisa los tiempos de respuesta. ¿Aparecen páginas nuevas en el rango de >1s? Arregla antes de que se vuelvan problemas de ranking.
  6. Mira las solicitudes de renderizado. Si aumentan sin nuevas páginas con mucho JS, algo cambió en tu código de frontend.

Tiempo total: 30-45 minutos. El ROI es desproporcionado.

Preguntas frecuentes

¿Qué tan grande necesita ser mi sitio para que el análisis de logs tenga sentido?

No lo he probado de forma exhaustiva en cada nicho, pero no hay un mínimo duro: el beneficio escala con el tamaño del sitio. Con menos de 100 páginas, Googlebot rastreará todo sin importar, y es poco probable que tengas problemas de presupuesto de rastreo. Entre 500 y 5,000 páginas es donde empieza a volverse valioso. Por encima de 10,000 páginas, es esencial: el desperdicio de presupuesto de rastreo casi está garantizado en sitios de ese tamaño. Dicho esto, incluso un sitio de 200 páginas puede beneficiarse si estás viendo retrasos de indexación o caídas de ranking misteriosas.

¿Puedo verificar que una solicitud proviene realmente de Googlebot y no es falsa?

Sí. Google publica sus rangos IP y puedes hacer una consulta inversa de DNS (reverse DNS) en la IP que solicita. Las IP legítimas de Googlebot resuelven a *.googlebot.com o *.google.com. En Python: import socket; socket.gethostbyaddr('66.249.79.45'). Cualquier IP que no resuelva a un dominio de Google es un Googlebot falso, probablemente un scraper usando la cadena de user agent de Googlebot. La documentación oficial de Google recomienda este método de verificación.

¿Con qué frecuencia rastrea Googlebot un sitio típico?

Varía enormemente. Un sitio de noticias con alta autoridad puede ver miles de solicitudes de Googlebot por hora. Un sitio pequeño de negocio puede ver entre 50 y 200 al día. La frecuencia depende de la importancia percibida de tu sitio, de cuánto cambia tu contenido, de la velocidad de respuesta de tu servidor y de la frescura de tu sitemap XML. Según un análisis de frecuencia de rastreo de JetOctopus en 2024 sobre su base de clientes, la frecuencia mediana de rastreo para un sitio de 5,000 páginas es de aproximadamente 300-800 solicitudes de Googlebot por día.

¿Debería bloquear malos bots en mis logs?

Bloquea malos bots a nivel servidor (reglas Nginx deny o fail2ban), no solo en robots.txt. robots.txt es una sugerencia: los bots maliciosos lo ignoran. Pero ojo: no bloquees accidentalmente rastreadores legítimos. He visto sitios que bloquearon todos los bots que contenían “bot” en la cadena user agent y eso incluía a Googlebot. Antes de aplicar reglas amplias de bloqueo, crea una lista blanca (whitelist) para Google, Bing y cualquier otro motor de búsqueda que te interese.

¿Cuál es la relación entre el análisis de logs y el presupuesto de rastreo?

El análisis de logs es cómo mides el presupuesto de rastreo. Google define el presupuesto de rastreo como la combinación del límite de tasa de rastreo (qué tan rápido puede rastrear Google sin saturar tu servidor) y la demanda de rastreo (cuánto quiere rastrear Google según el valor percibido). No puedes controlar directamente ninguno de los dos, pero sí puedes influir: tiempos de respuesta más rápidos aumentan el límite de tasa de rastreo, y eliminar páginas de bajo valor de la cola de rastreo de Google aumenta la proporción del presupuesto dedicada a páginas que importan. Los logs te muestran ambos lados de esta ecuación.


El análisis de logs no es glamuroso. Es grep y regex, y pasar archivos de texto por scripts. No hay dashboards bonitos (a menos que los construyas). Pero es lo más cerca que tendrás de ver tu sitio a través de los ojos de Google. GSC te da un resumen curado. Los logs muestran la verdad en crudo.

Si estás gestionando un sitio con más de un par de cientos de páginas y nunca has mirado tus logs del servidor, tienes problemas de rastreo que ni siquiera sabes que existen. Apuesto dinero a que sí.

Lecturas adicionales en el silo de SEO Técnico:

SEOJuice
Stay visible everywhere
Get discovered across Google and AI platforms with research-based optimizations.
Works with any CMS
Automated Internal Links
On-Page SEO Optimizations
Get Started Free

no credit card required

More articles

No related articles found.