Validar un sitemap
Un sitemap se supone que es el inventario confiable de un sitio, y sin embargo la mayoría acumula URLs muertas, marcas de tiempo desactualizadas y errores de formato que erosionan silenciosamente la confianza que un rastreador le tiene al resto del archivo. Este endpoint analiza el XML, prueba cada URL listada y reporta con precisión qué está mal y dónde.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué importa la confianza en el archivo
Un sitemap no obliga a un buscador a rastrear nada; es una propuesta, y los rastreadores ponderan qué tan confiable ha sido históricamente esa propuesta. Un archivo donde una parte significativa de las URLs devuelve errores 404, redirige a otro lado o apunta a páginas no canónicas le enseña al rastreador a tratar todo el archivo con más escepticismo, lo que puede retrasar el descubrimiento de las URLs nuevas y legítimas que están justo al lado de las rotas.
Qué se valida
La tarea empieza con una validación estructural contra el protocolo de sitemaps: XML bien formado, espacios de nombres correctos, y los límites de 50,000 URLs y 50MB sin comprimir por archivo que el formato mantiene desde 2005; luego pasa a verificaciones por URL, donde cada ubicación se consulta y se registra su estado, de modo que los 404, errores 5xx y redirecciones inesperadas aparecen individualmente y no como un conteo de fallos opaco. También revisa el campo lastmod en busca de una fecha bien formateada que no sea sospechosamente idéntica en miles de URLs sin relación, señal habitual de un campo autogenerado que nadie mantiene.
La conexión con hreflang
Los sitemaps pueden llevar anotaciones hreflang como alternativa a incluirlas en el encabezado HTML, y cuando lo hacen aplica la misma regla de reciprocidad: cada alternativa listada para una URL necesita una anotación de vuelta correspondiente en la entrada respectiva. Este endpoint comprueba eso directamente dentro de las propias entradas xhtml:link del sitemap, detectando una declaración hreflang ausente o de una sola dirección sin necesidad de rastrear las páginas por separado.
Un formato pensado para otra época
El protocolo de sitemaps se diseñó cuando los sitios eran más pequeños y las actualizaciones lo bastante poco frecuentes como para que un archivo mantenido a mano tuviera sentido; los sitemaps de hoy son casi todos autogenerados, y los errores que se cuelan son por eso sistémicos y no simples errores de tipeo aislados: un fallo de plantilla afecta a la vez a todas las URLs de un tipo determinado, exactamente el tipo de problema que una validación completa está diseñada para revelar rápido.
Mantenerlo limpio con el tiempo
Como los sitemaps se regeneran en cada cambio de contenido, validarlos una vez y asumir que se mantienen correctos es una estrategia perdedora; lo práctico es enviar la URL del sitemap tras cada despliegue o de forma periódica, recibir un task_id de inmediato, y obtener el informe por URL y por campo en el webhook al terminar el rastreo. A 0.002 dólares por solicitud, verificarlo con regularidad cuesta mucho menos que perder presupuesto de rastreo por un archivo lleno de enlaces muertos.
Qué puede hacer con ella
Verificación de salud posterior al despliegue
Validar el sitemap regenerado justo después de una publicación para detectar un fallo de plantilla que de pronto lista páginas borrador o eliminadas.
Barrido de URLs rotas
Pasar todo el sitemap por el validador cada trimestre para depurar los errores 404 y redirecciones acumulados antes de que erosionen la confianza del rastreador en el archivo.
Auditoría de precisión de lastmod
Comprobar si las fechas de lastmod realmente reflejan cambios de contenido o simplemente se marcan con la fecha actual en cada regeneración.
Verificación de hreflang en sitemap multilingüe
Confirmar que las alternativas hreflang declaradas dentro del sitemap son totalmente recíprocas en cada entrada de idioma, no solo salientes.
Preguntas frecuentes
¿Qué comprueba la API de validación de sitemap?
Valida la estructura XML y los límites de tamaño contra el protocolo de sitemaps, prueba el estado HTTP de cada URL listada, revisa el formato de lastmod y verifica que las anotaciones hreflang incluidas en el sitemap sean recíprocas.
¿Detecta enlaces rotos dentro del sitemap?
Sí, cada URL se consulta y se registra su código de respuesta, de modo que los 404, los errores del servidor y las cadenas de redirección inesperadas se reportan individualmente.
¿Verifica hreflang en sitemaps además de en HTML?
Sí, este endpoint comprueba el hreflang declarado mediante entradas xhtml:link directamente en el sitemap y confirma la reciprocidad entre las URLs emparejadas.
¿Hay un límite de tamaño de sitemap que pueda validar?
Valida contra los mismos límites que impone el propio protocolo de sitemaps, 50,000 URLs y 50MB sin comprimir por archivo, y marca un sitemap que los exceda.
¿Cuánto cuesta cada validación?
0.002 dólares por solicitud, cobrados solo cuando el rastreo se completa con éxito; los fallos se reintentan hasta tres veces antes de devolver un error sin costo.
¿Existe un plan gratuito?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cómo obtengo el informe de validación?
Por webhook firmado, recomendado para flujos automatizados, o mediante un enlace firmado válido por 24 horas.
¿Puedo validar un índice de sitemaps que referencia varios sitemaps hijos?
Sí, se envía la URL del índice y cada sitemap referenciado se consulta y valida a su vez.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/seo/sitemap-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/seo/sitemap-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/sitemap-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/sitemap-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/sitemap-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.sitemap_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |