Pega una URL o un archivo y haz la pregunta. El agente obtiene los subtítulos, extrae fotogramas, transcribe el audio y lee cada fotograma como imagen. Responde como si hubiera visto el video.
# pega la URL + la pregunta /watch https://youtu.be/… o que acontece em 0:30? ▸ yt-dlp subtítulos encontrados (auto) ▸ ffmpeg 42 frames · scene-aware ▸ transc. captions · 0:00 → 3:12 ▸ Claude leyó 42 imágenes + transcript → Em 0:30 aparece o menu de config, e a narração explica o passo 2…
El agente lee páginas, ejecuta scripts y navega repositorios. Lo que él no hace de fábrica es ver un video. Esta skill le da ese sentido: Python puro con la biblioteca estándar para orquestar yt-dlp + ffmpeg + una API Whisper opcional.
Fotogramas extraídos como JPEG + transcripción con marcas de tiempo. El agente da Read en cada fotograma: la imagen se incorpora directamente al contexto y se alinea con lo que se dijo.
URL de YouTube, TikTok, Loom, X, Vimeo, Twitch y cientos de sitios más mediante yt-dlp — o un archivo local .mp4 .mov .mkv .webm.
Una carpeta de skill autocontenida se instala en Claude Code, Codex, Cursor, Copilot, Gemini CLI y más de 50 hosts de Agent Skills. Sin configuración para empezar.
La prioridad es gastar lo mínimo: en el modo transcript, una URL con subtítulos se devuelve sin descargar ningún video. Cuando se necesitan frames, descarga y extrae solo los que requiere la ejecución.
yt-dlp revisa primero si hay subtítulos. Si existen (y estás en modo transcripción), no se descarga ningún video.
ffmpeg extrae fotogramas clave rápidamente (efficient) o frames por corte de escena (balanced), 512px, 2 fps máx. En efficient, solo extrae los keyframes que el propio video ya guarda cada ~1s (-skip_frame nokey) — sin volver a decodificar y comparar cuadro a cuadro, por eso es mucho más rápido que el análisis completo de escenas.
Cada frame se convierte en una miniatura y se compara con el último que se conservó; si la diferencia de píxeles está por debajo del umbral, se descarta el cuadro (diapositiva sin movimiento, pantalla estática) antes de contabilizar el presupuesto: solo cuenta un frame que realmente cambia.
Primero, subtítulos nativos (gratis); si faltan, extrae el audio mono de 16 kHz y envíalo a Whisper (Groq u OpenAI).
Los subtítulos cubren la mayoría de los videos públicos gratis. La clave de Whisper solo se usa cuando el video realmente no tiene subtítulos (archivos locales, algunos TikToks/Vimeos).
Se instalan en la primera ejecución. En macOS, automáticamente vía brew; Linux/Windows imprimen el comando exacto. Las próximas veces, el preflight es una consulta <100 ms.
# preflight + instalador (idempotente) python3 scripts/setup.py
Instala en tu herramienta, pega una URL y pregunta. El resto —subtítulos, descarga, fotogramas, transcripción— lo resuelve el script.
Agrega el marketplace local e instala el plugin. Luego actualiza con /plugin update watch@claude-video.
/plugin marketplace add inematds/claude-video /plugin install watch@claude-video
La CLI de Agent Skills detecta los hosts y copia toda la skill. -g instálala globalmente; elimínala para limitarla al proyecto.
npx skills add inematds/claude-video -g # global para tu usuario
Fuente (URL o ruta) + la pregunta. Si no haces ninguna pregunta, genera un resumen estructurado con los momentos clave.
/watch https://youtu.be/dQw4w9WgXcQ o que acontece no minuto 0:30? /watch ~/Movies/screen-recording.mp4 quando a UI quebra? /watch https://www.tiktok.com/@user/video/123 resume isso
Cuando la pregunta sea sobre un momento, pasa --start/--end (acepta SS, MM:SS, HH:MM:SS). El presupuesto de frames se vuelve más denso y la transcripción se filtra al mismo intervalo.
/watch $URL --start 2:15 --end 2:45 # zoom en 30 s a 2 fps /watch video.mp4 --start 50 --end 60 # últimos 10 s /watch $URL --start 1:12:00 # desde 1h12m hasta el final
Cambia fidelidad por velocidad y costo de tokens. Predeterminado balanced. Fija el valor predeterminado con WATCH_DETAIL= en el ~/.config/watch/.env.
| Modo | Fotogramas | Uso |
|---|---|---|
transcript | 0 | Solo transcripción; omite la descarga cuando hay subtítulos. |
efficient | hasta 50 | Keyframes rápidos (~0,5 s de extracción). |
balanced | hasta 100 | Fotogramas por corte de escena. Predeterminado. |
token-burner | sin límite | Escena, sin límite de duración: cobertura máxima en videos largos. |
/watch $URL --detail efficient # pasada rápida de 50 keyframes /watch $URL --resolution 1024 # leer el texto en pantalla (diapositivas, terminal)
La selección por escena/keyframe puede pasar por alto cuando alguien señala la pantalla sin cambiar de escena: "mira aquí", "como están viendo", "fíjate en esto". El agente lee primero la transcripción, identifica esos momentos y vuelve a ejecutar con --timestamps para forzar un fotograma exactamente allí. Es criterio del agente, no una regex, y los fotogramas de pista se suman a lo que el --detail ya había elegido, sin que se descarten por el límite de presupuesto.
/watch $URL --detail transcript # 1. primero, transcripción con marcas de tiempo /watch $URL --timestamps 4:32,7:10,9:55 # 2. vuelve a ejecutar en los momentos en que lo que se dice apunta a la pantalla
La ventaja aparece cuando el cómo importa tanto como el qué — hooks de video, errores en grabaciones de pantalla, resúmenes de contenido largo.
Mira los primeros fotogramas y el inicio de la transcripción, y desglosa la estructura de un video viral, un anuncio creativo o la intro de un podcast.
/watch $URL qual foi o hook de abertura?
¿Recibiste una grabación de pantalla de algo que no funciona? Encuentra el fotograma donde aparece el problema y lo describe; muchas veces detecta la causa.
/watch bug-repro.mov o que está dando errado?Extrae la estructura, los momentos clave y lo que realmente se dijo y se mostró. Más rápido que verlo a 2×.
/watch $URL resume isso
Reduce un "game-changer" a las pocas cosas que importan: sustancia sin diez minutos de introducción ni exageraciones.
/watch $URL o que é NOVO de verdade — pula o hype
Skill autocontenida, solo con la biblioteca estándar. Cada línea de abajo describe un comportamiento que existe hoy, no una hoja de ruta futura.
transcript, una URL con subtítulos ni siquiera descarga el video.transcript, efficient (keyframes), balanced (escena) y token-burner (sin límite). Presupuesto de frames por duración para no exceder el contexto.--no-dedup desactiva.--start/--endPresupuesto más denso en el fragmento solicitado; transcripción filtrada al mismo intervalo; las marcas de tiempo siempre corresponden al tiempo absoluto del video.--timestampsEl agente lee la transcripción, identifica dónde el habla señala la pantalla ("mira aquí", "como pueden ver") y fuerza un fotograma ahí, sumado a los que ya seleccionó por escena, sin que el recorte del presupuesto lo descarte.npx skills, y claude.ai por bundle .skill.