Cara Menggunakan API Vidiome untuk Mengotomatiskan Pembuatan Artikel dari Video
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 sayaTanpa 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 sayaTanpa kartu kredit · 120 kredit gratis