I've really taken to Obsidian and it's tooling for nonlinearly structuring and organizing information. I've been building a second brain of sorts: my notes have been living here for the past few months, and I'm working to digitize my old notes into it as well. Past notes though, it's a great way to organize any form of content. I'm now discovering it to be a fantastic infrastructure for personal library management. I have a lot of books, textbooks, zines, and novels and I loan them out to friends all the time.I've been wanting a unified system for a while that lets me catalogue all my books, see whether I own them physically, give myself a reading list from the pool of books I want to read, and track which books I've lent out to whom. My setup is built on top of the The Buccaneer's Bounty's fantastic tutorial, I've just tweaked it to my own specific usage.
The Structure
My core obsidian vault has a few folders: scratch/, source-material/, templates/, and all-notes/ (my catchall, where most of my notes live). The source-material/ folder is where I hold onto content like articles, movies, papers, and books I want to come back to or keep notes on. Inside that folder I have a main Bookshelf.md file, and a books/ subfolder where each book gets its own markdown file.
The whole system runs on three pieces: the template used for creating new book entries, the QuickAdd plugin that uses that template, and the Dataview plugin to generate the organized views of my library.
book template.md
In my templates/ folder, I have book template.md. I modified the template from The Bucanner's Bounty to suit my own usage:
---
alias:
author:
status:
ISBN:
cover:
type:
topics:
tags:
physical:
acquired-where:
loaned-who:
loaned-when:
---
The Shelves on Bookshelf.md
My `Bookshelf.md` file has different collapsible sections, each with different filtering rules. The Dataview code is slightly modified from the tutorial: I changed the tables to load `without id` so that the leftmost column says "Book" instead of "File", which feels more natural. In Obsidian, wrap these Dataview queries in code blocks: use triple backticks with `dataview` on the first line as the language indicator.
All Books (w/o textbooks and references texts):
table without id
file.link as "Book",
author, ("") as cover, status
from "2.source-material/books"
where !contains(type, "textbook") and !contains(type, "reference")
sort file.name asc
Tracking loans:
table
"loaned-to" as "Loaned To",
"loaned-on" as "Loaned On",
("") as Cover
from "2.source-material/books"
where loaned-to != null and loaned-to != ""
sort loaned-on desc
Textbooks and Reference:
Just flip the filtering logic from "All Books":
!contains(type, "textbook") and !contains(type, "reference")
becomes
contains(type, "textbook") or contains(type, "reference") (got rid of the "!" and change the "and" to an "or").
Zines:
table without id
file.link as "Zine",
author, ("") as cover, status
from "2.source-material/books"
where contains(type, "zine")
sort file.name asc
This setup can scale and flex to however you think about your library. Have other fields you want to track like date-started, date-finished, rating, etc.? Just add it to the template.
Definitely check out the original guide and drop a line if you end up using a similar system! I'd love to hear about different approaches to knowledge management.