So verwenden Sie die API von Vidiome, um die Artikelerstellung aus Videos zu automatisieren
Technisches Tutorial für Entwickler: Verwenden Sie den POST /api/v1/articles-Endpunkt von Vidiome, um die Video-zu-Artikel-Generierung im großen Maßstab zu automatisieren. Curl + Node.js-Beispiele enthalten.
Mit der öffentlichen REST-API von Vidiome können Entwickler die gesamte Video-zu-Artikel-Pipeline programmgesteuert automatisieren – kein Browser erforderlich, keine manuellen Uploads. Eine einzelne „POST /api/v1/articles“-Anfrage gibt einen strukturierten, SEO-optimierten Blog-Artikel von einer beliebigen YouTube-URL oder Videodatei zurück.
Dieses Tutorial behandelt die Endpunktspezifikation, Authentifizierung, Codebeispiele in Curl und Node.js, Anwendungsfallmuster für Stapelverarbeitung und CMS-Integration sowie ein Automatisierungs-Workflow-Diagramm.
Für wen dieses Tutorial gedacht ist
- SaaS-Entwickler, die Content-Automatisierungsfunktionen für Kunden oder interne Tools erstellen
- Content-Agenturen verarbeiten mehr als 20 Videos pro Woche und müssen die manuelle Nutzung von Vidiome eliminieren
- Plattformteams, die Video-to-Article in ein bestehendes CMS oder einen Content-Workflow integrieren
- Startups, die auf den Fähigkeiten von Vidiome als Content-Infrastrukturschicht aufbauen
Wenn Sie ein einzelner Ersteller und kein Entwickler sind, ist die Vidiome-Web-App der schnellere Weg – dieses Tutorial ist speziell für die programmgesteuerte API-Nutzung gedacht.
Vidiome
Turn your videos into SEO traffic machines
Meinen ersten Artikel generierenKeine Kreditkarte erforderlich · 120 Gratis-Credits
Voraussetzungen
- Ein Vidiome-Konto mit mindestens Starter-Plan (API-Zugriff erfordert einen kostenpflichtigen Plan oder einen Testplan)
- Ihr Vidiome-API-Schlüssel (zu finden in Kontoeinstellungen → API-Schlüssel)
- Grundlegende Vertrautheit mit HTTP-REST-APIs und entweder Curl oder Node.js
Vidiome gewährt 120 kostenlose Credits bei der Anmeldung – Sie können den Web-App-Workflow testen, bevor Sie sich für die API-Integration entscheiden.
Endpunktübersicht: POST /api/v1/articles
Der Artikelgenerierungsendpunkt von Vidiome akzeptiert eine Videoquelle und Generierungsparameter und gibt dann ein vollständiges Artikelobjekt zurück.
Anfrage
„ POST https://vidiome.com/api/v1/articles Inhaltstyp: application/json Autorisierung: Inhaber YOUR_API_KEY „
Anforderungstext
„json { „Quelle“: { „type“: „youtube_url“, „URL“: „https://www.youtube.com/watch?v=XXXXXXXXXXX“ }, „Generation“: { "Sprache": "en", „focus_keyword“: „So konvertieren Sie YouTube-Videos in Blogbeiträge“, „output_format“: „markdown“ } } „
„Quelle“-Objekt
| Feld | Geben Sie | ein Erforderlich | Beschreibung |
|---|---|---|---|
| „Typ“ | Zeichenfolge | Ja | „youtube_url“ oder „file_upload“ |
URL |
Zeichenfolge | Erforderlich, wenn type = youtube_url |
Vollständige YouTube-Video-URL |
file_id |
Zeichenfolge | Erforderlich, wenn Typ = „file_upload“ | Datei-ID aus einem vorherigen „/api/v1/files“-Upload |
„Generierungs“-Objekt
| Feld | Geben Sie | ein Erforderlich | Beschreibung |
|---|---|---|---|
| „Sprache“ | Zeichenfolge | Ja | ISO 639-1-Code. Unterstützt: „en“, „fr“, „es“, „pt“, „de“, „ru“, „hi“, „uk“, „id“, „tr“ |
focus_keyword |
Zeichenfolge | Nein | Ziel-SEO-Keyword – verbessert H1- und Meta-Ausrichtung |
Ausgabeformat |
Zeichenfolge | Nein | „markdown“ (Standard) oder „html“ |
Antwort
„json { „id“: „art_01HZXXX“, „Status“: „abgeschlossen“, „created_at“: „2026-05-15T10:23:41Z“, „processing_time_seconds“: 187, „credits_used“: 12, „Artikel“: { „title“: „So konvertieren Sie ein YouTube-Video in 5 Minuten in einen Blog-Beitrag“, „meta_description“: „Vidiome wandelt jede YouTube-URL in weniger als 5 Minuten in einen strukturierten SEO-Blogbeitrag um. Schritt-für-Schritt-Anleitung mit Whisper-Transkription mit einer Genauigkeit von über 95 %.“, "content": "# So konvertieren Sie ein YouTube-Video...\n\n## Was Sie brauchen\n...", „word_count“: 1247, "Sprache": "en", „focus_keyword“: „So konvertieren Sie YouTube-Videos in Blogbeiträge“ }, „Transkript“: { „text“: „Hallo zusammen, heute möchte ich es euch zeigen...“, „Segmente“: [ { „start“: 0.0, „end“: 4.2, „text“: „Hallo zusammen, heute möchte ich es euch zeigen“ }, ... ] } } „
Statuswerte
| Status | Bedeutung |
|---|---|
| „in der Warteschlange“ | Anfrage angenommen, Verarbeitung nicht gestartet |
| „Verarbeitung“ | Transkription und/oder Artikelerstellung in Bearbeitung |
| „abgeschlossen“ | Artikel im Antworttext bereit |
| „fehlgeschlagen“ | Verarbeitungsfehler – siehe Feld „Fehler“ |
Für asynchrone Abfragen verwenden Sie „GET /api/v1/articles/{id}“ mit der zurückgegebenen „id“.
Codebeispiele
Locken
„Bash
curl -X POST https://vidiome.com/api/v1/articles
-H „Inhaltstyp: application/json“
-H „Autorisierung: Inhaber YOUR_API_KEY“
-d '{
„Quelle“: {
„type“: „youtube_url“,
„url“: „https://www.youtube.com/watch?v=dQw4w9WgXcQ“
},
„Generation“: {
"Sprache": "en",
„focus_keyword“: „Strategie zur Neuverwendung von Inhalten“,
„output_format“: „markdown“
}
}'
„
Umfrage zum Abschluss:„Bash
Ersetzen Sie art_01HZXXX durch die ID aus der ersten Antwort
curl -H "Autorisierung: Inhaber YOUR_API_KEY"
https://vidiome.com/api/v1/articles/art_01HZXXX
„
Node.js (abrufen)
„Javascript const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
asynchrone Funktion genericArticle(youtubeUrl, focusKeyword, language = 'en') {
// Schritt 1: Anfrage zur Artikelgenerierung senden
const Antwort = Warten auf fetch('https://vidiome.com/api/v1/articles', {
Methode: 'POST',
Überschriften: {
'Content-Type': 'application/json',
'Autorisierung': Bearer ${VIDIOME_API_KEY},
},
body: JSON.stringify({
Quelle: {
Typ: 'youtube_url',
URL: youtubeUrl,
},
Generation: {
Sprache,
focus_keyword: focusKeyword,
Ausgabeformat: 'Markdown',
},
}),
});
const job = Warten auf Antwort.json();
if (!response.ok) {
throw new Error(Vidiome API error: ${job.message});
}
// Schritt 2: Umfrage bis zum Abschluss return wait pollUntilComplete(job.id); }
asynchrone Funktion pollUntilComplete(articleId, maxAttempts = 30, IntervalMs = 10000) { for (let versuche = 0; versuche < maxAttempts; versuche++) { warte auf neues Versprechen(resolve => setTimeout(resolve, IntervalMs));
const res = waiting fetch(`https://vidiome.com/api/v1/articles/${articleId}`, {
headers: { 'Authorization': `Bearer ${VIDIOME_API_KEY}` },
});
const Article = wait res.json();
if (article.status === 'abgeschlossen') {
Artikel zurücksenden;
}
if (article.status === 'failed') {
throw new Error(`Artikelgenerierung fehlgeschlagen: ${article.error}`);
}
console.log(`[Vidiome] Status: ${article.status} (attempt ${attempt + 1}/${maxAttempts})`);
}
throw new Error('Vidiome: Polling-Timeout überschritten'); }
// Nutzung const result = Warten auf genericArticle( „https://www.youtube.com/watch?v=XXXXXXXXXXX“, „Wie man Videoinhalte wiederverwendet“ );
console.log(result.article.title);
console.log(Wortanzahl: ${result.article.word_count});
console.log(Verwendete Credits: ${result.credits_used});
// In Datei schreiben, an CMS senden usw.
„
Automatisierungs-Workflow-Diagramm
Hier ist die vollständige Automatisierungsarchitektur für eine typische Stapelverarbeitungspipeline mit Vidiome:
„ ┌──────────────────────────── ─────────────────────────────┐ │ VIDEOQUELLENEBENE │ │ YouTube-Playlist / RSS-Feed / CMS-Videobibliothek │ └──────────────────────┬───── ─────────────────────────────┘ │ Video-URLs/Dateiverweise ▼ ┌──────────────────────────── ─────────────────────────────┐ │ ORCHESTRIERUNGSEBENE │ │ Cron-Job / Webhook-Trigger / n8n / Make.com │ │ - Deduplizierung (bereits verarbeitete URLs überspringen) │ │ - Ratenbegrenzung (API-Credits-Budget beachten) │ │ - Warteschlangenverwaltung │ └──────────────────────┬───── ─────────────────────────────┘ │ POST /api/v1/articles ▼ ┌──────────────────────────── ─────────────────────────────┐ │ VIDIOME-API │ │ 1. Flüstertranskription (60-Sekunden-Blöcke, 95 %+ Acc.) │ │ 2. LLM-Artikelgenerierung (Struktur + SEO) │ │ 3. Rückgabe: Titel, Meta, Inhalt (MD/HTML), Transkript │ └──────────────────────┬───── ─────────────────────────────┘ │ Abgeschlossenes Artikelobjekt ▼ ┌──────────────────────────── ─────────────────────────────┐ │ NACHVERARBEITUNGSEBENE │ │ – Warteschlange für menschliche Überprüfungen (optional, aber empfohlen) │ │ - Interne Link-Injektion (Hinzufügen von Links zu vorhandenen Beiträgen)│ │ - Hervorgehobene Bildzuordnung │ │ – Schema-Markup-Injektion (Artikel JSON-LD) │ └──────────────────────┬───── ─────────────────────────────┘ │ Veröffentlichungsfertiger Artikel ▼ ┌──────────────────────────── ─────────────────────────────┐ │ CMS / PLATTFORM │ │ WordPress (REST API) / Ghost (Admin API) │ │ Webflow CMS / Contentful / Sanity / Custom DB │ └──────────────────────────── ─────────────────────────────┘ „
Anwendungsfälle
Stapelverarbeitung eines YouTube-Kanals
Verarbeiten Sie den gesamten Backkatalog eines YouTube-Kanals in einem Durchgang:„Javascript asynchrone Funktion ProcessYouTubeChannel(channelVideoUrls, options = {}) { const { language = 'en', Parallelität = 3, // maximale parallele Vidiome-Anfragen VerzögerungMs = 2000, // Verzögerung zwischen Stapeln (Ratenbegrenzung) } = Optionen;
const results = [];
// In Stapeln von „Parallelität“ verarbeiten for (let i = 0; i <channelVideoUrls.length; i += concurrency) { constbatch =channelVideoUrls.slice(i, i + concurrency);
const batchResults = Warten auf Promise.allSettled(
batch.map(url => genericArticle(url, '', Sprache))
);
results.push(...batchResults);
console.log(`Verarbeitete ${Math.min(i + concurrency, channelVideoUrls.length)}/${channelVideoUrls.length} Videos`);
if (i + concurrency <channelVideoUrls.length) {
Warten auf neues Versprechen(resolve => setTimeout(resolve, delayMs));
}
}
Ergebnisse zurückgeben; } „
Ein Kanal mit 100 Videos, die bei 3 gleichzeitigen Anfragen verarbeitet wurden: insgesamt etwa 100 Minuten (durchschnittlich 3 Minuten pro Video × 100 ÷ 3 gleichzeitig).
CMS-Integration (WordPress-Beispiel)
Nachdem Vidiome den Artikel zurückgegeben hat, übertragen Sie ihn über die REST-API direkt an WordPress:
„Javascript
asynchrone Funktion publizToWordPress(vidiomeArticle, wpConfig) {
const { siteUrl, Benutzername, appPassword } = wpConfig;
const credentials = Buffer.from(${username}:${appPassword}).toString('base64');
const Response =wait fetch(${siteUrl}/wp-json/wp/v2/posts, {
Methode: 'POST',
Überschriften: {
'Content-Type': 'application/json',
'Autorisierung': Basic ${credentials},
},
body: JSON.stringify({
Titel: vidiomeArticle.article.title,
Inhalt: vidiomeArticle.article.content, // Für WP empfohlenes HTML-Format
Auszug: vidiomeArticle.article.meta_description,
Status: 'Entwurf', // Entwurf immer zuerst zur menschlichen Überprüfung
}),
});
Rückkehr warte auf Antwort.json(); } „
Mehrsprachiger Stapel: ein Video, 10 Sprachen
Generieren Sie gleichzeitig den gleichen Artikel in allen 10 unterstützten Sprachen:
„Javascript const SUPPORTED_LANGUAGES = ['en', 'fr', 'es', 'pt', 'de', 'ru', 'hi', 'uk', 'id', 'tr'];
asynchrone Funktion genericMultilingual(youtubeUrl, focusKeywords = {}) { const request = SUPPORTED_LANGUAGES.map(lang => generierenArtikel( youtubeUrl, focusKeywords[lang] || focusKeywords['en'] || '', lang ) );
// Alle 10 Sprachen parallel ausführen const results = waiting Promise.allSettled(requests);
return results.reduce((acc, result, index) => {
const lang = SUPPORTED_LANGUAGES[index];
if (result.status === 'erfüllt') {
acc[lang] = result.value;
} sonst {
console.error(Fehlgeschlagen für ${lang}:, result.reason);
}
Rückgabe gemäß;
}, {});
}
„
Dadurch werden 10 Sprachversionen eines einzelnen Videos in etwa 5–8 Minuten generiert (Parallelverarbeitung).
Ratenlimits und Kreditbudgetierung
| Planen | API-Ratenbegrenzung | Credits/Monat |
|---|---|---|
| Kostenlos (120 Credits) | 2 Anforderungen/Min. | 120 (einmalig) |
| Anlasser | 10 Anforderungen/min | Pro Plan |
| Pro | 30 Anforderungen/min | Pro Plan |
| Agentur | 60 Anforderungen/min | Pro Plan |
Credit-Verbrauch: Jede Artikelgeneration verbraucht je nach Videolänge 10–15 Credits. Für ein 10-minütiges Video werden etwa 10 Credits benötigt; Für ein 60-minütiges Video werden etwa 15 Credits benötigt.
Budgetempfehlung für die Stapelverarbeitung: Schätzen Sie „ceil(video_duration_minutes / 4) + 10“ Credits pro Video als konservatives Budget.
Fehlerbehandlung
Die Vidiome-API verwendet Standard-HTTP-Statuscodes:
| Code | Bedeutung | Aktion |
|---|---|---|
| „200“ | Erfolg | Prozessantwort |
400 |
Ungültige Anfrage (falsche URL, nicht unterstützte Sprache usw.) | Anforderungsparameter korrigieren |
401 |
Ungültiger oder fehlender API-Schlüssel | Überprüfen Sie den Autorisierungsheader |
402 |
Unzureichende Credits | Konto aufladen oder Batchgröße reduzieren |
429 |
Ratenlimit überschritten | Exponentiellen Backoff implementieren |
| „500“ | Serverfehler | Wiederholen Sie den Versuch mit exponentiellem Backoff (maximal 3 Versuche) |
Häufig gestellte Fragen
Unterstützt die API von Vidiome das Hochladen von Dateien oder nur YouTube-URLs?
Die API von Vidiome unterstützt sowohl YouTube-URLs als auch direkte Datei-Uploads. Rufen Sie zum Hochladen von Dateien zunächst „POST /api/v1/files“ mit Ihrer Videodatei (MP4, MOV oder WebM, bis zu 2 GB) auf, erhalten Sie eine „file_id“ und übergeben Sie diese „file_id“ dann an „POST /api/v1/articles“ mit „type“: „file_upload““. Dies ist nützlich für die Verarbeitung von Videos, die nicht auf YouTube gehostet werden – Webinar-Aufzeichnungen, Loom-Videos, interne Schulungsinhalte und von Vimeo gehostete Videos.### Wie gehe ich mit langen Videos (60+ Minuten) über die API um?
Vidiome verarbeitet Videos mit einer Länge von bis zu 4 Stunden über die API. Bei Videos über 60 Minuten ist die API-Antwort standardmäßig asynchron – Sie erhalten sofort eine Job-ID und fragen dann alle 15–30 Sekunden „GET /api/v1/articles/{id}“ ab, bis der Status „abgeschlossen“ lautet. Ein 90-minütiges Video wird normalerweise in 6–9 Minuten verarbeitet. Dank der 60-Sekunden-Audio-Chunking-Architektur von Vidiome treten selbst bei sehr langen Videos keine Timeout-Probleme auf.
Gibt es eine Webhook-Option anstelle von Polling?
Ja. Vidiome unterstützt Webhook-Rückrufe zur Artikelvervollständigung. Fügen Sie Ihrem POST-Anfragetext ein „webhook_url“-Feld hinzu, das auf Ihren Endpunkt verweist, und Vidiome sendet nach Abschluss der Verarbeitung eine „POST“-Anfrage mit dem vollständigen Artikelobjekt – eine Abfrage ist nicht mehr erforderlich. Die Webhook-Nutzlast ist identisch mit dem Antwortformat „GET /api/v1/articles/{id}“.
Nächste Schritte
Vidiome
Turn your videos into SEO traffic machines
Meinen ersten Artikel generierenKeine Kreditkarte erforderlich · 120 Gratis-Credits