¿Qué es sitemap.xml?
El sitemap.xml es un archivo XML que lista las URLs canónicas de un sitio web para indicar a los motores de búsqueda qué páginas existen, cuándo se modificaron y, opcionalmente, con qué frecuencia cambian y qué prioridad relativa tienen. Es un estándar abierto publicado en 2006 por Google, Bing, Yahoo y Microsoft en sitemaps.org.
Estructura mínima
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://smedialab.es/</loc>
<lastmod>2026-04-21T10:30:00+00:00</lastmod>
</url>
<url>
<loc>https://smedialab.es/servicios/seo/</loc>
<lastmod>2026-04-15T14:22:00+00:00</lastmod>
</url>
</urlset>
Etiquetas válidas
<loc>(obligatoria): URL canónica absoluta con esquema HTTPS y trailing slash coherente.<lastmod>(recomendada): fecha de última modificación en formato ISO 8601. Ver lastmod.<changefreq>(opcional, ignorada por Google desde 2023): always, hourly, daily, weekly, monthly, yearly, never.<priority>(opcional, ignorada por Google): 0.0 a 1.0.
Límites técnicos
- Máximo 50 MB por archivo sin comprimir, o 50.000 URLs, lo que primero ocurra.
- Para sitios mayores: dividir en varios sitemaps y crear un sitemap index que los enlace.
- Se permite gzip:
sitemap.xml.gz. - Codificación obligatoria: UTF-8.
Cómo lo descubre Google
Tres formas, en orden de fiabilidad:
- Declarar en
robots.txt:Sitemap: https://smedialab.es/sitemap.xml(recomendado, descubrimiento automático por todos los crawlers). - Subir a Google Search Console > Sitemaps. Permite ver estado de cobertura por sitemap.
- Ping HTTP a
https://www.google.com/ping?sitemap=...(deprecado en 2023).
Buenas prácticas
- Solo URLs canónicas: no incluir parámetros UTM, paginaciones, filtros.
- Solo URLs indexables: no incluir
noindex,nofollow, redirecciones 3xx, errores 4xx/5xx. <lastmod>real, no fecha de build: si todas las URLs tienen la misma fecha (la del último deploy), Google ignora el dato. Lo correcto es la fecha del último cambio real del archivo fuente, recuperable congit log -1 --format=%aI -- ruta/al/archivo.md(lastmod).- Coherencia con
canonical: la URL del sitemap debe coincidir con<link rel="canonical">de la página. - Coherencia con
robots.txt: no listar URLs bloqueadas porDisallow.
Errores comunes
<lastmod>igual para todas las URLs (BUILD_DATE global): inutiliza la señal.- HTTP en lugar de HTTPS en
<loc>: tratado como URL distinta. - Trailing slash inconsistente vs.
<link rel="canonical">: duplicación. - URLs paginadas (
?page=2) o con filtros: gasto inútil de crawl budget. - Sitemaps gigantes (>50.000 URLs) sin dividir: rechazados por Google.
Cómo lo aplicamos en smedialab.es
Generamos sitemap.xml dinámicamente desde Astro en src/pages/sitemap.xml.ts, con <lastmod> calculado vía git log -1 --format=%aI por archivo fuente, no como fecha global del build. Esto significa que las 193 URLs del sitio reflejan 7+ fechas distintas correspondientes al cambio real de cada landing, mejorando la señal de frescura para Google. Para nuestros clientes de SEO implementamos el mismo patrón.