smart-covers¶
smart-covers is a Jellyfin plugin that gives a cover to the books, comics and audiobooks Jellyfin leaves blank. It takes the cover from the file itself (the first page of a PDF or comic, the cover image inside an EPUB or MOBI, the art embedded in an audio file), and when the file has none it asks Open Library and then Google Books, with no API key. It appears in the catalog and the dashboard as SmartCovers and runs on Jellyfin 10.11 or newer. Start with Getting started, then turn it on per library.
Add this catalog under Dashboard > Plugins > Repositories, then install SmartCovers and restart Jellyfin:
-
The catalog URL, the release zip, and what the plugin needs from the server.
-
Enable, Refresh Images, and what a healthy SmartCovers page looks like.
-
How each format is read, the online lookup, and the daily task that retries misses.
-
Every setting, its default, and the per-library switch.
What you get¶





What gets a cover¶
- PDF: the first page, rendered by a bundled PDFium. Nothing to install on the server.
- EPUB: the image named as the cover, else any image with
coverin its path, else the largest image in the archive. - MOBI, AZW, AZW3: the cover record stored in the file.
- CBZ and CBR: the image named as the cover, else the first page in natural order. RAR4, RAR5 and solid archives work, and so does a RAR renamed to
.cbz. - MP3, M4A/M4B, FLAC, OGG/Opus, WMA, AAC, WAV: the embedded art, including art tagged with the wrong image format, which Jellyfin's own extractor drops.
- A folder of tracks: one cover for the book, from a sidecar image or the first track, multi-disc rips included.
- Anything with no cover inside: Open Library, then Google Books, by title and author.
How it runs¶
- SmartCovers is an image provider inside Jellyfin. Jellyfin asks it for a cover when it scans a book, audiobook or track that has none, and stores what comes back like any other fetched image. Your files are never changed.
- It is off on every library until you click Enable on the SmartCovers page, including libraries you create later. See Turn it on per library.
- Jellyfin asks once per item. Items that were already in the library, or that missed while a catalogue was down, are retried by the Refresh items missing a cover task every night at 04:00, or by hand from Dashboard > Scheduled Tasks. See Refreshing covers that were missed.
- Four settings: online fetching on or off, PDF DPI, JPEG quality and a per-file timeout. See Configuration.
What it does not do¶
- It never replaces a cover that exists. If Jellyfin, Bookshelf or another provider already supplied one, SmartCovers is not asked; delete that cover and refresh to force it.
- It does not run on a library where it is not enabled, and it does not cover items scanned before it was enabled until a refresh or the nightly task reaches them.
- A file with no cover inside, with online fetching off, stays blank.
Privacy¶
- Reading a PDF, EPUB, MOBI, comic or audio file happens on your server. Nothing leaves it.
- The online lookup, on by default, sends the item's title and author to
openlibrary.organdgoogleapis.comand downloads the matching cover. Switch it off on the SmartCovers page and nothing is sent.
Getting help¶
- Something broken: read Troubleshooting, then open an issue with the details its last section lists.
- A security problem: follow the security policy, never a public issue.
- Building from source, tests, what ships in the zip and how a release reaches the catalog: Development.
License¶
smart-covers is released under the GPL-3.0-or-later license. Bundled third-party components are listed in THIRD-PARTY-NOTICES.md.