Get AI summaries of any video or article — Sign up free
Building A Book Library In Obsidian thumbnail

Building A Book Library In Obsidian

FromSergio·
5 min read

Based on FromSergio's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Install and configure the Book Search plugin to write new book notes into a dedicated “books” folder.

Briefing

A practical Obsidian setup turns a folder of Markdown book notes into a searchable, filterable “book database” using two plugins: Book Search and Dataview. The core payoff is that book metadata lives in YAML front matter (title, author, rating, status, finished date), while Dataview generates live tables—so lists like “Favorite Books” and “To Read” update automatically as statuses change.

The workflow starts by installing the Book Search plugin from Community Plugins and configuring it to write new entries into a dedicated folder named “books.” Book Search is treated as a combined tool: it both runs a script and applies a template when creating a new book file. When adding a book (example: “Ego is the Enemy” by Ryan Holiday), the plugin auto-creates a Markdown note inside the “books” folder and fills in default fields. The setup then gets refined by customizing which YAML headers matter. Instead of keeping unwanted default values, the configuration is adjusted so the template includes user-defined fields: rating, status, and date finished (the transcript references YAML headers like rating, date read, and status, with status values such as “to read” or “complete”).

With the book notes standardized, the next step is building Dataview tables that act like dashboards. A Dataview query is copied from an existing vault and adapted into a new page called “favorite books.” The table is configured to display author as a capitalized column header, include a cover image with a specified size (set via a numeric value like 100), and map fields such as pages and category/genre for display. Most importantly, the query pulls rows from the “books” folder and filters by status—initially showing only books marked “complete.” In preview mode the table appears empty until at least one book matches the filter; after changing a book’s status to “complete” and refreshing, the entry appears.

To support a reading workflow, a second Dataview page called “to read list” is created by duplicating the favorite-books query and changing the status filter from “complete” to “to read.” When a book is read, the status flips to “complete,” the finished date is filled in, and a rating is added using a shortcut for star ratings (Command-5). Because the tables are driven by YAML fields, both dashboards update immediately.

The setup also leverages Book Search templates beyond front matter. Prompts can be inserted into either front matter or the note content—examples include “summarize book in three sentences”—so review notes can be generated consistently. Finally, an “author page” template is created using Obsidian’s Templates plugin. The template adds tags (like an author tag) and a genre field, then a simple Dataview table placeholder is used to list books for a given author. Creating an author page for Ryan Holiday automatically lists his books from the database, and adding a new Ryan Holiday book later (e.g., “The Daily Stoic”) makes it appear on the author page without manual table edits.

Cornell Notes

The system builds a book database in Obsidian by standardizing each book note with YAML front matter and then using Dataview to render live tables. Book Search creates new book files in a dedicated “books” folder and applies a template that includes custom fields such as rating, status (e.g., “to read” or “complete”), and date finished. A “favorite books” Dataview page filters for status = “complete,” while a “to read list” page filters for status = “to read,” so both lists update as statuses change. Book Search templates can also insert prompts (like summarizing in three sentences) into front matter or note content. An “author page” template plus Dataview provides an auto-updating view of all books by a chosen author.

How does Book Search turn a single entry into a structured book note inside Obsidian?

Book Search is installed as a Community Plugin and configured to place new books into a specific folder (named “books”). When a user adds a book (e.g., “Ego is the Enemy” by Ryan Holiday), the plugin creates a Markdown file in that folder and applies a template. The template writes YAML front matter fields such as title and author, and—after configuration—also includes user-defined headers like rating, status, and date read/finished. This standardization is what later enables Dataview tables to work reliably.

Why does the Dataview “favorite books” table initially show no results?

The Dataview query filters rows by a YAML field named status. In the setup, the “favorite books” page uses a condition equivalent to “contains status complete,” so only books marked with status = “complete” appear. If all existing books have empty status values (or status not set to “complete”), preview mode shows no rows. After changing a book’s status to “complete” and refreshing, the table populates with that book’s metadata.

How are “Favorite Books” and “To Read” kept in sync without manual editing?

Both pages are driven by the same underlying “books” folder notes and the same YAML headers. “Favorite Books” filters for status = “complete,” while “To Read” filters for status = “to read.” When a user reads a book, they update the book note’s status to “complete,” fill in the finished date, and add a rating. Because Dataview queries read those YAML fields, the tables update automatically after refresh.

What role do cover size and field mapping play in the Dataview table?

The Dataview query includes display configuration for fields. A cover image is shown with a specified size (the transcript uses a value like 100; decreasing makes it smaller, increasing makes it larger). The query also maps fields for display—such as showing pages and mapping category to genre—so the table presents consistent, readable columns even if the underlying YAML uses different names.

How do Book Search prompts and templates fit into the workflow?

Beyond inserting YAML front matter, Book Search can insert text into the note content using templates. That means a user can attach review prompts such as “summarize book in three sentences.” When the book note is created or updated via Book Search, those prompts appear in the note (the transcript notes options for inserting into front matter versus content), helping standardize how book reviews are written.

How does the author page auto-update when new books are added?

An “author page” uses Obsidian’s Templates plugin to create a page with an author input (e.g., Ryan Holiday). The page includes a Dataview query that lists books associated with that author. Because the query pulls from the “books” folder and matches the author field, adding a new book note for the same author later (the transcript mentions adding “The Daily Stoic”) makes it appear on the author page automatically.

Review Questions

  1. What YAML fields are added or customized in the Book Search template to support rating, reading status, and finished dates?
  2. How do the Dataview filters differ between the “favorite books” page and the “to read list” page?
  3. What mechanism ensures an author page updates automatically when a new book by that author is added?

Key Points

  1. 1

    Install and configure the Book Search plugin to write new book notes into a dedicated “books” folder.

  2. 2

    Customize the Book Search template so YAML front matter includes rating, status, and date finished/read fields.

  3. 3

    Use Dataview tables to generate live “Favorite Books” and “To Read” dashboards by filtering on the status YAML field.

  4. 4

    Set display options in Dataview (like cover image size) and map fields for consistent table columns (e.g., category shown as genre).

  5. 5

    Update a book note’s status, finished date, and rating to move it between lists without rewriting the tables.

  6. 6

    Use Book Search prompts/templates to standardize book review content, not just metadata.

  7. 7

    Create author pages with Obsidian Templates plus Dataview so they auto-populate based on the author field in the “books” folder.

Highlights

Book Search creates book notes in a “books” folder and applies a template that writes custom YAML headers like rating, status, and date finished.
Dataview dashboards are driven entirely by YAML status filters—switching a book from “to read” to “complete” moves it between tables.
Cover images in Dataview can be resized (the setup uses a numeric size like 100) to control how large thumbnails appear.
Author pages combine an Obsidian template with a Dataview query so adding a new book for an author automatically updates the author page.
Book Search templates can insert review prompts (e.g., “summarize book in three sentences”) into note content for consistent writing.

Mentioned