My Obsidian Workflow
Even the longest journey starts with a single step. I was searching for a way to organise knowledge and remember it, and there are many very good systems that can help. The best option might be to find a system you like and then customise and reorganise it to fit your needs.
Directories
Inspired by the programming concept of private variables, these directories are used by the system to store things that the general public (or readers) need not bother with. Examples include:
_assets: Storage of images or other files used in notes_templates: Storage of note templates_calendar: Storage of daily notes_dataview_database: Dataview queries- And so on...
-
00_Fleeting_inbox
- Fleeting notes or inbox directory is a place where fresh notes start. This is a starting point for notes that still need to be refined, quick thoughts, and work in progress. Conduct a weekly review; completed notes should move forward into one of the following categories.
-
01_Reference
- This directory is for practical knowledge. From tools and software to life and philosophy. Reference notes can be quickly scanned through if i need a reminder on specific topic.
-
02_Ideas_and_projects
- These are my own ideas and personal thoughts. A place to start and manage personal projects, akin to a cooking pot with different ingredients, almost ready to be served. Unlike references, these are my own views on particular subjects which can but don't have to be right.
-
03_Literature_notes
- Literature doesn't have to be a physical book, it can be a digital article or a blog post. While
01_Referencedirectory holds very practical notes, literature notes are usually wider in scope with broad range of ideas and personal thoughts about different concepts. When taking literature notes don't forget the source metadata. Most important is to follow the well defined structure. - Read more about structure of literature notes
- Literature doesn't have to be a physical book, it can be a digital article or a blog post. While
-
04_Expressions
- After collecting enough knowledge and different ideas, when there is enough to encapsulate written words into my own expressions, I will share them online. This is the directory where everything comes together.
-
05_Archive
- Never delete notes, archive them
- Place for all notes that you wish to remove from the current structure. Never delete them; keep them in the Archive so you can search them, read them, and maybe even revive them in the future. Set the value of
statusproperty toarchived
Important properties
There are two types of properties i will use, essential and optional. Essential properties must be included since those will help indexing and finding the relevant notes. Some plugins like Dataview requires metadata to be included so you can query relevant information. In future i will probably use some static site generators or frameworks to publish my notes as an online digital garden. Such frameworks require properties like title and description to improve search engine optimisation, or published being set to true or false which enables you to store the written note as an draft while you still work on it.
Create the Dataview index to query the list of available frontmatter properties. It is important to review the index file with key-value pairs that are used often and don't create new key-value pairs if it is not necessary. If i already have source: web there is no need to create additional source: article and source: blog. If i already have URL property there is no need to create additional link property. Not going to wide will help later when you need to search for information.
-
tags: List datatype. With not more than 3 tags. It is critical to minimise number of tags and keep them specific. Tags should closely define a note content. Very important rule is to restrict the tags to no more than 3. If you go for 5 to 10 tags for each note than most of them becomes useless. Main purpose of tag is to categorize the content in a way. If you check out list of current tags generated by a
dataviewplugin, you will find a lot of tags pointing to only 1 note. Imagine how that list would look like without my 3 tag maximum. -
Specificity tag rule. If you need to choose between few different tags always go for more specific one. Imagine you are writing the note about some Javascript library like React and you already have these tags available:
[programming, webdev, frontend, javascript, react]. As you can see you could insert all of them but having the 3 tag rule you must decide which 3. My recommendation is to always go with the more specific tags. So instead ofprogrammingyou will setwebdev, instead offrontendorjavascriptyou will go forreact. That way, when your collection grows very big, you will also have very specific tag list with not a single redundant tag. If one of your tags is underAIbut you are using only google'sGeminithan tag the note withGeminibut if there is more than justGeminiincluded than of course you should go with a term that will cover all of them,AI. -
type: String datatype. Indicates the type of a note. There must be only one type value. Type is not related to content or topic but more on the purpose or use case for a note. Look for available type values listed under [[#Type property]]
-
status: String datatype. Describes the stage of maturity or completeness of a note. Available values sorted from early stage to late stage:
-
draft: Fresh note, still in early stage writing. -
useful: Can be considered a semi-completed work. It can be useful but still lacks information or content. -
detailed: Completed note. With proper content and metadata. This can be considered as a full text ready to be published if needed. -
master: Notes in very late stage. After enough time has passed and all the ideas covered and explored. It must build upon the previous stage and provide additional value. -
archived: All notes that should be deleted will be archived instead.
- date: Date datatype.
- source. String datatype, source of note data
- author: String datatype, author of source
- title: String datatype, title of source
- URL: String datatype, link to source
Type property
Utilising YAML frontmatter, type is essential property that must be set for every file and with only one value written as a double quoted string.
It would be a mess going to wide with different types of notes. It will for sure loose the purpose. When i see a need to expand the list of available values i will for sure add more.
Current type values
| Type12 | Count |
|---|---|
| reference | 25 |
| knowledge | 12 |
| life | 4 |
| workflow | 4 |
| idea | 7 |
| literature_note | 14 |
| index | 13 |
| blog_post | 14 |
| script | 4 |
| project | 6 |
| spiritual_literature | 4 |
| template | 5 |
Plugins
-
Dataview
- Treat your Obsidian Vault as a database which you can query. Create dynamic views of your notes. For instance, you can create a table of all notes tagged with
#projector a list of all#referencenotes with a specific tag. It provides a JavaScript API and pipeline-based query language for filtering, sorting, and extracting data from Markdown pages. More info can be found at GitHub repository.
- Treat your Obsidian Vault as a database which you can query. Create dynamic views of your notes. For instance, you can create a table of all notes tagged with
-
Templater
- Templater is a template language that lets you insert variables and function results into your notes. It also lets you execute JavaScript code manipulating those variables and functions. With Templater, you can create powerful templates to automate manual tasks. Documentation is available at silentvoid13.com. To execute templater code and show output, use the following command:
Templater: Replace templates in the active fileor by shortcutalt + R
- Templater is a template language that lets you insert variables and function results into your notes. It also lets you execute JavaScript code manipulating those variables and functions. With Templater, you can create powerful templates to automate manual tasks. Documentation is available at silentvoid13.com. To execute templater code and show output, use the following command:
-
Excalidraw
- The Obsidian-Excalidraw plugin integrates Excalidraw, a feature-rich sketching tool, into Obsidian. You can store and edit Excalidraw files in your vault, embed drawings into your documents, and link to documents and other drawings. For a showcase of Excalidraw features, browse the GitHub repository.
Linking Notes
Most, if not all my notes have listed additional reading materials or references at the bottom. Since note systems have a tendency to grow over time it would be wise to review them on a regular basis and include both inbound and outbound links to new notes or reference material if it becomes available. Frontmatter can have status variable to indicate the level of maturity or completeness. There is a dataview index file tracking the status stages of the whole vault.
Large number of notes can be time consuming to review. Try using dataview queries as an index page and try to build a maps of content that will help with establishing connections between related topics.
References
- index page - personal note
- literature notes structure - personal note
- maps of content - personal note
- my note on notetaking - personal note
- building a second brain - book reference
- how to take smart notes - book reference