AISub para Jellyfin — guía
Instalación
Necesitas Jellyfin Server 12.2 o superior y una cuenta de MediaLab Works con una licencia que cubra el plugin (una suscripción activa, una licencia de por vida dentro de su período de actualizaciones, el paquete de Jellyfin o la prueba gratuita de 30 días).
Desde tu repositorio de plugins (recomendado). Jellyfin instala y actualiza el plugin por sí solo.
- En tu cuenta de MediaLab Works abre Licenses → Jellyfin plugin repository y haz clic en Create address. Cópialo: es privado (contiene un token), así que no lo compartas; puedes regenerarlo o revocarlo en cualquier momento.
- En Jellyfin abre Dashboard → Plugins → Repositories, haz clic en +, dale un nombre (por ejemplo MediaLab Works), pega la dirección y guarda.
- En Dashboard → Plugins → Catalog busca AISub by MediaLab, haz clic en Install y reinicia Jellyfin.
El repositorio lista solo los plugins que cubren tus licencias, y solo las versiones que permiten. Sus enlaces de descarga están firmados y caducan a las pocas horas, así que Jellyfin siempre lee una lista nueva.
Desde el catálogo público. https://medialab.works/jellyfin/manifest.json lista cada plugin publicado de MediaLab Works con su compilación pública; medialab Server lo añade por sí solo. Puedes añadirlo del mismo modo para instalar un plugin antes de tener una clave: el plugin entonces pide la licencia, o inicia la prueba, en su página License. Con una licencia de por vida cuyo período de actualizaciones ha terminado, mantente en tu repositorio privado, que ofrece solo las versiones que tu licencia permite.
Manualmente, desde un archivo zip.
- En Account → Licenses descarga
jf-aisub_x.y.z.zip(el SHA-256 del archivo se muestra junto al botón). - Extráelo en una carpeta nueva
AISub by MediaLab_x.y.z.0dentro de la carpeta de plugins de Jellyfin:- Linux (paquete):
/var/lib/jellyfin/plugins/ - Docker (imagen oficial):
/config/plugins/en el volumen de configuración - Windows:
%ProgramData%\Jellyfin\Server\plugins\
- Linux (paquete):
- Reinicia Jellyfin.
Activación de la licencia
- Abre la página del plugin en Dashboard → Plugins → AISub by MediaLab y haz clic en License.
- Pega tu clave de licencia y haz clic en Activate with key. El plugin contacta con el servidor de licencias, vincula la clave a este servidor de Jellyfin y muestra la licencia como Active.
- ¿Aún no tienes clave? En la misma página escribe tu correo e inicia la prueba gratuita de 30 días (se necesita tarjeta, nada que pagar hoy) o compra una licencia; el plugin se activa solo cuando el pago se ha hecho.
La licencia se comprueba una vez al día y en cada arranque de Jellyfin. Sin internet, el plugin sigue funcionando durante 7 días tras la última comprobación exitosa. Sin una licencia válida, el plugin detiene su trabajo y solo su página License sigue funcionando (prueba, clave, renovación); no se borra nada y todo se reanuda en cuanto la licencia es válida de nuevo. Move license (release this server) en la misma página libera la clave para otro servidor.
Actualizaciones y vuelta atrás
- Desde el repositorio: Jellyfin muestra las versiones nuevas en Dashboard → Plugins y puede actualizar el plugin automáticamente; reinicia Jellyfin para cargar la nueva versión.
- Desde la página License del plugin: con una licencia válida, Install update instala la versión más nueva que tu licencia permite y Roll back to x.y.z vuelve a la versión anterior (por ejemplo, si algo dejó de funcionar tras una actualización). Reinicia Jellyfin después de cualquiera de las dos. Ambos paquetes se comprueban contra la suma de verificación publicada por el servidor de licencias.
- Una licencia de por vida recibe las versiones publicadas durante su período de actualizaciones; después, el plugin sigue funcionando en la última versión que puede usar.
- Tras una vuelta atrás, si tu repositorio de plugins está añadido en Jellyfin, la tarea programada Update Plugins de Jellyfin (en el arranque y cada día) instala de nuevo la versión más nueva. Para permanecer un tiempo en la versión anterior, quita los desencadenantes de esa tarea en Dashboard → Scheduled Tasks y añádelos de nuevo más tarde.
Código fuente
El código fuente GPL-3.0 de cada versión está en Account → Licenses (Source code), junto a la descarga, como archivo .tar.gz creado a partir del commit exacto de esa versión.
Configuración
Abre AISub en el menú del panel de Jellyfin. La página tiene cuatro pestañas: Overview, Jobs, Providers y Settings.
- Providers: añade las claves de los proveedores que quieras usar. Se guardan en tu servidor, en un archivo separado legible solo por la cuenta de servicio de Jellyfin, y se envían solo a su propio proveedor; la página solo muestra sus últimos 4 caracteres. Test translation y Test transcription key comprueban las claves.
- Translation: una clave de Anthropic (Claude Haiku por defecto, Claude Sonnet para la máxima calidad), o la dirección de un servidor compatible con OpenAI: LM Studio (activa «Serve on Local Network», puerto 1234), Ollama (puerto 11434) o uno en línea como OpenRouter o DeepSeek (con su clave de API). Find models lista los modelos que ofrece el servidor.
- Transcription (para títulos sin ningún subtítulo): una clave de Groq (Whisper large-v3-turbo, el predeterminado, o Whisper large-v3) o una clave de OpenAI (Whisper). En la versión 0.1.0, un servidor local no puede transcribir.
- Settings:
- Languages to generate: marca los idiomas que quieras y ordénalos por prioridad (el orden decide qué idioma llega primero al presupuesto).
- Generate automatically y Which titles: solo los títulos añadidos de ahora en adelante, o también la biblioteca existente (cada noche, con límite).
- Preferred source language para la traducción, cuando un título tiene varios subtítulos.
- Only when there is no human subtitle en el idioma deseado (activado por defecto).
- Remove hearing-impaired cues ([door slams], NAME:) al traducir.
- Maximum cost per title y per month (USD).
- Con Rosub (opcional, recomendado): la página del plugin muestra si Rosub está vinculado. AISub genera entonces solo los idiomas que Rosub buscó y no encontró, así pagas solo por lo que realmente falta.
Uso diario
- Las películas y episodios nuevos se procesan cuando llegan: con Rosub, después de que Rosub ha buscado el idioma; sin Rosub, unos minutos después de añadirse.
- La tarea programada Missing AI subtitles (AISub) (cada día, a las 5:00 por defecto; Dashboard → Scheduled Tasks) recorre el resto de la biblioteca, con un límite en el número de trabajos por noche.
- La pestaña Jobs muestra la cola, el progreso y el coste de cada trabajo, y el gasto de este mes. Desde allí también puedes generate for one title (opcionalmente incluso si ya tiene un subtítulo) o stop the current job.
- El coste típico de una película de 2 horas, que se muestra en la página del plugin a las tarifas de los proveedores, es de unos $0.08 por traducir con Claude Haiku y de unos $0.08 por transcribir con Groq Whisper large-v3-turbo; con un servidor de IA local, la traducción no cuesta nada.
- Cuando no hay ningún subtítulo que traducir, AISub transcribe el audio una vez y reutiliza esa transcripción para todos tus idiomas de destino.
- Cada traducción se hace por lotes con contexto, y cada cue se comprueba, para que el texto se mantenga en la línea correcta y sincronizado con el original.
- El resultado se guarda junto al vídeo como
Name.language.srty Jellyfin actualiza el título. Con Rosub, el subtítulo de IA se registra como provisional y el primer subtítulo hecho por una persona lo reemplaza automáticamente.
Qué envía y a dónde
- El texto de los subtítulos, en lotes de cues, al proveedor de traducción que elegiste, con una línea de contexto sobre el título (nombre, año, hasta 4 géneros, sinopsis de como máximo 400 caracteres).
- Para la transcripción, la pista de audio de la película (mono, comprimida, por trozos) a Groq u OpenAI, con el idioma y el nombre del título. La imagen del vídeo nunca se envía.
- Nada va a medialab.works salvo la comprobación de la licencia.
Solución de problemas
- Los títulos sin ningún subtítulo no reciben subtítulo de IA: la transcripción necesita una clave de Groq u OpenAI; en la versión 0.1.0, un servidor local solo traduce.
- LM Studio no responde: activa «Serve on Local Network» en LM Studio, para que el servidor de Jellyfin pueda conectarse a él.
- «The monthly cap has been reached»: sube el límite mensual en Settings, o espera al mes siguiente.
- Un trabajo se omite con «Rosub has not finished searching this language yet»: se reanuda solo cuando Rosub termina.