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 de Vidiome convierte un vídeo de YouTube en un artículo de blog estructurado con una sola solicitud. Envías una URL de YouTube, Vidiome lee la transcripción del vídeo, redacta el artículo con un LLM y te lo devuelve en JSON: un título y una lista de secciones, cada una con su propio título H2, su contenido y sus marcas de tiempo.
Este tutorial cubre la autenticación, el formato de la solicitud y de la respuesta, ejemplos con curl y Node.js, el procesamiento por lotes, la publicación en WordPress y los límites que debes tener en cuenta.
A quién va dirigido este tutorial
- Desarrolladores SaaS que crean funciones de automatización de contenido para clientes o herramientas internas
- Agencias de contenido que procesan muchos vídeos cada semana y quieren eliminar los pasos manuales
- Equipos de plataforma que integran la conversión de vídeo a artículo en un CMS o flujo de contenido existente
Si eres creador y no desarrollador, la aplicación web de Vidiome es el camino más rápido. Además, captura una imagen para cada sección, algo que la API no hace.
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 un plan de pago (Starter, Pro o Business). Las solicitudes a la API desde cuentas gratuitas se rechazan con un
403. - Una clave API, creada en la aplicación en Perfil → Claves API. Las claves empiezan por
vdm_live_. Mantenlas en secreto: cualquiera que tenga la clave puede gastar tus créditos. - Un vídeo de YouTube que tenga transcripción (subtítulos manuales o automáticos). La API trabaja a partir de esa transcripción.
Las cuentas nuevas reciben 120 créditos gratis para probar la aplicación web antes de elegir un plan.
Endpoint: POST /api/v1/articles
Solicitud
POST https://www.vidiome.com/api/v1/articles
Content-Type: application/json
x-api-key: vdm_live_YOUR_KEY
Authorization: Bearer vdm_live_YOUR_KEY también funciona.
Cuerpo de la solicitud
{
"youtubeUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"language": "es"
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
youtubeUrl |
string | Sí | URL completa de un vídeo de YouTube |
language |
string | No | Idioma en el que se redacta el artículo: en, fr, es, pt, de, ru, hi, uk, id o tr. Indícalo siempre: sin él, no se impone ningún idioma |
Esa es toda la solicitud. No hay ningún parámetro de subida de archivos, de formato de salida ni de palabra clave.
Respuesta
La llamada es síncrona: la conexión permanece abierta mientras Vidiome genera el artículo y, después, llega el resultado completo. Cuenta con entre unos segundos y unos minutos según la duración del vídeo.
{
"id": "5b0c9c2e-6f1d-4d8a-9a57-2f1f3c1e8b21",
"title": "Cómo convertir un vídeo en un mes de contenido",
"sections": [
{
"id": "a3f1…",
"title": "Introducción: un vídeo, muchos formatos",
"content": "La mayoría de los creadores publican un vídeo y pasan a otra cosa…\n\n### Por qué la transcripción es solo un punto de partida\n\n…",
"startTime": 0,
"endTime": 74,
"images": []
}
],
"videoUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"videoId": "XXXXXXXXXXX",
"language": "es",
"creditsUsed": 40,
"creditsRemaining": 460,
"createdAt": "2026-09-26T10:23:41.000Z"
}
Algunas cosas que debes saber sobre la respuesta:
sectionsvan en orden de lectura: una introducción, las secciones del cuerpo y una conclusión.titlees el H2 de la sección.contentes texto con líneas###para los subtítulos H3, líneas en blanco entre párrafos,**negrita**y elementos de lista-.startTime/endTimeestán en segundos e indican la parte del vídeo de la que procede cada sección. Resultan útiles para insertar el vídeo en el momento adecuado.imagessiempre está vacío a través de la API. Las capturas de pantalla las toma la aplicación web en el navegador. Para añadirlas, abre el artículo en Vidiome y elígelas allí, o usa tus propias imágenes.- El artículo se guarda en tu cuenta (
id). Aparece en tu panel de Vidiome, donde puedes editarlo.
Ejemplos de código
curl
curl -X POST https://www.vidiome.com/api/v1/articles \
-H "Content-Type: application/json" \
-H "x-api-key: $VIDIOME_API_KEY" \
-d '{
"youtubeUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"language": "es"
}'
Node.js (fetch)
const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
async function generateArticle(youtubeUrl, language = 'es') {
const response = await fetch('https://www.vidiome.com/api/v1/articles', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': VIDIOME_API_KEY,
},
body: JSON.stringify({ youtubeUrl, language }),
// La generación puede tardar unos minutos: que el cliente no se rinda antes.
signal: AbortSignal.timeout(6 * 60 * 1000),
});
const data = await response.json();
if (!response.ok) {
const error = new Error(`Vidiome API ${response.status}: ${data.error}`);
error.status = response.status;
error.retryAfter = Number(response.headers.get('retry-after')) || null;
throw error;
}
return data;
}
// Convierte las secciones en Markdown (o pásalas a tu propio renderizador).
function toMarkdown(article) {
const body = article.sections
.map((section) => `## ${section.title}\n\n${section.content}`)
.join('\n\n');
return `# ${article.title}\n\n${body}\n`;
}
const article = await generateArticle('https://www.youtube.com/watch?v=XXXXXXXXXXX');
console.log(toMarkdown(article));
console.log(`Credits used: ${article.creditsUsed}, left: ${article.creditsRemaining}`);
Flujo de automatización
┌─────────────────────────────────────────────────────────┐
│ ORIGEN DE LOS VÍDEOS │
│ Lista / canal de YouTube / lista de URL │
└──────────────────────┬──────────────────────────────────┘
│ URL de YouTube
▼
┌─────────────────────────────────────────────────────────┐
│ ORQUESTACIÓN │
│ Tarea cron / n8n / Make.com / tu propia cola │
│ - Omitir las URL ya procesadas │
│ - No superar 10 solicitudes por minuto por clave │
│ - Reintentar ante 429 / 502 tras el Retry-After │
└──────────────────────┬──────────────────────────────────┘
│ POST /api/v1/articles
▼
┌─────────────────────────────────────────────────────────┐
│ API DE VIDIOME │
│ 1. Obtener la transcripción del vídeo de YouTube │
│ 2. Redactar el artículo con un LLM │
│ 3. Guardarlo en tu cuenta, devolver título │
│ + secciones │
└──────────────────────┬──────────────────────────────────┘
│ JSON del artículo
▼
┌─────────────────────────────────────────────────────────┐
│ POSTPROCESAMIENTO │
│ - Convertir las secciones a HTML o Markdown │
│ - Revisión humana (recomendada) │
│ - Imágenes, enlaces internos, meta description, schema │
└──────────────────────┬──────────────────────────────────┘
│ Artículo listo para publicar
▼
┌─────────────────────────────────────────────────────────┐
│ CMS / PLATAFORMA │
│ WordPress / Ghost / Webflow / Contentful / Sanity │
└─────────────────────────────────────────────────────────┘
Casos de uso
Procesar un canal de YouTube por lotes
Cada clave API está limitada a 10 solicitudes por minuto. Como cada solicitud permanece abierta hasta que el artículo está listo, basta con unas pocas solicitudes en paralelo:
async function processVideos(urls, { language = 'es', concurrency = 2 } = {}) {
const results = [];
const queue = [...urls];
async function worker() {
while (queue.length > 0) {
const url = queue.shift();
try {
results.push({ url, article: await generateArticle(url, language) });
} catch (error) {
if (error.status === 429 && error.retryAfter) {
await new Promise((r) => setTimeout(r, error.retryAfter * 1000));
queue.push(url); // volver a intentarlo más tarde
} else {
results.push({ url, error: error.message });
}
}
}
}
await Promise.all(Array.from({ length: concurrency }, worker));
return results;
}
Detén el lote cuando recibas un 402: tu saldo de créditos no alcanza para el siguiente vídeo.
Publicar en WordPress
Vidiome devuelve secciones, no HTML, así que primero conviértelas. Una biblioteca de Markdown como marked sirve perfectamente, o puedes mantener la conversión al mínimo:
import { marked } from 'marked';
async function publishToWordPress(article, { siteUrl, username, appPassword }) {
const credentials = Buffer.from(`${username}:${appPassword}`).toString('base64');
const html = marked.parse(
article.sections.map((s) => `## ${s.title}\n\n${s.content}`).join('\n\n')
);
const response = await fetch(`${siteUrl}/wp-json/wp/v2/posts`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${credentials}`,
},
body: JSON.stringify({
title: article.title,
content: html,
status: 'draft', // revisar antes de publicar
}),
});
return response.json();
}
Un vídeo, varios idiomas
Lanza una solicitud por idioma. Cada una es una generación independiente y consume créditos como cualquier otra:
const LANGUAGES = ['en', 'fr', 'es', 'de'];
async function generateInLanguages(youtubeUrl) {
const versions = {};
for (const language of LANGUAGES) {
versions[language] = await generateArticle(youtubeUrl, language);
}
return versions;
}
Límites y créditos
- Límite de frecuencia: 10 solicitudes por minuto por clave API, en todos los planes de pago. Por encima de eso recibes un
429con una cabeceraRetry-After(en segundos). - Duración: cada solicitud puede durar hasta 5 minutos en el lado de Vidiome. Es posible que los vídeos muy largos no quepan en ese tiempo; divide tu flujo o usa la aplicación web para ellos.
- Créditos: la API cuesta lo mismo que la aplicación web, a la tarifa actual de 4 créditos por minuto de vídeo con un mínimo de 20 créditos (un vídeo de 10 minutos consume 40 créditos; uno de 60 minutos, 240). Cada respuesta indica
creditsUsedycreditsRemaining. Consulta los precios para ver los planes y los paquetes de créditos.
Gestión de errores
Los errores se devuelven en JSON con un campo error.
| Estado | error |
Qué hacer |
|---|---|---|
400 |
Invalid request body o invalid-youtube-url |
Comprueba la URL y el código de idioma |
401 |
Missing API key / Invalid or revoked API key |
Comprueba la cabecera x-api-key |
402 |
insufficient-credits (con required y available) |
Recarga créditos o mejora tu plan |
403 |
api_access_requires_paid_plan |
Cámbiate a un plan de pago |
404 |
no-captions |
El vídeo no tiene transcripción; prueba con otro vídeo |
429 |
límite de frecuencia, o transcript_provider_rate_limited |
Espera el tiempo de Retry-After y vuelve a intentarlo |
500 |
article_generation_failed |
Reinténtalo una vez; si sigue fallando, contáctanos |
502 |
transcript_provider_unavailable / llm_provider_error |
Error temporal: vuelve a intentarlo tras una espera |
Preguntas frecuentes
¿Puedo enviar un archivo de vídeo en lugar de una URL de YouTube?
No. La API solo acepta URL de YouTube, y el vídeo necesita una transcripción. Para archivos MP4, MOV o WebM, usa la aplicación web: transcribe el audio y, además, captura una imagen para cada sección.
¿Hay un webhook o un endpoint de estado?
No. La solicitud es síncrona y devuelve el artículo terminado. Si procesas muchos vídeos, coloca las llamadas en tu propia cola de trabajos (una tarea cron, n8n, Make.com, un worker) y guarda los resultados a medida que llegan.
¿Dónde van los artículos generados con la API?
Se guardan en tu cuenta de Vidiome, así que los encontrarás en tu panel. Es la forma más sencilla de añadir capturas de pantalla, corregir un pasaje con la reescritura con IA o exportar el artículo en HTML o Markdown.
Próximos pasos
Explora soluciones relacionadas
Descubre más formas de convertir vídeos en contenido escrito con buen posicionamiento.
Automatiza la conversión de vídeos de YouTube en artículos con la API de Vidiome
Envía una URL de YouTube a la API de Vidiome y recibe el artículo terminado en JSON: un título y secciones. 10 idiomas, planes de pago, 10 solicitudes/min.
Entrega artículos SEO de clientes a partir de vídeo a escala de agencia
Vidiome, plataforma IA de nivel agencia. Entrega artículos SEO desde vídeos de clientes en menos de 5 minutos. 10 idiomas, HTML o Markdown.
Escala el marketing de contenido SaaS con vídeo — en modo automático
Vidiome convierte demos, webinars y tutoriales en artículos SEO automáticamente. Ayuda a equipos SaaS a publicar ~100 artículos/mes y dominar las citas LLM.
Vidiome
Turn your videos into SEO traffic machines
Generar mi primer artículoSin tarjeta bancaria · 120 créditos gratuitos