Как использовать API Vidiome для автоматизации создания статей из видео

    ·8 мин чтения·Автор Vidiome Team
    Vidiome APIArticle AutomationDeveloper TutorialContent Automation

    Техническое руководство для разработчиков: используйте конечную точку POST /api/v1/articles Vidiome для автоматизации создания видео в статье в большом масштабе. Включены примеры Curl + Node.js.

    REST API Vidiome превращает видео на YouTube в структурированную статью для блога одним запросом. Вы отправляете ссылку на YouTube, Vidiome читает расшифровку видео, пишет статью с помощью LLM и возвращает её в формате JSON: заголовок и список разделов, у каждого из которых есть свой заголовок H2, текст и временные метки.

    В этом руководстве разобраны аутентификация, формат запроса и ответа, примеры на curl и Node.js, пакетная обработка, публикация в WordPress и ограничения, которые нужно учитывать.

    Для кого это руководство

    • Разработчики SaaS, которые создают функции автоматизации контента для клиентов или внутренних инструментов
    • Контент-агентства, обрабатывающие много видео в неделю и желающие избавиться от ручных шагов
    • Платформенные команды, встраивающие преобразование видео в статьи в существующую CMS или контентный процесс

    Если вы автор контента, а не разработчик, веб-приложение Vidiome — более быстрый путь. Кроме того, оно делает скриншот для каждого раздела, чего API не делает.

    Vidiome

    Turn your videos into SEO traffic machines

    Сгенерировать первую статью

    Кредитная карта не требуется · 120 бесплатных кредитов

    Что понадобится

    • Аккаунт Vidiome на платном тарифе (Starter, Pro или Business). Запросы к API с бесплатных аккаунтов отклоняются с кодом 403.
    • API-ключ, созданный в приложении в разделе Профиль → API-ключи. Ключи начинаются с vdm_live_. Храните их в секрете: любой, у кого есть ключ, может тратить ваши кредиты.
    • Видео на YouTube с расшифровкой (ручными или автоматическими субтитрами). API работает именно с этой расшифровкой.

    Новые аккаунты получают 120 бесплатных кредитов, чтобы попробовать веб-приложение до выбора тарифа.


    Эндпоинт: POST /api/v1/articles

    Запрос

    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 тоже работает.

    Тело запроса

    {
      "youtubeUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
      "language": "en"
    }
    
    Поле Тип Обязательно Описание
    youtubeUrl string Да Полная ссылка на видео YouTube
    language string Нет Язык, на котором пишется статья: en, fr, es, pt, de, ru, hi, uk, id или tr. Указывайте его явно: без него язык не задаётся

    Это весь запрос. Параметров для загрузки файла, формата вывода или ключевого слова нет.

    Ответ

    Вызов синхронный: соединение остаётся открытым, пока Vidiome генерирует статью, после чего возвращается полный результат. В зависимости от длины видео это занимает от нескольких секунд до нескольких минут.

    {
      "id": "5b0c9c2e-6f1d-4d8a-9a57-2f1f3c1e8b21",
      "title": "How to Repurpose One Video into a Month of Content",
      "sections": [
        {
          "id": "a3f1…",
          "title": "Introduction: one video, many formats",
          "content": "Most creators publish a video and move on…\n\n### Why the transcript is only a starting point\n\n…",
          "startTime": 0,
          "endTime": 74,
          "images": []
        }
      ],
      "videoUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
      "videoId": "XXXXXXXXXXX",
      "language": "en",
      "creditsUsed": 40,
      "creditsRemaining": 460,
      "createdAt": "2026-09-26T10:23:41.000Z"
    }
    

    Что нужно знать об ответе:

    • sections идут в порядке чтения: введение, основные разделы, затем заключение. title — это заголовок H2 раздела. content — текст со строками ### для подзаголовков H3, пустыми строками между абзацами, **жирным** текстом и пунктами списка - .
    • startTime / endTime указаны в секундах и показывают, из какой части видео взят каждый раздел. Это удобно, чтобы встроить видео с нужного момента.
    • images через API всегда пустой. Скриншоты делает веб-приложение прямо в браузере. Чтобы добавить их, откройте статью в Vidiome и выберите их там или используйте собственные изображения.
    • Статья сохраняется в вашем аккаунте (id). Она появляется в панели управления Vidiome, где её можно отредактировать.

    Примеры кода

    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": "en"
      }'
    

    Node.js (fetch)

    const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
    
    async function generateArticle(youtubeUrl, language = 'en') {
      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 }),
        // Генерация может занять несколько минут: не давайте клиенту сдаться раньше.
        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;
    }
    
    // Превращаем разделы в Markdown (или передаём их своему рендереру).
    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}`);
    

    Процесс автоматизации

    ┌─────────────────────────────────────────────────────────┐
    │                  ИСТОЧНИК ВИДЕО                          │
    │  Плейлист / канал YouTube / список ссылок                │
    └──────────────────────┬──────────────────────────────────┘
                           │  Ссылки YouTube
                           ▼
    ┌─────────────────────────────────────────────────────────┐
    │                  ОРКЕСТРАЦИЯ                             │
    │  Cron job / n8n / Make.com / ваша собственная очередь    │
    │  - Пропускать уже обработанные ссылки                    │
    │  - Не больше 10 запросов в минуту на ключ                │
    │  - Повтор при 429 / 502 после задержки Retry-After       │
    └──────────────────────┬──────────────────────────────────┘
                           │  POST /api/v1/articles
                           ▼
    ┌─────────────────────────────────────────────────────────┐
    │                     VIDIOME API                          │
    │  1. Получение расшифровки видео YouTube                  │
    │  2. Написание статьи с помощью LLM                       │
    │  3. Сохранение в аккаунте, возврат заголовка и разделов  │
    └──────────────────────┬──────────────────────────────────┘
                           │  JSON статьи
                           ▼
    ┌─────────────────────────────────────────────────────────┐
    │                  ПОСТОБРАБОТКА                           │
    │  - Преобразование разделов в HTML или Markdown           │
    │  - Проверка человеком (рекомендуется)                    │
    │  - Изображения, внутренние ссылки, meta description,     │
    │    разметка schema                                       │
    └──────────────────────┬──────────────────────────────────┘
                           │  Статья, готовая к публикации
                           ▼
    ┌─────────────────────────────────────────────────────────┐
    │                    CMS / ПЛАТФОРМА                       │
    │  WordPress / Ghost / Webflow / Contentful / Sanity       │
    └─────────────────────────────────────────────────────────┘
    

    Сценарии использования

    Пакетная обработка YouTube-канала

    Каждый API-ключ ограничен 10 запросами в минуту. Поскольку каждый запрос остаётся открытым, пока статья не будет готова, небольшого числа параллельных запросов вполне достаточно:

    async function processVideos(urls, { language = 'en', 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); // повторим позже
            } else {
              results.push({ url, error: error.message });
            }
          }
        }
      }
    
      await Promise.all(Array.from({ length: concurrency }, worker));
      return results;
    }
    

    Остановите пакет, если получили 402: на балансе недостаточно кредитов для следующего видео.

    Публикация в WordPress

    Vidiome возвращает разделы, а не HTML, поэтому сначала их нужно преобразовать. С этим справится Markdown-библиотека, например marked, или можно ограничиться минимальным преобразованием:

    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', // проверьте перед публикацией
        }),
      });
    
      return response.json();
    }
    

    Одно видео, несколько языков

    Отправляйте по одному запросу на каждый язык. Каждый из них — отдельная генерация и расходует кредиты как любая другая:

    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;
    }
    

    Ограничения и кредиты

    • Лимит запросов: 10 запросов в минуту на API-ключ на любом платном тарифе. При превышении вы получите 429 с заголовком Retry-After (в секундах).
    • Длительность: каждый запрос может выполняться на стороне Vidiome до 5 минут. Очень длинные видео могут не уложиться в это время; разделите процесс или используйте для них веб-приложение.
    • Кредиты: API тарифицируется так же, как веб-приложение, по текущей ставке 4 кредита за минуту видео и минимум 20 кредитов (10-минутное видео расходует 40 кредитов, 60-минутное — 240). В каждом ответе указаны creditsUsed и creditsRemaining. Тарифы и пакеты кредитов — на странице цен.

    Обработка ошибок

    Ошибки возвращаются в формате JSON с полем error.

    Статус error Что делать
    400 Invalid request body или invalid-youtube-url Проверьте ссылку и код языка
    401 Missing API key / Invalid or revoked API key Проверьте заголовок x-api-key
    402 insufficient-credits (с required и available) Пополните кредиты или перейдите на более высокий тариф
    403 api_access_requires_paid_plan Перейдите на платный тариф
    404 no-captions У видео нет расшифровки; попробуйте другое видео
    429 лимит запросов или transcript_provider_rate_limited Дождитесь Retry-After и повторите
    500 article_generation_failed Повторите один раз; если ошибка не исчезает, свяжитесь с нами
    502 transcript_provider_unavailable / llm_provider_error Временная ошибка: повторите с задержкой

    Часто задаваемые вопросы

    Можно ли отправить видеофайл вместо ссылки на YouTube?

    Нет. API принимает только ссылки на YouTube, и у видео должна быть расшифровка. Для файлов MP4, MOV или WebM используйте веб-приложение: оно расшифровывает звук и к тому же делает скриншот для каждого раздела.

    Есть ли вебхук или эндпоинт для проверки статуса?

    Нет. Запрос синхронный и возвращает готовую статью. Если вы обрабатываете много видео, поместите вызовы в собственную очередь задач (cron job, n8n, Make.com, воркер) и сохраняйте результаты по мере их поступления.

    Куда попадают статьи, созданные через API?

    Они сохраняются в вашем аккаунте Vidiome, так что вы найдёте их в панели управления. Это самый простой способ добавить скриншоты, исправить фрагмент с помощью ИИ-переписывания или экспортировать статью в HTML или Markdown.


    Следующие шаги

    Vidiome

    Turn your videos into SEO traffic machines

    Сгенерировать первую статью

    Кредитная карта не требуется · 120 бесплатных кредитов

    Больше статей

    ·14 мин чтения

    Полный контрольный список SEO-поиска AI на 2026 год: 25 действий для ранжирования в ChatGPT, Perplexity и Google

    25 конкретных оптимизаций структуры контента, упоминаний сущностей, JSON-LD, технического SEO и LLMs.txt для ранжирования в ChatGPT, Perplexity, обзорах Google AI и Claude.

    Читать далее →
    ·8 мин чтения

    Как конвертировать видео TikTok в SEO-сообщения в блоге с помощью ИИ

    Видео TikTok не ранжируются в Google, а посты в блогах. Узнайте, как преобразовать контент TikTok в длинные SEO-статьи менее чем за 15 минут с помощью искусственного интеллекта.

    Читать далее →
    ·10 мин чтения

    Copy.ai против Vidiome: что лучше для создания контента блога из видео?

    Copy.ai генерирует контент блога из текстовых подсказок. Vidiome генерирует его прямо из вашего видео. Для перепрофилирования видео разница в конвейерах делает Vidiome более быстрым и точным выбором.

    Читать далее →