Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Library Shelf

toyotathieftoyotathief175 downloads

Library shelves for books and movies. Entries live as rows in a ledger note — no file per title unless it earns one.

Add to Obsidian
Library Shelf screenshot
  • Overview
  • Scorecard
  • Updates7

A shelf of your books and films in Obsidian: one ledger note per library, no file per title unless it earns one.

The library hub: the reading desk with current books and the year goal, the search and add bar, then the Now shelf The bookcase desk: last finished, wishlist and in-progress books and a pinned average rating on the top shelf beside the year's goal row, current covers below, and a rolling ladder

Getting started

Click the library icon in the ribbon (or run Open library). The first click creates Library/Books.md, Library/Movies.md and a Library/Library.md hub, then opens the hub. Every click after that just opens it.

The reading desk

The hub opens with a desk drawn as a bookcase: what you're currently reading on the lower shelf; the last thing you finished, how many are in progress and on the wishlist, and your average rating on the top one; and the year's finished titles as a row of little books filling toward your goal. Prefer a plain card with a goal ring? Switch Reading desk to Classic card in settings.

```library-desk
goal: 30
```
Option
goal Fills the year's row against it — "11 of 30"
from Ledgers to read. Default: all of them
covers How many covers to show. Default 4 (3 on the card)
label The heading. Default "Currently reading"

Adding

Type a title in the Add a title… box at the top of any library page and press Enter. The lookup runs straight away — books search Open Library, films search TMDB — and Enter again adds the top result. Click any other result to add that one instead.

On a Books or Movies page the box adds to that page; on the hub, pick where from the dropdown beside it. Adding a title that's already there offers to record another read, change its status, or add it as a separate entry.

Films need a free TMDB API key. The first film search asks for it in the dialog; paste it once and it's saved.

Importing

The import button on the page bar (or Import from Goodreads, StoryGraph or Letterboxd) takes your exported history and adds it to a ledger. Titles already there are skipped, so importing twice is safe.

Service
Goodreads My Books → Import and export → Export library
StoryGraph Manage account → Export StoryGraph library
Letterboxd Export your data, unzip, pick watched, diary, ratings and watchlist together

Searching

The Search this page box narrows every shelf on the page as you type. Every word has to match something on the card: title, author or director, shelf, year, status, or a date you finished it — le guin, manga, ishiguro 2024. Escape clears it.

Editing from the shelf

Right-click a cover or a table row (long-press on mobile), or click a cover that has no note:

Action
Wishlist · Active · Done · Abandoned · Reference Sets the status
Finished again today Adds today to finished, marks it done
Rate… Halves from 0.5 to 5, or clear
Create note / Open note Makes the entry's own note, or opens it
Remove from library Asks first

The ledger

Everything lives in a fenced yaml (or json) block shaped { library: [ … ] } inside an ordinary note, so you can always edit it by hand too. The rest of the note is left alone.

```yaml
library:
  - title: Hiroshima Diary
    author: Michihiko Hachiya
    shelf: Non-Fiction
    isbn: "9780807845479"
    status: active
  - title: Arrival
    director: Denis Villeneuve
    year: 2016
    shelf: Sci-Fi
    status: done
    rating: 5
    finished: [2024-08-19, 2026-01-04]
```
Field
title Required
author / director Whichever is set is shown
year
status wishlist · active · done · abandoned · reference
rating A number. Halves are fine
finished A list of dates — a reread is another date, not a second row
shelf Free-text grouping
cover Image URL. Overrides derivation
isbn / asin Derives a cover when cover is unset
note Path to the entry's own note

Giving an entry its own note

Right-click → Create note, or run Create note for a library entry. It makes the note, puts a library-card block at the top, and writes note: into the row. The card shows the entry's cover, status, rating and read dates, always read from the ledger.

```library-card
```

Shelves and hubs

A library-shelf block draws a shelf anywhere. With no from it reads the note it's in; a hub reads several ledgers. The hub the ribbon creates is a good starting point:

## This year

```library-shelf
from: [Library/Books, Library/Movies]
year: current
sort: -finished
total: finished this year
goal: 30
```

Which entries to show

Option
from Ledgers to read — from: [Library/Books, Library/Movies]
where Only entries matching these fields — where: {status: active}
year Only entries finished that year — 2026, or current
sort Order — sort: -finished puts the most recent first
limit Show at most this many

How to arrange them

Option
group Sections with a heading and count — group: shelf
total The big number above the shelf — total: books prints "27 books"
goal Prints the total against it — "14 / 24"
stats Status breakdown under the total. Click one to filter. Needs total

How it looks

Option
size Cover width in px
layout grid (default) or table
columns Table columns. Default: cover, title, author, year, rating
empty What to say when nothing matches

active covers get an accent outline, wishlist dims until hover, abandoned desaturates. Group headers fold on click. Editing a ledger repaints every open shelf that reads it.

The search and add boxes are a library-bar block. Put one at the top of any note with shelves; ledger: Library/Books pins where its add box writes.

```library-bar
```

Covers

An explicit cover always wins. Otherwise, with Derive covers on:

  • isbn → Open Library, then Amazon (a print book's ISBN-10 is its Amazon ID)
  • asin → Amazon

Anything that still misses shows a titled card in the theme's accent color.

Appearance

Four CSS variables, settable on .lib-shelf in a snippet:

Variable
--lib-plinth Shelf board color. Defaults to the theme's third accent
--lib-paper Fore-edge color
--lib-book-gap Space between books
--lib-display Serif face for shelf names and counts

Settings

Ledger folder · notes folder · default layout · reading desk · cover width · derive covers · TMDB API key.

Licence

MIT

HealthExcellent
ReviewSatisfactory
About
Create a cover grid library of books and films from ledger notes using a fenced YAML/JSON block, so titles don't need individual files.
VisualizationDataImages
Details
Current version
1.6.0
Last updated
2 months ago
Created
2 months ago
Updates
7 releases
Downloads
175
Compatible with
Obsidian 1.4.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
toyotathieftoyotathieftoyotathief
GitHubtoya-co
  1. Community
  2. Plugins
  3. Visualization
  4. Library Shelf

Related plugins

Image Layouts

Add beautiful image layouts to your notes.

NanoBanana PRO

Generate Knowledge Posters (infographics) from your notes using AI. Supports OpenAI, Gemini, Anthropic, and xAI.

Adamantine Pick

Embeddable Pikchr diagrams renderer.

Leaflet

Interactive maps inside your notes.

Excalidraw

Visual PKM powerhouse. Create and edit Excalidraw drawings.

Advanced Canvas

Supercharge your canvas experience. Create presentations, flowcharts and more.

ExcaliBrain

An interactive, structured mind-map of your Obsidian vault.

Breadcrumbs

Visualise the hierarchy of your vault using a breadcrumb trail or matrix view.

Mermaid Tools

Improved Mermaid.js experience: visual toolbar with common elements and more.

Maps

Adds a map layout to bases so you can display notes as an interactive map view.