Communitygithub.com

DeepAleph/jevreel

Busca y comprende videos sin necesidad de embeddings. Útil cuando el usuario pregunta sobre el contenido de un archivo de video o una URL de video: encontrar momentos ("cuándo sucede X"), encontrar una persona u objeto a partir de una foto, leer lo que aparece en pantalla en un momento, obtener lo que se dice, rastrear lo mismo a lo largo de un video completo, o una respuesta sobre el video completo. Funciona a través de las herramientas MCP de jevreel o la CLI `jevreel`.

¿Qué es jevreel?

jevreel es una habilidad para agentes de IA que permite buscar y comprender el contenido de videos de forma eficiente sin necesidad de generar embeddings ni modelos de visión grandes. Funciona descomponiendo el video en fotogramas clave (uno por segundo) y utilizando un modelo de decisión rápido (Jev) para analizar cada fotograma en paralelo, luego verifica las ventanas más prometedoras en resolución completa. Es compatible con múltiples plataformas de agentes (Claude Code, Cursor, Codex) a través de herramientas MCP o la CLI independiente `jevreel`. Proporciona respuestas con probabilidades y tipos (like choice, score, yes/no), permitiendo al agente principal leer, describir y concluir basándose en las evidencias encontradas. Ofrece funcionalidades como búsqueda de momentos por descripción visual o de habla, búsqueda a partir de una foto, transcripción de partes del video, preguntas sobre el video completo y "lentes" para aplicar las mismas preguntas de forma sistemática a lo largo del video. Los resultados incluyen marcas de tiempo, probabilidades y fotogramas verificados para que el agente pueda inspeccionar visualmente antes de responder. El uso de Jev cobra solo por tokens de entrada, y las solicitudes repetidas se cachean gratuitamente.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DeepAleph/jevreel/tree/HEAD/skills/jevreel

Preguntar en tu IA favorita

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

Documentación

jevreel: haz preguntas sobre videos

jevreel organiza un video en hojas de contacto a un fotograma por segundo y utiliza a Jev, el modelo de decisión rápida de TypeSafe, para examinar cada hoja en paralelo, luego revisa las mejores ventanas en fotogramas completos. Tú (el agente principal) luego observas lo que encontró. Jev proporciona respuestas con tipos y probabilidades, nunca descripciones: leer, describir y concluir es tu trabajo.

Verificación de configuración

  • TYPESAFE_API_KEY debe estar configurado para cualquier cosa que consulte a Jev (indexación con línea de tiempo, preguntar, encontrar, localizar, completo, lentes). Zoom, transcripciones y consultas de línea de tiempo funcionan sin ella.
  • ffmpeg y ffprobe deben estar en el PATH.
  • Las URLs necesitan jevreel[url]; los videos sin subtítulos necesitan jevreel[asr] para obtener una transcripción.

Flujo de trabajo

  1. Indexa una vez. MCP index_video(source) o jevreel index <archivo-o-url>. Las llamadas posteriores usan el id devuelto, la ruta o el título ("tears of steel"). Re-indexar un video ya indexado devuelve el resultado de inmediato.
  2. Encuentra momentos. ask_video(video, consulta) / jevreel ask <id> "<consulta>".
    • Escribe la consulta como una descripción simple de lo que sería visible o se diría: "un gráfico de barras en una diapositiva", "alguien abre un portátil", "el orador menciona precios".
    • Una cosa por consulta. Divide "un coche rojo y un perro" en dos preguntas; Jev es más preciso con preguntas simples.
    • mode: visual (solo en pantalla), speech (solo transcripción, más barato), both, o auto.
    • Acota con start/end cuando el usuario mencione una parte del video.
  3. Encuentra a partir de una foto. find_in_video(video, ruta_imagen, nota="persona") / jevreel find <id> foto.jpg --note persona.
  4. Mira antes de responder. Los aciertos son pistas, no hechos. Los aciertos verificados vienen con frame, una imagen a resolución completa del momento: mírala. zoom_video(video, inicio, fin) / jevreel zoom <id> 12:00 12:10 proporciona más fotogramas. locate_in_frame(video, en, destino) encuadra y recorta una cosa en un fotograma para una lectura de cerca.
  5. Lo que se dice. video_transcript(video, inicio, fin) / jevreel transcript <id> --start 12:00 --end 13:00.
  6. Preguntas sobre el video completo. ask_whole_video(video, pregunta, tipo, opciones) / jevreel whole <id> "¿Es esto un tutorial?". Usa kind=choice con opciones, o kind=score con niveles del más bajo al más alto (máximo 10).

Lentes: cuando las mismas preguntas importan a lo largo de todo el video

Cuando al usuario le importan varias cosas a lo largo de un video (quién está en pantalla, reglas de seguridad, marcas, clima, si hay una diapositiva visible), no preguntes cada una por separado. Ejecuta un lente: cada minuto responde todas sus preguntas en una sola solicitud. Luego filtra las respuestas tantas veces como sea necesario, de forma gratuita.

  • MCP run_lens(video, lente) con {"name": "sitio", "questions": [{"name": "casco_quitado", "type": "noul", "ask": "¿Se ve un trabajador sin casco?"}, {"name": "vehiculo", "type": "choice", "ask": "¿Qué vehículo es más visible?", "options": ["coche", "camión", "ninguno"]}, {"name": "multitud", "type": "score", "ask": "¿Qué tan concurrido está?", "levels": ["Vacío", "Algo", "Concurrido"]}]}. CLI: jevreel lens <id> lente.toml. Para incluir un lente mientras se indexa, pásalo a index_video (o jevreel index --lens); entonces cuesta casi nada adicional.
  • query_timeline(video, "casco_quitado > 0.7") / jevreel query <id> "casco_quitado > 0.7 and vehiculo == camion". Las condiciones son columna operador valor unidas por and; entrecomilla un valor que contenga "and" (lugar == 'libros y un escritorio'). Omite where para ver cada minuto y sus columnas. Las preguntas de sí/no también dan <nombre>_at, el segundo en que es más visible.
  • Las columnas predeterminadas de la línea de tiempo también están ahí: people, talking_to_camera, screen_or_slides, text_on_screen, cut, setting, activity (0-3), keyframe.

Lectura de resultados

  • probability es la probabilidad de "sí" de Jev; strong significa al menos 0.7. Para aciertos verified proviene de los fotogramas completos, at / time es el fotograma que lo mostró mejor, y screened es la probabilidad de la hoja de contacto antes. Los aciertos no verificados provienen solo de la hoja.
  • shown y said son las preguntas de pantalla y transcripción, preguntadas por separado.
  • also enumera otros momentos probables en la misma ventana.
  • Las probabilidades clasifican bien pero no están garantizadas como calibradas. Mira antes de afirmar algo que no hayas visto, y dilo cuando solo tengas un acierto débil.
  • Que no haya aciertos por encima del umbral es una respuesta real, pero primero revisa weak: ventanas que Jev no descartó, incluidas aquellas que la verificación revocó. Haz zoom en ellas antes de decir "no encontrado".
  • Cita los momentos por sus tiempos (por ejemplo "a las 12:04"), para que el usuario pueda saltar allí.

Costos

Jev factura solo tokens de entrada, y las solicitudes repetidas idénticas se responden desde la caché de jevreel de forma gratuita (cached en los resultados). Cada pregunta envía cada hoja en el rango una vez (una hoja por minuto de video), más una solicitud por ventana verificada, por lo que acotar con start/end hace que las preguntas sean más baratas y rápidas. Los resultados reportan requests, cached, input_tokens y estimated_usd.

Skills relacionados