--- name: youtube-extract category: dev-tools description: "Extrai transcrições e metadados de vídeos, playlists e canais YouTube para o ficheiro de pesquisa Stack_Pesquisa_Videos.md. Usar quando 'youtube', 'vídeo', 'playlist', 'canal', 'transcrição', 'extrair vídeo', 'pesquisa vídeos'." version: "1.0.0" created: 2026-04-04 tools: [Bash] --- # Skill: /youtube-extract Extrai transcrições e metadados de vídeos, playlists e canais YouTube usando o script `youtube-pesquisa-videos.py`. Adiciona automaticamente ao ficheiro de pesquisa do StackDescomplicar. --- ## Ficheiros relevantes | Ficheiro | Caminho | |----------|---------| | **Script** | `/media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py` | | **Destino padrão** | `/media/ealmeida/Dados/Hub/04-Stack/Stack_Pesquisa_Videos.md` | --- ## Processo de execução ### 1. Identificar o pedido Detectar na mensagem do utilizador: - **URLs** — vídeos individuais, playlists (`?list=`), canais (`@canal`, `/c/`, `/channel/`) - **Limite** — "primeiros 10", "máx 5", etc. → usar `--max N` - **Destino** — ficheiro alternativo? → usar `--output caminho` - **Modo** — adicionar ao ficheiro (`--append`) vs mostrar no terminal (sem flag) ### 2. Construir o comando ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ URL1 URL2 ... \ [--max N] \ [--append] \ [--output /caminho/alternativo.md] \ [--file lista.txt] ``` ### 3. Exemplos por tipo de URL **Vídeo individual:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtu.be/dQw4w9WgXcQ" --append ``` **Playlist completa:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtube.com/playlist?list=PLxxx" --append ``` **Playlist com limite:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtube.com/playlist?list=PLxxx" --max 10 --append ``` **Canal completo (máx. 20):** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtube.com/@NomeCanal" --max 20 --append ``` **Mix de URLs:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtu.be/ID1" \ "https://youtube.com/playlist?list=PLxxx" \ --max 5 --append ``` **Ficheiro de lista:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ --file /caminho/lista.txt --append ``` **Pré-visualizar sem gravar:** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtu.be/ID1" ``` --- ## Comportamento padrão | Situação | Acção | |----------|-------| | URL única de vídeo | Extrair e perguntar se adiciona ao ficheiro | | Múltiplos vídeos | Extrair todos e adicionar com `--append` | | Playlist/canal sem limite | Alertar o utilizador — perguntar limite antes de executar | | Ficheiro de destino não especificado | Usar `Stack_Pesquisa_Videos.md` | > **Aviso obrigatório para playlists/canais sem `--max`:** Informar o utilizador do número de vídeos antes de processar — canais podem ter centenas. --- ## Após a extracção 1. Informar quantos vídeos foram adicionados e os números `#N` atribuídos 2. Sugerir ao utilizador que complete os campos `*(a completar)*` no ficheiro 3. Se houver erros (transcrição indisponível), mencionar quais os vídeos afectados 4. Opcional: abrir o ficheiro no editor — `xdg-open "Stack_Pesquisa_Videos.md"` --- ## Pré-requisitos - `yt-dlp` instalado: `pip install yt-dlp` ou `brew install yt-dlp` - Python 3.8+ - Acesso à internet Verificar disponibilidade: ```bash yt-dlp --version && python3 --version ``` --- ## Casos especiais **ID curto do YouTube (11 chars):** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py dQw4w9WgXcQ --append ``` **Destino alternativo (outro projecto):** ```bash python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \ "https://youtu.be/ID1" \ --output "/media/ealmeida/Dados/Hub/05-Projectos/MeuProjecto/videos.md" \ --append ``` --- ## Healing Log Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar. ```jsonl {"date":"","issue":"","fix":"","source":"user|auto"} ``` *Adicionar nova linha após cada erro corrigido.*