Comment utiliser l'API Vidiome pour automatiser la génération d'articles depuis une vidéo
Tutoriel technique pour les développeurs : utilisez l'endpoint POST /api/v1/articles de Vidiome pour automatiser la génération d'articles vidéo à grande échelle. Exemples curl et Node.js inclus.
L'API REST de Vidiome transforme une vidéo YouTube en article de blog structuré, en une seule requête. Vous envoyez une URL YouTube, Vidiome lit la transcription de la vidéo, rédige l'article avec un LLM et vous le renvoie en JSON : un titre et une liste de sections, chacune avec son titre H2, son contenu et ses horodatages.
Ce tutoriel couvre l'authentification, le format de la requête et de la réponse, des exemples curl et Node.js, le traitement par lots, la publication sur WordPress et les limites à prévoir.
À qui s'adresse ce tutoriel
- Développeurs SaaS qui construisent des fonctionnalités d'automatisation de contenu pour leurs clients ou leurs outils internes
- Agences de contenu qui traitent de nombreuses vidéos chaque semaine et veulent supprimer les étapes manuelles
- Équipes plateforme qui branchent la conversion vidéo-article sur un CMS ou un workflow de contenu existant
Si vous êtes un créateur plutôt qu'un développeur, l'application web Vidiome est le chemin le plus rapide. Elle capture en plus une image pour chaque section, ce que l'API ne fait pas.
Vidiome
Turn your videos into SEO traffic machines
Générer mon premier articleSans carte bancaire · 120 crédits offerts
Prérequis
- Un compte Vidiome avec un forfait payant (Starter, Pro ou Business). Les requêtes API des comptes gratuits sont refusées avec une erreur
403. - Une clé API, créée dans l'application sous Profil → Clés API. Les clés commencent par
vdm_live_. Gardez-les secrètes : toute personne qui possède la clé peut dépenser vos crédits. - Une vidéo YouTube qui dispose d'une transcription (sous-titres manuels ou automatiques). L'API travaille à partir de cette transcription.
Les nouveaux comptes reçoivent 120 crédits gratuits pour essayer l'application web avant de choisir un forfait.
Endpoint : POST /api/v1/articles
Requête
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 fonctionne aussi.
Corps de la requête
{
"youtubeUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"language": "fr"
}
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
youtubeUrl |
string | Oui | URL complète d'une vidéo YouTube |
language |
string | Non | Langue de rédaction de l'article : en, fr, es, pt, de, ru, hi, uk, id ou tr. Précisez-la toujours : sans elle, aucune langue n'est imposée |
C'est toute la requête. Il n'existe aucun paramètre d'envoi de fichier, de format de sortie ou de mot-clé.
Réponse
L'appel est synchrone : la connexion reste ouverte pendant que Vidiome génère l'article, puis le résultat complet arrive d'un coup. Comptez de quelques secondes à quelques minutes selon la durée de la vidéo.
{
"id": "5b0c9c2e-6f1d-4d8a-9a57-2f1f3c1e8b21",
"title": "Comment décliner une vidéo en un mois de contenu",
"sections": [
{
"id": "a3f1…",
"title": "Introduction : une vidéo, plusieurs formats",
"content": "La plupart des créateurs publient une vidéo et passent à la suite…\n\n### Pourquoi la transcription n'est qu'un point de départ\n\n…",
"startTime": 0,
"endTime": 74,
"images": []
}
],
"videoUrl": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"videoId": "XXXXXXXXXXX",
"language": "fr",
"creditsUsed": 40,
"creditsRemaining": 460,
"createdAt": "2026-09-26T10:23:41.000Z"
}
Quelques points à connaître sur la réponse :
sectionssont dans l'ordre de lecture : une introduction, les sections du corps, puis une conclusion.titleest le H2 de la section.contentest du texte avec des lignes###pour les sous-titres H3, des lignes vides entre les paragraphes, du**gras**et des éléments de liste-.startTime/endTimesont en secondes et indiquent le passage de la vidéo dont provient chaque section. Pratique pour intégrer la vidéo au bon moment.imagesest toujours vide via l'API. Les captures d'écran sont réalisées dans le navigateur par l'application web. Pour en ajouter, ouvrez l'article dans Vidiome et choisissez-les, ou utilisez vos propres images.- L'article est enregistré dans votre compte (
id). Il apparaît dans votre tableau de bord Vidiome, où vous pouvez le modifier.
Exemples de code
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": "fr"
}'
Node.js (fetch)
const VIDIOME_API_KEY = process.env.VIDIOME_API_KEY;
async function generateArticle(youtubeUrl, language = 'fr') {
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 }),
// La génération peut prendre quelques minutes : le client ne doit pas abandonner avant.
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;
}
// Convertit les sections en Markdown (ou passez-les à votre propre moteur de rendu).
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}`);
Workflow d'automatisation
┌─────────────────────────────────────────────────────────┐
│ SOURCES VIDÉO │
│ Playlist / chaîne YouTube / liste d'URL │
└──────────────────────┬──────────────────────────────────┘
│ URL YouTube
▼
┌─────────────────────────────────────────────────────────┐
│ ORCHESTRATION │
│ Tâche cron / n8n / Make.com / votre propre file │
│ - Ignorer les URL déjà traitées │
│ - Rester sous 10 requêtes par minute et par clé │
│ - Réessayer sur 429 / 502 après le délai Retry-After │
└──────────────────────┬──────────────────────────────────┘
│ POST /api/v1/articles
▼
┌─────────────────────────────────────────────────────────┐
│ API VIDIOME │
│ 1. Récupérer la transcription de la vidéo YouTube │
│ 2. Rédiger l'article avec un LLM │
│ 3. L'enregistrer dans votre compte, renvoyer │
│ le titre + les sections │
└──────────────────────┬──────────────────────────────────┘
│ JSON de l'article
▼
┌─────────────────────────────────────────────────────────┐
│ POST-TRAITEMENT │
│ - Convertir les sections en HTML ou Markdown │
│ - Relecture humaine (recommandée) │
│ - Images, liens internes, meta description, schema │
└──────────────────────┬──────────────────────────────────┘
│ Article prêt à publier
▼
┌─────────────────────────────────────────────────────────┐
│ CMS / PLATEFORME │
│ WordPress / Ghost / Webflow / Contentful / Sanity │
└─────────────────────────────────────────────────────────┘
Cas d'usage
Traiter une chaîne YouTube par lots
Chaque clé API est limitée à 10 requêtes par minute. Comme chaque requête reste ouverte jusqu'à ce que l'article soit prêt, quelques requêtes en parallèle suffisent largement :
async function processVideos(urls, { language = 'fr', 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); // on réessaiera plus tard
} else {
results.push({ url, error: error.message });
}
}
}
}
await Promise.all(Array.from({ length: concurrency }, worker));
return results;
}
Arrêtez le lot dès que vous recevez une erreur 402 : votre solde de crédits est insuffisant pour la vidéo suivante.
Publier sur WordPress
Vidiome renvoie des sections, pas du HTML : convertissez-les d'abord. Une bibliothèque Markdown comme marked fait très bien l'affaire, ou vous pouvez vous contenter d'une conversion minimale :
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', // relire avant de publier
}),
});
return response.json();
}
Une vidéo, plusieurs langues
Lancez une requête par langue. Chacune est une génération distincte et consomme des crédits comme n'importe quelle autre :
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;
}
Limites et crédits
- Limite de débit : 10 requêtes par minute et par clé API, sur tous les forfaits payants. Au-delà, vous recevez une erreur
429avec un en-têteRetry-After(en secondes). - Durée : chaque requête peut durer jusqu'à 5 minutes côté Vidiome. Les vidéos très longues peuvent ne pas tenir dans ce délai ; découpez votre workflow ou passez par l'application web pour celles-ci.
- Crédits : l'API coûte la même chose que l'application web, au tarif actuel de 4 crédits par minute de vidéo avec un minimum de 20 crédits (une vidéo de 10 minutes consomme 40 crédits, une vidéo de 60 minutes 240). Chaque réponse indique
creditsUsedetcreditsRemaining. Consultez les tarifs pour les forfaits et les packs de crédits.
Gestion des erreurs
Les erreurs sont renvoyées en JSON avec un champ error.
| Statut | error |
Que faire |
|---|---|---|
400 |
Invalid request body ou invalid-youtube-url |
Vérifiez l'URL et le code de langue |
401 |
Missing API key / Invalid or revoked API key |
Vérifiez l'en-tête x-api-key |
402 |
insufficient-credits (avec required et available) |
Rechargez vos crédits ou passez à un forfait supérieur |
403 |
api_access_requires_paid_plan |
Passez à un forfait payant |
404 |
no-captions |
La vidéo n'a pas de transcription ; essayez une autre vidéo |
429 |
limite de débit, ou transcript_provider_rate_limited |
Attendez le délai Retry-After, puis réessayez |
500 |
article_generation_failed |
Réessayez une fois ; si l'erreur persiste, contactez-nous |
502 |
transcript_provider_unavailable / llm_provider_error |
Erreur temporaire : réessayez après un délai |
Questions fréquentes
Puis-je envoyer un fichier vidéo au lieu d'une URL YouTube ?
Non. L'API n'accepte que des URL YouTube, et la vidéo doit avoir une transcription. Pour les fichiers MP4, MOV ou WebM, utilisez l'application web : elle transcrit l'audio et capture en plus une image pour chaque section.
Existe-t-il un webhook ou un endpoint de statut ?
Non. La requête est synchrone et renvoie l'article terminé. Si vous traitez beaucoup de vidéos, placez les appels dans votre propre file de tâches (une tâche cron, n8n, Make.com, un worker) et enregistrez les résultats au fur et à mesure.
Où vont les articles générés via l'API ?
Ils sont enregistrés dans votre compte Vidiome : vous les retrouvez dans votre tableau de bord. C'est le moyen le plus simple d'ajouter des captures d'écran, de corriger un passage avec la réécriture IA ou d'exporter l'article en HTML ou en Markdown.
Prochaines étapes
Découvrez les solutions associées
Explorez d’autres façons de transformer vos vidéos en contenus écrits bien référencés.
Automatisez la conversion de vidéos YouTube en articles avec l'API Vidiome
Envoyez une URL YouTube à l'API Vidiome et recevez l'article fini en JSON : un titre et des sections. 10 langues, plans payants, 10 requêtes/min.
Livrez les articles SEO clients à partir de vidéos à l'échelle d'une agence
Vidiome est la plateforme IA vidéo-vers-article pour agences. Articles SEO depuis les vidéos clients en moins de 5 minutes. 10 langues, HTML ou Markdown.
Scalez le content marketing SaaS avec la vidéo — en mode automatique
Vidiome convertit vos démos, webinaires et tutoriels en articles SEO automatiquement. Publiez jusqu'à 100 articles/mois et dominez les citations LLM.
Vidiome
Turn your videos into SEO traffic machines
Générer mon premier articleSans carte bancaire · 120 crédits offerts