Tutorial
|
par Hunt Team

Comment automatiser le téléchargement vidéo dans OpenClaw avec yt-dlp

OpenClaw est une plateforme d'automatisation de workflows qui vous permet de connecter des API, des déclencheurs et des actions en pipelines fluides. Combiné à yt-dlp - le téléchargeur vidéo le plus capable du marché - vous pouvez construire des systèmes automatisés pour surveiller le contenu de vos concurrents, archiver des tutoriels, extraire de l'audio pour de la transcription, et bien plus encore.

Ce guide vous explique comment mettre en place des workflows de téléchargement vidéo propulsés par yt-dlp dans OpenClaw, d'un simple déclencheur sur une URL unique jusqu'à un pipeline de surveillance de contenu entièrement automatisé.

Pourquoi combiner yt-dlp avec OpenClaw ?

Faire les choses manuellement ne passe pas à l'échelle. Si vous devez suivre du contenu vidéo sur plusieurs chaînes, archiver du matériel éducatif, ou alimenter des vidéos téléchargées dans des traitements en aval (transcription, compression, analyse), vous avez besoin d'automatisation.

OpenClaw gère l'orchestration - déclencheurs, planification, logique de branchement et notifications - tandis que yt-dlp s'occupe du travail difficile : extraire de façon fiable des vidéos depuis plus de 1 000 sites supportés.

Cas d'usage courants :

  • Surveillance concurrentielle : télécharger automatiquement les nouvelles vidéos des chaînes YouTube concurrentes et les acheminer vers une étape de transcription ou d'analyse.
  • Archivage de contenu : déclencher un téléchargement dès qu'une nouvelle vidéo apparaît dans un flux RSS ou une playlist surveillée.
  • Extraction audio : récupérer l'audio de vidéos pour la génération de podcasts, des pipelines de transcription ou des jeux de données d'entraînement.
  • Assurance qualité : vérifier que des vidéos publiquement disponibles (démos produit, tutoriels) restent accessibles et correspondent au contenu attendu.

Prérequis

Avant de construire votre workflow OpenClaw, assurez-vous d'avoir :

  1. Un compte OpenClaw avec au moins un espace de travail actif.
  2. Un serveur ou une fonction cloud où yt-dlp est installé et accessible via HTTP (vous pouvez l'exposer avec un petit wrapper FastAPI ou Express, ou utiliser un endpoint HuntAPI géré).
  3. Une connaissance de base de l'éditeur à nœuds d'OpenClaw.

Étape 1 - Mettre en place un endpoint HTTP yt-dlp

OpenClaw communique avec des outils externes via HTTP. L'approche la plus simple est d'encapsuler yt-dlp dans un petit serveur API.

Voici un exemple minimal en Python avec FastAPI :

from fastapi import FastAPI
from pydantic import BaseModel
import subprocess, json

app = FastAPI()

class DownloadRequest(BaseModel):
    url: str
    format: str = "bestvideo+bestaudio/best"
    output_dir: str = "/tmp/downloads"

@app.post("/download")
def download_video(req: DownloadRequest):
    result = subprocess.run(
        [
            "yt-dlp",
            "--format", req.format,
            "--output", f"{req.output_dir}/%(title)s.%(ext)s",
            "--print-json",
            req.url,
        ],
        capture_output=True,
        text=True,
    )
    metadata = json.loads(result.stdout.splitlines()[-1]) if result.returncode == 0 else {}
    return {
        "success": result.returncode == 0,
        "title": metadata.get("title"),
        "duration": metadata.get("duration"),
        "filepath": metadata.get("filename"),
        "error": result.stderr if result.returncode != 0 else None,
    }

Déployez ce service et notez l'URL publique - vous l'utiliserez comme cible dans le nœud d'action HTTP d'OpenClaw.

Étape 2 - Créer un workflow OpenClaw

Déclencheur : nouvelle vidéo sur une chaîne YouTube

  1. Ouvrez l'éditeur OpenClaw et créez un nouveau workflow.
  2. Ajoutez un nœud déclencheur Schedule ou Flux RSS. Les flux RSS des chaînes YouTube suivent ce schéma :
https://www.youtube.com/feeds/videos.xml?channel_id=VOTRE_CHANNEL_ID
  1. Définissez l'intervalle de sondage (par exemple toutes les heures).

Action : télécharger la vidéo

  1. Ajoutez un nœud d'action Requête HTTP après le déclencheur.
  2. Configurez-le comme une requête POST vers votre endpoint yt-dlp :
{
  "url": "{{trigger.link}}",
  "format": "bestvideo[height<=1080]+bestaudio/best",
  "output_dir": "/mnt/storage/videos"
}
  1. Mappez trigger.link depuis l'élément du flux RSS vers le champ url.

Action : extraire l'audio uniquement (optionnel)

Si vous n'avez besoin que de l'audio (pour de la transcription ou des workflows podcast), changez le format en :

{
  "url": "{{trigger.link}}",
  "format": "bestaudio/best"
}

Et ajoutez --extract-audio --audio-format mp3 à votre commande yt-dlp côté serveur.

Étape 3 - Traiter la réponse

Après le téléchargement, le nœud d'action HTTP retourne un objet JSON avec le chemin du fichier, le titre, la durée et le statut de succès. Vous pouvez utiliser ces champs pour :

  • Envoyer une notification Slack avec le titre de la vidéo et une confirmation de téléchargement.
  • Déclencher un workflow de transcription en transmettant le chemin du fichier à un nœud Whisper ou AssemblyAI.
  • Uploader vers le stockage cloud (S3, GCS, R2) via un nœud d'action stockage.
  • Journaliser les résultats dans un tableur pour le suivi et le reporting.

Exemple : gestion conditionnelle des erreurs

Ajoutez un nœud Condition après la requête HTTP pour vérifier le champ success :

  • Si true → passer à l'action suivante (upload, transcription, etc.).
  • Si false → envoyer une alerte à votre équipe avec le message error de yt-dlp.

Étape 4 - Gérer les limites de débit et les restrictions géographiques

Les workflows à grande échelle peuvent atteindre les limites de débit de YouTube (Erreur 429) ou rencontrer du contenu géo-bloqué. Passez un argument --proxy dans votre commande yt-dlp :

"yt-dlp",
"--proxy", "http://votre-proxy:port",
"--format", req.format,
...

Pour les proxies rotatifs, utilisez un fournisseur qui expose une passerelle unique qui change automatiquement les IP de sortie. Cela évite de gérer une liste de proxies dans la logique de votre workflow.

Vous pouvez aussi ajouter un nœud de réessai dans OpenClaw pour relancer automatiquement l'étape de téléchargement avec un backoff exponentiel si la première tentative échoue.

Blueprint de workflow : pipeline complet de surveillance de contenu

Voici un blueprint complet que vous pouvez importer directement dans OpenClaw :

NœudTypeDescription
Déclencheur RSSDéclencheurSonde un flux RSS de chaîne YouTube toutes les heures
FiltreConditionIgnore les vidéos de moins de 2 minutes
TéléchargementHTTP POSTAppelle l'endpoint yt-dlp, retourne le chemin du fichier
Vérification erreurConditionBranche sur le champ success
TranscriptionHTTP POSTEnvoie l'audio à l'API Whisper
NotificationSlackPoste le titre + résumé de transcription sur un canal
JournalTableurAjoute une ligne à un Google Sheet

Conseils pour la production

  • Mettez en cache les URLs traitées via un nœud Redis ou base de données pour éviter de retélécharger la même vidéo à chaque cycle de déclenchement.
  • Définissez soigneusement les templates de sortie dans yt-dlp pour éviter les conflits de noms de fichiers : %(upload_date)s_%(id)s_%(title)s.%(ext)s est un bon choix par défaut.
  • Surveillez l'espace disque sur votre serveur de téléchargement ; ajoutez une étape de nettoyage qui supprime les fichiers plus vieux de N jours après traitement.
  • Utilisez l'option --cookies-from-browser de yt-dlp (côté serveur) pour les sites nécessitant une authentification, et faites tourner les sessions pour rester en conformité.

Simplifiez avec HuntAPI

Plutôt que de déployer et maintenir votre propre serveur yt-dlp (Étape 1), vous pouvez pointer votre nœud HTTP OpenClaw directement vers HuntAPI. HuntAPI fournit un endpoint de téléchargement vidéo géré et prêt à l'emploi - pas d'infrastructure à maintenir, pas de liste de proxies à gérer, et une prise en charge intégrée du déblocage géographique et de la gestion des limites de débit.

Cela vous permet de passer de zéro à un workflow de téléchargement vidéo OpenClaw fonctionnel en quelques minutes.

Sources

VIDEO API

Discover why Hunt is the preferred API provider for developers.