Як використовувати API Vidiome для автоматизації створення статей із відео
Технічний посібник для розробників: використовуйте кінцеву точку POST /api/v1/articles від Vidiome для автоматизації генерації відео до статті в масштабі. Включено приклади Curl + Node.js.
Загальнодоступний API REST від Vidiome дозволяє розробникам автоматизувати повний конвеєр від відео до статті програмним шляхом — не потрібен браузер і завантаження вручну. Один запит POST /api/v1/articles повертає структуровану, оптимізовану для SEO статтю блогу з будь-якої URL-адреси або відеофайлу YouTube.
Цей підручник охоплює специфікацію кінцевої точки, автентифікацію, приклади коду в curl і Node.js, шаблони випадків використання для пакетної обробки та інтеграції CMS, а також діаграму робочого процесу автоматизації.
Для кого цей підручник
- SaaS-розробники створюють функції автоматизації контенту для клієнтів або внутрішніх інструментів
- Контент-агентства обробляють понад 20 відео на тиждень і потребують усунення ручного використання Vidiome
- Команди платформи, які інтегрують відео в статтю в існуючу CMS або робочий процес контенту
- Стартапи, які створюють можливості Vidiome як рівня інфраструктури контенту
Якщо ви окремий творець, а не розробник, веб-програма Vidiome є швидшим шляхом — цей посібник спеціально для програмного використання API.
Vidiome
Turn your videos into SEO traffic machines
Згенерувати першу статтюБез банківської картки · 120 безкоштовних кредитів
Передумови
- Обліковий запис Vidiome із принаймні планом Starter (для доступу до API потрібен платний або пробний план)
- Ваш ключ API Vidiome (знаходиться в Налаштуваннях облікового запису → Ключі API)
- Базове знайомство з HTTP REST API та curl або Node.js
Vidiome надає 120 безкоштовних кредитів під час реєстрації — ви можете протестувати робочий процес веб-програми, перш ніж інтегрувати API.
Огляд кінцевої точки: POST /api/v1/articles
Кінцева точка генерації статті Vidiome приймає джерело відео та параметри генерації, а потім повертає повний об’єкт статті.
Запит
ПУБЛІКУВАТИ https://vidiome.com/api/v1/articles
Тип вмісту: додаток/json
Авторизація: носій YOUR_API_KEY
Тіло запиту
{
"джерело": {
"type": "youtube_url",
"url": "https://www.youtube.com/watch?v=XXXXXXXXXXX"
},
"генерація": {
"мова": "uk",
"focus_keyword": "як перетворити відео YouTube на допис у блозі",
"вихідний_формат": "уцінка"
}
}
об'єкт джерело
| Поле | Тип | Необхідно | Опис |
|---|---|---|---|
тип |
рядок | Так | "youtube_url" або "file_upload" |
url |
рядок | Обов’язковий, якщо type = youtube_url |
Повна URL-адреса відео YouTube |
id_file |
рядок | Необхідно, якщо type = file_upload" |
Ідентифікатор файлу з попереднього завантаження /api/v1/files |
об'єкт generation
| Поле | Тип | Необхідно | Опис |
|---|---|---|---|
мова |
рядок | Так | Код ISO 639-1. Підтримується: en, fr, es, pt, de, ru, hi, uk, id, tr |
focus_keyword |
рядок | Ні | Цільове ключове слово SEO — покращує H1 і мета вирівнювання |
вихідний_формат |
рядок | Ні | "markdown" (за замовчуванням) або "html" |
Відповідь
{
"id": "art_01HZXXX",
"status": "завершено",
"created_at": "2026-05-15T10:23:41Z",
"processing_time_seconds": 187,
"credits_used": 12,
"стаття": {
"title": "Як перетворити відео YouTube на публікацію в блозі за 5 хвилин",
"meta_description": "Vidiome перетворює будь-яку URL-адресу YouTube на структуровану публікацію блогу SEO менш ніж за 5 хвилин. Покроковий посібник із транскрипцією Whisper із точністю 95%+.",
"content": "# Як конвертувати відео YouTube...\n\n## Що вам знадобиться\n...",
"word_count": 1247,
"мова": "uk",
"focus_keyword": "як перетворити відео YouTube на публікацію блогу"
},
"транскрипт": {
"text": "Всім привіт, сьогодні я хочу показати вам...",
"сегменти": [
{ "start": 0.0, "end": 4.2, "text": "Всім привіт, сьогодні я хочу вам показати" },
...
]
}
}
Значення стану
| Статус | Значення |
|---|---|
у черзі |
Запит прийнято, обробку не розпочато |
обробка |
Виконується транскрипція та/або створення статті |
завершено |
Стаття готова у відповідь тіло |
не вдалося |
Помилка обробки — дивіться поле помилка |
Для асинхронного опитування використовуйте GET /api/v1/articles/{id} з повернутим id.
Приклади коду
завиток
curl -X POST https://vidiome.com/api/v1/articles \
-H "Тип вмісту: додаток/json" \
-H "Авторизація: носій YOUR_API_KEY" \
-d '{
"джерело": {
"type": "youtube_url",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"генерація": {
"мова": "uk",
"focus_keyword": "стратегія перепрофілювання вмісту",
"вихідний_формат": "уцінка"
}
}'
Опитування для заповнення:```баш
Замініть art_01HZXXX ідентифікатором із початкової відповіді
curl -H "Авторизація: носій YOUR_API_KEY"
https://vidiome.com/api/v1/articles/art_01HZXXX
### Node.js (вибірка)
```javascript
const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
async function generateArticle(youtubeUrl, focusKeyword, language = 'en') {
// Крок 1: Надішліть запит на створення статті
const response = await fetch('https://vidiome.com/api/v1/articles', {
метод: 'POST',
заголовки: {
'Content-Type': 'application/json',
'Авторизація': `Носій ${VIDIOME_API_KEY}`,
},
тіло: JSON.stringify({
джерело: {
тип: 'youtube_url',
url: youtubeUrl,
},
покоління: {
мова,
focus_keyword: фокусне ключове слово,
output_format: 'уцінка',
},
}),
});
const job = await response.json();
if (!response.ok) {
throw new Error(`Помилка API Vidiome: ${job.message}`);
}
// Крок 2: опитування до завершення
return await pollUntilComplete(job.id);
}
асинхронна функція pollUntilComplete(articleId, maxAttempts = 30, intervalMs = 10000) {
для (нехай спроба = 0; спроба < maxAttempts; спроба++) {
await new Promise(resolve => setTimeout(resolve, intervalMs));
const res = await fetch(`https://vidiome.com/api/v1/articles/${articleId}`, {
headers: { 'Authorization': `Bearer ${VIDIOME_API_KEY}` },
});
const article = очікування res.json();
if (article.status === 'completed') {
повернути статтю;
}
if (article.status === 'failed') {
throw new Error(`Помилка створення статті: ${article.error}`);
}
console.log(`[Vidiome] Статус: ${article.status} (спроба ${attempt + 1}/${maxAttempts})`);
}
throw new Error('Vidiome: час очікування опитування перевищено');
}
// Використання
const result = await generateArticle(
'https://www.youtube.com/watch?v=XXXXXXXXXXX',
"як перепрофілювати відеовміст"
);
console.log(result.article.title);
console.log(`Кількість слів: ${result.article.word_count}`);
console.log(`Використані кредити: ${result.credits_used}`);
// Запис у файл, надсилання в CMS тощо.
Схема робочого процесу автоматизації
Ось повна архітектура автоматизації для типового конвеєра пакетної обробки за допомогою Vidiome:
┌────────────────────────────────────────────────────────────┐
│ РІВ ДЖЕРЕЛА ВІДЕО │
│ Список відтворення YouTube / RSS-канал / відеотека CMS │
└───────────────────────┬─────────────────────────────────────┘
│ URL-адреси відео/посилання на файли
▼
┌────────────────────────────────────────────────────────────┐
│ РІВ ОРКЕСТРОВКИ │
│ Робота Cron / тригер webhook / n8n / Make.com │
│ - Дедуплікація (пропуск уже оброблених URL-адрес) │
│ - Обмеження швидкості (дотримуйтеся бюджету кредитів API) │
│ - Керування чергою │
└───────────────────────┬─────────────────────────────────────┘
│ ОПУБЛІКУВАТИ /api/v1/articles
▼
┌────────────────────────────────────────────────────────────┐
│ API VIDIOME │
│ 1. Транскрипція пошепки (60-секундні фрагменти, 95%+ відповідність) │
│ 2. Генерація LLM статті (структура + SEO) │
│ 3. Повернення: заголовок, мета, вміст (MD/HTML), стенограма │
└───────────────────────┬─────────────────────────────────────┘
│ Завершений об’єкт статті
▼
┌────────────────────────────────────────────────────────────┐
│ ШАР ПІСЛЯ ОБРОБКИ │
│ - Черга перевірки людиною (необов'язково, але рекомендовано) │
│ - Ін'єкція внутрішніх посилань (додавання посилань на наявні публікації)│
│ - Призначення обраного зображення │
│ - Ін'єкція розмітки схеми (стаття JSON-LD) │
└───────────────────────┬─────────────────────────────────────┘
│ Опублікувати готову статтю
▼
┌────────────────────────────────────────────────────────────┐
│ CMS / ПЛАТФОРМА │
│ WordPress (REST API) / Ghost (Admin API) │
│ Webflow CMS / Contentful / Sanity / Custom DB │
└────────────────────────────────────────────────────────────┘
Випадки використання
Пакетна обробка каналу YouTube
Обробка всього попереднього каталогу каналу YouTube за один запуск:```javascript асинхронна функція processYouTubeChannel(channelVideoUrls, options = {}) { const { мова = 'en', concurrency = 3, // максимальна кількість паралельних запитів Vidiome delayMs = 2000, // затримка між партіями (обмеження швидкості) } = параметри;
результати const = [];
// Обробляти пакетами паралелізму
for (let i = 0; i < channelVideoUrls.length; i += concurrency) {
const batch = channelVideoUrls.slice(i, i + concurrency);
const batchResults = await Promise.allSettled(
batch.map(url => generateArticle(url, '', мова))
);
results.push(...batchResults);
console.log(`Опрацьовані ${Math.min(i + concurrency, channelVideoUrls.length)}/${channelVideoUrls.length} відео`);
if (i + concurrency < channelVideoUrls.length) {
await new Promise(resolve => setTimeout(resolve, delayMs));
}
}
повертати результати; }
Канал із 100 відео, обробленими за 3 одночасними запитами: приблизно 100 хвилин загалом (у середньому 3 хвилини на відео × 100 ÷ 3 одночасних).
### Інтеграція CMS (приклад WordPress)
Після того, як Vidiome поверне статтю, надішліть її безпосередньо в WordPress через REST API:
```javascript
асинхронна функція publishToWordPress(vidiomeArticle, wpConfig) {
const { URL-адреса сайту, ім’я користувача, пароль програми } = wpConfig;
const credentials = Buffer.from(`${username}:${appPassword}`).toString('base64');
const response = await fetch(`${siteUrl}/wp-json/wp/v2/posts`, {
метод: 'POST',
заголовки: {
'Content-Type': 'application/json',
'Авторизація': `Basic ${credentials}`,
},
тіло: JSON.stringify({
назва: vidiomeArticle.article.title,
content: vidiomeArticle.article.content, // формат HTML, рекомендований для WP
витяг: vidiomeArticle.article.meta_description,
status: 'draft', // Завжди спочатку створюйте чернетку для перегляду людиною
}),
});
return await response.json();
}
Багатомовний пакет: одне відео, 10 мов
Створіть ту саму статтю всіма 10 підтримуваними мовами одночасно:
const SUPPORTED_LANGUAGES = ['en', 'fr', 'es', 'pt', 'de', 'ru', 'hi', 'uk', 'id', 'tr'];
асинхронна функція generateMultilingual(youtubeUrl, focusKeywords = {}) {
const requests = SUPPORTED_LANGUAGES.map(lang =>
generateArticle(
youtubeUrl,
focusKeywords[мова] || focusKeywords['en'] || '',
мова
)
);
// Запуск усіх 10 мов паралельно
const results = await Promise.allSettled(requests);
return results.reduce((acc, result, index) => {
const lang = SUPPORTED_LANGUAGES[індекс];
if (result.status === 'виконано') {
acc[lang] = result.value;
} ще {
console.error(`Помилка для ${lang}:`, result.reason);
}
повернути акс;
}, {});
}
Це генерує 10 мовних версій одного відео приблизно за 5–8 хвилин (паралельна обробка).
Обмеження ставок і кредитний бюджет
| План | Обмеження швидкості API | Кредити/місяць |
|---|---|---|
| Безкоштовно (120 кредитів) | 2 вимоги/хв | 120 (одноразово) |
| Стартер | 10 вимог/хв | За планом |
| Pro | 30 вимог/хв | За планом |
| Агентство | 60 вимог/хв | За планом |
Споживання кредитів: кожне покоління статті використовує 10–15 кредитів залежно від тривалості відео. 10-хвилинне відео використовує приблизно 10 кредитів; 60-хвилинне відео використовує приблизно 15 кредитів.
Рекомендований бюджет для пакетної обробки: оцініть ceil(video_duration_minutes / 4) + 10 кредитів на відео як консервативний бюджет.
Обробка помилок
API Vidiome використовує стандартні коди стану HTTP:
| Код | Значення | Дія |
|---|---|---|
200 |
Успіх | Реакція процесу |
400 |
Недійсний запит (неправильна URL-адреса, непідтримувана мова тощо) | Виправити параметри запиту |
401 |
Недійсний або відсутній ключ API | Перевірте заголовок авторизації |
402 |
Недостатньо кредитів | Поповнити рахунок або зменшити розмір партії |
429 |
Ліміт швидкості перевищено | Реалізувати експоненціальне відставання |
500 |
Помилка сервера | Повторити з експоненційною відстрочкою (макс. 3 спроби) |
Часті запитання
Чи підтримує API Vidiome завантаження файлів чи лише URL-адреси YouTube?
API Vidiome підтримує URL-адреси YouTube і пряме завантаження файлів. Для завантаження файлів спочатку викличте POST /api/v1/files з вашим відеофайлом (MP4, MOV або WebM, до 2 ГБ), отримайте file_id, а потім передайте цей file_id до POST /api/v1/articles з "type": "file_upload". Це корисно для обробки відео, не розміщених на YouTube — записів вебінарів, відео Loom, внутрішнього навчального вмісту та відео, розміщених на Vimeo.### Як обробляти довгі відео (60+ хвилин) через API?
Vidiome обробляє відео тривалістю до 4 годин через API. Для відео понад 60 хвилин відповідь API асинхронна за замовчуванням — ви негайно отримаєте id завдання, а потім опитуєте GET /api/v1/articles/{id} кожні 15–30 секунд, доки статус не буде completed. 90-хвилинне відео зазвичай обробляється за 6–9 хвилин. 60-секундна архітектура аудіо у Vidiome означає, що навіть дуже довгі відео не стикаються з проблемами тайм-ауту.
Чи є опція webhook замість опитування?
так Vidiome підтримує зворотні виклики webhook для завершення статті. Додайте поле «webhook_url» до тіла запиту POST, яке вказує на вашу кінцеву точку, і Vidiome надішле запит «POST» із повним об’єктом статті після завершення обробки — усуваючи потребу в опитуванні. Корисне навантаження вебхука ідентичне формату відповіді GET /api/v1/articles/{id}.
Наступні кроки
Vidiome
Turn your videos into SEO traffic machines
Згенерувати першу статтюБез банківської картки · 120 безкоштовних кредитів