Communitygithub.com

zappurenfuro/movie-recap

Crea un resumen narrado completo de una película y un Reel corto para Instagram a partir de un archivo de video o episodio local, incluyendo subtítulos, miniaturas y texto para subir.

¿Qué es movie-recap?

Esta skill permite a un agente de IA (como Claude Code, Codex, etc.) generar un resumen narrado completo de una película o episodio, junto con un Reel corto optimizado para Instagram, todo a partir de un archivo de video local proporcionado por el usuario. El agente se encarga de analizar el video, extraer diálogos (usando ASR local si es necesario), escribir un guion narrativo en inglés, sintetizar la narración con una voz local (Kokoro), y editar el video para crear los dos formatos de salida: un resumen completo (de duración similar a la obra original) y un Reel breve que termina justo antes del clímax. La skill maneja automáticamente la detección y uso de herramientas como FFmpeg, Python, y modelos de TTS y ASR, sin requerir configuración manual del usuario. Está diseñada para ser invocada con un comando simple como `/movie-recap Título` y produce una carpeta con los archivos finales, incluyendo subtítulos (TTS y display), miniaturas, y textos para subir a YouTube e Instagram.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/zappurenfuro/movie-recap/tree/HEAD

Preguntar en tu IA favorita

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

Documentación

Resumen de película (Movie recap)

Invocación y alcance predeterminado

Claude Code: /movie-recap Lucky. Codex: $movie-recap Lucky (o selecciona esta skill en el selector de skills del host). También funciona una ruta de video entrecomillada o una carpeta. Lee el título/ruta y el alcance opcional del mensaje de invocación. Argumentos de Claude Code: $ARGUMENTS. Si ese token no es expandido por el host, usa el mensaje real del usuario, no el token literal como nombre de archivo.

Valor predeterminado: finalizar TANTO el resumen completo como el Reel, incluyendo los archivos mencionados a continuación. Trata esto como una instrucción para ejecutar el trabajo, no solo para escribir un script, un esquema o un plan de edición. Solo se aplica "solo completo" o "solo Reel" cuando el usuario lo solicita explícitamente. No comiences a renderizar solo porque alguien pide inspeccionar, instalar, explicar o modificar esta skill.

Este archivo contiene ambas plantillas actuales de resumen, consolidadas sin historial de preferencias obsoleto. Las reglas de edición exclusivas para el resumen completo nunca deben filtrarse al Reel. Las instrucciones explícitas del usuario actual anulan estos valores predeterminados. No cambies las plantillas de origen ni otros proyectos de películas durante una ejecución normal.

Resolver la entrada

  1. Comienza en la carpeta del proyecto seleccionada por el usuario. Busca archivos de video locales proporcionados (.mkv, .mp4, .mov, .m4v, .webm, .avi) y subtítulos sidecar. Prefiere una ruta explícita proporcionada. Para un título como Lucky, empareja nombres de archivo y subcarpetas relevantes, ignorando puntuación/mayúsculas y sufijos de lanzamiento comunes.
  2. Excluye exportaciones de resúmenes anteriores, avances, muestras, miniaturas y trabajo temporal de la selección de fuente. Prueba los medios candidatos antes de elegir; no selecciones un archivo solo porque sea el más largo. Verifica la identidad a partir del metraje, créditos y subtítulos.
  3. Si hay exactamente una fuente plausible para el título solicitado, continúa sin preguntar. Si Lucky coincide con múltiples episodios, o dos películas diferentes siguen siendo plausibles, haz una pregunta concisa identificando a los candidatos. No combines episodios en silencio ni selecciones uno arbitrario. Sin título, usa la única fuente clara; de lo contrario, pregunta. Si no hay fuente, informa dónde buscaste y solicita su ruta. No descargues una película automáticamente.
  4. Mantén la fuente sin cambios. Crea carpetas nuevas <Título>-Full-Recap y <Título>-Reel-Recap junto a la fuente. Si alguna ya existe, elige un par consistente no utilizado -Edit-2, -Edit-3, etc., en lugar de sobrescribir el trabajo anterior. Usa el identificador del episodio cuando sea aplicable.
  5. Crea una carpeta de trabajo de tarea con alcance fuera de las carpetas finales. Lee las instrucciones del proyecto aplicables, pero mantén los dos contratos de modo separados. No sobrescribas un archivo AGENTS.md existente no relacionado. Si las instrucciones del proyecto necesitan persistir, mantenlas en la raíz de la fuente o dentro de un espacio de trabajo de tarea separado, no entre los resultados finales.

Herramientas, voz y ejecución real

Entorno de ejecución instalado automáticamente

Antes de buscar herramientas globales, lee runtime.json junto a este SKILL.md instalado. Sigue su manifest_path y relee el manifiesto compartido; requiere status: ready. Usa sus rutas absolutas de python, ffmpeg, kokoro_model, kokoro_voices, source_whisper_model (reconocimiento multilingüe de la película fuente) y whisper_model (alineación de narración en inglés). Estas rutas eliminan cualquier necesidad de que los usuarios activen un entorno virtual o localicen modelos manualmente. Usa PyAV de este entorno Python para sondear; el instalador no proporciona un ejecutable ffprobe separado. Por defecto, prefiere CPU y solo usa una GPU disponible después de verificar que funciona.

Si el puntero está ausente, también verifica ~/.movie-recap/runtime-v1/runtime.json, luego realiza el descubrimiento portátil a continuación. Si el manifiesto compartido está ausente, desactualizado o no está listo, explica el error de configuración real y dirige al usuario a ejecutar python install.py --target claude o --target codex (con --update al reemplazar una skill) de este repositorio. Si el usuario te ha pedido que configures las dependencias y el repositorio está disponible, ejecuta el instalador tú mismo. No informes una configuración exitosa solo porque existe un archivo de manifiesto; verifica los ejecutables/modelos referenciados. Nunca incluyas runtime.json en un repositorio público porque contiene rutas específicas de la máquina.

Este es un flujo de trabajo de agente, no un programa independiente de renderizado de video. Inspecciona y reutiliza ayudantes de producción compatibles antes de crear la lógica de edición faltante. Descubre FFmpeg/ffprobe (o sondéo con PyAV), Python, un motor TTS y herramientas ASR/alineación. Prueba una codificación corta antes de comprometerte con un renderizado largo. Usa codificación CPU compatible si NVENC no está disponible. Nunca reclames un video completado cuando solo se produjeron instrucciones de texto.

Narrador predeterminado: Kokoro local am_michael, inglés, sintetizado a 1.00x. Completo: aplica exactamente un ajuste atempo=1.10. Reel: prefiere 1.00x, acorta el guion antes de considerar hasta 1.30x. No cambies de voz en silencio entre salidas ni reclames una voz exacta de Instagram. Reutiliza modelos instalados; pregunta antes de usar servicios de pago. Si la ejecución local requerida o una voz utilizable no está disponible, informa el bloqueador específico sin pretender que un SKILL.md independiente instala esas capacidades. El instalador del repositorio proporciona configuración automática.

Descubrimiento portátil de dependencias:

  • Localiza Python y FFmpeg/ffprobe desde el entorno activo o rutas proporcionadas por el usuario. Si está instalado, imageio_ffmpeg.get_ffmpeg_exe() puede localizar un binario FFmpeg.
  • Localiza el modelo ONNX de Kokoro y los datos de voz desde el entorno TTS instalado del usuario. No asumas un nombre de usuario, carpeta de descarga o sistema operativo en particular. Si faltan los archivos, informa los activos requeridos y solicita sus rutas o permiso para la configuración según sea necesario.
  • Busca modelos de faster-whisper en caché en el caché de Hugging Face del usuario actual o en un directorio de modelos especificado por el usuario. Prueba la compatibilidad con CUDA y recurre a CPU cuando sea necesario.
  • Descubre herramientas locales equivalentes en cada máquina. No empaquetes pesos de modelos, credenciales de API o metraje de películas con esta skill.

Reutilización, contenido fresco y trabajo superpuesto

  • Reutiliza código de propósito general que funcione, herramientas/modelos instalados, esquemas, constructores de renderizado/filtro, utilidades de subtítulos, lógica de validación y empaquetado antes de escribir reemplazos. Primero inspecciona la compatibilidad; adapta solo el comportamiento faltante. Mantén el código separado de los datos específicos de la película. Nunca lleves rutas de películas antiguas, tramas, guiones, mapas de tiempo fuente, narración, marca o credenciales a un nuevo trabajo o ayudante público.
  • Cada nueva producción de resumen requiere un análisis fresco de la fuente proporcionada, guiones completos/Reel recién escritos y narración recién sintetizada. No leas ni reutilices análisis de resúmenes anteriores, transcripciones generadas, guiones, selecciones de tomas o voces como un atajo. Los subtítulos proporcionados por la fuente son entrada válida. Comparte el análisis fresco de la ejecución actual entre su versión completa y Reel, manteniendo sus guiones y contratos editoriales separados. Una revisión explícita como "mismo video, cambia el recorte" puede preservar contenido no afectado; no lo regeneres innecesariamente.
  • Los reintentos de la misma ejecución pueden reutilizar resultados validados sin cambios. Registra la identidad de la fuente, revisión del guion, voz/modelo/velocidad, transformaciones, configuración del codificador y versión del ayudante con los intermedios. Invalida el trabajo afectado y la sincronización dependiente, subtítulos, imágenes y capítulos cuando las entradas cambien. La mera existencia del archivo no es validación de caché. Una nueva ejecución fresca no debe heredar un caché de contenido antiguo.
  • Superpone trabajo independiente: transcripción con muestreo visual; síntesis de párrafos naturales aprobados con inspección de tomas; miniaturas y borrador de texto para subir con renderizado. Las versiones completa y Reel pueden avanzar de forma independiente después del análisis de la ejecución actual. Finaliza las duraciones de las imágenes y los pies de foto solo después de que la voz relevante se haya medido/alineado, y los capítulos después de que la línea de tiempo esté bloqueada. No sintetices borradores no revisados solo para mantener ocupados a los trabajadores.
  • Usa el ejecutor de trabajos reutilizable para etapas de shell cuando sea útil; lee su manifiesto y guía de flujo de trabajo. Proporciona dependencias, concurrencia limitada, recursos exclusivos y tiempos de etapa. No analiza películas ni construye ediciones. Reutiliza ayudantes de producción local compatibles en lugar de recrearlos; escribe solo la lógica faltante. Mantén la revisión editorial con el agente. Usa un proceso TTS de larga duración para retener modelos cargados en todos los párrafos cuando sea compatible.
  • Comienza de forma conservadora con dos trabajos independientes y un trabajo pesado por recurso limitado. Evalúa el rendimiento de GPU TTS o trabajadores adicionales antes de adoptarlos; preserva la pronunciación, pausas, voz y calidad de codificación. Reduce la concurrencia si la contención de memoria o CPU/GPU ralentiza el trabajo. Los procesos superpuestos no autorizan la creación de agentes o servicios de pago.
  • Mide el tiempo transcurrido desde la inspección de la fuente hasta la verificación final, incluyendo configuración, correcciones y fallos. Registra los tiempos de etapa por separado; nunca sumes duraciones superpuestas ni equiperes un rerenderizado en caché con una producción fresca. No acortes la historia, excedas los límites de velocidad de narración, reduzcas la calidad de exportación ni omitas comprobaciones para alcanzar un objetivo de velocidad.

Flujo de trabajo de producción compartido

  1. Prueba los flujos de la fuente, duración, dimensiones activas, velocidad de fotogramas, idioma de audio y subtítulos. Lee el diálogo y muestrea toda la historia, incluido su final. Usa ASR local si faltan subtítulos utilizables; verifica visualmente las acciones importantes en lugar de confiar en suposiciones de ASR. Distingue sueños, flashbacks, leyendas y resultados inciertos de eventos reales. La investigación web puede corroborar la identidad/año de la película; nunca reemplaces el análisis del metraje con una suposición de la trama.
  2. Escribe una narración en inglés clara y específica con causa y efecto precisos. Evita lemas de IA, fragmentos dramáticos apilados, diálogos inventados y relleno repetitivo. Construye un mapa de tiempo fuente con pasajes exactos para cada evento narrado. La versión completa cubre toda la historia. El Reel establece el contexto y se detiene al comienzo del clímax, con su propio guion y límite de spoilers.
  3. Sintetiza párrafos completos u oraciones naturales, no fragmentos cortos de subtítulos de visualización. Únelos en narración continua con pausas de respiración naturales. Mide el habla ajustada real, luego construye la línea de tiempo de imágenes. Preserva las sílabas y no estires el audio para que quepa en duraciones de tomas arbitrarias.
  4. Alinea las palabras con la voz generada. Audita omisiones, nombres propios y habla inesperada. Con faster-whisper, evita proporcionar todo el guion esperado como initial_prompt; puede alucinar palabras u omitir aperturas. Si la decodificación de audio falla debido a una incompatibilidad de API de PyAV, usa FFmpeg para decodificar PCM mono de 16 kHz y pasa un array NumPy a Whisper. Inspecciona resultados de baja confianza en lugar de aceptar marcas de tiempo de palabras fabricadas.
  5. Mantén un manifiesto de edición temporal que contenga entrada/salida de fuente, inicio/fin de salida, anclas de frases de narración, puntos de congelación y transformaciones. Coloca las acciones nombradas en su frase hablada o ligeramente antes. Inspecciona fotogramas de acción intermedios y límites de tomas renderizadas. Nunca cubras "se besan" con un abrazo congelado o "buscando CCTV" con una toma no relacionada hasta varios segundos después.
  6. Renderiza el resumen completo usando la Parte A y el Reel usando la Parte B; el trabajo independiente puede superponerse dentro de los límites de la máquina. Reutiliza solo el análisis de fuente fresco de la ejecución actual, no la imagen transformada del resumen completo. Mantén la sincronización precisa al fotograma con un CFR consistente, conteos de fotogramas explícitos y duraciones de concat. Verifica los renderizados en caché de la misma ejecución contra el guion actual, selección de fuente y configuración; invalida clips cambiados en lugar de reutilizar archivos obsoletos. Codifica lotes de imágenes compatibles una vez y copia su ensamblaje por flujo cuando sea posible; reutiliza el flujo de imágenes del Reel para sus dos mezclas. Vuelve a renderizar solo los lotes afectados cuando una corrección lo permita, luego vuelve a verificar la exportación ensamblada final.
  7. Mezcla una narración clara con una base musical adecuada y silenciosa. Un subrayado sintetizado original restringido es aceptable. No agregues Undertow automáticamente. El mapeo de audio explícito debe excluir todo el audio de la película de la exportación completa. Usa H.264 High, yuv420p, CFR, píxeles cuadrados, AAC-LC estéreo (48 kHz es adecuado) y MP4 faststart para ambos modos.
  8. Genera SRT de TTS con frases naturales y SRT de visualización corta de forma independiente a partir de las mismas palabras de narración y tiempos medidos. Usa las reglas de subtítulos compartidas de la Parte A para ambos; sus restricciones de exportación sin audio original/solo completo no anulan la Parte B. Preserva cada palabra, puntuación y orden. Proporciona el texto para subir y las miniaturas como se especifica.
  9. Valida la decodificación completa, el conteo de fotogramas/duración esperados, dimensiones, perfil de códec, margen de audio, sincronización SRT sin superposición y reconstrucción exacta del guion. Audita la duración total de cada clip completo y la selección de fuente no continua. Compara los dos flujos de imágenes/temporizaciones del Reel. Inspecciona miniaturas y acciones narradas seleccionadas. Revisa el movimiento representativo con audio cuando esté disponible; las imágenes fijas y los metadatos por sí solos no prueban una reproducción fluida. Informa honestamente cualquier pase de escucha/visualización a velocidad normal no disponible.
  10. Solo después de la verificación, limpia los archivos temporales generados por la tarea usando una ruta verificada explícitamente dentro del proyecto de la tarea. Preserva fuentes, ediciones anteriores, herramientas/modelos compartidos, instrucciones y entregables. No elimines cachés compartidos. Si la limpieza está bloqueada por el host, no lo intentes de nuevo a través de otro shell o lenguaje para evitar el bloqueo; informa la ubicación retenida y el motivo. Nunca publiques, subas o disputes reclamos sin autorización explícita.

Paquete final acordado

Reemplaza <Título> con la etiqueta de la película/episodio verificada. La entrega predeterminada tiene TRES MP4 en total: una versión completa y dos versiones Reel.

<Título>-Full-Recap/
  <Título>-recap-with-narration.mp4
  <Título>-narration-TTS.srt
  <Título>-captions-display.srt
  youtube-upload.txt
  thumbnails/
    thumbnail-01.png
    thumbnail-02.png
    thumbnail-03.png
<Título>-Reel-Recap/
  <Título>-recap-with-narration.mp4
  <Título>-recap-without-narration.mp4
  narration.txt
  <Título>-narration-TTS.srt
  <Título>-captions-display.srt
  instagram-copy.txt

No crees un video sin narración para el resumen completo ni un SRT de audio original vacío. El texto para subir es obligatorio en este flujo de trabajo combinado, no opcional. No agregues un logotipo, marca de agua o marca de canal a menos que el usuario lo solicite explícitamente y tengas su consentimiento.

Skills relacionados