SEO en Astro paso a paso: renderizado estático o en servidor, etiquetas head, sitemap, hreflang, imágenes, JSON-LD y redirecciones, según la documentación.

En esta página
En resumen
Astro es uno de los frameworks web más favorables al SEO porque prerrenderiza las páginas en HTML puro y no envía JavaScript al navegador salvo que usted lo pida. Google y los rastreadores de las IA reciben así el contenido completo desde la primera petición. Aun así, Astro no hace el SEO por usted: títulos, metadescripciones, canónicas, hreflang, datos estructurados y redirecciones corren de su cuenta, sobre todo en un componente head compartido y con la integración oficial de sitemap.
¿Quiere ir más lejos? Pregunte a
Quiz rápido
¿Es el SEO para ti y cómo empezar?
Sorank encaja con tus respuestas
Pruébalo 3 días en tu propia web y descubre dónde estás en Google, ChatGPT y las demás IA.
Prueba gratis de 3 días3 días gratis y luego lo dejas cuando quieras. Garantía de resultados o devolución de 90 días.
El SEO en Astro consiste en convertir ese HTML limpio en páginas que se posicionan. La guía de Google sobre los conceptos básicos de SEO para JavaScript explica que procesa los sitios JavaScript en tres fases (rastreo, renderizado, indexación) y afirma que el renderizado en servidor o el prerrenderizado sigue siendo una gran idea, porque no todos los bots ejecutan JavaScript. Astro parte de esa posición por defecto. Esta guía cubre el resto, ajuste por ajuste, con cada comportamiento comprobado en la documentación oficial de Astro. Como dato, el sitio sorank.com que está leyendo funciona con Astro.
Sí, en lo técnico. Astro renderiza los componentes en HTML durante la compilación y elimina el JavaScript que frameworks como React o Vue enviarían normalmente al navegador. Así evita los problemas clásicos que describe nuestra guía de SEO para JavaScript: carcasas HTML vacías, contenido que solo aparece tras el renderizado, enlaces que no son etiquetas de anclaje reales. También evita las trampas de enrutamiento de una aplicación de una sola página, ya que cada ruta de Astro es una URL real con su propio archivo HTML.
Lo que Astro no hace importa igual. No hay plugin SEO integrado, ni metadescripción automática, ni etiqueta canónica automática, ni datos estructurados. La tabla separa lo que obtiene gratis de lo que debe construir.
| Elemento SEO | Lo que da Astro | Lo que añade usted |
|---|---|---|
| HTML rastreable | HTML prerrenderizado por defecto | Nada, salvo que renderice contenido solo en el cliente |
| Título y metadescripción | Un head que controla en cada layout | Un componente SEO compartido que alimenta cada página |
| Etiqueta canónica | Astro.site y Astro.url para construir URL absolutas | La propia etiqueta link, con una barra final coherente |
| Sitemap XML | La integración oficial @astrojs/sitemap | Instalarla, definir la opción site, filtrar páginas privadas |
| hreflang | Enrutamiento i18n y una opción i18n del sitemap | Enlaces alternativos en el head de cada página |
| Imágenes | Componentes Image y Picture que optimizan los archivos | Textos alternativos descriptivos, tamaños adecuados |
| Datos estructurados | Nada específico | Scripts JSON-LD por tipo de página |
| Redirecciones | Una opción redirects en la configuración | 301 reales en el hosting para sitios estáticos |
La documentación de Astro sobre el renderizado bajo demanda es clara: por defecto, páginas, rutas y endpoints de API se prerrenderizan al compilar como páginas estáticas. Para el SEO, la salida estática es la opción más segura: cada URL es un archivo HTML terminado, servido desde una CDN, rápido e idéntico para cada visitante y cada bot.
El renderizado bajo demanda (en servidor) requiere un adaptador para su hosting (Node, Netlify, Vercel o Cloudflare, por ejemplo). Después saca una ruta concreta del prerrenderizado con export const prerender = false, o cambia todo el proyecto con output: 'server' y reactiva las páginas estáticas una a una. Ambos modos producen HTML completo, así que Google ve lo mismo. Las diferencias están en otra parte:
La regla práctica: mantenga estáticas las páginas comerciales, los artículos del blog y la documentación, y renderice bajo demanda solo las rutas que necesitan datos en vivo. La documentación de Astro recomienda lo mismo: conservar el modo estático por defecto hasta que la mayoría de las páginas necesiten renderizado bajo demanda.
Cree un único componente SEO (a menudo llamado BaseHead o Seo) e inclúyalo en el head de cada layout. Recibe un título, una descripción, una imagen opcional y un indicador noindex opcional, y genera:
Defina primero la opción site en astro.config.mjs: la canónica, el sitemap y las etiquetas sociales dependen de ella. Elija después una política trailingSlash ('always' o 'never') y manténgala, para que /blog/articulo y /blog/articulo/ nunca compitan como dos versiones de la misma página. Quite los parámetros de consulta de la canónica para que los parámetros de seguimiento no creen duplicados.
Consejo
Si sus artículos viven en colecciones de contenido, haga que el título y la descripción sean campos obligatorios en el esquema de la colección. Así la compilación falla cuando un autor olvida la metadescripción, en lugar de enviar a Google un fragmento vacío.
Use la integración oficial documentada en la página de @astrojs/sitemap. El comando npx astro add sitemap la instala y la añade a la configuración. Requiere la opción site y, al compilar, escribe un archivo sitemap-index.xml que apunta a archivos numerados (sitemap-0.xml y más en sitios grandes). Cada archivo admite hasta 45.000 entradas por defecto, valor que fija la opción entryLimit. Si el formato es nuevo para usted, nuestra entrada del glosario sobre el sitemap XML explica qué hace Google con él.
Tres ajustes importan para el SEO:
Atención
La documentación indica que la integración no puede generar entradas de sitemap para rutas dinámicas en modo SSR. Si sus páginas de producto o artículos se renderizan bajo demanda, faltarán en el sitemap salvo que las prerrenderice o las añada usted.
Para el robots.txt, un archivo estático en la carpeta public basta en la mayoría de los sitios. Si el contenido cambia entre preproducción y producción, genérelo mejor desde un endpoint (src/pages/robots.txt.ts). En ambos casos, añada una línea Sitemap que apunte a sitemap-index.xml y pruebe el resultado con un comprobador de robots.txt antes del lanzamiento. La misma técnica produce un archivo llms.txt; nuestra guía para instalar un archivo llms.txt detalla su contenido.
El enrutamiento i18n integrado de Astro resuelve la parte de las URL. En la configuración declara una defaultLocale y una lista de locales, y decide si el idioma por defecto también lleva prefijo (prefixDefaultLocale). Funciones como getRelativeLocaleUrl construyen enlaces localizados, y Astro.currentLocale indica a cada página en qué idioma está.
La guía de enrutamiento no trata las etiquetas hreflang en el head, así que prevea escribirlas usted en el componente SEO: por página, un enlace alternativo por versión de idioma más un x-default, todo en URL absolutas, y cada versión debe listar todas las demás (enlaces de retorno). Generarlas desde la misma lista de idiomas que el enrutamiento evita el error más frecuente, una alternativa que apunta a una página inexistente. Para comprobar la lógica en algunas URL, nuestro generador de hreflang produce el conjunto completo de etiquetas de una página. Active después la opción i18n del sitemap como segunda señal.
La velocidad es donde Astro gana más terreno, y se nota en las Core Web Vitals. La guía de imágenes de Astro describe el componente Image de astro:assets: optimiza las imágenes locales, convierte su formato, añade carga diferida y decodificación asíncrona, e infiere las dimensiones de la imagen para evitar el Cumulative Layout Shift. El atributo alt es obligatorio en él, lo que impone una regla básica del SEO de imágenes. El componente Picture va más allá y sirve AVIF o WebP con una alternativa.
Dos hábitos completan el cuadro. Guarde en src las imágenes que deben optimizarse (los archivos de public se sirven tal cual, sin procesar). Y no difiera la carga de la imagen principal en la parte superior de la página: cárguela de inmediato para que no retrase el Largest Contentful Paint.
La arquitectura de islas mantiene el JavaScript bajo control. Un componente es HTML estático hasta que añade una directiva de cliente: client:load lo hidrata enseguida, client:idle cuando el navegador está libre, client:visible solo cuando entra en la zona visible. Reservar client:load para lo que debe reaccionar al instante (un menú, un carrito) es la forma más sencilla de proteger el Interaction to Next Paint. Las islas de servidor (server:defer) cargan un bloque personalizado después de la página en caché, sin frenar el contenido principal.
Nota
Una isla solo retrasa su interactividad, no su texto, siempre que el componente se renderice primero en el servidor. El contenido que se carga después en el navegador es otro caso: los rastreadores que no ejecutan JavaScript, entre ellos muchos rastreadores de IA, no lo verán.
Astro no tiene una función de schema, lo que le deja control total. Construya un objeto JavaScript por tipo de página (Article, Product, Organization, BreadcrumbList, FAQPage) e insértelo en una etiqueta script de tipo application/ld+json, con la directiva set:html y JSON.stringify para que el JSON no se escape. Aliméntelo con los mismos datos de frontmatter o de colección que la página visible: así el marcado coincide siempre con lo que ven los usuarios, un requisito de las directrices de Google sobre el marcado schema.
Para redactar el JSON de un nuevo tipo de página, nuestro generador de schema gratuito le da un bloque inicial válido que luego convierte en plantilla. Valide una muestra de páginas compiladas con la prueba de resultados enriquecidos de Google tras cada cambio en la plantilla.
Las migraciones desde WordPress o Next.js son el momento más arriesgado para un sitio Astro. Conserve cada URL con tráfico o backlinks y asigne las demás una por una a su equivalente más cercano con redirecciones permanentes, como explica nuestra guía de redirecciones SEO.
La configuración de Astro acepta un objeto redirects que asocia rutas antiguas con nuevas. Con un adaptador, se convierten en redirecciones HTTP reales. En una compilación puramente estática, Astro escribe en su lugar una página HTML con meta refresh, que Google sigue pero trata como una señal más débil que una 301 en servidor. Para un sitio estático, declare las redirecciones en el formato de su hosting (un archivo _redirects en Netlify o Cloudflare Pages, un archivo vercel.json en Vercel) para que los rastreadores reciban una 301 de verdad.
Ser citado por ChatGPT, Perplexity o Gemini empieza por ser legible. Muchos rastreadores de IA descargan el HTML bruto sin ejecutar JavaScript, así que un sitio que entrega todo su texto en la primera respuesta, como hace Astro por defecto, elimina una barrera que los sitios renderizados en el cliente todavía tienen. Encabezados claros, párrafos que responden de entrada, datos estructurados y un archivo llms.txt hacen después que cada página sea más fácil de citar.
Tras el lanzamiento, mida en lugar de suponer. El panel GEO y SEO de Sorank reúne sus datos de Search Console y sus visitas procedentes de asistentes de IA, para ver si el nuevo sitio mantiene sus posiciones.

La calidad técnica solo rinde con contenido que posicionar. El generador de artículos de blog con IA de Sorank escribe y publica artículos optimizados para Google y para las IA, y se conecta por webhook a un sitio a medida, como un proyecto Astro.
Astro le da por defecto un HTML rápido y rastreable; el posicionamiento sigue dependiendo de las etiquetas head, el sitemap, el hreflang, los datos estructurados y las redirecciones que añada. Monte primero el componente SEO compartido y el sitemap, y repase la tabla de arriba antes del lanzamiento.
No. Astro no tiene un plugin SEO oficial todo en uno: el título, la metadescripción, la canónica y las etiquetas sociales se escriben en un componente head compartido. La integración oficial @astrojs/sitemap cubre el sitemap. Existen paquetes de la comunidad, pero un pequeño componente propio es fácil de mantener y queda totalmente bajo su control.
Ambos pueden producir HTML totalmente renderizado, así que Google puede indexar bien cualquiera de los dos. Astro envía mucho menos JavaScript por defecto, lo que suele hacer más rápidos los sitios de contenido y ayuda a las Core Web Vitals. Next.js encaja mejor en aplicaciones muy interactivas; para blogs, webs corporativas y documentación, Astro es la opción más sencilla para el SEO.
Sí. Una página renderizada bajo demanda también devuelve HTML completo a Googlebot, igual que una prerrenderizada. Hay que vigilar el tiempo de respuesta del servidor, que afecta a la velocidad de carga, y la integración de sitemap, que no lista las rutas dinámicas en modo servidor salvo que las añada usted.
PROBARON SORANK ANTES QUE USTED
