SDK
SDK TypeScript — Instalación
Instala y configura el SDK TypeScript oficial de OptimoCMS.
SDK TypeScript
El SDK oficial de TypeScript proporciona una interfaz tipada y ergonómica para la API de OptimoCMS.
Instalación
npm install @optimocms/sdkRequiere Node.js 18+ o un navegador moderno con soporte ES2020 module.
Configuración del cliente
import { OptimoCMS } from '@optimocms/sdk';
const cms = new OptimoCMS({
apiKey: process.env.OPTIMOCMS_API_KEY!,
});Módulos disponibles
cms.sites // Gestionar sitios
cms.pages // CRUD de páginas
cms.media // Subir y gestionar medios
cms.ai // Generación y traducción IA
cms.shop // Productos, pedidos, cupones
cms.booking // Reservas
cms.webhooks // Configuración de webhooks
cms.domains // Registro y gestión de dominios
cms.mail // Buzones de correo y registros DNS
cms.seo // Configuración SEO y design tokens
cms.chatbot // Configuración del chatbotGeneración IA con medios
El módulo cms.ai soporta videos hero generados por IA. Disponible para planes Professional y Agency.
Generar página con video hero
const result = await cms.ai.generatePage('site_abc123', {
prompt: 'Página de aterrizaje para una panadería en Ámsterdam',
language: 'es',
style: 'minimalist',
useHeroVideo: true,
videoModelId: 'seedance-fast', // opcional: seedance-fast | seedance-standard | kling-standard
});
console.log(result.jobId);
console.log(result.heroVideoGenerated); // true si el video se generó correctamenteGenerar sitio con video hero
const result = await cms.ai.generateSite({
name: 'Panadería El Horno Dorado',
prompt: 'Un sitio web moderno para una panadería artesanal',
language: 'es',
useHeroVideo: true,
videoModelId: 'seedance-standard', // 2 créditos, calidad máxima
});
console.log(result.siteId);
console.log(result.heroVideoGenerated); // true si el video se generó correctamente
console.log(result.videoModel); // 'seedance-standard'
console.log(result.videoCreditsUsed); // 2Nota: Cuando
useHeroVideono se proporciona o se establece enfalse, no se genera ningún video. El comportamiento existente (fotos de stock) permanece sin cambios. En planes inferiores (Free, Starter), el parámetro se ignora. SinvideoModelId, se usaseedance-fastpor defecto.
Dominios
const check = await cms.domains.checkAvailability('panaderia-madrid.es');
console.log(check.available, check.priceCents);
const domain = await cms.domains.register({
domain: 'panaderia-madrid.es',
siteId: 'site_abc123',
registrant: { firstName: 'Carlos', lastName: 'García', email: 'carlos@ejemplo.es', phone: '+34612345678', address: 'Calle Gran Vía 1', city: 'Madrid', postalCode: '28013', country: 'ES' },
});Correo electrónico
const mailbox = await cms.mail.createMailbox('site_abc123', {
localPart: 'info',
displayName: 'Info Panadería',
});
console.log(mailbox.email, mailbox.password);
const records = await cms.mail.getDnsRecords('site_abc123');SEO y Design Tokens
await cms.seo.updateSiteSeo('site_abc123', {
siteTitle: 'Panadería Madrid — Bollería fresca cada día',
siteDescription: 'La mejor panadería de Madrid.',
robotsDirective: 'index,follow',
});
await cms.seo.updateDesignTokens('site_abc123', {
colorPrimary: '#ff6600',
fontHeading: 'Inter',
});Notificaciones push
await cms.push.sendCampaign('site_abc123', {
title: '¡Rebajas de verano -20%!',
body: 'Pide hoy y obtén un 20% de descuento.',
});Webhooks
const webhook = await cms.webhooks.create('site_abc123', {
url: 'https://mi-crm.es/hook',
events: ['order.created', 'booking.created'],
});Chatbot
await cms.chatbot.configure('site_abc123', {
enabled: true,
greeting: '¡Hola! ¿En qué puedo ayudarte?',
primaryColor: '#2563eb',
language: 'es',
});
const config = await cms.chatbot.getConfig('site_abc123');Siguientes pasos
- Manejo de errores — Errores tipados y estrategia de reintentos
- Paginación — Iteradores asíncronos y paginación por cursores
- Autenticación — Scopes y límites de velocidad