Cara Menggunakan API Vidiome untuk Mengotomatiskan Pembuatan Artikel dari Video

    ·10 menit membaca·Oleh Vidiome Team
    Vidiome APIArticle AutomationDeveloper TutorialContent Automation

    Tutorial teknis untuk pengembang: gunakan titik akhir POST /api/v1/articles Vidiome untuk mengotomatiskan pembuatan video-ke-artikel dalam skala besar. Contoh Curl + Node.js disertakan.

    REST API publik Vidiome memungkinkan pengembang mengotomatiskan alur video-ke-artikel lengkap secara terprogram — tidak perlu browser, tidak perlu unggahan manual. Satu permintaan POST /api/v1/articles akan menampilkan artikel blog terstruktur dan dioptimalkan untuk SEO dari URL YouTube atau file video apa pun.

    Tutorial ini mencakup spesifikasi titik akhir, autentikasi, contoh kode di curl dan Node.js, pola kasus penggunaan untuk pemrosesan batch dan integrasi CMS, serta diagram alur kerja otomatisasi.

    Untuk Siapa Tutorial Ini

    • Pengembang SaaS membuat fitur otomatisasi konten untuk klien atau alat internal
    • Agen konten memproses 20+ video per minggu dan perlu menghilangkan penggunaan Vidiome secara manual
    • Tim platform mengintegrasikan video-ke-artikel ke dalam CMS atau alur kerja konten yang ada
    • Startup yang memanfaatkan kemampuan Vidiome sebagai lapisan infrastruktur konten

    Jika Anda adalah kreator perorangan dan bukan pengembang, aplikasi web Vidiome adalah jalur yang lebih cepat — tutorial ini khusus untuk penggunaan API terprogram.

    Vidiome

    Turn your videos into SEO traffic machines

    Hasilkan artikel pertama saya

    Tanpa kartu kredit · 120 kredit gratis

    Prasyarat

    • Akun Vidiome dengan setidaknya Paket awal (akses API memerlukan paket berbayar atau uji coba)
    • Kunci API Vidiome Anda (ditemukan di Pengaturan Akun → Kunci API)
    • Keakraban dasar dengan HTTP REST API dan curl atau Node.js

    Vidiome memberikan 120 kredit gratis saat mendaftar — Anda dapat menguji alur kerja aplikasi web sebelum melakukan integrasi API.


    Ikhtisar Titik Akhir: POST /api/v1/articles

    Titik akhir pembuatan artikel Vidiome menerima sumber video dan parameter pembuatan, lalu mengembalikan objek artikel lengkap.

    Permintaan

    POSTING https://vidiome.com/api/v1/articles
    Tipe Konten: application/json
    Otorisasi: Pembawa YOUR_API_KEY
    

    Permintaan isi

    {
      "sumber": {
        "ketik": "youtube_url",
        "url": "https://www.youtube.com/watch?v=XXXXXXXXXXX"
      },
      "generasi": {
        "bahasa": "id",
        "focus_keyword": "cara mengonversi video YouTube ke postingan blog",
        "output_format": "penurunan harga"
      }
    }
    

    objek sumber

    Bidang Ketik Diperlukan Deskripsi
    ketik tali Ya "youtube_url" atau "file_upload"
    url tali Diperlukan jika mengetik = youtube_url URL video YouTube lengkap
    file_id tali Diperlukan jika type = file_upload" ID file dari unggahan /api/v1/files sebelumnya

    objek generasi

    Bidang Ketik Diperlukan Deskripsi
    bahasa tali Ya kode ISO 639-1. Didukung: en, fr, es, pt, de, ru, hi, uk, id, tr
    kata kunci_fokus tali Tidak Targetkan kata kunci SEO — meningkatkan penyelarasan H1 dan meta
    format_keluaran tali Tidak "penurunan harga" (default) atau "html"

    Tanggapan

    {
      "id": "seni_01HZXXX",
      "status": "completed",
      "created_at": "15-05-2026T10:23:41Z",
      "waktu_pemrosesan_detik": 187,
      "kredit_digunakan": 12,
      "artikel": {
        "title": "Cara Mengonversi Video YouTube menjadi Postingan Blog dalam 5 Menit",
        "meta_description": "Vidiome mengonversi URL YouTube apa pun menjadi postingan blog SEO terstruktur dalam waktu kurang dari 5 menit. Tutorial langkah demi langkah dengan transkripsi Whisper dengan akurasi 95%+.",
        "content": "# Cara Mengonversi Video YouTube...\n\n## Yang Anda Butuhkan\n...",
        "jumlah_kata": 1247,
        "bahasa": "id",
        "focus_keyword": "cara mengonversi video YouTube ke postingan blog"
      },
      "transkrip": {
        "text": "Hai semuanya, hari ini saya ingin menunjukkan kepada kalian...",
        "segmen": [
          { "start": 0.0, "end": 4.2, "text": "Hai semuanya, hari ini saya ingin menunjukkannya kepada Anda" },
          ...
        ]
      }
    }
    

    Nilai status

    Status Arti
    antrian Permintaan diterima, pemrosesan belum dimulai
    pemrosesan Transkripsi dan/atau pembuatan artikel sedang berlangsung
    selesai Artikel siap di badan tanggapan
    gagal Kesalahan pemrosesan — lihat kolom kesalahan

    Untuk polling asinkron, gunakan GET /api/v1/articles/{id} dengan id yang dikembalikan.


    Contoh Kode

    keriting

    curl -X POST https://vidiome.com/api/v1/articles \
      -H "Jenis Konten: aplikasi/json" \
      -H "Otorisasi: Pembawa YOUR_API_KEY" \
      -d '{
        "sumber": {
          "ketik": "youtube_url",
          "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
        },
        "generasi": {
          "bahasa": "id",
          "focus_keyword": "strategi penggunaan ulang konten",
          "output_format": "penurunan harga"
        }
      }'
    

    Jajak pendapat untuk penyelesaian:``` pesta

    Ganti art_01HZXXX dengan id dari respon awal

    curl -H "Otorisasi: Pembawa YOUR_API_KEY"
    https://vidiome.com/api/v1/articles/art_01HZXXX

    
    ### Node.js (ambil)
    
    ``` javascript
    const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
    
    fungsi async generateArticle(youtubeUrl, focusKeyword, bahasa = 'en') {
      // Langkah 1: Kirim permintaan pembuatan artikel
      const respon = menunggu pengambilan('https://vidiome.com/api/v1/articles', {
        metode: 'POSTING',
        tajuk: {
          'Jenis Konten': 'aplikasi/json',
          'Otorisasi': `Pembawa ${VIDIOME_API_KEY}`,
        },
        isi: JSON.stringify({
          sumber: {
            ketik: 'youtube_url',
            url: youtubeUrl,
          },
          generasi: {
            bahasa,
            fokus_kata kunci: kata kunci fokus,
            output_format: 'penurunan harga',
          },
        }),
      });
    
      pekerjaan const = menunggu respon.json();
    
      if (!response.ok) {
        melempar Kesalahan baru(`Kesalahan API Vidiome: ${job.message}`);
      }
    
      // Langkah 2: Polling hingga selesai
      return menunggu pollUntilComplete(pekerjaan.id);
    }
    
    async function pollUntilComplete(articleId, maxAttempts = 30, intervalMs = 10000) {
      for (biarkan upaya = 0; upaya < maxAttempts; upaya++) {
        menunggu Janji baru(resolve => setTimeout(resolve, intervalMs));
    
        const res = menunggu pengambilan(`https://vidiome.com/api/v1/articles/${articleId}`, {
          header: { 'Otorisasi': `Pembawa ${VIDIOME_API_KEY}` },
        });
    
        artikel const = menunggu res.json();
    
        if (artikel.status === 'selesai') {
          artikel pengembalian;
        }
    
        if (artikel.status === 'gagal') {
          throw new Error(`Pembuatan artikel gagal: ${article.error}`);
        }
    
        console.log(`[Vidiome] Status: ${article.status} (mencoba ${mencoba + 1}/${maxAttempts})`);
      }
    
      throw new Error('Vidiome: batas waktu pemungutan suara terlampaui');
    }
    
    // Penggunaan
    hasil const = menunggu generateArticle(
      'https://www.youtube.com/watch?v=XXXXXXXXXXX',
      'cara menggunakan kembali konten video'
    );
    
    console.log(hasil.artikel.judul);
    console.log(`Jumlah kata: ${result.article.word_count}`);
    console.log(`Kredit yang digunakan: ${result.credits_used}`);
    // Menulis ke file, mendorong ke CMS, dll.
    

    Diagram Alur Kerja Otomatisasi

    Berikut adalah arsitektur otomatisasi penuh untuk pipeline pemrosesan batch biasa menggunakan Vidiome:

    ┌─────────────────────────────────────────────────────.
    │ LAPISAN SUMBER VIDEO │
    │ Daftar putar YouTube / umpan RSS / perpustakaan video CMS │
    └??
                           │ URL video / referensi file
                           ▼
    ┌─────────────────────────────────────────────────────.
    │ LAPISAN ORKESTRASI │
    │ Pekerjaan cron / pemicu webhook / n8n / Make.com │
    │ - Deduplikasi (lewati URL yang sudah diproses) │
    │ - Pembatasan tarif (menghormati anggaran kredit API) │
    │ - Manajemen antrian │
    └??
                           │ POST /api/v1/articles
                           ▼
    ┌─────────────────────────────────────────────────────.
    │ API VIDIOME │
    │ 1. Transkripsi bisikan (potongan 60 detik, 95%+ mnrt.) │
    │ 2. Pembuatan artikel LLM (struktur + SEO) │
    │ 3. Pengembalian: judul, meta, konten (MD/HTML), transkrip │
    └??
                           │ Objek artikel selesai
                           ▼
    ┌─────────────────────────────────────────────────────.
    │ LAPISAN PASCA PENGOLAHAN │
    │ - Antrean tinjauan manusia (opsional tetapi disarankan) │
    │ - Injeksi tautan internal (tambahkan tautan ke postingan yang ada)│
    │ - Penetapan gambar unggulan │
    │ - Injeksi markup skema (Artikel JSON-LD) │
    └??
                           │ Artikel siap dipublikasikan
                           ▼
    ┌─────────────────────────────────────────────────────.
    │                    CMS / PLATFORM                       │
    │ WordPress (REST API) / Hantu (Admin API) │
    │ Webflow CMS / Contentful / Sanity / Custom DB │
    └─────────────────────────────────────────────────────.
    

    Kasus Penggunaan

    Pemrosesan batch saluran YouTube

    Memproses seluruh katalog belakang saluran YouTube dalam satu kali proses:``` javascript fungsi async processYouTubeChannel(channelVideoUrls, opsi = {}) { konstanta { bahasa = 'en', konkurensi = 3, // permintaan Vidiome paralel maksimal delayMs = 2000, // penundaan antar batch (pembatasan kecepatan) } = pilihan;

    hasil const = [];

    // Memproses dalam kumpulan konkurensi for (misalkan i = 0; i < channelVideoUrls.length; i += konkurensi) { const batch = channelVideoUrls.slice(i, i + konkurensi);

    const batchResults = menunggu Janji.allSettled(
      batch.map(url => generateArticle(url, '', bahasa))
    );
    
    hasil.push(...batchResults);
    console.log(`Memproses ${Math.min(i + konkurensi, channelVideoUrls.length)}/${channelVideoUrls.length} video`);
    
    if (i + konkurensi < channelVideoUrls.length) {
      menunggu Janji baru(resolve => setTimeout(resolve, delayMs));
    }
    

    }

    mengembalikan hasil; }

    
    Saluran dengan 100 video yang diproses dalam 3 permintaan serentak: total sekitar 100 menit (rata-rata 3 menit per video × 100 3 serentak).
    
    ### Integrasi CMS (contoh WordPress)
    
    Setelah Vidiome mengembalikan artikel, dorong langsung ke WordPress melalui REST API:
    
    ``` javascript
    fungsi async terbitkanToWordPress(vidiomeArticle, wpConfig) {
      const { siteUrl, nama pengguna, appPassword } = wpConfig;
      const credential = Buffer.from(`${username}:${appPassword}`).toString('base64');
    
      respons const = menunggu pengambilan(`${siteUrl}/wp-json/wp/v2/posts`, {
        metode: 'POSTING',
        tajuk: {
          'Jenis Konten': 'aplikasi/json',
          'Otorisasi': `${kredensial}` Dasar,
        },
        isi: JSON.stringify({
          judul: videomeArtikel.artikel.judul,
          konten: videomeArticle.article.content, // format HTML direkomendasikan untuk WP
          kutipan: videomeArticle.article.meta_description,
          status: 'draft', // Selalu membuat draf terlebih dahulu untuk ditinjau manusia
        }),
      });
    
      kembali menunggu respon.json();
    }
    

    Kumpulan multibahasa: satu video, 10 bahasa

    Generate the same article in all 10 supported languages simultaneously:

    const SUPPORTED_LANGUAGES = ['en', 'fr', 'es', 'pt', 'de', 'ru', 'hi', 'uk', 'id', 'tr'];
    
    fungsi async generateMultilingual(youtubeUrl, focusKeywords = {}) {
      permintaan const = SUPPORTED_LANGUAGES.map(lang =>
        menghasilkanArtikel(
          youtubeUrl,
          fokusKata Kunci[lang] || fokusKata Kunci['en'] || '',
          bahasa
        )
      );
    
      // Jalankan 10 bahasa secara paralel
      hasil const = menunggu Promise.allSettled(permintaan);
    
      kembalikan hasil.reduce((acc, hasil, indeks) => {
        const lang = SUPPORTED_LANGUAGES[indeks];
        if (hasil.status === 'terpenuhi') {
          acc[lang] = hasil.nilai;
        } lain {
          console.error(`Gagal untuk ${lang}:`, hasil.alasan);
        }
        kembali acc;
      }, {});
    }
    

    Ini menghasilkan 10 versi bahasa dari satu video dalam waktu sekitar 5–8 menit (pemrosesan paralel).


    Batasan Tarif dan Penganggaran Kredit

    Rencana Batas laju API Kredit/bulan
    Gratis (120 sks) 2 kebutuhan/mnt 120 (satu kali)
    Pemula 10 permintaan/mnt Per paket
    Pro 30 permintaan/mnt Per paket
    Agensi 60 kebutuhan/mnt Per paket

    Konsumsi kredit: Setiap pembuatan artikel menggunakan 10–15 kredit bergantung pada durasi video. Video berdurasi 10 menit menggunakan sekitar 10 kredit; video berdurasi 60 menit menggunakan sekitar 15 kredit.

    Rekomendasi anggaran untuk pemrosesan batch: Perkirakan ceil(video_duration_menit / 4) + 10 kredit per video sebagai anggaran konservatif.


    Penanganan Kesalahan

    Vidiome API menggunakan kode status HTTP standar:

    Kode Arti Aksi
    200 Sukses Respon proses
    400 Permintaan tidak valid (URL buruk, bahasa tidak didukung, dll.) Perbaiki parameter permintaan
    401 Kunci API tidak valid atau hilang Periksa header Otorisasi
    402 Kredit tidak mencukupi Isi ulang akun atau kurangi ukuran batch
    429 Batas tarif terlampaui Terapkan backoff eksponensial
    500 Kesalahan server Coba lagi dengan backoff eksponensial (maks 3 percobaan)

    Pertanyaan yang Sering Diajukan

    Apakah API Vidiome mendukung pengunggahan file, atau hanya URL YouTube?

    API Vidiome mendukung URL YouTube dan pengunggahan file langsung. Untuk mengunggah file, pertama-tama panggil POST /api/v1/files dengan file video Anda (MP4, MOV, atau WebM, hingga 2GB), terima file_id, lalu teruskan file_id tersebut ke POST /api/v1/articles dengan "type": "file_upload". Ini berguna untuk memproses video yang tidak dihosting di YouTube — rekaman webinar, video Loom, konten pelatihan internal, dan video yang dihosting Vimeo.### Bagaimana cara menangani video berdurasi panjang (60+ menit) melalui API?

    Vidiome memproses video hingga 4 jam melalui API. Untuk video berdurasi lebih dari 60 menit, respons API bersifat asinkron secara default — Anda akan segera menerima id pekerjaan, lalu melakukan polling GET /api/v1/articles/{id} setiap 15–30 detik hingga statusnya selesai. Video berdurasi 90 menit biasanya diproses dalam 6–9 menit. Vidiome's 60-second audio chunking architecture means even very long videos don't hit timeout issues.

    Apakah ada opsi webhook selain polling?

    Ya. Vidiome mendukung panggilan balik webhook untuk penyelesaian artikel. Tambahkan bidang "webhook_url" ke badan permintaan POST yang menunjuk ke titik akhir Anda, dan Vidiome akan mengirimkan permintaan POST dengan objek artikel lengkap saat pemrosesan selesai — menghilangkan kebutuhan akan polling. Payload webhook identik dengan format respons GET /api/v1/articles/{id}.


    Langkah Selanjutnya

    Vidiome

    Turn your videos into SEO traffic machines

    Hasilkan artikel pertama saya

    Tanpa kartu kredit · 120 kredit gratis