Communitygithub.com

Buscador de Fotogramas de Películas

Convierte 'Necesito un fotograma de dos personas sentadas en silencio después de una discusión' en un archivo de imagen real y con fuente. Cualquier agente de IA, cualquier sistema operativo, sin credenciales.

¿Qué es Buscador de Fotogramas de Películas?

Esta habilidad permite a cualquier agente de IA (como Claude Code, Cursor o Codex) encontrar y preparar fotogramas de películas reales a partir de descripciones en lenguaje natural. El proceso sigue un pipeline automatizado: verificación de datos, selección de fuente, descarga por lotes de candidatos, creación de una hoja de contactos numerada, selección visual del fotograma mediante un modelo con capacidad de visión, recorte de subtítulos (o composición de nuevos), y entrega con un manifiesto de procedencia. Soporta múltiples fuentes (FilmGrab, galerías de capturas de pantalla, artículos editoriales) y no requiere API keys ni inicio de sesión. Funciona en cualquier sistema operativo y está diseñado para ser robusto ante cambios en la disponibilidad de las fuentes. Incluye perfiles opcionales (por ejemplo, para flujos de trabajo editoriales con selección humana obligatoria) y una completísima serie de referencias para resolver fallos. El resultado siempre incluye los metadatos de la fuente (URL, título de la película, año) y una indicación clara de si se ha añadido o recortado algún subtítulo.

Compatible con✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/Fitzfeichi/movie-still-finder/tree/master

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Buscador de Fotogramas de Películas?

Convierte «Necesito un fotograma de dos personas sentadas en silencio después de una discusión» en un archivo de imagen real y con fuente. Cualquier agente de IA, cualquier sistema operativo, sin credenciales.

1. Léelo primero: qué es realmente posible

No existe una API pública gratuita que tome una frase en lenguaje natural y devuelva el fotograma exacto de una película, especialmente uno con subtítulos de diálogo incrustados. Buscar esa «bala de plata» pierde tiempo. Lo que funciona es un pipeline, donde el agente orquesta y un modelo con capacidad de visión selecciona el fotograma:

consulta -> verificación de hechos -> elegir fuente -> descarga por lotes de candidatos
        -> hoja de contactos numerada -> SELECCIÓN VISUAL del fotograma -> original en alta resolución
        -> recortar subtítulos / componer subtítulos -> revisión visual
        -> entrega + manifiesto de fuente

Dos consecuencias innegociables:

  • El paso de visión no se puede omitir. Adivinar un fotograma a partir de nombres de archivo o solo texto falla. Muestra la hoja de contactos a un modelo con capacidad de visión (o al humano).
  • Verifica los hechos primero. Los «hechos» ampliamente repetidos sobre películas suelen ser incorrectos (consulta references/fact-check.md). Verifica la línea / escena / episodio antes de buscar.

2. Inicio rápido (perfil mínimo, el predeterminado)

pip install -r requirements.txt
python scripts/still.py probe                       # qué fuentes están accesibles ahora mismo
python scripts/still.py grab --out ./work \
  --page "https://movie-screencaps.com/avatar-2009/page/114" \
  --image-referer "https://movie-screencaps.com/" \
  --limit 40
# -> ./work/candidates/*.jpg, ./work/contact_1.jpg, ./work/manifest.json
# Muestra contact_1.jpg a un modelo de visión, anota el número ganador, luego:
python scripts/still.py sheet ./work/candidates     # regenera una hoja numerada
python scripts/still.py crop ./work/candidates/p1_02.jpg --bottom 100 -o ./work/clean.jpg
python scripts/still.py deliver ./work --picks examples/sample-picks.json \
  --profile profiles/minimal.json --out ./delivery

Ejecuta siempre probe primero: la disponibilidad de las fuentes cambia. Para una ejecución completamente offline, consulta la sección D de examples/quickstart.md. --image-referer normalmente es la raíz del sitio, no la URL del artículo.

Para una línea de diálogo, quote da la película + la marca de tiempo en milisegundos:

python scripts/still.py quote "Te veo" --title Avatar

Tutorial completo: examples/quickstart.md. Referencia de comandos: scripts/still.py --help.

3. Decide la ruta antes de tocar la red

SolicitudPrimera opciónAlternativa
Escena / ambiente («silencio después de una pelea», «dos personas mirando hacia otro lado»)Artículo editorial con fotogramas subtitulados, o fotogramas seleccionados de FilmGrab (grab)Galería fotograma a fotograma + selección visual
Una línea citada / «el fotograma donde X dice Y»quote → marca de tiempo → galería de fotogramas → subtitle (etiquetar como compuesto)Captura de pantalla con subtítulos nativos de un artículo editorial
Necesita portada amplia, limpia y sin subtítulosFotogramas seleccionados de FilmGrabcrop los 95-100 píxeles inferiores de una captura de pantalla de visualización
El usuario tiene archivos de video localesBúsqueda semántica local opcional, consulta references/optional-adapters.md—
Meme / 梗图 en lugar de un fotogramaApéndice opcional, references/meme-optional.md—

Ejecuta probe primero. Es gratuito, no necesita inicio de sesión y te dice qué fuentes están 403 / inalcanzables en tu entorno para que no reintentes un host muerto.

4. Reglas que se aplican a todos los agentes

  1. Sin credenciales. No pidas claves API, no inicies sesión en nombre del usuario, no evites muros de pago ni protecciones anti-bot. Un 403 significa «cambiar de fuente», registrado en el registro de ejecución.
  2. Descarga solo URLs que fueron realmente devueltas. Nunca inventes una URL de imagen. Que una página sea accesible no significa que su CDN de imágenes lo sea: verifica una imagen antes de confiar en toda una galería. Si las imágenes dan 403 después de una corrección de Referer, cambia de fuente — no sigas variando los encabezados.
  3. Registra la procedencia. Cada imagen entregada necesita página de origen, URL directa de la imagen, título/año de la película, y si se recortó o compuso algún subtítulo. grab escribe esto en manifest.json automáticamente.
  4. Marca los subtítulos compuestos. Si añades un subtítulo que no estaba en el fotograma original, indícalo en el pie de foto. Nunca lo presentes como un fotograma nativo.
  5. Verifica, no asumas, la resolución (>= 1000 px de ancho por defecto) y abre el archivo final con un visor antes de entregarlo.
  6. Respeta el perfil. El comportamiento más allá de lo anterior (selección humana en el bucle, entrega en dos carpetas, verificación de hechos obligatoria, vista previa de recorte de portada) está controlado por profiles/*.json. No actives silenciosamente reglas adicionales.

5. Perfiles (comportamiento opcional)

El perfil predeterminado profiles/minimal.json es un pipeline simple y de propósito general: encuentra candidatos, selecciona uno, entrega con procedencia. Todo lo demás es optativo.

python scripts/still.py rules --profile profiles/editorial-wechat.json
python scripts/still.py deliver ./work --picks picks.json \
  --profile profiles/editorial-wechat.json --out ./delivery

editorial-wechat.json agrupa el flujo de trabajo de un editor humano: vistas previas numeradas y selección humana (nunca finalización automática), entrega en dos carpetas sin eliminación de candidatos, verificación de hechos obligatoria, anotación obligatoria de subtítulos/fuente, y una vista previa de recorte de portada 2,35:1. Consulta profiles/README.md para el esquema completo.

6. Índice de referencias (divulgación progresiva)

Lee solo lo que necesites para el paso actual.

ArchivoCuándo leerlo
references/workflow.mdCuando necesites el SOP completo de principio a fin y la lista de verificación de aceptación
references/sources.mdAl elegir una fuente, o cuando una fuente deja de funcionar
references/pitfalls.mdCuando algo falla; contiene los hosts muertos conocidos y los modos de fallo exactos
references/image-ops.mdHojas de contactos, recorte, composición de subtítulos, fuentes
references/fact-check.mdCualquier solicitud que cite una línea o describa una escena específica
references/delivery.mdEsquema de procedencia, diseño de dos carpetas, límite de derechos de autor
references/meme-optional.mdCuando el usuario pide un meme en lugar de un fotograma
references/optional-adapters.mdBiblioteca de video local, u otras herramientas basadas en inicio de sesión/CLI

7. Lista de verificación de aceptación

  • La línea / escena fue verificada antes de buscar
  • Una hoja de contactos numerada fue examinada por un modelo de visión o el humano
  • La imagen final se abre correctamente y coincide con la solicitud, no solo con la consulta
  • Página de origen + URL directa + película/año registrados en manifest.json
  • Subtítulos recortados / compuestos explícitamente etiquetados
  • Ancho >= 1000 px (o se indica la desviación)
  • Hosts muertos y soluciones registrados, no reintentados silenciosamente
  • No se eliminó ningún candidato; se conservaron los intermedios

8. Límites del alcance

Esta habilidad encuentra y prepara imágenes. No publica nada, edita el manuscrito del usuario, decide la portada final en nombre del usuario (a menos que el perfil indique que el humano ya eligió), ni otorga ningún derecho para redistribuir fotogramas de películas. Consulta references/delivery.md para conocer el límite de los derechos de autor.

Skills relacionados