Cómo utilizar la API de Vidiome para automatizar la generación de artículos a partir de vídeo
Tutorial técnico para desarrolladores: utilice el punto final POST /api/v1/articles de Vidiome para automatizar la generación de vídeo a artículo a escala. Se incluyen ejemplos de Curl + Node.js.
La API REST pública de Vidiome permite a los desarrolladores automatizar todo el proceso de vídeo a artículo mediante programación, sin necesidad de navegador ni cargas manuales. Una única solicitud POST /api/v1/articles devuelve un artículo de blog estructurado y optimizado para SEO desde cualquier URL de YouTube o archivo de vídeo.
Este tutorial cubre la especificación del punto final, la autenticación, ejemplos de código en curl y Node.js, patrones de casos de uso para el procesamiento por lotes y la integración de CMS, y un diagrama de flujo de trabajo de automatización.
¿Para quién es este tutorial?
- Desarrolladores de SaaS que crean funciones de automatización de contenido para clientes o herramientas internas.
- Agencias de contenido procesan más de 20 videos por semana y necesitan eliminar el uso manual de Vidiome.
- Equipos de plataforma que integran vídeo a artículo en un CMS o flujo de trabajo de contenido existente
- Startups aprovechando las capacidades de Vidiome como capa de infraestructura de contenido
Si es un creador individual en lugar de un desarrollador, la aplicación web Vidiome es la ruta más rápida; este tutorial es específicamente para el uso de API programática.
Vidiome
Turn your videos into SEO traffic machines
Generar mi primer artículoSin tarjeta bancaria · 120 créditos gratuitos
Requisitos previos
- Una cuenta de Vidiome con al menos un plan inicial (el acceso API requiere un plan pago o de prueba)
- Su clave API de Vidiome (que se encuentra en Configuración de cuenta → Claves API)
- Familiaridad básica con las API REST de HTTP y curl o Node.js.
Vidiome ofrece 120 créditos gratis al registrarse: puede probar el flujo de trabajo de la aplicación web antes de comprometerse con la integración API.
Descripción general del punto final: POST /api/v1/articles
El punto final de generación de artículos de Vidiome acepta una fuente de video y parámetros de generación, luego devuelve un objeto de artículo completo.
Solicitud
PUBLICAR https://vidiome.com/api/v1/articles
Tipo de contenido: aplicación/json
Autorización: Portador YOUR_API_KEY
Cuerpo de la solicitud
{
"fuente": {
"tipo": "youtube_url",
"url": "https://www.youtube.com/watch?v=XXXXXXXXXX"
},
"generación": {
"idioma": "es",
"focus_keyword": "cómo convertir un vídeo de YouTube en una publicación de blog",
"output_format": "rebaja"
}
}
objeto fuente
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
tipo |
cadena | Sí | "youtube_url" o "file_upload" |
URL |
cadena | Requerido si tipo = youtube_url |
URL completa del vídeo de YouTube |
id_archivo |
cadena | Requerido si type = file_upload" |
ID de archivo de una carga anterior de /api/v1/files |
objeto generación
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
lenguaje |
cadena | Sí | Código ISO 639-1. Compatible: en, fr, es, pt, de, ru, hi, uk, id, tr |
palabra clave_enfoque |
cadena | No | Palabra clave SEO objetivo: mejora H1 y la meta alineación |
formato_salida |
cadena | No | "markdown" (predeterminado) o "html" |
Respuesta
{
"id": "art_01HZXXX",
"estado": "completado",
"created_at": "2026-05-15T10:23:41Z",
"tiempo_de_procesamiento_segundos": 187,
"créditos_usados": 12,
"artículo": {
"title": "Cómo convertir un vídeo de YouTube en una publicación de blog en 5 minutos",
"meta_description": "Vidiome convierte cualquier URL de YouTube en una publicación de blog SEO estructurada en menos de 5 minutos. Tutorial paso a paso con transcripción Whisper con una precisión superior al 95 %.",
"content": "# Cómo convertir un vídeo de YouTube...\n\n## Lo que necesitarás\n...",
"recuento_palabras": 1247,
"idioma": "es",
"focus_keyword": "cómo convertir un vídeo de YouTube en una publicación de blog"
},
"transcripción": {
"text": "Hola a todos, hoy quiero mostrarles...",
"segmentos": [
{ "start": 0.0, "end": 4.2, "text": "Hola a todos, hoy quiero mostrárselos" },
...
]
}
}
Valores de estado
| Estado | Significado |
|---|---|
en cola |
Solicitud aceptada, procesamiento no iniciado |
procesamiento |
Transcripción y/o generación de artículos en curso |
completado |
Artículo listo en cuerpo de respuesta |
fallido |
Error de procesamiento: consulte el campo error |
Para sondeos asincrónicos, utilice GET /api/v1/articles/{id} con el id devuelto.
Ejemplos de código
rizo
curl -X POST https://vidiome.com/api/v1/articles \
-H "Tipo de contenido: aplicación/json" \
-H "Autorización: Portador YOUR_API_KEY" \
-d '{
"fuente": {
"tipo": "youtube_url",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"generación": {
"idioma": "es",
"focus_keyword": "estrategia de reutilización de contenido",
"output_format": "rebaja"
}
}'
Encuesta para completar:```golpecito
Reemplace art_01HZXXX con la identificación de la respuesta inicial
curl -H "Autorización: Portador YOUR_API_KEY"
https://vidiome.com/api/v1/articles/art_01HZXXX
### Node.js (buscar)
```javascript
const VIDIOME_API_KEY = proceso.env.VIDIOME_API_KEY;
función asíncrona generarArtículo(youtubeUrl, focusKeyword, idioma = 'en') {
// Paso 1: enviar solicitud de generación de artículo
respuesta constante = esperar a buscar ('https://vidiome.com/api/v1/articles', {
método: 'POST',
encabezados: {
'Tipo de contenido': 'aplicación/json',
'Autorización': `Portador ${VIDIOME_API_KEY}`,
},
cuerpo: JSON.stringify({
fuente: {
escriba: 'youtube_url',
URL: URL de youtube,
},
generación: {
idioma,
focus_keyword: palabra clave de enfoque,
formato_salida: 'rebaja',
},
}),
});
trabajo constante = esperar respuesta.json();
si (!respuesta.ok) {
lanzar nuevo error(`Error de API de Vidiome: ${job.message}`);
}
// Paso 2: encuesta hasta completar
volver aguardar encuestaUntilComplete(job.id);
}
función asíncrona pollUntilComplete(articleId, maxAttempts = 30, intervaloMs = 10000) {
for (let intent = 0; intento < maxAttempts; intento ++) {
espere nueva promesa (resolver => setTimeout (resolver, intervaloMs));
const res = esperar a buscar(`https://vidiome.com/api/v1/articles/${articleId}`, {
encabezados: { 'Autorización': `Portador ${VIDIOME_API_KEY}` },
});
artículo constante = esperar res.json();
if (artículo.status === 'completado') {
devolver artículo;
}
si (artículo.status === 'falló') {
throw new Error(`Error en la generación del artículo: ${article.error}`);
}
console.log(`[Vidiome] Estado: ${article.status} (intento ${intento + 1}/${maxAttempts})`);
}
throw new Error('Vidiome: se excedió el tiempo de espera de sondeo');
}
// uso
resultado constante = esperar generar artículo (
'https://www.youtube.com/watch?v=XXXXXXXXXX',
'cómo reutilizar el contenido de vídeo'
);
console.log(resultado.artículo.título);
console.log(`Recuento de palabras: ${result.article.word_count}`);
console.log(`Créditos utilizados: ${result.credits_used}`);
// Escribir en un archivo, enviar a CMS, etc.
Diagrama de flujo de trabajo de automatización
Aquí está la arquitectura de automatización completa para una canalización de procesamiento por lotes típica que utiliza Vidiome:
┌──────────────────────────── ─────────────────────────────┐
│ CAPA DE FUENTE DE VIDEO │
│ Lista de reproducción de YouTube / canal RSS / biblioteca de vídeos CMS │
└──────────────────────┬───── ─────────────────────────────┘
│ URL de vídeos/referencias de archivos
▼
┌──────────────────────────── ─────────────────────────────┐
│ CAPA DE ORQUESTRACIÓN │
│ Trabajo cron / activador de webhook / n8n / Make.com │
│ - Deduplicación (omitir URL ya procesadas) │
│ - Limitación de tarifas (respetar el presupuesto de créditos API) │
│ - Gestión de colas │
└──────────────────────┬───── ─────────────────────────────┘
│ ENVIAR /api/v1/artículos
▼
┌──────────────────────────── ─────────────────────────────┐
│ API VIDIOME │
│ 1. Transcripción de susurros (fragmentos de 60 segundos, 95 %+ según) │
│ 2. Generación de artículos LLM (estructura + SEO) │
│ 3. Devoluciones: título, meta, contenido (MD/HTML), transcripción │
└──────────────────────┬───── ─────────────────────────────┘
│ Objeto de artículo completo
▼
┌──────────────────────────── ─────────────────────────────┐
│ CAPA DE POSTPROCESAMIENTO │
│ - Cola de revisión humana (opcional pero recomendada) │
│ - Inyección de enlaces internos (agregar enlaces a publicaciones existentes)│
│ - Asignación de imagen destacada │
│ - Inyección de marcado de esquema (Artículo JSON-LD) │
└──────────────────────┬───── ─────────────────────────────┘
│ Artículo listo para publicar
▼
┌──────────────────────────── ─────────────────────────────┐
│ CMS / PLATAFORMA │
│ WordPress (API REST) / Ghost (API de administración) │
│ Webflow CMS / Contentful / Sanity / Base de datos personalizada │
└──────────────────────────── ─────────────────────────────┘
Casos de uso
Procesamiento por lotes de un canal de YouTube
Procese el catálogo completo de un canal de YouTube en una sola ejecución:```javascript función asíncrona procesoYouTubeChannel(channelVideoUrls, opciones = {}) { constante { idioma = 'es', concurrencia = 3, // solicitudes de Vidiome paralelas máximas delayMs = 2000, // retraso entre lotes (limitación de velocidad) } = opciones;
resultados constantes = [];
// Procesar en lotes de concurrencia
for (let i = 0; i <channelVideoUrls.length; i += concurrencia) {
lote constante = canalVideoUrls.slice(i, i + concurrencia);
const resultados por lotes = await Promise.allSettled(
lote.map(url => generarArtículo(url, '', idioma))
);
resultados.push(...batchResults);
console.log(`Procesado ${Math.min(i + concurrencia, channelVideoUrls.length)}/${channelVideoUrls.length} videos`);
if (i + concurrencia <channelVideoUrls.length) {
await new Promise(resolve => setTimeout(resolve, delayMs));
}
}
devolver resultados; }
Un canal con 100 vídeos procesados en 3 solicitudes simultáneas: aproximadamente 100 minutos en total (promedio de 3 minutos por vídeo × 100 ÷ 3 simultáneos).
### Integración CMS (ejemplo de WordPress)
Después de que Vidiome devuelva el artículo, envíelo directamente a WordPress a través de la API REST:
```javascript
función asíncrona publicar en WordPress (vidiomeArticle, wpConfig) {
const {siteUrl, nombre de usuario, appPassword} = wpConfig;
credenciales constantes = Buffer.from(`${nombre de usuario}:${appPassword}`).toString('base64');
respuesta constante = await fetch(`${siteUrl}/wp-json/wp/v2/posts`, {
método: 'POST',
encabezados: {
'Tipo de contenido': 'aplicación/json',
'Autorización': `Básico ${credenciales}`,
},
cuerpo: JSON.stringify({
título: vidiomeArticle.article.title,
contenido: vidiomeArticle.article.content, // formato HTML recomendado para WP
extracto: vidiomeArticle.article.meta_description,
estado: 'borrador', // Siempre redactar primero para revisión humana
}),
});
regresar espera respuesta.json();
}
Lote multilingüe: un vídeo, 10 idiomas
Genere el mismo artículo en los 10 idiomas admitidos simultáneamente:
const SUPPORTED_LANGUAGES = ['en', 'fr', 'es', 'pt', 'de', 'ru', 'hi', 'uk', 'id', 'tr'];
función asíncrona generarMultilingüe(youtubeUrl, focusKeywords = {}) {
solicitudes constantes = SUPPORTED_LANGUAGES.map(lang =>
generarArtículo(
URL de youtube,
palabras clave de enfoque[lang] || focusKeywords['es'] || '',
idioma
)
);
// Ejecuta los 10 idiomas en paralelo
resultados constantes = await Promise.allSettled (solicitudes);
devolver resultados.reduce((acc, resultado, índice) => {
idioma constante = IDIOMAS_SOPORTADOS[índice];
if (resultado.status === 'cumplido') {
acc[lang] = resultado.valor;
} más {
console.error(`Error para ${lang}:`, resultado.razón);
}
devolución según;
}, {});
}
Esto genera versiones en 10 idiomas de un solo vídeo en aproximadamente 5 a 8 minutos (procesamiento paralelo).
Límites de tasas y presupuesto crediticio
| Plano | Límite de tasa API | Créditos/mes |
|---|---|---|
| Gratis (120 créditos) | 2 solicitudes/min | 120 (una sola vez) |
| Arrancador | 10 solicitudes/min | Por plan |
| Profesional | 30 solicitudes/min | Por plan |
| Agencia | 60 solicitudes/min | Por plan |
Consumo de créditos: cada generación de artículo utiliza entre 10 y 15 créditos, según la duración del vídeo. Un vídeo de 10 minutos utiliza aproximadamente 10 créditos; un vídeo de 60 minutos utiliza aproximadamente 15 créditos.
Recomendación de presupuesto para el procesamiento por lotes: calcule ceil(video_duration_ Minutes / 4) + 10 créditos por video como presupuesto conservador.
Manejo de errores
La API de Vidiome utiliza códigos de estado HTTP estándar:
| Código | Significado | Acción |
|---|---|---|
200 |
Éxito | Respuesta del proceso |
400 |
Solicitud no válida (URL incorrecta, idioma no admitido, etc.) | Corregir parámetros de solicitud |
401 |
Clave API no válida o faltante | Verificar encabezado de autorización |
402 |
Créditos insuficientes | Recargar cuenta o reducir el tamaño del lote |
429 |
Límite de tarifa excedido | Implementar un retroceso exponencial |
500 |
Error del servidor | Reintentar con retroceso exponencial (máximo 3 intentos) |
Preguntas frecuentes
¿La API de Vidiome admite la carga de archivos o solo las URL de YouTube?
La API de Vidiome admite tanto las URL de YouTube como la carga directa de archivos. Para cargar archivos, primero llame a POST /api/v1/files con su archivo de video (MP4, MOV o WebM, hasta 2 GB), reciba un file_id, luego pase ese file_id a POST /api/v1/articles con "type": "file_upload". Esto es útil para procesar videos no alojados en YouTube: grabaciones de seminarios web, videos de Loom, contenido de capacitación interna y videos alojados en Vimeo.### ¿Cómo manejo vídeos largos (más de 60 minutos) a través de la API?
Vidiome procesa videos de hasta 4 horas a través de la API. Para videos de más de 60 minutos, la respuesta de la API es asincrónica de forma predeterminada: recibirá un "id" de trabajo inmediatamente y luego sondeará "GET /api/v1/articles/{id}" cada 15 a 30 segundos hasta que el estado sea "completado". Un vídeo de 90 minutos normalmente se procesa en entre 6 y 9 minutos. La arquitectura de fragmentación de audio de 60 segundos de Vidiome significa que incluso los videos muy largos no tienen problemas de tiempo de espera.
¿Existe una opción de webhook en lugar de realizar una encuesta?
Sí. Vidiome admite devoluciones de llamadas de webhooks para completar el artículo. Agregue un campo "webhook_url" al cuerpo de su solicitud POST que apunte a su punto final, y Vidiome enviará una solicitud "POST con el objeto del artículo completo cuando se complete el procesamiento, eliminando la necesidad de realizar un sondeo. La carga útil del webhook es idéntica al formato de respuesta GET /api/v1/articles/{id}.
Próximos pasos
Vidiome
Turn your videos into SEO traffic machines
Generar mi primer artículoSin tarjeta bancaria · 120 créditos gratuitos