Here I describe my reading and Zettelkasten workflow within Obsidian.
Managing Materials
Notes in Zettelkasten come from various materials: articles, papers, books, videos, blog posts, etc. I track all of them with Zotero. Whenever I find something I want to read, I either directly add the material in Zotero (e.g., import using ISBN/DOI, import BibTeX from clipboard, etc), or I use Zotero Connector for Chrome (e.g. for articles, YouTube videos, blog posts, etc). In either case, the new material ends up in my Zotero inbox, which is a custom saved search (“00 Inbox”) I have that matches everything without a status tag.
In the inbox, I make sure that all essential metadata is correct (item type, authors, year) and check that Better BibTeX for Zotero has generated a well-formed citation key (I believe I use BBT’s default format: <first author's last name><item's first three words><year>
). This citation key will become the file name of literature notes.
Update: Zotero syncing
I’ve stopped using Google Drive for attachments in favor of Koofr WebDAV, which Zotero supports natively. See how to sync attachments in Zotero via Koofr.
In most cases, the item will have an associated file (e.g. ebook), which I will place in my Downloads directory and attach using ZotFile. Since Zotero’s synced file storage is a paid service (with a very limited free tier), I use the ZotFile add-on to avoid using it. ZotFile manage files as linked attachments stored in a directory synced by Google Drive. Since Google Drive still doesn’t have a native Linux syncing client to this day—shame on you, Google—I use rclone bisync
to sync files to my laptop, which runs Linux.
Before removing the item from the inbox, I add topical tags. Originally I used a rigid hierarchy for organizing items, but I found it very unwieldy (e.g. not all items fit rigidly in one discipline), so I flattened my collection and use a tag-based approach. You can find some examples for topical tags below:
As I’ve mentioned before, the “inbox” is actually a saved search for items that don’t have a status tag, so naturally, I add the appropriate status tag after doing everything else above. I’ve defined the following status tags: “01 Unread,” “02 Next,” “03 In Progress,” “04 On Hold,” “05 {Finished,Ignored,Reference}.” If the item is something I want to consume, depending on the interest I have in the material, I might label the item with 01 or 02. If the item is something I don’t necessarily have to read right now (or ever), I might place it in 05 Ignored (e.g. textbook that I don’t find value in) or Reference (e.g. sheet music). In future stages of my workflow, I’ll adjust the Zotero tags accordingly (e.g. 02 to 03 to 05).
Note-taking
If I think that the item is worth taking notes on, I would create a literature note in Obsidian. Depending on the topic of the item, I take notes in different apps. For more concrete items like textbooks or for mediums like videos, I will tend to directly take permanent notes in Obsidian and refer to them in the literature note. For other items that require more thinking or focus, I will tend to highlight or annotate as I read. Regardless of how I take notes, the information should always end up in Obsidian. To achieve this, I use the BibNotes Formatter Obsidian plugin to manage Zotero annotations and personal notes. For my use case, I configured the plugin to preserve everything under the Notes heading and set the note template to place annotations before my notes, so I can just reimport the bibliographical item to refresh annotations. By the way, I use “Add Note from Annotations” in Zotero to extract PDF annotations (only works for annotations taken in Zotero). I do wish that there’s a way to auto-export Zotero PDF annotations and update my Obsidian literature note though.
Update: Lecture Notes
I have changed how I take lecture notes. Nowadays I take each lecture note in daily notes (each lecture would be a H2 heading). If I feel like it, I might process them into permanent notes and organize them under the course notes.
It’s not always the case that I take notes from readings. As a college student, I often find myself taking notes on lecture recordings, slides, etc. In this case, I won’t add the materials to Zotero, because I take notes in a course note. In a course note, the note is either divided by textbook chapters or by week, though if I don’t rely on the lecture videos or if there isn’t any, I’ll take notes in the textbook’s literature note instead.
Like my Zotero collection, my notes are stored in a flat structure. I did try using folders for notes though—I’ve previously used a Security/
subdirectory for all my cyber security-related notes, but I found that annoying as I was constantly creating notes in the wrong directory, plus the distinction didn’t benefit me at all. I use status tags to manage notes: status/todo
(stuff I want to think about or research), status/in-progress
(stuff I’m current researching/writing about), stub
(notes that are either blank or have minimal useful information), status/to-{refile,to-process,atomize}
(malformed notes that I have to organize later), etc.
Processing Notes
See: how to take permanent notes
Now that either the annotations or the notes are present in the literature note (or maybe I have some fleeting notes from other sources), I can start turning them into permanent notes. @ahrensHowTakeSmart2017 suggests that permanent notes should be:
- Atomic. The note should be focused on one idea or concept. As a rule of thumb, if the note is more than a screenful, chances are that you might want to “atomize” the note. In notes where I was feeling lazy and failed to follow this principle, I would tag them with the
status/atomize
tag in Obsidian and atomize them later. - In full sentences. This is so that when we refer to Zettelkasten for production purposes (i.e. writing), we can conveniently borrow what’s already in our notes. I use
status/to-process
to tag existing notes that are not in full sentences so that I can format them later. In many cases, I treat the note as quick reference, and leave it in bullet points for brevity. - Clear. The notes should be written as if we are trying to teach some one (i.e. Feynman technique). In other words, if on another day you read your own notes from a year ago and find yourself failing to comprehend it, then the note has failed.
- Connected. We should aim to at least connect the current note to one other existing permanent note. We can often form more connections by looking at the local graph (requires at least one link/connection) and increasing the depth of the graph to 2 or 3. The goal of connecting notes is to be able to find the current notes when we need to (e.g., by viewing backlink panel on a related note when brainstorming). You might say that you find most of the stuff you need through searching, but links can prove to be useful when you don’t know what you’re searching.
Use lowercase note titles
As a side note, I use lowercase note titles (except for proper nouns like “Active Directory” or “Gibbs free energy”) so that inline links are more readable and aesthetic. This also means that when the note title is a phrase or sentence, the link will blend right into the sentence.
Maintenance and Review
This and subsequent parts of my workflow are much less refined the previous parts, so I wouldn’t have much to write about them. I’m currently trying to figure out how to reduce chaos in my Zettelkasten. As for reviewing, I have considered using a spaced repetition plugin in Obsidian but haven’t really looked into it—I do believe that reviewing old notes can spark new connections with whatever is on my mind. For now, I only visit notes when I need something and I haven’t found a need for organized, periodic review of my notes, but perhaps this is because my Zettelkasten isn’t big enough yet.
Writing
See: how to write using Zettelkasten
Currently, I am not doing any long-form writing other than blog posts and writeups, so I don’t think I’ve fully tapped into the potential of Zettelkasten yet. It does feel good to find whatever you want to write about already there in a note though.