Cómo utilizar la API de Vidiome para automatizar la generación de artículos a partir de vídeo

    ·11 min de lectura·Por Vidiome Team
    Vidiome APIArticle AutomationDeveloper TutorialContent Automation

    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ículo

    Sin 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 "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 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ículo

    Sin tarjeta bancaria · 120 créditos gratuitos