n8n est la plateforme d'automatisation auto-hébergée dominante en 2026, et les workflows de transcription YouTube sont parmi les demandes les plus courantes de la communauté. Ce tutoriel connecte le point de terminaison de transcription de Scavio au nœud HTTP Request de n8n et ajoute des transcriptions à tout workflow qui touche une URL YouTube.
Prérequis
- n8n auto-hébergé ou cloud
- Une clé API Scavio
- Une source d'URL YouTube (RSS, manuel, Airtable)
Parcours
Étape 1: Ajouter un identifiant Scavio dans n8n
Paramètres > Identifiants > Nouveau > Header Auth. Nom=x-api-key, valeur=votre clé.
Name: Scavio API Key
Header: x-api-key
Value: sk_live_...Étape 2: Ajouter un nœud HTTP Request
POST vers le point de terminaison de transcription de Scavio.
URL: https://api.scavio.dev/api/v1/search
Method: POST
Auth: Scavio API Key (credential)
Body: { "platform": "youtube_transcript", "query": "{{ $json.video_url }}" }Étape 3: Analyser la transcription
Le nœud Set de n8n extrait le tableau de transcription.
// Set node expression
{{ $json.transcript.map(seg => seg.text).join(' ') }}Étape 4: Enchaîner avec un nœud LLM
Envoyer la transcription au nœud OpenAI ou Anthropic pour résumé.
Prompt: Summarize this YouTube transcript in 5 bullets:
{{ $json.transcript_text }}Étape 5: Écrire dans la destination
Airtable, Notion ou Slack.
Airtable node > Update row > Fields: summary = {{ $json.summary }}Exemple Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def transcript(video_url):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'platform': 'youtube_transcript', 'query': video_url})
segs = r.json().get('transcript', [])
return ' '.join(s['text'] for s in segs)
print(transcript('https://youtube.com/watch?v=dQw4w9WgXcQ')[:500])Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function transcript(videoUrl) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'youtube_transcript', query: videoUrl })
});
const { transcript } = await r.json();
return transcript.map(s => s.text).join(' ');
}Sortie attendue
Full transcript text in n8n $json. Typical video: 30-second extraction. Cost per transcript: ~5 credits.