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:
- Publica tu proyecto Lovable — Asegúrate de que el sitio está en línea en una URL
.lovable.app - Anota tus decisiones de diseño — Colores, fuentes y border-radius que quieres mantener
- 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?
| Componente | Importado | Notas |
|---|---|---|
| Estructura de páginas | ✓ | Las rutas se convierten en páginas |
| Contenido de texto | ✓ | Títulos, párrafos, listas |
| Imágenes | ✓ | Copiadas a OptimoCMS Storage |
| Colores/fuentes | ✓ | Convertidos en design tokens |
| Formularios | Parcial | Los campos básicos se trasladan |
| Animaciones | ✗ | Deben reconstruirse manualmente |
| Código personalizado | ✗ | JavaScript/React no importable |
Consejos para una migración exitosa
- Haz una captura de pantalla de tu sitio Lovable antes de importar, como referencia
- Prueba primero en sandbox — usa una clave API sandbox para probar la importación
- Verifica el responsive — Revisa las páginas importadas en móvil
- Preserva el SEO — Configura redirecciones si cambias de dominio
- Paso a paso — Primero importa, revisa, ajusta y luego publica
Siguientes pasos
- Crear un sitio de restaurante — Añade funcionalidades a tu sitio importado
- Design tokens — Más sobre el sistema de tokens
- Configuración MCP para Lovable — Usar MCP desde Lovable