Desarrollo Web · Consultoría · Marketing — España & LATAM
Desarrollo 18 de marzo de 2026 · 6 min de lectura

Cómo migrar de WordPress a Astro sin perder SEO: guía paso a paso

wordpress astro migración seo rendimiento
CA

Cris Artigas

Desarrollo web, consultoría digital y marketing & growth

Por qué migré de WordPress a Astro

Después de 4 años con WordPress + Elementor, mi sitio pesaba más de 3 MB por página, cargaba en 4-5 segundos y me costaba 25€/mes de hosting solo para mantenerlo vivo. La puntuación de Lighthouse era un triste 45 en móvil.

No era culpa de WordPress en sí — era la acumulación de plugins (19 activos), un tema pesado, Elementor con su CSS inline, y un servidor compartido que hacía lo que podía. La situación es común: el 40% de los sitios WordPress no pasan los Core Web Vitals.

Decidí migrar a Astro cuando vi que podía obtener un 100/100 en Lighthouse generando HTML estático, sin servidor, sin plugins, sin mantenimiento de seguridad, y con hosting gratuito en Vercel.

Los resultados tras la migración:

MétricaWordPressAstro
Lighthouse Performance45100
LCP4.2s0.8s
Peso por página3.1 MB85 KB
Hosting mensual25€0€
Plugins activos190
Tiempo de buildN/A7s (220 páginas)

Paso 1: Auditar el contenido de WordPress

Antes de tocar nada, necesitas saber exactamente qué tienes:

  1. Lista de todas las URLs: usa Screaming Frog (gratuito hasta 500 URLs) o el sitemap de Yoast para exportar todas las URLs indexadas
  2. Contenido que migra: páginas, posts, categorías, imágenes
  3. Contenido que NO migra: comentarios, shortcodes de plugins, formularios dinámicos
  4. Funcionalidades a replicar: formulario de contacto, buscador, multiidioma

En mi caso tenía 15 páginas, 8 posts de blog, 3 formularios de contacto y multiidioma (es/en). Guardé todo en una hoja de cálculo con las URLs antiguas y las nuevas.

Paso 2: Exportar contenido a Markdown

WordPress almacena el contenido en HTML dentro de su base de datos. Necesitas convertirlo a Markdown para Astro.

Hay varias opciones:

Opción A: Plugin wordpress-export-to-markdown

npx wordpress-export-to-markdown --wizard

Este CLI de Node toma tu export XML de WordPress (wp-admin → Herramientas → Exportar) y genera archivos .md con frontmatter. Es la opción más limpia.

Opción B: Manual con wp-admin

Si tienes pocos posts (como yo), copiar el contenido manualmente y formatearlo en Markdown puede ser más rápido y limpio. Aprovechas para editar y mejorar el contenido.

Opción C: Script custom

Para sitios grandes, un script que conecte a la REST API de WordPress y genere Markdown:

// export-wp.mjs
const WP_URL = 'https://tu-sitio.com/wp-json/wp/v2';

const posts = await fetch(`${WP_URL}/posts?per_page=100`).then(r => r.json());

for (const post of posts) {
  const frontmatter = `---
title: "${post.title.rendered}"
date: ${post.date.split('T')[0]}
description: "${post.excerpt.rendered.replace(/<[^>]*>/g, '').trim()}"
---`;

  // Necesitarás una librería como turndown para HTML → Markdown
  console.log(`${frontmatter}\n\n${post.content.rendered}`);
}

Las trampas del contenido de Elementor

Si usabas Elementor, el HTML exportado es un desastre de divs anidados con clases propias. No intentes convertirlo automáticamente — reescribe el contenido a mano. Sí, lleva más tiempo, pero el resultado es contenido limpio y mantenible.

Shortcodes como [contact-form-7 id="123"] no se traducen a Markdown. Necesitas reemplazarlos con componentes Astro o HTML.

Paso 3: Recrear la estructura en Astro

Con el contenido exportado, crea tu proyecto Astro:

npm create astro@latest mi-sitio
cd mi-sitio
npm install

Coloca los archivos Markdown en src/content/blog/ y crea tu Content Collection en src/content/config.ts.

Tip clave: si puedes, mantén exactamente la misma estructura de URLs. Si tu blog en WordPress estaba en /blog/mi-post/, ponlo en /blog/mi-post/ en Astro. Cada URL que cambias es una redirección que necesitas configurar.

En mi caso, aproveché la migración para reestructurar las URLs (de /es/blog/ a /es/blog/slug/ con slugs limpios), lo que significó más redirecciones pero URLs más limpias.

Paso 4: Configurar redirecciones 301

Esto es lo más crítico de toda la migración. Si no rediriges las URLs antiguas a las nuevas, perderás todo el SEO acumulado. Google verá las URLs antiguas como 404 y dejará de mostrarlas.

Para hosting con .htaccess (Apache)

# .htaccess — Redirecciones de WordPress a Astro
RewriteEngine On

# Posts de blog
Redirect 301 /2024/03/como-elegir-tecnologia/ /es/blog/como-elegir-tecnologia-web/
Redirect 301 /2024/02/seo-programatico/ /es/blog/seo-programatico-guia/

# Páginas
Redirect 301 /servicios/desarrollo-web/ /es/servicios/desarrollo-web/
Redirect 301 /contacto/ /es/contacto/

# Categorías y tags (redirigir al blog index)
RedirectMatch 301 ^/category/(.*)$ /es/blog/
RedirectMatch 301 ^/tag/(.*)$ /es/blog/

# Feed RSS
Redirect 301 /feed/ /es/blog/

Para Vercel/Netlify

Archivo vercel.json en la raíz:

{
  "redirects": [
    { "source": "/2024/03/como-elegir-tecnologia/", "destination": "/es/blog/como-elegir-tecnologia-web/", "permanent": true },
    { "source": "/contacto/", "destination": "/es/contacto/", "permanent": true }
  ]
}

Verifica con Screaming Frog

Después de subir las redirecciones, escanea todas las URLs antiguas con Screaming Frog para confirmar que cada una devuelve un 301 → URL nueva → 200. Si alguna devuelve 404, arréglala inmediatamente.

Paso 5: Resolver formularios de contacto

WordPress tiene Contact Form 7, WPForms, Gravity Forms… Astro no tiene nada de esto por defecto. Opciones:

  • Formspree: servicio externo, plan gratuito hasta 50 envíos/mes. Añades un action al <form> y listo
  • Netlify Forms: si hosteas en Netlify, los formularios nativos son gratuitos
  • API propia: un endpoint en Supabase, un Edge Function de Vercel, o un Worker de Cloudflare
  • WhatsApp redirect: lo que hago en crisartigas.com — construyo la URL de WhatsApp con los datos del formulario. Sin backend necesario

Paso 6: Verificar en Google Search Console

Después de la migración:

  1. Verifica el nuevo sitio en Search Console (si cambió de dominio o protocolo)
  2. Envía el nuevo sitemap: tu-sitio.com/sitemap-index.xml
  3. Usa la herramienta de inspección de URLs para verificar que las páginas principales se indexan correctamente
  4. Monitorea el informe de cobertura durante las siguientes 4-6 semanas — busca errores 404 que se te hayan escapado

Es normal ver una caída temporal de impresiones/clics durante 1-2 semanas mientras Google procesa las redirecciones. Si después de 4 semanas sigue bajando, revisa las redirecciones y el contenido.

Timeline realista

Para un sitio de 15-30 páginas como el mío:

  • Semana 1: Auditoría, exportación de contenido, setup de Astro
  • Semana 2-3: Desarrollo del sitio en Astro (diseño, componentes, contenido)
  • Semana 4: Redirecciones, testing, formularios, SEO verification
  • Semana 5: Lanzamiento y monitoreo

Total: 4-5 semanas trabajando a media jornada en paralelo con otros proyectos.

¿Merece la pena?

Sin duda. El resultado es un sitio que carga 10x más rápido, cuesta 0€ de hosting, no necesita actualizaciones de seguridad, y me da control total sobre cada línea de código. El SEO no solo se mantuvo — mejoró gracias al rendimiento superior.

Pero no es para todos. Si tu equipo de contenido necesita un editor visual, si dependes de plugins de WordPress para funcionalidades complejas, o si no tienes capacidad técnica para mantener un sitio Astro, quédate con WordPress. La mejor tecnología es la que tu equipo puede mantener.

Compartir este artículo

CA

Sobre el autor

Cris Artigas

Consultor digital y desarrollador web con más de 50 proyectos entregados en España y Latinoamérica. Especializado en estrategia digital, desarrollo web y marketing de crecimiento.

Hablemos

¿Necesitas ayuda con esto?

Si tienes un proyecto relacionado, puedo ayudarte a implementarlo correctamente.

Hablemos