Videodan Makale Oluşturmayı Otomatikleştirmek için Vidiome API'si Nasıl Kullanılır?

    ·8 dk okuma·Yazar Vidiome Team
    Vidiome APIArticle AutomationDeveloper TutorialContent Automation

    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ştur

    Kredi kartı gerekmez · 120 ücretsiz kredi

    Ön Koşullar

    • Ücretli bir plana (Starter, Pro veya Business) sahip bir Vidiome hesabı. Ücretsiz hesaplardan gelen API istekleri 403 ile 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:

    • sections okuma sırasına göre gelir: bir giriş, ana bölümler, ardından bir sonuç. title bö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 / endTime saniye 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 images her 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-After başlığıyla (saniye cinsinden) 429 alı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 creditsUsed ve creditsRemaining değ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

    Vidiome

    Turn your videos into SEO traffic machines

    İlk makalemi oluştur

    Kredi kartı gerekmez · 120 ücretsiz kredi