LA

LazyLibrarian

Automated ebook and audiobook collection manager

E-books & Media Library ★ 1.5k stars Medium setup GPL-3.0

LazyLibrarian is an open-source Python tool that automates managing an ebook and audiobook collection. It monitors authors, grabs new releases via download clients and Usenet/torrent indexers, and can hand finished books to Calibre.

Key features

  • Ebook and audiobook automation
  • Author monitoring
  • Download client integration
  • Calibre handoff

Pros & cons

Strengths

  • Automates library growth
  • Handles audiobooks too

Trade-offs

  • Configuration is involved
  • Depends on external sources

LazyLibrarian replaces

Last reviewed Sep 13, 2026 · 776 words

LazyLibrarian is now the default answer for automated book collection, not because it won but because its rival was retired. Readarr, the arr-family book manager, was wound down by its maintainers, which leaves this 2014-vintage Python project as the tool that watches authors, grabs new releases through your indexers and download clients, and hands finished files to Calibre. It works, it handles audiobooks as well as ebooks, and its configuration is the most involved of anything in this niche; budget an evening and read this page before that evening.

The workflow it automates

You add an author. LazyLibrarian pulls that author's bibliography from a metadata source, marks the books you want as Wanted, and periodically searches your configured indexers for them. When a match appears it sends it to SABnzbd or qBittorrent, watches the download folder, and on completion renames and files the book into your library folder or, if configured, imports it into a Calibre database via calibredb. New releases from monitored authors get picked up as they appear. Magazines and comics have their own sections with the same pattern. If you have run Sonarr the shape is familiar; the arr stack explained piece covers the general model.

Metadata sources are the weak spot

Every book tool lives or dies by where it looks up authors and ISBNs, and LazyLibrarian's sources have shifted repeatedly as APIs were closed. Goodreads shut its public API years ago; the current choices are Google Books, Open Library and a few others, selected in the settings, and each has gaps. Expect duplicate editions, wrong-language matches and missing audiobook entries, and expect to spend time in the "manage" screens marking editions ignored. This is the single largest reason the catalogue lists configuration as involved. Set your preferred language and a sensible list of ignored words early, and the noise drops sharply.

Sources are not included

Nothing here downloads books by itself. LazyLibrarian talks to Usenet indexers and torrent trackers via their APIs, or through Prowlarr, which is the right way to manage them since it syncs indexer settings to every arr-style tool at once. Direct-download and IRC sources are also supported. The "depends on external sources" con is doing a lot of work: with no indexers configured, the app is an author-tracking database, which is not nothing but is not why you installed it. What you obtain, and from where, is your responsibility and your jurisdiction's.

A compose file that survives restarts

The linuxserver.io image is the one to use; it tracks upstream, handles Calibre's calibredb dependency via an optional mod, and runs as your user:

services:
  lazylibrarian:
    image: lscr.io/linuxserver/lazylibrarian:latest
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - DOCKER_MODS=linuxserver/mods:universal-calibre
    volumes:
      - ./config:/config
      - /data/downloads:/downloads
      - /data/books:/books
    ports:
      - "5299:5299"
    restart: unless-stopped

Keep downloads and books on the same filesystem so moves are renames rather than copies, and use the same /data mount layout across your download client and LazyLibrarian so paths match. The web interface is on 5299, the config is a single config.ini plus a SQLite database under /config, and that directory is the backup. RAM sits under the catalogue's 512 MB minimum in normal operation and rises during library scans and Calibre imports.

The Calibre handoff is optional, and worth it

Filing into a plain folder tree is fine if Calibre-Web or Kavita reads it. The better setup points LazyLibrarian at a Calibre library and lets calibredb add do the import, because Calibre then owns metadata, conversions and the OPDS feed, and everything downstream stays consistent. The Calibre mod in the compose above provides the binary; point the Calibre library path at the same mount your Calibre-Web container sees, and make sure only one tool writes to that library at a time. Audiobooks go to a separate folder that Audiobookshelf scans; LazyLibrarian is happy to keep the two formats apart.

What I'd do

Run the linuxserver image with the Calibre mod, indexers via Prowlarr, SABnzbd as the client, and imports into a Calibre library that Calibre-Web serves. Spend the first evening on metadata settings and ignored words rather than on adding 50 authors, because a clean bibliography for 5 authors beats a noisy one for 50. If you only have a few authors you follow, skip all of it and set up a plain Calibre-Web with manual adds; automation earns its complexity somewhere around the point where you stop being able to remember what you are waiting for.

Compare LazyLibrarian

18 head-to-head comparisons.

Similar e-books & media library apps