Après BookHub, voici AudioHub. Le fonctionnement est très similaire et la stack presque identique.
J’aime beaucoup les livres audio, et ma famille aussi. Mais les gérer proprement, c’est chronophage. Je voulais un système qui fasse tout automatiquement :
- Détecter un audiobook téléchargé et l’enregistrer en base de données
- Récupérer les métadonnées depuis plusieurs sources et garder les meilleures (titre, auteur, série, index de série, synopsis…)
- Éviter que le narrateur se retrouve comme auteur — problème fréquent avec les livres audio
- Convertir en .m4b les livres en .mp3, en préservant et renommant les chapitres
- Écrire toutes les métadonnées dans le fichier, couverture incluse — comme ça si je change de gestionnaire de bibliothèque, les infos sont déjà dans le fichier
- Prendre en compte le public cible (Adultes, Ados, Enfants) basé sur les catégories qBittorrent
- Déplacer le fichier dans la bibliothèque finale selon une hiérarchie fixe
J’avais initialement prévu d’utiliser Ollama en local pour trier la pertinence des sources et enrichir les métadonnées. Malheureusement, les modèles que je peux faire tourner sur ma RTX 5060 ne sont pas assez fiables pour cette tâche — les résultats étaient trop aléatoires. J’ai donc opté pour des scripts classiques avec des sources bien définies.
C’est à nouveau Claude qui a été utilisé pour développer le projet. Après plus de 220 tests — un test = un livre audio traité de bout en bout — le système tourne bien et gère correctement la grande majorité des cas.
[image: logo-rouge-audio-blanc-transp.png]
️ La stack -> tout est auto-hebergée
|
Outil |
Rôle |
 |
n8n (self-hosted) |
Orchestration des workflows |
️ |
Baserow |
Suivi du statut de chaque audiobook |
 |
m4b-tool (sandreas/m4b-tool) |
Conversion MP3 → M4B + métadonnées |
 |
AudioBookShelf |
Bibliothèque finale |
 |
Google Books / OpenLibrary / Wikidata / Scraper “maison” |
Sources de métadonnées |
[image: Capture-d-e-cran-2026-03-20-a-23-44-25.png]
Les 3 workflows
- Scanner — détecte les nouveaux dossiers dans qBittorrent et les copie dans une inbox
- Metadata — enrichit les métadonnées depuis plusieurs sources web
- Processor — convertit, vérifie, tag et place le fichier final dans la bibliothèque
Les workflows 2 et 3 se basent sur le statut Baserow pour savoir quoi traiter. Il est donc possible de modifier manuellement un statut pour forcer un retraitement à n’importe quelle étape.
1 — Workflow Scanner
[image: WF1-g.png]
3 dossiers qBittorrent sont scannés en source brute : Adultes, Ados, Enfants. Pour chaque nouveau dossier audio détecté, une ligne est créée dans Baserow. Le statut initial est Détecté.
Pour limiter l’I/O sur le cache SSD, au maximum 2 copies sont effectuées simultanément.
n8n
[image: WF1.png]
Baserow
[image: Capture-d-e-cran-2026-03-20-a-22-58-00.png]
2 — Workflow Metadata
[image: WF2-g.png]
Le workflow traite tous les items au statut Détecté ou En attente métadonnées. Il parse le nom du dossier source pour nettoyer les tags de qualité ([mp3-128], [128Kbps], NoTag…) et interroge 4 sources en parallèle pour récupérer les métadonnées.
Le statut À vérifier est intentionnel : avant que la conversion soit lancée, je jette un œil dans Baserow et je corrige si besoin (mauvaise série détectée, titre ambigu…). Une fois validé, je passe manuellement à Métadonnées OK.
n8n
[image: WF2.png]
3 — Workflow Processor
[image: WF3-g.png]
Le workflow traite les items au statut Métadonnées OK.
Après conversion, les chapitres sont vérifiés via mp4chaps : on compare le nombre de MP3 source avec le nombre de chapitres dans le M4B. Si ça ne correspond pas, le fichier est supprimé et la conversion est relancée.
Le bitrate source est préservé : 64 kbps → 64 kbps, 128 kbps → 128 kbps. Pas de recompression inutile.
Pour les tags, un détail qui change tout dans AudioBookShelf :
| Tag |
Valeur |
Usage |
artist |
Agatha Christie |
Affichage |
albumartist |
Christie, Agatha |
Regroupement |
sortartist |
Christie, Agatha |
Tri alphabétique |
Sans ça, ABS crée des doublons d’auteurs et trie n’importe comment.
n8n
[image: WF3.png]
Statuts Baserow
[image: Statuts.png]
Chaque statut peut être modifié manuellement pour forcer un retraitement. Par exemple, repasser un item de Erreur à Métadonnées OK relance directement la conversion au prochain cycle.
Si un item reste bloqué en En conversion plus d’1h (timeout n8n), il est automatiquement remis en Métadonnées OK pour relancer — plus besoin d’intervenir manuellement.
Hiérarchie finale
/Livres audio/Adultes/Livres audio/
├── Christie, Agatha/
│ ├── Les quatre/
│ │ └── Les quatre.m4b
│ └── Hercule Poirot/
│ ├── 01 - Les quatre/
│ └── 06 - Le Train Bleu/
└── Martin, George R.R/
└── Le trône de fer/
├── 01 - Le Trône de Fer/
└── 02 - Le donjon rouge/
Résultat après quelques jours
- ~170 audiobooks traités automatiquement
- ~15 nécessitaient une correction manuelle des métadonnées
- ~10 marqués “Introuvable” (noms de dossiers trop cryptiques)