Come automatizzare i download video in OpenClaw con yt-dlp
OpenClaw è una potente piattaforma di automazione dei workflow che ti permette di connettere API, trigger e azioni in pipeline fluide. Combinato con yt-dlp - il downloader video più capace disponibile - puoi costruire sistemi automatizzati per monitorare i contenuti della concorrenza, archiviare tutorial, estrarre audio per la trascrizione e molto altro.
Questa guida ti accompagna nella configurazione di workflow di download video basati su yt-dlp all'interno di OpenClaw, da un semplice trigger su URL singola fino a una pipeline di monitoraggio dei contenuti completamente automatizzata.
Perché combinare yt-dlp con OpenClaw?
Fare le cose manualmente non scala. Se hai bisogno di tracciare contenuti video su più canali, archiviare materiale formativo, o alimentare i video scaricati in processi a valle (trascrizione, compressione, analisi), hai bisogno di automazione.
OpenClaw gestisce l'orchestrazione - trigger, pianificazione, logica di ramificazione e notifiche - mentre yt-dlp si occupa del lavoro pesante: estrarre video in modo affidabile da oltre 1.000 siti supportati.
Casi d'uso comuni:
- Monitoraggio della concorrenza: scaricare automaticamente i nuovi video dai canali YouTube dei concorrenti e instradarli verso una fase di trascrizione o analisi.
- Archiviazione dei contenuti: attivare un download quando appare un nuovo video in un feed RSS o in una playlist monitorata.
- Estrazione audio: estrarre audio da URL video per la generazione di podcast, pipeline di trascrizione o dataset di addestramento.
- Controllo qualità: verificare che i video pubblicamente disponibili (demo di prodotto, tutorial) rimangano accessibili e corrispondano ai contenuti attesi.
Prerequisiti
Prima di costruire il tuo workflow OpenClaw, assicurati di avere:
- Un account OpenClaw con almeno uno spazio di lavoro attivo.
- Un server o una funzione cloud dove yt-dlp è installato e accessibile via HTTP (puoi esporlo con un piccolo wrapper FastAPI o Express, o usare un endpoint gestito HuntAPI).
- Conoscenza di base dell'editor a nodi di OpenClaw.
Passo 1 - Configurare un endpoint HTTP yt-dlp
OpenClaw comunica con strumenti esterni via HTTP. L'approccio più semplice è avvolgere yt-dlp in un piccolo server API.
Ecco un esempio minimo in Python con 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,
}
Distribuisci questo servizio e annota l'URL pubblica - la utilizzerai come destinazione nel nodo azione HTTP di OpenClaw.
Passo 2 - Creare un workflow OpenClaw
Trigger: nuovo video su un canale YouTube
- Apri l'editor OpenClaw e crea un nuovo workflow.
- Aggiungi un nodo trigger Pianificazione o Feed RSS. I feed RSS dei canali YouTube seguono questo schema:
https://www.youtube.com/feeds/videos.xml?channel_id=IL_TUO_CHANNEL_ID
- Imposta l'intervallo di polling (ad es. ogni ora).
Azione: scaricare il video
- Aggiungi un nodo azione Richiesta HTTP dopo il trigger.
- Configuralo come richiesta POST al tuo endpoint yt-dlp:
{
"url": "{{trigger.link}}",
"format": "bestvideo[height<=1080]+bestaudio/best",
"output_dir": "/mnt/storage/videos"
}
- Mappa
trigger.linkdall'elemento del feed RSS al campourl.
Azione: estrarre solo l'audio (opzionale)
Se hai bisogno solo dell'audio (per workflow di trascrizione o podcast), cambia il formato in:
{
"url": "{{trigger.link}}",
"format": "bestaudio/best"
}
E aggiungi --extract-audio --audio-format mp3 al tuo comando yt-dlp lato server.
Passo 3 - Gestire la risposta
Dopo il download, il nodo azione HTTP restituisce un oggetto JSON con il percorso del file, il titolo, la durata e lo stato di successo. Puoi usare questi campi per:
- Inviare una notifica Slack con il titolo del video e una conferma del download.
- Attivare un workflow di trascrizione passando il percorso del file a un nodo Whisper o AssemblyAI.
- Caricare su storage cloud (S3, GCS, R2) usando un nodo azione storage.
- Registrare i risultati in un foglio di calcolo per il tracciamento e il reporting.
Esempio: gestione condizionale degli errori
Aggiungi un nodo Condizione dopo la richiesta HTTP per verificare il campo success:
- Se
true→ procedere con l'azione successiva (upload, trascrizione, ecc.). - Se
false→ inviare un avviso al team con il messaggioerrordi yt-dlp.
Passo 4 - Gestire i limiti di velocità e le restrizioni geografiche
I workflow su larga scala possono raggiungere i limiti di velocità di YouTube (Errore 429) o incontrare contenuti con restrizioni geografiche. Passa un argomento --proxy nel tuo comando yt-dlp:
"yt-dlp",
"--proxy", "http://il-tuo-proxy:porta",
"--format", req.format,
...
Per i proxy rotativi, usa un fornitore che espone un unico gateway che cambia automaticamente gli IP di uscita. Questo evita di gestire una lista di proxy nella logica del tuo workflow.
Puoi anche aggiungere un nodo di retry in OpenClaw per rieseguire automaticamente il passaggio di download con backoff esponenziale se il primo tentativo fallisce.
Blueprint del workflow: pipeline completa di monitoraggio dei contenuti
Ecco un blueprint completo che puoi importare direttamente in OpenClaw:
| Nodo | Tipo | Descrizione |
|---|---|---|
| Trigger RSS | Trigger | Effettua il polling di un feed RSS di un canale YouTube ogni ora |
| Filtro | Condizione | Salta i video più brevi di 2 minuti |
| Download | HTTP POST | Chiama l'endpoint yt-dlp, restituisce il percorso del file |
| Verifica errore | Condizione | Ramifica in base al campo success |
| Trascrizione | HTTP POST | Invia l'audio all'API Whisper |
| Notifica | Slack | Pubblica titolo + riepilogo della trascrizione su un canale |
| Log | Foglio di calcolo | Aggiunge una riga a un Google Sheet |
Consigli per la produzione
- Mettere in cache gli URL elaborati usando un nodo Redis o database per evitare di riscaricare lo stesso video ad ogni ciclo di trigger.
- Impostare con cura i template di output in yt-dlp per evitare collisioni di nomi file:
%(upload_date)s_%(id)s_%(title)s.%(ext)sè un valore sicuro di default. - Monitorare lo spazio su disco sul server di download; aggiungere una fase di pulizia che elimina i file più vecchi di N giorni dopo che sono stati elaborati.
- Usare l'opzione
--cookies-from-browserdi yt-dlp (lato server) per i siti che richiedono autenticazione, e ruotare le sessioni per rimanere conformi.
Semplifica con HuntAPI
Invece di distribuire e mantenere il tuo server yt-dlp (Passo 1), puoi puntare il tuo nodo HTTP di OpenClaw direttamente su HuntAPI. HuntAPI fornisce un endpoint di download video gestito e pronto all'uso - nessuna infrastruttura da mantenere, nessuna lista di proxy da gestire, e supporto integrato per lo sblocco geografico e la gestione dei limiti di velocità.
Questo ti permette di passare da zero a un workflow di download video funzionante in OpenClaw in pochi minuti.