Master Obsidian for building a personal knowledge management system with markdown-based notes, bidirectional linking, powerful plugins, and flexible sync strategies. This skill covers vault organization, linking strategies, plugin ecosystem, and backup workflows.
When to Use This Skill
USE Obsidian when:
Building a personal knowledge base or second brain
Implementing Zettelkasten or evergreen note systems
Need local-first, privacy-focused note-taking
Want full control over your data (plain markdown files)
Creating interlinked notes with graph visualization
Writing with markdown and want powerful editing
Need offline access to all your notes
Building project documentation alongside code
Journaling with daily notes and templates
DON'T USE Obsidian when:
Need real-time collaboration (use Notion, Google Docs)
Require database-style structured data (use Notion)
Need web-based access without sync setup
Team-wide knowledge base with permissions (use Confluence)
Simple note-taking without linking (use Apple Notes, Bear)
Need built-in task management with reminders (use Todoist)
Prerequisites
Installation
# Download from official site# https://obsidian.md/download# macOS via Homebrew
brew install --cask obsidian
# Linux (AppImage)
wget https://github.com/obsidianmd/obsidian-releases/releases/download/v1.5.3/Obsidian-1.5.3.AppImage
chmod +x Obsidian-1.5.3.AppImage
./Obsidian-1.5.3.AppImage
# Linux (Flatpak)
flatpak install flathub md.obsidian.Obsidian
# Linux (Snap)sudo snap install obsidian --classic
# Zettelkasten-style vault
ObsidianVault/
├── 0-Inbox/ # Fleeting notes
├── 1-Literature Notes/ # Notes from sources
├── 2-Permanent Notes/ # Your own ideas
├── 3-Structure Notes/ # MOCs (Maps of Content)
├── 4-Projects/ # Project-specific notes
└── Templates/
Naming Conventions:
# Date-based naming for daily notes
Daily Notes/2025-01-17.md
# Timestamp-based for Zettelkasten
202501171430 - Concept Name.md
# Descriptive naming for permanent notes
How to Structure a Knowledge Base.md
# Project-prefixed naming
Project-Alpha - Meeting 2025-01-17.md
# Use lowercase with hyphens for consistency
my-note-about-something.md
# In source note (Source Note.md)
This is an important concept. ^important-concept
This paragraph explains something crucial about the topic.
It spans multiple lines. ^key-explanation
# In referencing note
As mentioned in [[Source Note#^important-concept]], this concept is key.
# Embed the block
![[Source Note#^important-concept]]
Linking Best Practices:
# Note: The Power of Compound Interest.md## Summary
Compound interest is the concept where interest earns interest over time.
## Related Concepts- [[Time Value of Money]] - foundational concept
- [[Investment Strategies]] - practical applications
- [[Rule of 72]] - quick estimation method
## Sources- [[Book - The Psychology of Money]]
- [[Article - Warren Buffett on Compounding]]
## Applications
See [[Personal Finance MOC#Investment Strategies]] for implementation.
## Tags#finance #investing #concepts
Alias Usage:
---aliases: [PKM, KnowledgeManagement, KM]
---
# Personal Knowledge ManagementThis note can now be linked via:- [[PersonalKnowledgeManagement]]
- [[PKM]]
- [[KnowledgeManagement]]
3. Tags and Properties (Frontmatter)
YAML Frontmatter:
---title:CompleteGuidetoObsidiandate:2025-01-17updated:2025-01-17type:referencestatus:activetags:-obsidian-knowledge-management-productivityauthor:YourNamerating:5source:https://obsidian.mdrelated:-"[[Markdown Basics]]"-"[[Note-Taking Methods]]"cssclass:wide-page---
# Complete Guide to ObsidianContentstartshere...
Common Property Patterns:
# For book notes---title:"Book Title"author:"Author Name"type:bookstatus:reading# reading, completed, abandonedstarted:2025-01-01finished:rating:genre: [non-fiction, productivity]
---
# For meeting notes---title:WeeklyTeamSynctype:meetingdate:2025-01-17attendees:-Alice-Bob-Charlieproject:"[[Project Alpha]]"action-items:true---
# For project notes---title:ProjectAlphaOverviewtype:projectstatus:active# planning, active, on-hold, completedstart-date:2025-01-01due-date:2025-03-31priority:highstakeholders:-TeamLead-ProductManager---
Tag Hierarchies:
# Use nested tags for organization#status/active#status/completed#status/on-hold#type/note#type/literature#type/project#area/health#area/finance#area/career#source/book#source/article#source/podcast#source/video# In a note:#project/alpha #status/active #priority/high
4. Templates
Daily Note Template:
---
date: {{date}}
type: daily
tags:
- daily-note
---# {{date:dddd, MMMM D, YYYY}}## Morning Review- [ ] Review calendar
- [ ] Check priorities
- [ ] Set daily intention
## Today's Focus> What is the ONE thing I can do today that will make everything else easier?1.## Tasks### Must Do- [ ]
### Should Do- [ ]
### Could Do- [ ]
## Notes & Ideas## Meetings```dataview
TABLE WITHOUT ID
file.link as "Meeting",
attendees as "Attendees"
FROM #meeting
WHERE date = date("{{date:YYYY-MM-DD}}")
---
title: {{title}}
type: project
status: planning
start-date: {{date:YYYY-MM-DD}}
due-date:
priority: medium
tags:
- project
---# {{title}}## Overview**Goal:****Success Criteria:**## Status```dataview
TABLE WITHOUT ID
status as "Status",
due-date as "Due Date",
priority as "Priority"
WHERE file.name = this.file.name
Key Resources
Milestones
Milestone 1 -
Milestone 2 -
Milestone 3 -
Tasks
In Progress
TASK
FROM "Projects/{{title}}"
WHERE !completed AND contains(text, "WIP")
Pending
TASK
FROM "Projects/{{title}}"
WHERE !completed AND !contains(text, "WIP")
Notes
Related
[[Project MOC]]
Created: {{date:YYYY-MM-DD}}
**Book Note Template:**
```markdown
---
title: "{{title}}"
author:
type: book
status: reading
started: {{date:YYYY-MM-DD}}
finished:
rating:
genre: []
isbn:
tags:
- book
- literature-note
---
# {{title}}
## Book Info
- **Author:**
- **Published:**
- **Pages:**
- **Genre:**
## Why I Read This
## Summary (3 sentences)
## Key Ideas
1.
## Favorite Quotes
> Quote here (p. X)
## Chapter Notes
### Chapter 1:
## How This Applies to My Life
## Related Books
- [[]]
## Action Items
- [ ]
---
**Rating:** /5
**Would Recommend To:**
5. Dataview Plugin
Installation:
1. Settings > Community plugins > Turn off Safe mode
2. Browse community plugins > Search "Dataview"
3. Install and Enable
4. Settings > Dataview > Enable JavaScript Queries (optional)
Basic Queries:
## List all notes tagged with #project```dataview
LIST
FROM #project
Table of books with ratings
TABLE author, rating, status
FROM #book
SORT rating DESC
Tasks due this week
TASK
FROM "Projects"
WHERE due >= date(today) AND due <= date(today) + dur(7 days)
SORT due ASC
Recent notes (last 7 days)
TABLE file.ctime as "Created", file.mtime as "Modified"
FROM ""
WHERE file.ctime >= date(today) - dur(7 days)
SORT file.ctime DESC
LIMIT 10
**Advanced Dataview Queries:**
```markdown
## Project Status Dashboard
```dataview
TABLE WITHOUT ID
file.link as "Project",
status as "Status",
priority as "Priority",
due-date as "Due Date",
(date(due-date) - date(today)).days as "Days Left"
FROM #project
WHERE status != "completed"
SORT priority ASC, due-date ASC
Reading Progress
TABLE WITHOUT ID
file.link as "Book",
author as "Author",
status as "Status",
rating as "Rating"
FROM #book
WHERE status = "reading" OR status = "completed"
SORT status ASC, rating DESC
Notes by Area (grouped)
TABLE WITHOUT ID
file.link as "Note",
file.mtime as "Last Modified"
FROM "Areas"
GROUP BY file.folder
SORT file.mtime DESC
Meeting Action Items
TASK
FROM #meeting
WHERE !completed AND contains(text, "@")
GROUP BY file.link
SORT file.ctime DESC
Weekly Review - Notes Created
TABLE WITHOUT ID
file.link as "Note",
file.ctime as "Created"
FROM ""
WHERE file.ctime >= date(today) - dur(7 days)
AND !contains(file.path, "Templates")
SORT file.ctime DESC
Orphan Notes (no backlinks)
LIST
FROM ""
WHERE length(file.inlinks) = 0
AND length(file.outlinks) = 0
AND !contains(file.path, "Templates")
AND !contains(file.path, "Archive")
LIMIT 20
# Obsidian Sync - Official Solution# Pros: Seamless, end-to-end encrypted, version history# Cons: Paid subscription ($8/month or $96/year)
Setup:
1. Settings > Sync > Set up Obsidian Sync
2. Log in with Obsidian account
3. Create or connect to remote vault
4. Select folders/files to sync
Best Practices:
- Exclude large binary files
- Use selective sync for large vaults
- Enable "Sync all other types" for attachments
iCloud Sync (macOS/iOS):
# Move vault to iCloud Drive
VAULT_NAME="ObsidianVault"mv ~/Documents/$VAULT_NAME ~/Library/Mobile\ Documents/com~apple~CloudDocs/$VAULT_NAME# Create symlink for easy accessln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/$VAULT_NAME ~/Documents/$VAULT_NAME# On iOS: Open Obsidian > Create new vault > Store in iCloud
Syncthing Setup:
# Install Syncthing
brew install syncthing # macOSsudo apt install syncthing # Ubuntu# Start Syncthing
syncthing
# Access web GUI at http://localhost:8384# Add folder: ~/Documents/ObsidianVault# Share with other devices# Syncthing ignore patterns (.stignore)
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.trash
*.sync-conflict-*
#!/usr/bin/env python3"""sync_todoist_obsidian.py - Sync Todoist tasks to Obsidian"""import os
import json
from datetime import datetime
from todoist_api_python import TodoistAPI
TODOIST_API_KEY = os.environ.get("TODOIST_API_KEY")
VAULT_PATH = os.path.expanduser("~/Documents/ObsidianVault")
defsync_todoist_to_obsidian():
api = TodoistAPI(TODOIST_API_KEY)
# Get all tasks due today
tasks = api.get_tasks(filter="today | overdue")
# Generate markdown
today = datetime.now().strftime("%Y-%m-%d")
content = f"""---
date: {today}
source: todoist
type: task-sync
---
# Todoist Tasks - {today}
## Due Today
"""for task in tasks:
checkbox = "[ ]"ifnot task.is_completed else"[x]"
due_str = task.due.string if task.due else"No due date"
content += f"- {checkbox}{task.content} (Due: {due_str})\n"# Write to vault
output_path = f"{VAULT_PATH}/Inbox/Todoist-{today}.md"withopen(output_path, "w") as f:
f.write(content)
print(f"Synced {len(tasks)} tasks to {output_path}")
if __name__ == "__main__":
sync_todoist_to_obsidian()
Integration with Notion Export
#!/usr/bin/env python3"""notion_to_obsidian.py - Export Notion pages to Obsidian"""import os
import re
from notion_client import Client
NOTION_API_KEY = os.environ.get("NOTION_API_KEY")
VAULT_PATH = os.path.expanduser("~/Documents/ObsidianVault")
defnotion_to_markdown(block):
"""Convert Notion block to markdown"""
block_type = block["type"]
if block_type == "paragraph":
text = extract_text(block["paragraph"]["rich_text"])
returnf"{text}\n\n"elif block_type == "heading_1":
text = extract_text(block["heading_1"]["rich_text"])
returnf"# {text}\n\n"elif block_type == "heading_2":
text = extract_text(block["heading_2"]["rich_text"])
returnf"## {text}\n\n"elif block_type == "heading_3":
text = extract_text(block["heading_3"]["rich_text"])
returnf"### {text}\n\n"elif block_type == "bulleted_list_item":
text = extract_text(block["bulleted_list_item"]["rich_text"])
returnf"- {text}\n"elif block_type == "numbered_list_item":
text = extract_text(block["numbered_list_item"]["rich_text"])
returnf"1. {text}\n"elif block_type == "to_do":
text = extract_text(block["to_do"]["rich_text"])
checked = "x"if block["to_do"]["checked"] else" "returnf"- [{checked}] {text}\n"elif block_type == "code":
text = extract_text(block["code"]["rich_text"])
language = block["code"]["language"]
returnf"```{language}\n{text}\n```\n\n"return""defextract_text(rich_text):
"""Extract plain text from Notion rich text"""return"".join([t["plain_text"] for t in rich_text])
defexport_page(notion, page_id, output_path):
"""Export a Notion page to markdown file"""# Get page properties
page = notion.pages.retrieve(page_id)
title = extract_text(page["properties"]["title"]["title"])
# Get page content
blocks = notion.blocks.children.list(page_id)
content = f"""---
title: {title}
source: notion
imported: {datetime.now().strftime("%Y-%m-%d")}
---
# {title}
"""for block in blocks["results"]:
content += notion_to_markdown(block)
# Write to vault
safe_title = re.sub(r'[<>:"/\\|?*]', '', title)
filepath = f"{output_path}/{safe_title}.md"withopen(filepath, "w") as f:
f.write(content)
print(f"Exported: {title}")
# Usage
notion = Client(auth=NOTION_API_KEY)
export_page(notion, "page-id-here", f"{VAULT_PATH}/Imports/Notion")
Best Practices
1. Note Naming and Organization
# Use consistent naming conventions- lowercase-with-hyphens.md (recommended)
- Title Case Note Name.md (acceptable)
- Avoid: spaces_underscores_MixedCase.md
# Date prefix for temporal notes
2025-01-17 Daily Note.md
2025-01-17 Meeting with Team.md
# Unique identifier prefix for Zettelkasten
202501171430 Concept Name.md
# Project prefix for project notes
Project-Alpha Meeting Notes.md
Project-Alpha Requirements.md
2. Linking Strategy
# Link generously but meaningfully- Link when concepts are related
- Don't link common words
- Use descriptive link text
# Create hub notes (MOCs - Maps of Content)# These serve as entry points to topics# Example MOC: Programming MOC.md# [[Python Basics]]# [[JavaScript Fundamentals]]# [[Data Structures]]# Use unlinked mentions to discover connections# Settings > Core plugins > Backlinks > Show unlinked mentions
3. Daily Notes Workflow
# Morning routine1. Create daily note from template
2. Review yesterday's note
3. Set top 3 priorities
4. Check calendar and add scheduled items
# Throughout the day- Capture thoughts in daily note
- Link to relevant notes
- Create new notes for substantial ideas
# Evening routine- Review completed tasks
- Process inbox items
- Reflect on the day
- Preview tomorrow
4. Progressive Summarization
# Layer 0: Original content (source)# Layer 1: Bold key passages# Layer 2: Highlight within bold# Layer 3: Executive summary at topExample:
---## Summary
Key insight in 2-3 sentences.
## Notes
The original passage contains **important information that stands out**.
Within that, ==the most crucial point== is highlighted.
5. Maintenance Routines
# Weekly Review- [ ] Process inbox notes
- [ ] Review orphan notes
- [ ] Update project statuses
- [ ] Clean up dead links
# Monthly Review- [ ] Archive completed projects
- [ ] Review and update MOCs
- [ ] Backup vault
- [ ] Update plugins
# Use Dataview for maintenance```dataview
LIST
FROM ""
WHERE file.mtime < date(today) - dur(90 days)
AND !contains(file.path, "Archive")
AND !contains(file.path, "Templates")
LIMIT 20
## Troubleshooting
### Common Issues
**Issue: Slow performance with large vault**
```markdown
Solutions:
1. Disable unused plugins
2. Reduce graph view nodes: Settings > Graph > Filters
3. Exclude folders from search: Settings > Files & Links > Excluded files
4. Use lazy loading for Dataview
5. Split into multiple vaults if > 10,000 notes
Issue: Sync conflicts
Solutions:
1. Close Obsidian on all devices before syncing
2. Use .sync-conflict-* in .gitignore
3. For Git sync: pull before editing
4. For iCloud: wait for sync indicator
5. Use Obsidian Sync for best experience
Issue: Broken links after moving notes
Solutions:
1. Use Obsidian's built-in move (F2 or right-click > Move)
2. Enable "Automatically update internal links"
3. Use Consistent Attachments and Links plugin
4. Run "Find and replace in all files" for bulk fixes
Issue: Images not displaying
Solutions:
1. Check attachment folder setting
2. Use relative paths: ![[image.png]]
3. Verify file exists in vault
4. Check file extension (case-sensitive on Linux)
5. For external images: ensure URL is accessible
Issue: Plugin conflicts
Solutions:
1. Disable all plugins, enable one by one
2. Check plugin compatibility in settings
3. Clear plugin cache: .obsidian/plugins/*/
4. Update all plugins to latest versions
5. Check plugin GitHub for known issues
Plugin Recommendations
## Essential Plugins- Dataview - Query and display data
- Templater - Advanced templating
- Calendar - Visual date navigation
- Periodic Notes - Daily/weekly/monthly notes
- Quick Switcher++ - Enhanced note switching
## Productivity- Tasks - Task management
- Kanban - Visual task boards
- Day Planner - Schedule visualization
- Reminder - Task reminders
## Writing- Linter - Markdown formatting
- Natural Language Dates - "tomorrow", "next week"
- Paste URL into selection - Smart link pasting
- Auto Link Title - Fetch titles for URLs
## Organization- Tag Wrangler - Manage tags
- Folder Note - Folder as note
- Recent Files - Quick access to recent notes
- Starred - Bookmark important notes
Version History
Version
Date
Changes
1.0.0
2025-01-17
Initial release with comprehensive Obsidian patterns
This skill enables building a powerful, privacy-first knowledge management system with Obsidian's markdown-based approach, bidirectional linking, and extensible plugin ecosystem.