Videodan Makale Oluşturmayı Otomatikleştirmek için Vidiome API'si Nasıl Kullanılır?
Geliştiriciler için teknik eğitim: Videodan makaleye dönüştürme işlemini geniş ölçekte otomatikleştirmek için Vidiome'un POST /api/v1/articles uç noktasını kullanın. Curl + Node.js örnekleri dahil.
Vidiome'un REST API'si, bir YouTube videosunu tek bir istekle yapılandırılmış bir blog makalesine dönüştürür. Bir YouTube bağlantısı gönderirsiniz; Vidiome videonun transkriptini okur, makaleyi bir LLM ile yazar ve JSON olarak döndürür: bir başlık ve her birinin kendi H2 başlığı, içeriği ve zaman damgaları olan bölümlerin listesi.
Bu eğitim kimlik doğrulamayı, istek ve yanıt biçimini, curl ve Node.js örneklerini, toplu işlemeyi, WordPress'te yayınlamayı ve hesaba katmanız gereken sınırları ele alıyor.
Bu Eğitim Kimler İçin?
- Müşteriler veya iç araçlar için içerik otomasyonu özellikleri geliştiren SaaS geliştiricileri
- Haftada çok sayıda video işleyen ve manuel adımları atlamak isteyen içerik ajansları
- Videodan makaleye dönüşümü mevcut bir CMS'e veya içerik iş akışına bağlayan platform ekipleri
Geliştirici değil de bireysel bir içerik üreticisiyseniz Vidiome web uygulaması daha hızlı yoldur. Ayrıca her bölüm için bir ekran görüntüsü yakalar; API bunu yapmaz.
Vidiome
Turn your videos into SEO traffic machines
İlk makalemi oluşturKredi kartı gerekmez · 120 ücretsiz kredi
Ön Koşullar
- Ücretli bir plana (Starter, Pro veya Business) sahip bir Vidiome hesabı. Ücretsiz hesaplardan gelen API istekleri
403ile reddedilir. - Uygulamada Profil → API Anahtarları bölümünden oluşturulan bir API anahtarı. Anahtarlar
vdm_live_ile başlar. Onları gizli tutun: anahtara sahip olan herkes kredilerinizi harcayabilir. - Transkripti (manuel veya otomatik altyazı) olan bir YouTube videosu. API bu transkript üzerinden çalışır.
Yeni hesaplar, bir plan seçmeden önce web uygulamasını denemek için 120 ücretsiz kredi alır.
Uç Nokta: POST /api/v1/articles
İstek
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 da çalışır.
İstek gövdesi
{
"youtubeUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"language": "en"
}
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
youtubeUrl |
string | Evet | Bir YouTube videosunun tam URL'si |
language |
string | Hayır | Makalenin yazılacağı dil: en, fr, es, pt, de, ru, hi, uk, id veya tr. Açıkça belirtin: belirtilmezse hiçbir dil zorunlu kılınmaz |
İsteğin tamamı bu kadar. Dosya yükleme, çıktı biçimi veya anahtar kelime parametresi yoktur.
Yanıt
Çağrı eşzamanlıdır: Vidiome makaleyi oluştururken bağlantı açık kalır, ardından sonucun tamamı döner. Videonun uzunluğuna göre bu, birkaç saniye ile birkaç dakika arasında sürer.
{
"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"
}
Yanıtla ilgili bilmeniz gerekenler:
sectionsokuma sırasına göre gelir: bir giriş, ana bölümler, ardından bir sonuç.titlebölümün H2 başlığıdır.content, H3 alt başlıkları için###satırları, paragraflar arasında boş satırlar,**kalın**metin ve-liste öğeleri içeren metindir.startTime/endTimesaniye cinsindendir ve her bölümün videonun hangi kısmından geldiğini gösterir. Videoyu doğru anda başlayacak şekilde yerleştirmek için kullanışlıdır.- API üzerinden
imagesher zaman boştur. Ekran görüntüleri web uygulaması tarafından tarayıcıda yakalanır. Eklemek için makaleyi Vidiome'da açıp orada seçin veya kendi görsellerinizi kullanın. - Makale hesabınıza kaydedilir (
id). Vidiome panonuzda görünür ve orada düzenleyebilirsiniz.
Kod Örnekleri
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 }),
// Oluşturma birkaç dakika sürebilir: istemcinin daha önce vazgeçmesine izin vermeyin.
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;
}
// Bölümleri Markdown'a dönüştürün (veya kendi oluşturucunuza verin).
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}`);
Otomasyon İş Akışı
┌─────────────────────────────────────────────────────────┐
│ VİDEO KAYNAĞI KATMANI │
│ YouTube oynatma listesi / kanal / URL listesi │
└──────────────────────┬──────────────────────────────────┘
│ YouTube URL'leri
▼
┌─────────────────────────────────────────────────────────┐
│ ORKESTRASYON KATMANI │
│ Cron job / n8n / Make.com / kendi kuyruğunuz │
│ - Zaten işlenmiş URL'leri atla │
│ - Anahtar başına dakikada 10 isteğin altında kal │
│ - 429 / 502'de Retry-After süresinden sonra yeniden dene│
└──────────────────────┬──────────────────────────────────┘
│ POST /api/v1/articles
▼
┌─────────────────────────────────────────────────────────┐
│ VIDIOME API │
│ 1. YouTube videosunun transkriptini al │
│ 2. Makaleyi bir LLM ile yaz │
│ 3. Hesabına kaydet, başlık + bölümleri döndür │
└──────────────────────┬──────────────────────────────────┘
│ Makale JSON'u
▼
┌─────────────────────────────────────────────────────────┐
│ SON İŞLEME KATMANI │
│ - Bölümleri HTML veya Markdown'a dönüştür │
│ - İnsan incelemesi (önerilir) │
│ - Görseller, iç bağlantılar, meta description, schema │
└──────────────────────┬──────────────────────────────────┘
│ Yayına hazır makale
▼
┌─────────────────────────────────────────────────────────┐
│ CMS / PLATFORM │
│ WordPress / Ghost / Webflow / Contentful / Sanity │
└─────────────────────────────────────────────────────────┘
Kullanım Senaryoları
Bir YouTube kanalını toplu işleme
Her API anahtarı dakikada 10 istekle sınırlıdır. Her istek makalesi hazır olana kadar açık kaldığından, az sayıda paralel istek fazlasıyla yeterlidir:
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); // daha sonra tekrar dene
} else {
results.push({ url, error: error.message });
}
}
}
}
await Promise.all(Array.from({ length: concurrency }, worker));
return results;
}
402 aldığınızda toplu işlemi durdurun: kredi bakiyeniz bir sonraki video için yetersizdir.
WordPress'te yayınlama
Vidiome HTML değil bölümler döndürür, bu yüzden önce onları dönüştürün. marked gibi bir Markdown kütüphanesi bu işi görür ya da dönüşümü en aza indirebilirsiniz:
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', // yayınlamadan önce gözden geçirin
}),
});
return response.json();
}
Tek video, birden fazla dil
Her dil için bir istek gönderin. Her biri ayrı bir oluşturmadır ve diğerleri gibi kredi harcar:
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;
}
Sınırlar ve Krediler
- İstek sınırı: tüm ücretli planlarda API anahtarı başına dakikada 10 istek. Bunu aştığınızda
Retry-Afterbaşlığıyla (saniye cinsinden)429alırsınız. - Süre: her istek Vidiome tarafında en fazla 5 dakika çalışabilir. Çok uzun videolar bu süreye sığmayabilir; iş akışınızı bölün veya bu videolar için web uygulamasını kullanın.
- Krediler: API, web uygulamasıyla aynı şekilde ücretlendirilir; güncel oran video dakikası başına 4 kredi, en az 20 kredidir (10 dakikalık bir video 40 kredi, 60 dakikalık bir video 240 kredi harcar). Her yanıt
creditsUsedvecreditsRemainingdeğerlerini bildirir. Planlar ve kredi paketleri için fiyatlandırma sayfasına bakın.
Hata Yönetimi
Hatalar, error alanı içeren JSON olarak döner.
| Durum | error |
Ne yapmalı |
|---|---|---|
400 |
Invalid request body veya invalid-youtube-url |
URL'yi ve dil kodunu kontrol edin |
401 |
Missing API key / Invalid or revoked API key |
x-api-key başlığını kontrol edin |
402 |
insufficient-credits (required ve available ile) |
Kredi yükleyin veya planınızı yükseltin |
403 |
api_access_requires_paid_plan |
Ücretli bir plana geçin |
404 |
no-captions |
Videonun transkripti yok; başka bir video deneyin |
429 |
istek sınırı veya transcript_provider_rate_limited |
Retry-After süresini bekleyip yeniden deneyin |
500 |
article_generation_failed |
Bir kez yeniden deneyin; hata sürerse bizimle iletişime geçin |
502 |
transcript_provider_unavailable / llm_provider_error |
Geçici: bir süre bekleyip yeniden deneyin |
Sıkça Sorulan Sorular
YouTube URL'si yerine bir video dosyası gönderebilir miyim?
Hayır. API yalnızca YouTube URL'lerini kabul eder ve videonun bir transkripti olmalıdır. MP4, MOV veya WebM dosyaları için web uygulamasını kullanın: sesi yazıya döker ve ayrıca her bölüm için bir ekran görüntüsü yakalar.
Webhook veya durum uç noktası var mı?
Hayır. İstek eşzamanlıdır ve bitmiş makaleyi döndürür. Çok sayıda video işliyorsanız çağrıları kendi iş kuyruğunuza (cron job, n8n, Make.com, bir worker) koyun ve sonuçları geldikçe saklayın.
API ile oluşturulan makaleler nereye gider?
Vidiome hesabınıza kaydedilir, dolayısıyla onları panonuzda bulursunuz. Ekran görüntüsü eklemenin, bir pasajı yapay zekâ ile yeniden yazmanın veya makaleyi HTML ya da Markdown olarak dışa aktarmanın en kolay yolu budur.
Sonraki Adımlar
İlgili çözümleri keşfedin
Videoları üst sıralarda yer alan yazılı içeriklere dönüştürmenin diğer yollarını keşfedin.
YouTube videolarını Vidiome API ile otomatik olarak makaleye dönüştürün
Vidiome API'ye bir YouTube URL'si gönderin, bitmiş makaleyi JSON olarak alın: başlık ve bölümler. 10 dil, ücretli planlar, dakikada 10 istek.
Ajans ölçeğinde videodan müşteri SEO makaleleri sunun
Vidiome, ajans düzeyi videodan makaleye platformudur. Müşteri videolarını 5 dakikada SEO blog makalesine dönüştürün. 10 dil, HTML/Markdown dışa aktarımı.
SaaS içerik pazarlamasını video ile ölçeklendirin — otomatik
Vidiome, SaaS ekiplerinin demoları ve web seminerlerini SEO makalelerine dönüştürmesine yardımcı olur — ayda ~100 makale, LLM alıntıları dahil.
Vidiome
Turn your videos into SEO traffic machines
İlk makalemi oluşturKredi kartı gerekmez · 120 ücretsiz kredi