Audiobook-Pipeline: Automatisierte Hörbuch-Konvertierung zu M4B mit Audible Metadaten
Einleitung
Wer Hörbücher und Hörspiele auf seinem NAS oder Server archiviert, kennt das Problem:MP3-Dateien ohne Cover, ohne Kapitel, ohne saubere Metadaten. Audible-Downloads kommen oft als einzelne lange Dateien, Hörspiele haben kryptische Dateinamen wie TKKG_039_Folge39.mp3 statt ordentlicher Metadaten.
Audiobook-Pipeline löst dieses Problem. Der Docker-Container läuft auf UNRAID und konvertiert Hörbücher und Hörspiele automatisch zu M4B mit vollständigen Metadaten von Audible — Cover, Autor, Sprecher, Serie, Kapitelmarkierungen.
Das Problem
Wenn du Hörbücher von Audible herunterlädst, erhältst du oft:
- Lange MP3-Dateien ohne Kapitelmarkierungen
- Kein Cover oder falsche Cover-Zuordnung
- Metadaten nur wenn man Glück hat und die Datei korrekt benannt ist
Für deutsche Hörspiele ist es noch schlimmer. Serien wie TKKG, Gruselkabinett, John Sinclair oder Offenbarung 23 werden von keiner automatischen Erkennung korrekt erfasst. Die Titelsuche bei Audible findet die Folgen nicht, weil sie alle unter „TKKG“ gelistet sind statt einzeln.
Die Lösung
Audiobook-Pipeline überwacht Eingabe-Ordner und konvertiert neue Dateien automatisch. Das Ergebnis sind M4B-Dateien mit:
- Kapitelmarkierungen aus den Original-Audible-Daten
- Cover (bis zu 2400px)
- Metadaten: Titel, Autor, Sprecher, Serie, Episodennummer
- Komprimierung mit konfigurierbarer Bitrate (default: 128 kbps für Sprache)
Zwei Pfade für Hörbücher und Hörspiele
Hörbücher: /data/input → /data/output
Normale Hörbücher einfach in den Input-Ordner legen. Der Container erkennt sie, holt Metadaten von Audible und legt die fertige M4B im Output-Ordner ab.
Hörspiele: /data/input-hoerspiele → /data/output-hoerspiele
Deutsche Hörspiele brauchen einen speziellen Pfad. Das Problem: Hörspiele wie TKKG haben 200+ Episoden, aber Audible erkennt sie nicht automatisch. Die Lösung ist der Series-Cache:
input-hoerspiele/TKKG/Folge 1.mp3 input-hoerspiele/TKKG/Folge 2.mp3 input-hoerspiele/Offenbarung 23/Folge 17.mp3
Der Container matcht den Ordner-Namen („TKKG“) mit dem Series-Cache und ordnet automatisch die richtigen Metadaten zu. Kein manuelles Konfigurieren mehr.
Series-Cache mit 15 deutschen Hörspiel-Serien
Das Repository enthält bereits einen Series-Cache mit den beliebtesten deutschen Hörspiel-Serien:
| Serie | Episoden |
|---|---|
| offenbarung 23 | 113 |
| tkkg (100-238) | 147 |
| tkkg retro-archiv 1 (1-99) | 96 |
| geister-schocker | 181 |
| gruselkabinett | 164 |
| die drei fragezeichen | 248 |
| john sinclair | 161 |
| john sinclair classics | 40 |
| bibi blocksberg | 147 |
| benjamin blümchen | 150 |
| holy horror | 70 |
| holy klassiker | 108 |
Total: 15 Serien mit über 1500 Episoden — direkt einsatzbereit.
Wie es funktioniert
- Datei ablegen: MP3/FLAC/OGG/M4A/WMA in input-hoerspiele/Serienname/
- Container erkennt: Der Wrapper prüft alle 5 Minuten (konfigurierbar) auf neue Dateien
- Series-Matching: Ordner-Name wird mit Series-Cache abgeglichen
- ASIN-Ermittlung: Episode-Nummer aus Dateiname → korrekte Audible-ASIN
- Konvertierung: audiobook-convert holt Metadaten und konvertiert zu M4B
- Output: Fertige M4B in output-hoerspiele/Serienname/Episode – Titel.m4b
Installation auf UNRAID
Template herunterladen
curl -o /boot/config/plugins/dockerMan/templates-user/audiobook-pipeline.xml https://raw.githubusercontent.com/nevrion/audiobook-pipeline/main/unraid-template.xml
Container einrichten
In der UNRAID Docker UI das Template laden und folgende Einstellungen setzen:
- Data Volume: /mnt/user/appdata/audiobook-pipeline:/data
- PIPELINE_LEVEL: simple (für normale Konvertierung)
- CHECK_INTERVAL: 5m (wie oft auf neue Dateien geprüft wird)
Der Container startet automatisch und beginnt mit der Überwachung der Eingabe-Ordner.
Umgebungsvariablen
| Variable | Default | Beschreibung |
|---|---|---|
| PIPELINE_LEVEL | simple | simple, normal, ai, full — höhere Stufen nutzen KI für bessere Metadaten |
| MAX_BITRATE | 128 | Maximale Bitrate in kbps. 128 für Sprache optimal, 256 für hohe Qualität |
| CHANNELS | 1 | 1 = Mono, 2 = Stereo. Mono reicht für Hörbücher |
| SERIES_CACHE_URL | GitHub | URL zum Series-Cache. Default: GitHub Repo — wird automatisch geladen |
| CHECK_INTERVAL | 5m | Prüfintervall für neue Dateien. Auch 10m, 1h möglich |
| CLEANUP_WORK_DIR | true | Temp-Dateien nach Konvertierung löschen |
Warum ein eigener Container?
Bestehende Lösungen wie Deemix oder manuelle Skripte erfüllten meine Anforderungen nicht:
- Keine deutschen Hörspiele: Internationale Tools erkennen TKKG, Gruselkabinett etc. nicht
- Keine Serie-Erkennung: Man musste jede Folge manuell zuordnen
- Keine Persistenten Metadaten: Nach jedem Neustart war die Zuordnung weg
- Keine automatischen Updates: Bei neuen Releases musste man manuell neu bauen
Also habe ich einen eigenen Container gebaut, der diese Probleme löst: Series-Cache, automatische Updates via GitHub Actions, persistente Speicherung der Zuordnungen.
Technische Details
- Basis: python:3.11-slim
- Konverter: audiobook-pipeline (rodaddy)
- Metadaten: Audible API + Fallback zu Suchergebnissen
- Auto-Update: GitHub Actions bauen bei jedem Release automatisch ein neues Image
- URL: ghcr.io/nevrion/audiobook-pipeline:latest
Links
Filed under: Allgemein - @ 21. April 2026 6:18