Communitygithub.com

JinxinHu/open_claude_skills

Extrae las diapositivas de un seminario, conferencia o charla grabada (YouTube, Vimeo, Panopto, Zoom o un archivo de video local) como PNG por cada cambio de diapositiva, con marca de tiempo, y las compila en un PDF.

¿Qué es open_claude_skills?

Esta habilidad permite extraer automáticamente las diapositivas de videos de seminarios, conferencias y clases grabadas, convirtiéndolas en imágenes PNG individuales (una por cada cambio o paso de construcción) y generando opcionalmente un PDF con marcas de tiempo. Es útil cuando un usuario tiene solo el video de una presentación y necesita recuperar las diapositivas o figuras sin tener que tomar capturas manualmente. Soporta plataformas como YouTube, Vimeo, Panopto, Zoom y archivos locales, y funciona mediante yt-dlp para descargar el video (solo el flujo, sin audio) y ffmpeg para muestrear fotogramas y detectar cambios de escena, identificando así cada diapositiva nueva. Está implementada como dos scripts (bash para Linux/macOS/Git Bash/WSL y PowerShell para Windows) que producen una carpeta con las imágenes ordenadas, un archivo de marcas de tiempo, y plantillas LaTeX para compilar el PDF final.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JinxinHu/open_claude_skills/tree/HEAD/video-seminar-crawling

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Diapositivas de un video de seminario

scripts/ contiene una herramienta en dos formas que hacen lo mismo:

ScriptÚsalo en
scripts/extract_slides.shLinux, macOS, Git Bash o WSL en Windows
scripts/extract_slides.ps1Windows PowerShell, no necesita bash
scripts/slides.texPlantilla Beamer que los scripts copian junto a los fotogramas

Cómo funciona: yt-dlp descarga solo el flujo de video (sin audio, como máximo 1080p). ffmpeg lo muestrea a 1 fotograma/s y conserva el primer fotograma más cada fotograma cuya puntuación de cambio de escena supere un umbral, de modo que cada fotograma conservado es una nueva diapositiva o un nuevo paso de construcción. El registro showinfo proporciona el tiempo de video de cada fotograma. La carpeta de salida contiene:

  • slide_001.png, slide_002.png, ...: uno por cada cambio de diapositiva
  • timestamps.txt: la hora de video de cada uno, en segundos
  • frame_list.tex y slides.tex: pdflatex slides.tex genera una página por diapositiva con su hora h:mm:ss debajo

Pasos

  1. Verifica las herramientas. Ejecuta ffmpeg -version y yt-dlp --version. Si falta alguna, instálala (abajo) o indícale al usuario cómo hacerlo. No se necesita yt-dlp para un archivo local.

  2. Elige el script para la plataforma. En Windows, usa el de PowerShell a menos que el usuario esté claramente en Git Bash o WSL.

  3. Ejecútalo sobre la URL o archivo que el usuario proporcionó, en una carpeta con el nombre de la charla (por ejemplo -o speaker_topic_frames), no dentro de la carpeta de la habilidad.

    bash scripts/extract_slides.sh -u "https://www.youtube.com/watch?v=ID" -o talk_frames
    bash scripts/extract_slides.sh -i "recording.mp4" -o talk_frames
    
    powershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -Url "https://www.youtube.com/watch?v=ID" -OutDir talk_frames
    powershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -InputFile "C:\path\to\recording.mp4" -OutDir talk_frames
    

    -ExecutionPolicy Bypass evita el bloqueo predeterminado de Windows en scripts, solo para esa ejecución.

  4. Revisa los fotogramas antes de informar. Abre algunos PNG (primero, intermedio, último) y verifica:

    • Cámara web o vista del presentador junto a las diapositivas: el movimiento del presentador genera cambios de diapositiva falsos. Encuentra el área de la diapositiva en un fotograma y vuelve a ejecutar con un recorte, -c W:H:X:Y / -Crop W:H:X:Y (sintaxis de recorte de ffmpeg: ancho, alto, luego esquina superior izquierda).
    • Demasiados pocos fotogramas (pasos de construcción o cambios pequeños omitidos): vuelve a ejecutar con un umbral más bajo, -t 0.05 / -Threshold 0.05.
    • Demasiados fotogramas (video, animaciones, ruido de cámara): súbelo a 0.2-0.3, o recorta.
    • Duplicados: elimina los PNG sobrantes y sus líneas en frame_list.tex.
  5. Genera el PDF si el usuario lo desea: cd a la carpeta de salida y ejecuta pdflatex slides.tex (o latexmk -pdf slides.tex).

  6. Informa el número de fotogramas, la carpeta de salida, el PDF y cualquier cosa pendiente para el usuario, como duplicados que conservaste a propósito.

Opciones

bashPowerShellSignificadoPredeterminado
-u URL-Url URLVideo a descargar (cualquier sitio que soporte yt-dlp)
-i FILE-InputFile FILEVideo local en lugar de descarga
-o DIR-OutDir DIRCarpeta de salidavideo_frames
-t X-Threshold XUmbral de cambio de escena, 0-10.10
-c W:H:X:Y-Crop W:H:X:YRecortar primero al área de la diapositivaninguno
-b NAME-Browser NAMEUsar cookies de inicio de sesión de este navegador (chrome, firefox, edge, ...)ninguno

Instalación de las herramientas

  • Windows: winget install --id yt-dlp.yt-dlp y winget install --id Gyan.FFmpeg, luego cierra y vuelve a abrir PowerShell para que los encuentre.
  • macOS: brew install yt-dlp ffmpeg
  • Linux: sudo apt install ffmpeg (o el equivalente de tu distribución) y pip install -U yt-dlp
  • LaTeX (solo para el PDF): TeX Live o MiKTeX. latexmk de MiKTeX necesita Perl; pdflatex simple no.

Solución de problemas

  • Grabación detrás de un inicio de sesión (Panopto, Zoom cloud, portal universitario): pasa -b chrome / -Browser chrome (o el navegador con el que el usuario inició sesión). Si yt-dlp aún no puede obtenerlo, pide al usuario que descargue el video y use -i.
  • $'\r': command not found o pipefail: invalid option name en Git Bash: el archivo .sh tiene saltos de línea de Windows. Ejecuta sed -i 's/\r$//' scripts/extract_slides.sh una vez.
  • Errores de yt-dlp en YouTube ("Sign in to confirm", errores de formato): actualízalo primero, yt-dlp -U o pip install -U yt-dlp, que soluciona la mayoría.
  • Sin conexión de red al host del video (sesión en espacio aislado o en la nube): indícalo y proporciona al usuario el comando para ejecutar en su propia máquina.

Solo obtén grabaciones que el usuario tenga permiso de acceder, y conserva los fotogramas para sus propias notas y estudio a menos que la licencia de la charla diga lo contrario.

Skills relacionados