Obsidian
Configuration
Most of my workflow would work without plugins, so dont think of this as a vastly different obsidian experience. Most just make writing just a little faster.
Functional
Latex Suite
Beyond making latex faster than handwritten math, provides a great engine for instant snippets which you can customize. I love it for instant callouts, like the desmos callouts i have in notes like Triple Integrals Practice.
Zotero Integration
If you work with any kind of academic papers this is one of the most useful features of obsidian. Read papers and annotate with zotero, auto import into obsidian extracting all important properties. You can then query with an obsidian base.
Linter
So important for several different things. Auto create date front matter property, move tags to front matter, standardizes your formatting.
Notebook Navigator
Because I use tags profusely this is a must-have. You can view tags just like you would folders, in the same bar and recent files viewing. I mostly use omni search for finding files I want, but for finding by tag this is the best.
You may not like the interface, but brings like 5 different plugins into one.
Excalidraw
great for math diagrams, especially topologies. Works well with mermaid, which I should use more often.
Git
I do a lot of data science, and thus having time series data for my notes is a must. This is the easiest way to back up your vault online with Github, and you get a super rich history of how you write notes over time.
Smart Connections
Bordering on not being that useful because the author is paywalling a lot of features, but this provides simple semantic search Cosine Similarity for any given note.
Nitpicks
Omnisearch
I love it a lot but this isn’t that different from Obsidians built in CMD+O file picker, it just reads note content as well which I never really use. Also has an OCR for searching text in images.
Tab Switcher
Browser style ctrl+tab switching, where it is treated as a “most recent” stack instead of just cycling through all open tabs.
Templater
i don’t think its that useful, most templates I have are just front matter properties
ActivityWatch
for working with the ActivityWatch computer usage daemon.
JupyMd
I dont use this that much, but if I have python codeblocks that are runnable on my website this is a good place to do it. Also converts jupyter notebooks to markdown, a much more token efficient format.
Maps
Made by obsidian team, a map view for obsidian bases. Nice for if you document places.
Paste Image Rename
Simple enough, prompts you to name an image when you paste it in. good for managing images folder in the long term.
Visual
Plugins
Hide Window Controls
Made a simple JS snippet to hide the MACOS traffic lights because I hate them. You will have to look up how to make your own plugin, its pretty easy, but heres the javascript:
main.js
const { Plugin } = require("obsidian");
/** @type {(w: Electron.BrowserWindow) => void} */
function hideWindowControls(w) {
w.setWindowButtonVisibility(false);
}
module.exports = class extends Plugin {
onload() {
if (process.platform === "darwin") {
hideWindowControls(electronWindow);
this.app.workspace.on("window-open", (_, { activeWindow }) => {
hideWindowControls(activeWindow);
});
}
}
};styles.css
body.mod-macos .workspace-tab-header-container {
padding-left: 4px !important;
}Hider
Gets rid of all the elements I dont want. Essential if you come from Neovim and like your clean workspaces.
Vertical Tabs
Arc/Zen style tabs, nice for me so I can hide/unhide when I please.
Persistent Graph: if you want the graph to be sort of useful, this keeps the positions instead of redoing the graph sim every time.
Theme
I use primary as it was easiest to make in My Color Palette, I would also recommend minimal if you like Neovim. See my snippet for making primary different.
Snippets
Complementary menu buttons hider I use this in combination with the plugin, it seems to work when you use both.
.workspace-titlebar {
-webkit-app-region: drag; /* Allow dragging */
}
.workspace-titlebar-buttons {
display: none;
}Main colorscheme
.theme-light {
--background-primary: #f5f1eb;
--background-primary-alt: #f5f1eb;
--background-secondary: #e6dfd6;
--background-secondary-alt: #e6dfd6;
--background-modifier-hover: rgba(166, 124, 109, 0.15);
--text-normal: #2d2520;
--text-muted: #4a4238;
--text-faint: #9a8f82;
--text-on-accent: #f5f1eb;
--text-selection: rgba(191, 97, 89, 0.2);
--interactive-accent: #bf6159; /* Rust */
--interactive-accent-hover: #a67c6d; /* Secondary */
--text-accent: #bf6159;
--text-accent-hover: #a67c6d;
--link-color: #bf6159;
--link-color-hover: #a67c6d;
--link-external-color: #bf6159;
--link-external-color-hover: #a67c6d;
--url-color: #bf6159;
--nav-item-background-active: rgba(191, 97, 89, 0.15);
--nav-item-text-color-active: #bf6159;
--background-modifier-active-hover: rgba(191, 97, 89, 0.1);
--background-modifier-border: #f5f1eb;
--background-modifier-border-hover: #e6dfd6;
--interactive-normal: #f5f1eb;
--interactive-hover: #e6dfd6;
--hr-color: #4a4238;
--caret-color: #bf6159;
--graph-line: #8b7f73;
--graph-node: #bf6159;
--color-red: #bf6159;
--color-orange: #c78d75;
--color-yellow: #cc9e54;
--color-green: #869c7a;
--color-cyan: #56706b;
--color-blue: #728c99;
--color-purple: #9d868e;
--color-pink: #9d868e;
}
.theme-dark {
--background-primary: #1a1714;
--background-primary-alt: #1a1714;
--background-secondary: #2a2520;
--background-secondary-alt: #2a2520;
--background-modifier-hover: rgba(197, 155, 141, 0.15);
--text-normal: #ebe7e1;
--text-muted: #d4cec7;
--text-faint: #6b6158;
--text-on-accent: #1a1714;
--text-selection: rgba(219, 142, 136, 0.2);
--interactive-accent: #db8e88; /* Rust */
--interactive-accent-hover: #c59b8d; /* Secondary */
--text-accent: #db8e88;
--text-accent-hover: #c59b8d;
--link-color: #db8e88;
--link-color-hover: #c59b8d;
--link-external-color: #db8e88;
--link-external-color-hover: #c59b8d;
--url-color: #db8e88;
--nav-item-background-active: rgba(219, 142, 136, 0.15);
--nav-item-text-color-active: #db8e88;
--background-modifier-active-hover: rgba(219, 142, 136, 0.1);
--background-modifier-border: #1a1714;
--background-modifier-border-hover: #2a2520;
--interactive-normal: #1a1714;
--interactive-hover: #2a2520;
--hr-color: #d4cec7;
--caret-color: #db8e88;
--graph-line: #4a4238;
--graph-node: #db8e88;
--color-red: #db8e88;
--color-orange: #deaea0;
--color-yellow: #e0bc7e;
--color-green: #aebd9f;
--color-cyan: #8daeb3;
--color-blue: #9bb0bd;
--color-purple: #c9b1b9;
--color-pink: #c9b1b9;
}
.cm-cursorLayer .cm-cursor {
background-color: var(--caret-color) !important;
opacity: 0.6;
}
.markdown-source-view.mod-cm6 .cm-link,
.markdown-source-view.mod-cm6 .cm-hmd-internal-link,
.markdown-preview-view a,
.cm-s-obsidian span.cm-link,
.cm-s-obsidian span.cm-hmd-internal-link {
color: var(--link-color) !important;
text-decoration: none !important;
}Workflow
Inbox and Task Management
Using an Inbox System - this is by far the simplest and most ideal way to manage tasks. I think that Tasknotes in my workflow no longer works for me, as it is simply overcomplex and reduces productivity, I dont need 6 kanban boards for my kind of work.
Please take note that for an inbox system to work, you must utilize stub notes to their fullest. Don’t be afraid of “letting an idea go”, as it will resurface organically in your own exploration and accumulation of novel ideas. Also stub notes will resurface in Passive Obsidian Worktime.
- this is also the same motivation behind the idea of excessive Bullet Point Notation.
- bullet point notes convey all the information you need with less words, but also bring a hierarchical approach to the note itself
- I like to think of it like markdown’s own heading hierarchichy, but more efficient. I am trying to use them more often, however sometimes it is just better to stream conciousness.
- inspired by Yana Log Notes ( see here )
Timeseries and Daily Notes
Bit harder and less straightforward. Using the git plugin along with some LLM analysis ( easiest way to go about it, you could do without if you are ok with the time sink ), you can get a better feel for how your notes/habits change over time. I myself made a simple MCP server to complement the obsidian cli for an agent that allows it to see topic topology via total # git diffs for notes with a certain tag:

But the better way to do this is to use links to daily notes excessively. Note updates as links to daily notes covers this, but essentially you encode the timeseries nature of returning to old notes as headings with a link to the day you made that change. This has the advantage of allowing you to go back to a certain daily note and see the backlinks as what you did.
Templates
Using templates profusely, from the current ceo’s method, where you don’t really focus on keeping any content within the body of the templates, just the frontmatter.
This allows you to both have the flexibility of an emergent organization system while also getting the compositional and rigid nature of Object Oriented Proggraming, where you assign each note a “structure”, for which certain qualities hold true for all notes of that class. Another useful thing about having a universal category property like class, is I can re use general property names and assign them different use cases in the context of different classes.
For example, Neurotransmitter Template for me has class:neurotransmitter, and because this only gets inserted with the template I know any note of this class has properties like type, upstream, inhibitors/activators, etc. I am reusing general properties here, as across the Neurotransmitter Template and others like Receptor Template/Process Template ALL have a type property, but it is context dependent on the class property.
Frontmatter
Talked a little about it above, but to keep frontmatter efficient look for ways to reuse the same property under different contexts across notes. There are also properties that ALL notes will have:
class:
- note
created_on: "[[<% tp.date.now('MM-DD-YYYY') %>]]" # up to you if you think this is usefull
tags:
source: # quick references, can be OTHER NOTES or URLs, this is the primary way this note was inspired to be made. e.g. watch a youtube video, import, then the concept note will have a source pointing to that video.
related:
author:
description: # one sentence description of the note, used in website
aliases: # we use aliases for everythingHierarchical Tags
Tags follow a hierarchical dot notation: comp-neuro/equipment/eeg, cs/data-science, phd/prep/reu. This lets you filter broadly (comp-neuro) or precisely (comp-neuro/equipment/eeg) in the tag panel and in Bases queries.
Notebook Navigator plugin makes these browsable as a folder-like tree. Keep tags structural rather than descriptive, tags describe what a note is, wikilinks describe what it’s about.
Tags are folders, except a note can be in multiple folders
Aliases
Using Aliases More Frequently - aliases are a GREAT way to help link old ideas. Not only makes searching easier, but when typing a name for a link in the [[ menu, you can type the alias and press enter, and it will create the link but with the display name set to the alias you typed. Great for long note names like UMAP, i just typed “umap” and it linked to the full path Uniform Manifold Approximation and Projection.
These also make adding backlinks so much easier. the bets way to link up new/old ideas into a note is to profusely use the backlinks/outgoing links panels, as they have options to find keyword note names in the note content and create the link for you. if a note has aliases, it will also search all notes for that alias keyword as well. I can go to the UMAP note, go to backlinks panel, and find all notes that just have the keyword “UMAP” in their contents and create the link, instead of just searching for “Uniform Manifold Approximation and Projection”, which will never be fully typed out in a note.
Consuming Knowledge
By far my biggest obsidian “moat” in my life. A detailed explanation can be seen in the first note of the series, Consuming and Choosing Content Effectively.
As the current setup stands, I have a lot of information source templates ( youtube template, Book Template, zotero_paper_template ), and VIEWs for these kinds of notes ( Books.base, Youtube.base, Papers.base ).
Each knowledge source is unique, but one thing they all share is the frontmatter property status. This usually follows the form open/in-progress/done from my tasknotes days, but now is treated much more generally and tied to the notes class property. For example, the Medication Template uses the status property for interested/taking/stopping, for Substance Protocol stack tracking.
There is a lot of other little things here, please read the full note Consuming and Choosing Content Effectively!
On a related note
If you have explored my Nootropic Compounds/Neuropharmacology notes at all, I also recommend reading Utilizing Cognition Enhancement Effectively, this is kind of building straight off of Consuming and Choosing Content Effectively. If you really want to dial in your mind, the world of neuropharma might be for you. If you want to get started, I would consider something like TAK-653 and possibly ACD-856/Tropisetron as a starting point.