Tutorial
|
door Hunt Team

Video-downloads automatiseren in OpenClaw met yt-dlp

OpenClaw is een krachtig workflow-automatiseringsplatform waarmee je API's, triggers en acties kunt verbinden tot naadloze pipelines. Gecombineerd met yt-dlp - de meest capabele videodownloader beschikbaar - kun je geautomatiseerde systemen bouwen om concurrentie-inhoud te monitoren, tutorials te archiveren, audio te extraheren voor transcriptie, en nog veel meer.

Deze gids leidt je door het opzetten van yt-dlp-aangedreven video-download-workflows in OpenClaw, van een eenvoudige URL-trigger tot een volledig geautomatiseerde contentmonitoring-pipeline.

Waarom yt-dlp combineren met OpenClaw?

Dingen handmatig doen schaalt niet. Als je video-inhoud moet bijhouden over meerdere kanalen, educatief materiaal moet archiveren, of gedownloade video's moet doorsturen naar vervolgprocessen (transcriptie, compressie, analyse), heb je automatisering nodig.

OpenClaw verzorgt de orkestratie - triggers, planning, vertakkingslogica en meldingen - terwijl yt-dlp het zware werk doet: video betrouwbaar extraheren van meer dan 1.000 ondersteunde sites.

Veelvoorkomende gebruiksscenario's:

  • Concurrentmonitoring: automatisch nieuwe video's van YouTube-kanalen van concurrenten downloaden en doorsturen naar een transcriptie- of analysestap.
  • Inhoudsarchivering: een download activeren wanneer een nieuwe video verschijnt in een gevolgde RSS-feed of afspeellijst.
  • Audio-extractie: audio halen uit video-URL's voor podcastgeneratie, transcriptiepipelines of trainingsgegevens.
  • Kwaliteitsborging: controleren of openbaar beschikbare video's (productdemo's, tutorials) bereikbaar blijven en overeenkomen met de verwachte inhoud.

Vereisten

Voordat je je OpenClaw-workflow bouwt, zorg je dat je het volgende hebt:

  1. Een OpenClaw-account met minimaal één actieve werkruimte.
  2. Een server of cloudfunctie waarop yt-dlp is geïnstalleerd en bereikbaar is via HTTP (je kunt het blootstellen met een kleine FastAPI- of Express-wrapper, of een beheerd HuntAPI-endpoint gebruiken).
  3. Basiskennis van de op knooppunten gebaseerde editor van OpenClaw.

Stap 1 - Een yt-dlp HTTP-endpoint opzetten

OpenClaw communiceert met externe tools via HTTP. De eenvoudigste aanpak is yt-dlp inpakken in een kleine API-server.

Hier is een minimaal Python-voorbeeld met 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,
    }

Implementeer deze service en noteer de openbare URL - je gebruikt die als doel in je OpenClaw HTTP-actieknooppunt.

Stap 2 - Een OpenClaw-workflow aanmaken

Trigger: nieuwe video op een YouTube-kanaal

  1. Open de OpenClaw-editor en maak een nieuwe workflow aan.
  2. Voeg een Schema- of RSS-feed-triggerknooppunt toe. YouTube-kanaal-RSS-feeds volgen dit patroon:
https://www.youtube.com/feeds/videos.xml?channel_id=JOUW_CHANNEL_ID
  1. Stel het polling-interval in (bijv. elk uur).

Actie: de video downloaden

  1. Voeg na de trigger een HTTP-verzoek-actieknooppunt toe.
  2. Configureer het als een POST-verzoek naar je yt-dlp-endpoint:
{
  "url": "{{trigger.link}}",
  "format": "bestvideo[height<=1080]+bestaudio/best",
  "output_dir": "/mnt/storage/videos"
}
  1. Wijs trigger.link uit het RSS-feed-item toe aan het veld url.

Actie: alleen audio extraheren (optioneel)

Als je alleen audio nodig hebt (voor transcriptie- of podcast-workflows), verander dan het formaat naar:

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

En voeg --extract-audio --audio-format mp3 toe aan je yt-dlp-opdracht aan de serverzijde.

Stap 3 - De respons verwerken

Na het downloaden geeft het HTTP-actieknooppunt een JSON-object terug met het bestandspad, de titel, de duur en de successtatus. Je kunt deze velden gebruiken om:

  • Een Slack-melding te sturen met de videotitel en een downloadbevestiging.
  • Een transcriptie-workflow te activeren door het bestandspad door te geven aan een Whisper- of AssemblyAI-knooppunt.
  • Naar cloudopslag te uploaden (S3, GCS, R2) met een opslagactieknooppunt.
  • Resultaten te loggen in een spreadsheet voor tracking en rapportage.

Voorbeeld: voorwaardelijke foutafhandeling

Voeg na het HTTP-verzoek een Voorwaarde-knooppunt toe om het veld success te controleren:

  • Als true → doorgaan naar de volgende actie (upload, transcriptie, enz.).
  • Als false → je team een waarschuwing sturen met de error-melding van yt-dlp.

Stap 4 - Omgaan met snelheidslimieten en geo-beperkingen

Grootschalige workflows kunnen YouTube's snelheidslimieten bereiken (Fout 429) of geo-geblokkeerde inhoud tegenkomen. Geef een --proxy-argument mee in je yt-dlp-opdracht:

"yt-dlp",
"--proxy", "http://jouw-proxy:poort",
"--format", req.format,
...

Gebruik voor roterende proxies een provider die één gateway aanbiedt die automatisch de exit-IP's wisselt. Dit vermijdt het beheer van een proxylijst in je workflowlogica.

Je kunt ook een retry-knooppunt toevoegen in OpenClaw om de downloadstap automatisch opnieuw uit te voeren met exponentieel uitstel als de eerste poging mislukt.

Workflow-blueprint: volledige contentmonitoring-pipeline

Hier is een compleet blueprint dat je direct in OpenClaw kunt importeren:

KnooppuntTypeBeschrijving
RSS-triggerTriggerPollt elk uur een RSS-feed van een YouTube-kanaal
FilterVoorwaardeSlaat video's korter dan 2 minuten over
DownloadHTTP POSTRoept het yt-dlp-endpoint aan, geeft bestandspad terug
FoutcontroleVoorwaardeVertakt op basis van het veld success
TranscriptieHTTP POSTStuurt audio naar de Whisper-API
MeldingSlackPlaatst titel + transcriptiesamenvatting in een kanaal
LogSpreadsheetVoegt een rij toe aan een Google Sheet

Tips voor productie

  • Verwerkte URL's cachen met een Redis- of databaseknooppunt om te voorkomen dat dezelfde video elke triggercyclus opnieuw wordt gedownload.
  • Uitvoersjablonen zorgvuldig instellen in yt-dlp om bestandsnaamconflicten te vermijden: %(upload_date)s_%(id)s_%(title)s.%(ext)s is een veilige standaard.
  • Schijfruimte monitoren op je downloadserver; voeg een opruimstap toe die bestanden ouder dan N dagen verwijdert nadat ze verwerkt zijn.
  • yt-dlp's --cookies-from-browser-optie gebruiken (aan de serverzijde) voor sites die authenticatie vereisen, en sessies roteren om compliant te blijven.

Vereenvoudig met HuntAPI

In plaats van je eigen yt-dlp-server (Stap 1) te implementeren en te onderhouden, kun je je OpenClaw HTTP-knooppunt rechtstreeks naar HuntAPI laten verwijzen. HuntAPI biedt een gebruiksklaar, beheerd video-download-endpoint - geen infrastructuur om te onderhouden, geen proxylijst om te beheren, en ingebouwde ondersteuning voor geo-deblokkering en het omgaan met snelheidslimieten.

Dit stelt je in staat om in enkele minuten van nul naar een werkend OpenClaw-videodownload-workflow te gaan.

Bronnen

VIDEO API

Discover why Hunt is the preferred API provider for developers.