AISub pour Jellyfin — guide

Installation

Il vous faut Jellyfin Server 12.2 ou plus récent et un compte MediaLab Works avec une licence qui couvre le plugin (un abonnement actif, une licence à vie dans sa période de mises à jour, le pack Jellyfin ou l’essai gratuit de 30 jours).

Depuis votre dépôt de plugins (recommandé). Jellyfin installe alors le plugin et ses mises à jour tout seul.

  1. Dans votre compte MediaLab Works, ouvrez Licences → Dépôt de plugins Jellyfin et cliquez sur Créer l’URL du dépôt. Copiez-la : elle est privée (elle contient un jeton), ne la partagez donc pas ; vous pouvez la régénérer ou la révoquer à tout moment.
  2. Dans Jellyfin, ouvrez Dashboard → Plugins → Repositories, cliquez sur +, donnez un nom au dépôt (par exemple MediaLab Works), collez l’adresse et enregistrez.
  3. Dans Dashboard → Plugins → Catalog, cherchez AISub by MediaLab, cliquez sur Install, puis redémarrez Jellyfin.

Le dépôt ne liste que les plugins couverts par vos licences, et uniquement les versions qu’elles autorisent. Ses liens de téléchargement sont signés et expirent au bout de quelques heures, de sorte que Jellyfin lit toujours une liste à jour.

Depuis le catalogue public. https://medialab.works/jellyfin/manifest.json liste chaque plugin MediaLab Works publié avec sa version compilée publique ; medialab Server l’ajoute lui-même. Vous pouvez l’ajouter de la même manière pour installer un plugin avant d’avoir une clé : le plugin demande alors la licence, ou démarre l’essai, sur sa page License. Avec une licence à vie dont la période de mises à jour est terminée, restez sur votre dépôt privé, qui ne propose que les versions que votre licence autorise.

Manuellement, depuis un fichier zip.

  1. Dans Compte → Licences, téléchargez jf-aisub_x.y.z.zip (le SHA-256 du fichier est indiqué à côté du bouton).
  2. Extrayez-le dans un nouveau dossier AISub by MediaLab_x.y.z.0 dans le dossier des plugins de Jellyfin :
    • Linux (paquet) : /var/lib/jellyfin/plugins/
    • Docker (image officielle) : /config/plugins/ dans le volume de configuration
    • Windows : %ProgramData%\Jellyfin\Server\plugins\
  3. Redémarrez Jellyfin.

Activation de la licence

  1. Ouvrez la page du plugin dans Dashboard → Plugins → AISub by MediaLab et cliquez sur License.
  2. Collez votre clé de licence et cliquez sur Activate with key. Le plugin contacte le serveur de licences, lie la clé à ce serveur Jellyfin et affiche la licence comme Active.
  3. Pas encore de clé ? Sur la même page, entrez votre e-mail et démarrez l’essai gratuit de 30 jours (carte requise, rien à payer aujourd’hui) ou achetez une licence ; le plugin s’active tout seul dès que le paiement est effectué.

La licence est vérifiée une fois par jour et à chaque démarrage de Jellyfin. Sans internet, le plugin continue de fonctionner pendant 7 jours après la dernière vérification réussie. Sans licence valide, le plugin cesse son travail et seule sa page License reste fonctionnelle (essai, clé, renouvellement) ; rien n’est supprimé et tout reprend dès que la licence redevient valide. Move license (release this server) sur la même page libère la clé pour un autre serveur.

Mises à jour et retour en arrière

  • Depuis le dépôt : Jellyfin affiche les nouvelles versions dans Dashboard → Plugins et peut mettre à jour le plugin automatiquement ; redémarrez Jellyfin pour charger la nouvelle version.
  • Depuis la page License du plugin : avec une licence valide, Install update installe la version la plus récente autorisée par votre licence et Roll back to x.y.z revient à la version précédente (par exemple si quelque chose a cessé de fonctionner après une mise à jour). Redémarrez Jellyfin après l’une ou l’autre opération. Les deux paquets sont vérifiés par rapport à la somme de contrôle publiée par le serveur de licences.
  • Une licence à vie reçoit les versions publiées pendant sa période de mises à jour ; ensuite, le plugin continue de fonctionner avec la dernière version qu’il est autorisé à utiliser.
  • Après un retour en arrière, si votre dépôt de plugins est ajouté dans Jellyfin, la tâche planifiée Update Plugins de Jellyfin (au démarrage et chaque jour) installe à nouveau la version la plus récente. Pour rester un moment sur la version précédente, retirez les déclencheurs de cette tâche dans Dashboard → Scheduled Tasks et rajoutez-les plus tard.

Code source

Le code source GPL-3.0 de chaque version se trouve dans Compte → Licences (Code source), à côté du téléchargement, sous forme d’archive .tar.gz créée à partir du commit exact de cette version.

Configuration

Ouvrez AISub dans le menu du tableau de bord de Jellyfin. La page comporte quatre onglets : Overview, Jobs, Providers et Settings.

  1. Providers : ajoutez les clés des fournisseurs que vous voulez utiliser. Elles sont stockées sur votre serveur, dans un fichier séparé lisible uniquement par le compte de service de Jellyfin, et ne sont envoyées qu’à leur propre fournisseur ; la page n’en affiche que les 4 derniers caractères. Test translation et Test transcription key vérifient les clés.
    • Translation : une clé Anthropic (Claude Haiku par défaut, Claude Sonnet pour une qualité maximale) ou l’adresse d’un serveur compatible OpenAI : LM Studio (activez « Serve on Local Network », port 1234), Ollama (port 11434) ou un service en ligne comme OpenRouter ou DeepSeek (avec sa clé API). Find models liste les modèles proposés par le serveur.
    • Transcription (pour les titres sans aucun sous-titre) : une clé Groq (Whisper large-v3-turbo, la valeur par défaut, ou Whisper large-v3) ou une clé OpenAI (Whisper). En 0.1.0, un serveur local ne peut pas transcrire.
  2. Settings :
    • Languages to generate : cochez les langues voulues et ordonnez-les par priorité (l’ordre décide quelle langue atteint le budget en premier).
    • Generate automatically et Which titles : seulement les titres ajoutés dès maintenant, ou aussi la bibliothèque existante (chaque nuit, avec un plafond).
    • Preferred source language pour la traduction, quand un titre a plusieurs sous-titres.
    • Only when there is no human subtitle dans la langue voulue (activé par défaut).
    • Remove hearing-impaired cues ([door slams], NAME:) lors de la traduction.
    • Maximum cost per title et per month (USD).
  3. Avec Rosub (facultatif, recommandé) : la page du plugin indique si Rosub est lié. AISub ne génère alors que les langues que Rosub a cherchées et n’a pas trouvées, de sorte que vous ne payez que ce qui manque vraiment.

Utilisation quotidienne

  • Les nouveaux films et épisodes sont traités à leur arrivée : avec Rosub, après que Rosub a cherché la langue ; sans Rosub, quelques minutes après leur ajout.
  • La tâche planifiée Missing AI subtitles (AISub) (chaque jour, à 5:00 par défaut ; Dashboard → Scheduled Tasks) parcourt le reste de la bibliothèque, avec un plafond du nombre de tâches par nuit.
  • L’onglet Jobs affiche la file d’attente, la progression et le coût de chaque tâche, ainsi que les dépenses du mois. Vous pouvez aussi y générer pour un titre (même, en option, s’il a déjà un sous-titre) ou arrêter la tâche en cours.
  • Le coût typique d’un film de 2 h, affiché sur la page du plugin aux tarifs des fournisseurs, est d’environ $0.08 pour traduire avec Claude Haiku et d’environ $0.08 pour transcrire avec Groq Whisper large-v3-turbo ; avec un serveur d’IA local, la traduction ne coûte rien.
  • Quand il n’y a aucun sous-titre à traduire, AISub transcrit l’audio une fois et réutilise cette transcription pour toutes vos langues cibles.
  • Chaque traduction est faite par lots avec du contexte, et chaque ligne est vérifiée, pour que le texte reste sur la bonne ligne et synchronisé avec l’original.
  • Le résultat est enregistré à côté de la vidéo sous Name.language.srt et Jellyfin actualise le titre. Avec Rosub, le sous-titre IA est enregistré comme provisional et le premier sous-titre fait par un humain le remplace automatiquement.

Ce qu’il envoie où

  • Le texte des sous-titres, par lots de lignes, au fournisseur de traduction que vous avez choisi, avec une ligne de contexte sur le titre (nom, année, jusqu’à 4 genres, synopsis d’au plus 400 caractères).
  • Pour la transcription, la piste audio du film (mono, compressée, par morceaux) vers Groq ou OpenAI, avec la langue et le nom du titre. L’image vidéo n’est jamais envoyée.
  • Rien ne va vers medialab.works, hormis la vérification de la licence.

Dépannage

  • Les titres sans aucun sous-titre ne reçoivent pas de sous-titre IA : la transcription nécessite une clé Groq ou OpenAI ; en 0.1.0, un serveur local ne fait que traduire.
  • LM Studio est inaccessible : activez « Serve on Local Network » dans LM Studio, pour que le serveur Jellyfin puisse s’y connecter.
  • « The monthly cap has been reached » : augmentez le plafond mensuel dans Settings, ou attendez le mois suivant.
  • Une tâche est ignorée avec « Rosub has not finished searching this language yet » : elle reprend d’elle-même quand Rosub a terminé.