OptimoCMSDocs
Guides

Importar desde Lovable

Migra tu proyecto Lovable a OptimoCMS. Importa contenido, imágenes y design tokens manteniendo tu diseño.

Importar desde Lovable

¿Has construido un sitio web en Lovable y quieres transferirlo a OptimoCMS para tener más control, acceso a la API y escalabilidad? Este tutorial te guía a través del proceso de migración completo.

En este tutorial:

  • Conectar un proyecto Lovable mediante el SDK y MCP
  • Importar contenido e imágenes
  • Trasladar design tokens de tu diseño Lovable
  • Ajustes manuales después de la importación

Requisitos previos

  • Node.js 18+
  • npm install @optimocms/sdk
  • La URL pública de tu proyecto Lovable (ej: https://mi-proyecto.lovable.app)
  • Una clave API de OptimoCMS

Paso 1 — Preparar tu proyecto Lovable

Antes de importar:

  1. Publica tu proyecto Lovable — Asegúrate de que el sitio está en línea en una URL .lovable.app
  2. Anota tus decisiones de diseño — Colores, fuentes y border-radius que quieres mantener
  3. Verifica las imágenes — Todas las imágenes deben ser públicamente accesibles

Paso 2 — Iniciar la importación vía SDK

SDK

import { OptimoCMS } from '@optimocms/sdk';

const client = new OptimoCMS({
  apiKey: process.env.OPTIMOCMS_API_KEY!,
});

const importResult = await client.import.fromLovable('site_abc123', {
  projectUrl: 'https://mi-restaurante.lovable.app',
  name: 'Mi Restaurante (desde Lovable)',
});

console.log(`Importación iniciada: ${importResult.importId}`);
console.log(`Estado: ${importResult.status}`);
console.log(`Progreso: ${importResult.progress}%`);

MCP (Cursor / Claude)

En Cursor o Claude Desktop:

Importa el proyecto Lovable en https://mi-restaurante.lovable.app a mi sitio OptimoCMS "site_abc123". Nómbralo "Mi Restaurante (desde Lovable)".

La herramienta MCP import_from_lovable es invocada.

REST

curl -X POST https://api.optimocms.com/v1/sites/$SITE_ID/import/url \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://mi-restaurante.lovable.app",
    "name": "Mi Restaurante (desde Lovable)",
    "includeImages": true,
    "includeStyles": true,
    "source": "lovable"
  }'

Paso 3 — Monitorear el estado de la importación

La importación se ejecuta de forma asíncrona. Consulta el estado hasta que termine:

SDK

async function waitForImport(siteId: string, importId: string): Promise<void> {
  let status = await client.import.status(siteId, importId);

  while (status.status === 'queued' || status.status === 'processing') {
    console.log(`Progreso: ${status.progress}% (${status.pagesImported} páginas)`);
    await new Promise(resolve => setTimeout(resolve, 2000));
    status = await client.import.status(siteId, importId);
  }

  if (status.status === 'completed') {
    console.log(`✓ ¡Importación completada! ${status.pagesImported} páginas importadas`);
  } else {
    console.error(`✗ Importación fallida: ${status.error}`);
  }
}

await waitForImport('site_abc123', importResult.importId);

Paso 4 — Trasladar design tokens

Después de la importación puedes ajustar los design tokens:

SDK

const site = await client.sites.get('site_abc123');
console.log('Tokens detectados:', site.designTokens);

await client.designTokens.update('site_abc123', {
  colorPrimary: '#6366F1',
  colorBackground: '#FAFAFA',
  colorSurface: '#FFFFFF',
  colorText: '#18181B',
  colorTextMuted: '#71717A',
  fontBody: 'Inter',
  fontHeading: 'Inter',
  radiusCard: '12px',
  radiusButton: '8px',
  radiusInput: '8px',
});

console.log('✓ Design tokens ajustados');

Paso 5 — Revisar y ajustar contenido

Después de la importación, verifica las páginas importadas:

for await (const page of client.pages.list('site_abc123')) {
  console.log(`Página: ${page.title} (/${page.slug}) — ${page.blocks.length} bloques`);
}

Paso 6 — Publicar

Cuando todo se vea bien, publica el sitio:

SDK

const result = await client.sites.publish('site_abc123');
console.log(`✓ Sitio publicado: ${result.status}`);

MCP

Publica el sitio "site_abc123" en producción.

¿Qué se importa?

ComponenteImportadoNotas
Estructura de páginasLas rutas se convierten en páginas
Contenido de textoTítulos, párrafos, listas
ImágenesCopiadas a OptimoCMS Storage
Colores/fuentesConvertidos en design tokens
FormulariosParcialLos campos básicos se trasladan
AnimacionesDeben reconstruirse manualmente
Código personalizadoJavaScript/React no importable

Consejos para una migración exitosa

  1. Haz una captura de pantalla de tu sitio Lovable antes de importar, como referencia
  2. Prueba primero en sandbox — usa una clave API sandbox para probar la importación
  3. Verifica el responsive — Revisa las páginas importadas en móvil
  4. Preserva el SEO — Configura redirecciones si cambias de dominio
  5. Paso a paso — Primero importa, revisa, ajusta y luego publica

Siguientes pasos

On this page