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:
- Een OpenClaw-account met minimaal één actieve werkruimte.
- 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).
- 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
- Open de OpenClaw-editor en maak een nieuwe workflow aan.
- 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
- Stel het polling-interval in (bijv. elk uur).
Actie: de video downloaden
- Voeg na de trigger een HTTP-verzoek-actieknooppunt toe.
- 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"
}
- Wijs
trigger.linkuit het RSS-feed-item toe aan het veldurl.
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 deerror-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:
| Knooppunt | Type | Beschrijving |
|---|---|---|
| RSS-trigger | Trigger | Pollt elk uur een RSS-feed van een YouTube-kanaal |
| Filter | Voorwaarde | Slaat video's korter dan 2 minuten over |
| Download | HTTP POST | Roept het yt-dlp-endpoint aan, geeft bestandspad terug |
| Foutcontrole | Voorwaarde | Vertakt op basis van het veld success |
| Transcriptie | HTTP POST | Stuurt audio naar de Whisper-API |
| Melding | Slack | Plaatst titel + transcriptiesamenvatting in een kanaal |
| Log | Spreadsheet | Voegt 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)sis 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.