AISub für Jellyfin — Anleitung
Installation
Du brauchst Jellyfin Server 12.2 oder neuer und ein MediaLab-Works-Konto mit einer Lizenz, die das Plugin abdeckt (ein aktives Abonnement, eine Lifetime-Lizenz innerhalb ihres Update-Zeitraums, das Jellyfin-Paket oder den kostenlosen 30-tägigen Testzeitraum).
Aus deinem Plugin-Repository (empfohlen). Jellyfin installiert und aktualisiert das Plugin dann von selbst.
- Öffne in deinem MediaLab-Works-Konto Lizenzen → Jellyfin-Plugin-Repository und klicke auf Repository-URL erstellen. Kopiere sie: Sie ist privat (sie enthält einen Token), also teile sie nicht; du kannst sie jederzeit neu erzeugen oder widerrufen.
- Öffne in Jellyfin Dashboard → Plugins → Repositories, klicke auf +, gib einen Namen ein (zum Beispiel MediaLab Works), füge die Adresse ein und speichere.
- Suche in Dashboard → Plugins → Catalog nach AISub by MediaLab, klicke auf Install und starte Jellyfin neu.
Das Repository listet nur die Plugins, die deine Lizenzen abdecken, und nur die erlaubten Versionen. Seine Download-Links sind signiert und laufen nach wenigen Stunden ab, sodass Jellyfin immer eine frische Liste liest.
Aus dem öffentlichen Katalog. https://medialab.works/jellyfin/manifest.json listet jedes veröffentlichte MediaLab-Works-Plugin mit seinem öffentlichen Build; medialab Server fügt ihn von selbst hinzu. Du kannst ihn auf dieselbe Weise hinzufügen, um ein Plugin zu installieren, bevor du einen Schlüssel hast: Das Plugin fragt dann auf seiner Lizenz-Seite nach der Lizenz oder startet den Testzeitraum. Bei einer Lifetime-Lizenz mit abgelaufenem Update-Zeitraum bleib bei deinem privaten Repository, das nur die Versionen anbietet, die deine Lizenz erlaubt.
Manuell, aus einer Zip-Datei.
- Lade in Konto → Lizenzen
jf-aisub_x.y.z.zipherunter (die SHA-256 der Datei steht neben dem Button). - Entpacke sie in einen neuen Ordner
AISub by MediaLab_x.y.z.0im Jellyfin-Plugin-Ordner:- Linux (Paket):
/var/lib/jellyfin/plugins/ - Docker (offizielles Image):
/config/plugins/im Config-Volume - Windows:
%ProgramData%\Jellyfin\Server\plugins\
- Linux (Paket):
- Starte Jellyfin neu.
Lizenzaktivierung
- Öffne die Plugin-Seite unter Dashboard → Plugins → AISub by MediaLab und klicke auf License.
- Füge deinen Lizenzschlüssel ein und klicke auf Activate with key. Das Plugin kontaktiert den Lizenzserver, bindet den Schlüssel an diesen Jellyfin-Server und zeigt die Lizenz als Active an.
- Noch kein Schlüssel? Gib auf derselben Seite deine E-Mail-Adresse ein und starte den kostenlosen 30-tägigen Testzeitraum (Karte erforderlich, heute nichts zu zahlen) oder kauf eine Lizenz; das Plugin aktiviert sich, sobald die Zahlung durch ist.
Die Lizenz wird einmal am Tag und bei jedem Jellyfin-Start geprüft. Ohne Internet läuft das Plugin nach der letzten erfolgreichen Prüfung noch 7 Tage weiter. Ohne gültige Lizenz stoppt das Plugin seine Arbeit; nur seine License-Seite funktioniert weiter (Test, Schlüssel, Verlängerung). Es wird nichts gelöscht, und alles läuft weiter, sobald die Lizenz wieder gültig ist. Move license (release this server) auf derselben Seite gibt den Schlüssel für einen anderen Server frei.
Updates und Rollback
- Aus dem Repository: Jellyfin zeigt neue Versionen unter Dashboard → Plugins an und kann das Plugin automatisch aktualisieren; starte Jellyfin neu, um die neue Version zu laden.
- Über die Lizenz-Seite des Plugins: Mit gültiger Lizenz installiert Install update die neueste Version, die deine Lizenz erlaubt, und mit Roll back to x.y.z kehrst du zur vorherigen Version zurück (zum Beispiel, wenn nach einem Update etwas nicht mehr funktioniert). Starte Jellyfin danach jeweils neu. Beide Pakete werden gegen die Prüfsumme geprüft, die der Lizenzserver veröffentlicht.
- Eine Lifetime-Lizenz erhält die Versionen, die während ihres Update-Zeitraums veröffentlicht wurden; danach läuft das Plugin mit der letzten Version weiter, die es nutzen darf.
- Nach einem Rollback installiert Jellyfins geplante Aufgabe Update Plugins (beim Start und täglich) die neueste Version wieder, wenn dein Plugin-Repository in Jellyfin hinzugefügt ist. Um eine Weile auf der vorherigen Version zu bleiben, entferne die Auslöser dieser Aufgabe unter Dashboard → Scheduled Tasks und füge sie später wieder hinzu.
Quellcode
Der GPL-3.0-Quellcode jeder Version liegt in Konto → Lizenzen (Quellcode) neben dem Download als .tar.gz-Archiv vor, das aus dem exakten Commit dieser Version erstellt wurde.
Konfiguration
Öffne AISub im Jellyfin-Dashboard-Menü. Die Seite hat vier Tabs: Overview, Jobs, Providers und Settings.
- Providers: Füge die Keys der Provider hinzu, die du nutzen willst. Sie werden auf deinem Server in einer separaten Datei gespeichert, die nur das Jellyfin-Dienstkonto lesen kann, und nur an den jeweiligen Provider gesendet; die Seite zeigt nur ihre letzten 4 Zeichen. Test translation und Test transcription key prüfen die Keys.
- Translation: ein Anthropic-Key (standardmäßig Claude Haiku, Claude Sonnet für höchste Qualität) oder die Adresse eines OpenAI-kompatiblen Servers: LM Studio („Serve on Local Network“ einschalten, Port 1234), Ollama (Port 11434) oder ein Online-Dienst wie OpenRouter oder DeepSeek (mit dessen API-Key). Find models listet die Modelle, die der Server anbietet.
- Transcription (für Titel ohne jeden Untertitel): ein Groq-Key (Whisper large-v3-turbo, die Standardeinstellung, oder Whisper large-v3) oder ein OpenAI-Key (Whisper). In 0.1.0 kann ein lokaler Server nicht transkribieren.
- Settings:
- Languages to generate: Hake die gewünschten Sprachen an und sortiere sie nach Priorität (die Reihenfolge entscheidet, welche Sprache zuerst das Budget erreicht).
- Generate automatically und Which titles: nur Titel, die ab jetzt hinzukommen, oder auch die bestehende Bibliothek (jede Nacht, mit Obergrenze).
- Preferred source language für die Übersetzung, wenn ein Titel mehrere Untertitel hat.
- Only when there is no human subtitle in der gewünschten Sprache (standardmäßig an).
- Remove hearing-impaired cues ([door slams], NAME:) beim Übersetzen.
- Maximum cost per title und per month (USD).
- Mit Rosub (optional, empfohlen): Die Plugin-Seite zeigt, ob Rosub verknüpft ist. AISub erstellt dann nur die Sprachen, die Rosub gesucht und nicht gefunden hat, sodass du nur für wirklich Fehlendes zahlst.
Im Alltag
- Neue Filme und Episoden werden verarbeitet, sobald sie ankommen: mit Rosub, nachdem Rosub die Sprache gesucht hat; ohne Rosub, wenige Minuten nachdem sie hinzugefügt wurden.
- Die geplante Aufgabe Missing AI subtitles (AISub) (täglich, standardmäßig um 5:00; Dashboard → Scheduled Tasks) durchläuft den Rest der Bibliothek, mit einer Obergrenze für die Anzahl der Jobs pro Nacht.
- Der Tab Jobs zeigt die Warteschlange, den Fortschritt und die Kosten jedes Jobs sowie die Ausgaben dieses Monats. Von dort aus kannst du auch generate for one title ausführen (optional sogar, wenn der Titel bereits einen Untertitel hat) oder stop the current job.
- Die typischen Kosten für einen 2-stündigen Film, auf der Plugin-Seite anhand der Preise der Provider angezeigt, liegen bei etwa $0.08 für die Übersetzung mit Claude Haiku und etwa $0.08 für die Transkription mit Groq Whisper large-v3-turbo; mit einem lokalen KI-Server kostet die Übersetzung nichts.
- Wenn es keinen zu übersetzenden Untertitel gibt, transkribiert AISub die Tonspur einmal und nutzt diese Transkription für alle deine Zielsprachen wieder.
- Jede Übersetzung erfolgt batchweise mit Kontext, und jeder Cue wird geprüft, sodass der Text in der richtigen Zeile bleibt und synchron mit dem Original läuft.
- Das Ergebnis wird als
Name.language.srtneben dem Video gespeichert, und Jellyfin aktualisiert den Titel. Mit Rosub wird der KI-Untertitel als provisional (vorläufig) registriert, und der erste von einem Menschen erstellte Untertitel ersetzt ihn automatisch.
Was es wohin sendet
- Untertiteltext, batchweise als Cues, an den von dir gewählten Übersetzungsprovider, mit einer Zeile Kontext zum Titel (Name, Jahr, bis zu 4 Genres, Übersicht mit höchstens 400 Zeichen).
- Zur Transkription wird die Tonspur des Films (Mono, komprimiert, in Stücken) an Groq oder OpenAI gesendet, mit der Sprache und dem Namen des Titels. Das Videobild wird nie gesendet.
- An medialab.works geht nichts außer der Lizenzprüfung.
Fehlerbehebung
- Titel ohne jeden Untertitel bekommen keinen KI-Untertitel: Für die Transkription brauchst du einen Groq- oder OpenAI-Key; in 0.1.0 übersetzt ein lokaler Server nur.
- LM Studio ist nicht erreichbar: Schalte in LM Studio „Serve on Local Network“ ein, damit sich der Jellyfin-Server mit ihm verbinden kann.
- „The monthly cap has been reached“: Erhöhe die Monatsobergrenze unter Settings, oder warte bis zum nächsten Monat.
- Ein Job wird übersprungen mit „Rosub has not finished searching this language yet“: Er wird fortgesetzt, sobald Rosub fertig ist.