Como automatizar downloads de vídeo no OpenClaw com yt-dlp
OpenClaw é uma poderosa plataforma de automação de workflows que permite conectar APIs, gatilhos e ações em pipelines fluidos. Combinado com o yt-dlp - o downloader de vídeo mais capaz disponível - você pode construir sistemas automatizados para monitorar o conteúdo da concorrência, arquivar tutoriais, extrair áudio para transcrição e muito mais.
Este guia explica como configurar workflows de download de vídeo baseados em yt-dlp dentro do OpenClaw, desde um simples gatilho de URL única até um pipeline de monitoramento de conteúdo totalmente automatizado.
Por que combinar yt-dlp com OpenClaw?
Fazer as coisas manualmente não escala. Se você precisa rastrear conteúdo de vídeo em vários canais, arquivar material educacional ou alimentar vídeos baixados em processamento downstream (transcrição, compressão, análise), você precisa de automação.
O OpenClaw cuida da orquestração - gatilhos, agendamento, lógica de ramificação e notificações - enquanto o yt-dlp faz o trabalho pesado: extrair vídeo de forma confiável de mais de 1.000 sites suportados.
Casos de uso comuns:
- Monitoramento de concorrentes: baixar automaticamente novos vídeos de canais do YouTube de concorrentes e encaminhá-los para uma etapa de transcrição ou análise.
- Arquivamento de conteúdo: acionar um download quando um novo vídeo aparece em um feed RSS ou playlist monitorados.
- Extração de áudio: extrair áudio de URLs de vídeo para geração de podcasts, pipelines de transcrição ou conjuntos de dados de treinamento.
- Controle de qualidade: verificar se vídeos disponíveis publicamente (demos de produto, tutoriais) permanecem acessíveis e correspondem ao conteúdo esperado.
Pré-requisitos
Antes de construir seu workflow no OpenClaw, certifique-se de ter:
- Uma conta OpenClaw com pelo menos um espaço de trabalho ativo.
- Um servidor ou função em nuvem onde o yt-dlp esteja instalado e acessível via HTTP (você pode expô-lo com um pequeno wrapper FastAPI ou Express, ou usar um endpoint gerenciado da HuntAPI).
- Conhecimento básico do editor baseado em nós do OpenClaw.
Passo 1 - Configurar um endpoint HTTP do yt-dlp
O OpenClaw se comunica com ferramentas externas via HTTP. A abordagem mais simples é envolver o yt-dlp em um pequeno servidor de API.
Aqui está um exemplo mínimo em Python usando 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,
}
Implante este serviço e anote a URL pública - você a usará como destino no nó de ação HTTP do OpenClaw.
Passo 2 - Criar um workflow no OpenClaw
Gatilho: novo vídeo em um canal do YouTube
- Abra o editor do OpenClaw e crie um novo workflow.
- Adicione um nó de gatilho Agendamento ou Feed RSS. Os feeds RSS de canais do YouTube seguem este padrão:
https://www.youtube.com/feeds/videos.xml?channel_id=SEU_CHANNEL_ID
- Defina o intervalo de sondagem (por exemplo, a cada hora).
Ação: baixar o vídeo
- Adicione um nó de ação Requisição HTTP após o gatilho.
- Configure-o como uma requisição POST para seu endpoint yt-dlp:
{
"url": "{{trigger.link}}",
"format": "bestvideo[height<=1080]+bestaudio/best",
"output_dir": "/mnt/storage/videos"
}
- Mapeie
trigger.linkdo item do feed RSS para o campourl.
Ação: extrair apenas áudio (opcional)
Se você precisar apenas de áudio (para transcrição ou workflows de podcast), altere o formato para:
{
"url": "{{trigger.link}}",
"format": "bestaudio/best"
}
E adicione --extract-audio --audio-format mp3 ao seu comando yt-dlp no lado do servidor.
Passo 3 - Processar a resposta
Após o download, o nó de ação HTTP retorna um objeto JSON com o caminho do arquivo, título, duração e status de sucesso. Você pode usar esses campos para:
- Enviar uma notificação no Slack com o título do vídeo e uma confirmação de download.
- Acionar um workflow de transcrição passando o caminho do arquivo para um nó Whisper ou AssemblyAI.
- Fazer upload para armazenamento em nuvem (S3, GCS, R2) usando um nó de ação de armazenamento.
- Registrar resultados em uma planilha para rastreamento e relatórios.
Exemplo: tratamento condicional de erros
Adicione um nó Condição após a requisição HTTP para verificar o campo success:
- Se
true→ prosseguir para a próxima ação (upload, transcrição, etc.). - Se
false→ enviar um alerta para sua equipe com a mensagemerrordo yt-dlp.
Passo 4 - Lidar com limites de taxa e restrições geográficas
Workflows em grande escala podem atingir os limites de taxa do YouTube (Erro 429) ou encontrar conteúdo bloqueado geograficamente. Passe um argumento --proxy em seu comando yt-dlp:
"yt-dlp",
"--proxy", "http://seu-proxy:porta",
"--format", req.format,
...
Para proxies rotativos, use um provedor que exponha um único gateway que muda automaticamente os IPs de saída. Isso evita gerenciar uma lista de proxies na lógica do seu workflow.
Você também pode adicionar um nó de retenativas no OpenClaw para executar automaticamente a etapa de download com backoff exponencial se a primeira tentativa falhar.
Blueprint do workflow: pipeline completo de monitoramento de conteúdo
Aqui está um blueprint completo que você pode importar diretamente no OpenClaw:
| Nó | Tipo | Descrição |
|---|---|---|
| Gatilho RSS | Gatilho | Sonda um feed RSS de canal do YouTube a cada hora |
| Filtro | Condição | Ignora vídeos com menos de 2 minutos |
| Download | HTTP POST | Chama o endpoint yt-dlp, retorna o caminho do arquivo |
| Verificação de erro | Condição | Ramifica com base no campo success |
| Transcrição | HTTP POST | Envia áudio para a API Whisper |
| Notificação | Slack | Publica título + resumo da transcrição em um canal |
| Log | Planilha | Adiciona uma linha a um Google Sheet |
Dicas para produção
- Armazenar em cache os URLs processados usando um nó Redis ou banco de dados para evitar baixar novamente o mesmo vídeo a cada ciclo de gatilho.
- Definir templates de saída com cuidado no yt-dlp para evitar colisões de nomes de arquivo:
%(upload_date)s_%(id)s_%(title)s.%(ext)sé um padrão seguro. - Monitorar o espaço em disco no servidor de download; adicionar uma etapa de limpeza que exclui arquivos com mais de N dias após serem processados.
- Usar a opção
--cookies-from-browserdo yt-dlp (no servidor) para sites que exigem autenticação, e rotacionar sessões para manter a conformidade.
Simplifique com HuntAPI
Em vez de implantar e manter seu próprio servidor yt-dlp (Passo 1), você pode apontar seu nó HTTP do OpenClaw diretamente para o HuntAPI. O HuntAPI fornece um endpoint de download de vídeo gerenciado e pronto para uso - sem infraestrutura para manter, sem lista de proxies para gerenciar e com suporte integrado para desbloqueio geográfico e tratamento de limites de taxa.
Isso permite que você vá de zero a um workflow funcional de download de vídeo no OpenClaw em minutos.