2026-04-28T00:00:00.000Z

Why Build a Zettelkasten in Obsidian?

Provide an opinionated, 'one-click' starter vault template with pre-configured plugins and settings, allowing users to get started immediately.

Setting Up a Zettelkasten in Obsidian with Plugins: A Step-by-Step Workflow Guide


TL;DR

  • A working Zettelkasten in Obsidian requires a specific folder structure, three core community plugins (Templater, QuickAdd, Dataview), and a clearly defined workflow — not just installed plugins sitting idle.
  • This guide builds the system from scratch: vault structure → templates → automated note creation → linking → dynamic queries, so every piece has a job.
  • By the end you’ll have a friction-minimal setup where capturing a new permanent note takes one hotkey press and two seconds of typing.

Table of Contents

  1. Why Build a Zettelkasten in Obsidian?
  2. The Core Plugin Stack: Your Zettelkasten Toolkit
  3. Step 1: Setting Up Your Vault’s Foundation
  4. Step 2: Configuring Your Note Templates with Templater
  5. Step 3: Automating Note Creation with QuickAdd
  6. Step 4: The Zettelkasten Workflow in Action
  7. Level Up: Advanced Tips and Optional Plugins
  8. FAQ
  9. Conclusion

Why Build a Zettelkasten in Obsidian? {#why}

Most note-taking advice is about collecting information. The Zettelkasten method, developed by the sociologist Niklas Luhmann who used it to publish over 70 books and 400 academic articles, is about generating ideas by forcing connections between them.

The three mechanical rules that make it work:

  1. Atomic notes. One idea per note, stated in your own words. No long book summaries. No dump files.
  2. Explicit linking. Every new note references at least one existing note. Links are the point, not tags or folders.
  3. No strict hierarchy. The network emerges from linking, not from a predefined folder taxonomy.

If you want the full philosophical grounding, How to Take Smart Notes by Sönke Ahrens is the definitive book. Read it once, then come back here to build the system.

Why Obsidian specifically?

  • Notes are plain .md files stored locally. No vendor lock-in. Your vault in 2035 will still open without a subscription.
  • Bidirectional linking and backlinks are first-class features, not afterthoughts.
  • The plugin ecosystem is large enough to automate every repetitive step without turning the app into bloatware.
  • The Graph View gives you a visual map of your knowledge network — useful for spotting isolated notes and unexpected clusters.

What this guide actually covers: Not the philosophy (you can read Ahrens for that). Not a surface-level plugin list. Instead, you’ll get a concrete, opinionated workflow where Templater, QuickAdd, and Dataview work as a connected system rather than three unrelated features.


The Core Plugin Stack: Your Zettelkasten Toolkit {#stack}

Before touching configuration, understand what each plugin does and why it’s in the stack. Installing plugins you don’t understand leads to abandoned setups.

PluginRole in the SystemWhy It’s Here
Templater (community)Creates structured note templates with dynamic metadataEnsures every permanent note has consistent YAML frontmatter and auto-filled fields
QuickAdd (community)Triggers template-based note creation via hotkeyEliminates the multi-click process of creating a new note manually
Dataview (community)Queries your notes like a databasePowers dynamic Maps of Content and surfaces orphaned notes automatically
Linter (community)Enforces consistent formatting on saveKeeps YAML frontmatter clean and adds/updates modification timestamps
Calendar (community)Provides a clickable calendar sidebar for Daily NotesMakes fleeting-note capture fast and date-navigable
Unique Note Creator (core)Generates UID-prefixed filenamesGives every note a stable, collision-free identifier

Why this specific combination? Templater handles structure, QuickAdd handles speed, Dataview handles retrieval, and Linter handles consistency. Each one fills a gap the others leave open. You can operate without Linter and Calendar, but Templater, QuickAdd, and Dataview are non-negotiable for the workflow described here.


Step 1: Setting Up Your Vault’s Foundation {#step1}

Create a New Vault

Open Obsidian → Create new vault. Name it something permanent (ZK or Knowledge are fine). Put it somewhere you control — not inside a cloud-synced folder that Obsidian Sync will also try to manage later.

📁 ZK/
├── 📁 00 - Inbox/
├── 📁 10 - Fleeting/
├── 📁 20 - Literature/
├── 📁 30 - Permanent/
├── 📁 40 - Maps of Content/
├── 📁 50 - Resources/
└── 📁 _Templates/

What each folder does:

  • 00 - Inbox: Unprocessed thoughts, links, quotes. Anything goes here. You clear it daily or weekly.
  • 10 - Fleeting: Quick notes that haven’t been turned into permanent notes yet. Daily Notes live here.
  • 20 - Literature: One note per source (book, paper, article). Contains your processed highlights and summaries.
  • 30 - Permanent: Your actual Zettelkasten. Every note here is atomic, linked, and written in your own words.
  • 40 - Maps of Content: Index notes that collect links to permanent notes on a topic. Not a folder hierarchy — just a curated list of links.
  • 50 - Resources: Reference material (templates for meetings, project files, etc.). Outside the ZK proper.
  • _Templates: Template files used by Templater. Keep this at root level for easy plugin access.

Configure Core Obsidian Settings

Go to Settings → Core plugins and enable:

  • Daily notes — set location to 10 - Fleeting, date format YYYY-MM-DD
  • Unique note creator — set prefix format to YYYYMMDDHHmm, default location to 00 - Inbox
  • Templates (core) — point to _Templates (you’ll override this with Templater, but enable it anyway)
  • Backlinks and Outgoing links — enable both, set to open in sidebar

Under Settings → Files & links:

  • Set Default location for new notes to 00 - Inbox
  • Enable Automatically update internal links when renaming files
  • Set New link format to Relative path to file

Install the Community Plugins

Go to Settings → Community plugins → Browse and install:

  1. Templater
  2. QuickAdd
  3. Dataview
  4. Linter
  5. Calendar

After installing each, click Enable.


Step 2: Configuring Your Note Templates with Templater {#step2}

Point Templater at Your Templates Folder

Settings → Templater:

  • Template folder location: _Templates
  • Enable Trigger Templater on new file creation: On
  • Enable Automatic jump to cursor: On

Create the Permanent Note Template

Inside _Templates, create a new file named tpl-permanent-note.md. Paste this exactly:

---
uid: <% tp.date.now("YYYYMMDDHHmm") %>
title: <% tp.file.title %>
aliases: []
tags: []
created: <% tp.date.now("YYYY-MM-DD") %>
modified: <% tp.date.now("YYYY-MM-DD") %>
status: draft
source: ""
---

# <% tp.file.title %>

## The Idea

<!-- State the single idea this note is about. One paragraph. -->

## Why It Matters

<!-- Why does this idea matter to you? What does it connect to? -->

## Links

<!-- [[Related Note A]] | [[Related Note B]] -->

## References

<!-- [Source Title](URL) or Literature Note link -->

What each YAML field does:

  • uid — a timestamp-based unique ID. Lets you rename the file later without breaking references.
  • title — mirrors the filename on creation; useful for Dataview queries.
  • aliases — alternative names Obsidian can use when searching.
  • statusdraft / developing / mature. Tracks how developed the note is.
  • source — where the idea came from (URL, book title, or a [[Literature Note]] link).

Create the Literature Note Template

Create _Templates/tpl-literature-note.md:

---
uid: <% tp.date.now("YYYYMMDDHHmm") %>
title: <% tp.file.title %>
author: ""
year: 
source-url: ""
tags: [literature]
created: <% tp.date.now("YYYY-MM-DD") %>
---

# <% tp.file.title %>

## Bibliographic Info

- **Author:**
- **Year:**
- **URL / ISBN:**

## Key Arguments

1.

## Passages Worth Keeping

>

## My Permanent Notes from This Source

<!-- [[ZK - Note Title]] -->

Create the Fleeting Note Template

Create _Templates/tpl-fleeting-note.md:

---
uid: <% tp.date.now("YYYYMMDDHHmm") %>
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
tags: [fleeting]
---

# Fleeting: <% tp.date.now("YYYY-MM-DD HH:mm") %>

<!-- Dump the thought here. Don't edit. Process later. -->

**To process:** [ ]

The checkbox in Fleeting notes is intentional — you can Dataview-query all unprocessed fleeting notes later.


Step 3: Automating Note Creation with QuickAdd {#step3}

This is where the setup pays off. Instead of: New File → Name it → Apply template → Move to folder → Start writing, you press one hotkey and the note appears, named, templated, and open for editing.

Configure QuickAdd for Permanent Notes

Go to Settings → QuickAdd:

  1. In the text field at the bottom, type New Permanent Note and click Add Choice
  2. Select Template as the choice type
  3. Click the ⚙️ gear icon next to the new choice

Configure the Template choice:

SettingValue
Template Path_Templates/tpl-permanent-note.md
File Name FormatZK - {{VALUE:Note title?}}
Create in Folder30 - Permanent
OpenEnabled
Focus new noteEnabled

Click the ⚡ lightning bolt icon to add this choice to the QuickAdd menu bar button.

What happens when you trigger this: QuickAdd prompts you with “Note title?”, you type four words, hit Enter, and you’re inside a new permanent note in 30 - Permanent with all the YAML pre-filled and your cursor waiting.

Set Up QuickAdd for Fleeting Notes

Repeat the process:

  1. Add a new choice: New Fleeting Note
  2. Type: Template
  3. Configure:
SettingValue
Template Path_Templates/tpl-fleeting-note.md
File Name FormatFleeting - {{DATE:YYYYMMDDHHmm}}
Create in Folder10 - Fleeting
OpenEnabled

This one doesn’t prompt for a title — it timestamps the file automatically. Capture first, think later.

Assign Hotkeys

Go to Settings → Hotkeys, search for QuickAdd:

  • QuickAdd: New Permanent Note → assign Ctrl+Shift+P (Windows/Linux) or Cmd+Shift+P (Mac)
  • QuickAdd: New Fleeting Note → assign Ctrl+Shift+F or Cmd+Shift+F

Test both. You should be inside a new note within two seconds of pressing the hotkey.


Step 4: The Zettelkasten Workflow in Action {#step4}

With the infrastructure in place, here’s the exact day-to-day workflow.

Stage 1: Capture (Inbox / Fleeting Notes)

You’re reading an article and hit an idea. Press Cmd+Shift+F. Type the thought. Close. Done. Don’t try to process it now — the inbox is a pressure valve, not a final destination.

During your daily review session (15–20 minutes), open 10 - Fleeting and look at everything with an unchecked [ ] box.

Stage 2: Process into Permanent Notes

For each worthwhile fleeting note:

  1. Press Cmd+Shift+P
  2. Type a descriptive, specific title (bad: “Memory”; good: “Spaced repetition works by exploiting the spacing effect”)
  3. Hit Enter
  4. Write the idea in your own words under The Idea
  5. Add your personal interpretation under Why It Matters
  6. Mark the fleeting note’s checkbox as [x] when done

The atomic note test: Can you summarize this note in one sentence? If the answer is two sentences joined by “and,” split it into two notes.

This is where Zettelkasten either works or doesn’t. Before closing the new permanent note:

  1. Ask: what existing notes does this connect to?
  2. Type [[ in the Links section and search your vault
  3. Add at least one outgoing link — even if it’s loose (“this connects to [[Confirmation Bias]] because…”)
  4. Open the linked note and add a backlink reference there too

The Graph View (Ctrl+G) after a few weeks will show you whether you’re actually linking or just filing.

Stage 4: Surface Knowledge with Dataview

Create a note in 40 - Maps of Content named MOC - Unlinked Notes.md:

# Orphaned Permanent Notes

Notes with no outgoing links — they need connections.

```dataview
TABLE created, status
FROM "30 - Permanent"
WHERE length(file.outlinks) = 0
SORT created DESC
```

Create another: MOC - Draft Notes.md:

# Notes Still in Draft Status

```dataview
TABLE created, file.mtime as "Last Modified"
FROM "30 - Permanent"
WHERE status = "draft"
SORT file.mtime ASC
```

And a topic-specific MOC. Example, MOC - Learning Science.md:

# Learning Science

```dataview
LIST
FROM "30 - Permanent"
WHERE contains(tags, "learning") OR contains(tags, "memory") OR contains(tags, "cognition")
SORT created ASC
```

These Dataview queries update automatically every time you open the note. No manual maintenance. The orphaned notes query is especially useful — an isolated permanent note is a note that hasn’t done its job yet.

Configure Linter for Automatic Cleanup

Go to Settings → Linter:

Under YAML, enable:

  • YAML Timestamp — adds/updates modified field on every save
  • Force YAML escape on special characters

Under General, enable Lint on save.

Now every time you hit Ctrl+S, the modified date updates automatically — no manual maintenance of that field ever.


Level Up: Advanced Tips and Optional Plugins {#levelup}

Use the Graph View Strategically

The Graph View isn’t a productivity tool — it’s a diagnostic tool. Use it monthly, not daily. What you’re looking for:

  • Isolated nodes (orphaned notes) → these need links
  • Hub nodes with many connections → these are natural MOC candidates
  • Unexpected clusters → ideas connecting across topics you didn’t anticipate. These are worth writing new notes about.

Filter the graph to show only 30 - Permanent by adding a path filter. The full vault graph including templates and resources is visual noise.

Excalidraw for Visual Thinking

Install the Excalidraw community plugin when you have a set of permanent notes that relate spatially — processes, comparisons, hierarchies. It embeds directly in Obsidian and stores drawings as .md files (so they’re future-proof). Use it for:

  • Argument maps across related notes
  • Visual MOCs where link text isn’t enough
  • Diagrams cited inside permanent notes

Obsidian Sync for Cross-Device Access

If you work across machines — desktop at home, laptop at work, tablet for reading — Obsidian Sync is worth paying for. It syncs your vault including plugin configurations and settings, which matters here because your QuickAdd choices and Templater templates are stored in the vault’s .obsidian folder. Third-party sync (Dropbox, iCloud) can cause sync conflicts with the SQLite-based plugin databases. Obsidian Sync handles this correctly. It also gives you version history — a useful safety net when you start heavy reorganization.

The Optional Plugins Worth Knowing About

PluginUse CasePriority
Smart ConnectionsAI-powered note suggestions based on semantic similarityNice to have
Strange New WorldsShows backlink counts inline in the editorNice to have
KanbanTurns a note into a visual board — good for processing InboxOptional
Advanced TablesMakes Markdown tables editable like a spreadsheetOptional
Better Word CountMore accurate stats than the core word countMinor QoL

Don’t install all of them at once. Add one, use it for two weeks, decide if it earns its keep.


Conclusion {#conclusion}

Here’s what you’ve built:

  • A folder structure that separates idea stages without creating bureaucratic overhead
  • Templater-powered templates that pre-fill consistent metadata on every note
  • QuickAdd hotkeys that get you into a new permanent note in under three seconds
  • Dataview queries that automatically surface what needs attention — orphans, drafts, topic clusters
  • Linter keeping your YAML clean without any manual work

The system only works if you use it daily, even briefly. Fifteen minutes of processing fleeting notes and adding one link to a new permanent note compounds faster than you expect. After 90 days, the graph starts talking back.

If you want to go deeper into the theory and advanced workflow design, this PKM and Obsidian course by an experienced knowledge management practitioner covers the full system design process — from how to write atomic notes that actually produce insights to building advanced Dataview dashboards. Worth the investment once you’ve got the basics running.

Now close this tab and set up the vault. The reading is the easy part.


Disclosure: This article contains affiliate links. If you purchase through them, we may earn a commission at no extra cost to you. We only recommend tools we’ve actually used.


Frequently Asked Questions

Technically no — Obsidian resolves links by filename and will update them automatically when you rename a file. The UID in the YAML frontmatter (not the filename) is the real stable identifier. Use it for querying and for future-proofing export to other tools. The filename prefix (ZK - ) is purely for visual sorting, not technical necessity.

Q: How many permanent notes do I need before the system becomes useful?

Most people start feeling the value somewhere between 50–100 notes. Below that, the graph is too sparse to surface unexpected connections. The linking habit is more important than note count — a vault of 200 linked notes beats 2,000 unlinked ones every time.

Q: Should Literature Notes go in the Zettelkasten (Permanent folder) or stay separate?

Keep them separate (20 - Literature). A Literature Note is a processed reference — it belongs to a source. A Permanent Note belongs to an idea. The connection between them goes in the source YAML field of the permanent note and in the My Permanent Notes section of the literature note. Mixing them blurs the distinction and makes Dataview queries messier.

Q: Can I migrate an existing Obsidian vault into this structure without starting over?

Yes. Create the folder structure, move existing notes into the appropriate folders in batches, then run Linter manually on each folder to normalize the YAML. The most important migration task is adding the status: draft field to existing notes so the Dataview query catches them. Use Obsidian’s Find and Replace in files to add missing frontmatter fields across multiple notes at once.

Q: Is Dataview worth learning if I’m not technical?

The queries in this guide are all you need for 90% of use cases. Copy-paste them, change the folder path and tag names to match yours, and they’ll work. You don’t need to understand the full Dataview query language to benefit from it. If you want more, the official Dataview documentation is straightforward and has a query builder section with examples.