Obsidian CLI Skill
The official Obsidian command-line interface allows you to interact with your vault from the terminal — reading notes, searching, managing properties, handling tasks, and more.
Prerequisites
Verify the CLI is installed and running:
obsidian --version
obsidian help
Requirements:
- Obsidian v1.12+ (released late 2024)
- Catalyst license or higher (Obsidian Sync, Publish, or community support)
- Obsidian must be running — the CLI communicates via IPC with a live instance
- macOS, Windows, or Linux support
If not installed, download the latest Obsidian installer from https://obsidian.md/download
Key Concepts
IPC-Based Communication
The obsidian-cli works by connecting to a running Obsidian instance via inter-process communication (IPC). It does not manipulate files directly; all commands are executed through Obsidian's API, ensuring proper handling of plugins, sync, and vault structure.
File vs Path Parameters
Two ways to target files:
-
file=<name>— Resolves by name like wikilinks. Searches across folders to find the file. More flexible but slower.- Example:
obsidian read file="My Note"(finds the file regardless of folder) - Best for: Quick access when you know the filename
- Example:
-
path=<path>— Exact path from vault root. No searching, just direct access.- Example:
obsidian read path="Journal/2026-02-28.md"(exact path required) - Best for: Performance-sensitive operations, when you know the exact location
- Example:
Vault Parameter
By default, commands run against the currently active vault. Override with:
obsidian read file="Note" vault="My Vault"
Quoting & Escaping
- Spaces in values — Always quote:
name="My Note"notname=My Note - Newlines — Use
\n:content="Line 1\nLine 2" - Tabs — Use
\t:content="Column1\tColumn2"
Flags vs Parameters
- Flags — Boolean options, no value needed:
--verbose,--overwrite,--inline - Parameters — Key=value pairs:
file="Name",query="term",limit=10
Syntax Guide
Basic Command Structure
obsidian <command> [parameter=value...] [--flag...]
Examples
# Parameters with simple values
obsidian read file="Journal"
# Parameters with spaces (quoted)
obsidian create name="My Daily Note" content="Hello world"
# Multiple parameters
obsidian search query="TODO" path="Projects" limit=10
# Flags
obsidian files folder="Project" --verbose
# Mixed
obsidian create path="Journal/2026-02-28.md" content="Daily note" --open
File Targeting Patterns
Read a Note by Name
obsidian read file="Meeting Notes"
Searches vault for Meeting Notes.md anywhere.
Read by Exact Path
obsidian read path="Project/2026-02-28.md"
Reads from exact location; faster for known paths.
Create with Template
obsidian create name="New Note" template="Daily Note Template"
List Files in Folder
obsidian files folder="Journal"
Command Reference
Commands are organized by category. Use obsidian help <command> for detailed options.
File Operations
read
Read file contents. Returns full text or structured data.
# Read by name
obsidian read file="My Note"
# Read by path
obsidian read path="Journal/2026-02-28.md"
# Active file (omit file/path params)
obsidian read
create
Create a new file with optional content and template.
# Simple creation
obsidian create name="New Note"
# With content
obsidian create name="Daily Note" content="Today's note"
# With template
obsidian create name="Meeting" template="Meeting Template" --open
# With exact path
obsidian create path="Journal/2026-02-28.md" content="..." --overwrite
append
Add content to end of file.
obsidian append file="My Note" content="New line"
# Inline (no newline before appended text)
obsidian append file="My Note" content=" continued" --inline
prepend
Add content to beginning of file.
obsidian prepend file="My Note" content="Header\n"
# Inline
obsidian prepend file="My Note" content="[Start] " --inline
delete
Remove a file (sends to trash by default).
obsidian delete file="Old Note"
# Permanent deletion
obsidian delete path="Archive/obsolete.md" --permanent
rename
Change a file's name.
obsidian rename file="Old Name" name="New Name"
move
Move file to different folder.
obsidian move file="Note" to="Archive"
# Move with new name
obsidian move path="Journal/old.md" to="Archive/2025-old.md"
open
Open file in Obsidian editor.
obsidian open file="Note"
# Open in new tab
obsidian open file="Note" --newtab
File Information
file
Show metadata about a file.
obsidian file file="My Note"
Returns: created date, modified date, size, links, backlinks count.
files
List all files in vault (optionally filtered).
# All files
obsidian files
# By folder
obsidian files folder="Journal"
# By extension
obsidian files ext="md"
# With count
obsidian files folder="Project" --total
folder
Show folder information.
obsidian folder path="Journal"
# Specific info
obsidian folder path="Journal" info=files # Number of files
obsidian folder path="Journal" info=size # Total size
obsidian folder path="Journal" info=folders # Number of subfolders
folders
List folders in vault.
obsidian folders
# Subfolders only
obsidian folders folder="Archive"
# With count
obsidian folders folder="Journal" --total
vault
Show vault information.
obsidian vault # All info
obsidian vault info=name # Vault name
obsidian vault info=path # Vault folder path
obsidian vault info=files # Total files
obsidian vault info=size # Total vault size
vaults
List all known vaults.
obsidian vaults
# Verbose (include paths)
obsidian vaults --verbose
wordcount
Count words and characters in file.
obsidian wordcount file="Chapter 1"
# Word count only
obsidian wordcount file="Chapter 1" --words
# Character count only
obsidian wordcount file="Chapter 1" --characters
Searching & Navigation
search
Full-text search vault.
# Basic search
obsidian search query="TODO"
# Limited results
obsidian search query="meeting" limit=5
# In folder
obsidian search query="TODO" path="Projects"
# Case sensitive
obsidian search query="MyClass" --case
# JSON output
obsidian search query="bug" format=json
search:context
Search with matching line context.
# Show surrounding lines
obsidian search:context query="TODO" path="Journal"
# JSON format
obsidian search:context query="error" format=json
search:open
Open search dialog in Obsidian.
obsidian search:open query="TODO"
Links & References
links
List outgoing links from a file.
obsidian links file="My Note"
# Count only
obsidian links file="My Note" --total
backlinks
List files linking to a target (incoming links).
obsidian backlinks file="Project Overview"
# Include link counts
obsidian backlinks file="Project Overview" --counts
# Format output
obsidian backlinks file="Project" format=json
aliases
Show aliases for a file (alternative names).
obsidian aliases file="Meeting"
# Count aliases
obsidian aliases file="Meeting" --total
# Verbose (include paths)
obsidian aliases file="Meeting" --verbose
# Aliases for active file
obsidian aliases --active
unresolved
List broken/unresolved links in vault.
obsidian unresolved
# Count only
obsidian unresolved --total
# Verbose (show source files)
obsidian unresolved --verbose
# JSON format
obsidian unresolved format=json
deadends
List files with no outgoing links.
obsidian deadends
# Count
obsidian deadends --total
# Include non-markdown files
obsidian deadends --all
orphans
List files with no incoming links (not referenced).
obsidian orphans
# Count
obsidian orphans --total
# Include non-markdown
obsidian orphans --all
Tags
tags
List all tags in vault with frequencies.
obsidian tags
# For specific file
obsidian tags file="My Note"
# By path
obsidian tags path="Journal"
# With counts
obsidian tags --counts
# Sort by count
obsidian tags --counts sort=count
# JSON format
obsidian tags format=json
# Tags for active file
obsidian tags --active
tag
Get info about a specific tag.
obsidian tag name=meeting
# Count only
obsidian tag name=meeting --total
# List files with tag
obsidian tag name=work --verbose
Tasks & Checklists
tasks
List all tasks in vault.
obsidian tasks
# Incomplete tasks
obsidian tasks --todo
# Completed tasks
obsidian tasks --done
# By file
obsidian tasks file="My Note"
# By path
obsidian tasks path="Journal"
# By status (e.g., "x" for done, "-" for in progress)
obsidian tasks status="-"
# Verbose (group by file with line numbers)
obsidian tasks --verbose
# JSON format
obsidian tasks format=json
# Tasks from daily note
obsidian tasks --daily
task
Show or update a single task.
# Show task at line 5 in Journal/2026-02-28.md
obsidian task ref="Journal/2026-02-28.md:5"
# Toggle task status
obsidian task ref="Journal/2026-02-28.md:5" --toggle
# Mark as done
obsidian task ref="Journal/2026-02-28.md:5" --done
# Mark as incomplete
obsidian task ref="Journal/2026-02-28.md:5" --todo
# Set custom status (e.g., in progress)
obsidian task file="My Note" line=3 status="-"
Properties & Metadata
properties
List all properties in vault with usage counts.
obsidian properties
# Properties for specific file
obsidian properties file="My Note"
# By path
obsidian properties path="Journal"
# With counts
obsidian properties --counts
# Count specific property
obsidian properties name=category --total
# Sort by count
obsidian properties sort=count
# YAML format
obsidian properties format=yaml
# JSON format
obsidian properties format=json
# Properties for active file
obsidian properties --active
property:set
Set a property on a file.
obsidian property:set name=category value=work file="My Note"
# With type (auto-inferred if not specified)
obsidian property:set name=priority value=high file="Task" type=text
# List type
obsidian property:set name=tags value="work,urgent" file="Note" type=list
# Number type
obsidian property:set name=wordcount value=1500 file="Article" type=number
# Checkbox
obsidian property:set name=reviewed value=true file="Document" type=checkbox
# Date
obsidian property:set name=deadline value=2026-03-01 file="Task" type=date
property:read
Get a property value from a file.
obsidian property:read name=category file="My Note"
# By path
obsidian property:read name=priority path="Tasks/urgent.md"
property:remove
Delete a property from a file.
obsidian property:remove name=draft file="Article"
# By path
obsidian property:remove name=status path="Archive/old.md"
Templates
templates
List all templates in vault.
obsidian templates
# Count
obsidian templates --total
template:read
Read template content (useful for understanding what template will insert).
obsidian template:read name="Daily Note"
# Resolve variables
obsidian template:read name="Daily Note" --resolve title="2026-02-28"
template:insert
Insert template into active file.
obsidian template:insert name="Daily Note"
Bookmarks
bookmarks
List all bookmarks.
obsidian bookmarks
# Count
obsidian bookmarks --total
# Verbose (show types)
obsidian bookmarks --verbose
# JSON format
obsidian bookmarks format=json
bookmark
Add a bookmark.
# Bookmark a file
obsidian bookmark file="Journal/2026-02-28.md"
# Bookmark a section
obsidian bookmark file="Project Overview" subpath="Goals"
# Bookmark a folder
obsidian bookmark folder="Archive"
# Bookmark a search
obsidian bookmark search="TODO"
# Bookmark a URL
obsidian bookmark url="https://example.com" title="My Site"
Bases (Database-like Tables)
bases
List all base files in vault.
obsidian bases
base:views
List views in a base.
obsidian base:views file="Contacts"
# By path
obsidian base:views path="Databases/Projects.md"
base:query
Query a base and return filtered results.
# Query a view
obsidian base:query file="Contacts" view="Active"
# JSON output
obsidian base:query file="Projects" view="2026" format=json
# CSV output
obsidian base:query file="Contacts" view="All" format=csv
base:create
Create a new record in a base.
obsidian base:create file="Contacts" view="All" name="John Doe" email="john@example.com"
# With initial content
obsidian base:create file="Projects" view="Active" name="Project X" content="Details..."
# Open after creating
obsidian base:create file="Tasks" view="Backlog" name="Task 1" --open
Publishing
publish:status
Check what files have unpublished changes.
obsidian publish:status
# New files only
obsidian publish:status --new
# Changed files
obsidian publish:status --changed
# Deleted files
obsidian publish:status --deleted
# Count
obsidian publish:status --total
publish:add
Publish files to Obsidian Publish.
# Publish specific file
obsidian publish:add file="Project Overview"
# Publish all changed
obsidian publish:add --changed
publish:remove
Unpublish a file.
obsidian publish:remove file="Archived Note"
# By path
obsidian publish:remove path="Archive/old.md"
publish:list
List published files.
obsidian publish:list
# Count
obsidian publish:list --total
publish:site
Show Publish site info.
obsidian publish:site
publish:open
Open published file in browser.
obsidian publish:open file="My Article"
Sync & Version History
sync:status
Check sync status.
obsidian sync:status
sync
Pause or resume sync.
obsidian sync off # Pause sync
obsidian sync on # Resume sync
sync:history
List version history for a file in sync.
obsidian sync:history file="My Note"
# Count versions
obsidian sync:history file="My Note" --total
sync:read
Read a specific sync version.
obsidian sync:read file="My Note" version=5
sync:restore
Restore a file to a previous sync version.
obsidian sync:restore file="My Note" version=3
sync:deleted
List files deleted in sync.
obsidian sync:deleted
# Count
obsidian sync:deleted --total
sync:open
Open sync history UI.
obsidian sync:open file="My Note"
history
List local file history versions.
obsidian history file="My Note"
# By path
obsidian history path="Journal/2026-02-28.md"
history:read
Read a local history version.
obsidian history:read file="My Note" version=2
history:restore
Restore from local history.
obsidian history:restore file="My Note" version=1
diff
Compare local and sync versions.
obsidian diff file="My Note"
# Diff specific versions
obsidian diff file="My Note" from=1 to=5
# Filter by source
obsidian diff file="My Note" filter=local
obsidian diff file="My Note" filter=sync
Plugins
plugins
List all installed plugins.
obsidian plugins
# Core plugins only
obsidian plugins filter=core
# Community plugins
obsidian plugins filter=community
# Include versions
obsidian plugins --versions
# JSON format
obsidian plugins format=json
plugins:enabled
List enabled plugins.
obsidian plugins:enabled
# By type
obsidian plugins:enabled filter=core
plugin
Get info about a plugin.
obsidian plugin id=dataview
plugin:enable
Enable a plugin.
obsidian plugin:enable id=dataview
plugin:disable
Disable a plugin.
obsidian plugin:disable id=templater
plugin:install
Install a community plugin.
# Install and enable
obsidian plugin:install id=obsidian-git --enable
# Just install
obsidian plugin:install id=dataview
plugin:uninstall
Remove a plugin.
obsidian plugin:uninstall id=templater
plugin:reload
Reload a plugin (development use).
obsidian plugin:reload id=my-plugin
plugins:restrict
Toggle restricted mode.
obsidian plugins:restrict on # Enable restricted mode
obsidian plugins:restrict off # Disable restricted mode
Themes
themes
List installed themes.
obsidian themes
# Include versions
obsidian themes --versions
theme
Get current theme or info about a theme.
obsidian theme # Show active theme
obsidian theme name=Obsidian # Info about a theme
theme:set
Set active theme.
obsidian theme:set name=Obsidian
# Back to default
obsidian theme:set name=""
theme:install
Install community theme.
obsidian theme:install name="Minimal" --enable
# Just install
obsidian theme:install name="Things"
theme:uninstall
Remove theme.
obsidian theme:uninstall name="Minimal"
Snippets (CSS)
snippets
List CSS snippets.
obsidian snippets
snippets:enabled
List enabled snippets.
obsidian snippets:enabled
snippet:enable
Enable a CSS snippet.
obsidian snippet:enable name="hide-metadatablock"
snippet:disable
Disable a CSS snippet.
obsidian snippet:disable name="custom-colors"
Commands & Hotkeys
commands
List all available Obsidian command IDs.
obsidian commands
# Filter by prefix
obsidian commands filter=editor
command
Execute an Obsidian command.
obsidian command id=editor:save-file
hotkeys
List hotkeys (keyboard shortcuts).
obsidian hotkeys
# Verbose (show if custom or default)
obsidian hotkeys --verbose
# Include all (even commands without hotkeys)
obsidian hotkeys --all
# Count
obsidian hotkeys --total
hotkey
Get hotkey for a specific command.
obsidian hotkey id=editor:save-file --verbose
Workspaces
workspaces
List saved workspaces.
obsidian workspaces
# Count
obsidian workspaces --total
workspace
Show workspace tree.
obsidian workspace
# Include workspace item IDs
obsidian workspace --ids
workspace:save
Save current layout as a workspace.
obsidian workspace:save name="Writing"
obsidian workspace:save name="Development"
workspace:load
Load a saved workspace.
obsidian workspace:load name="Writing"
workspace:delete
Delete a saved workspace.
obsidian workspace:delete name="Old Workspace"
Tabs & Windows
tabs
List open tabs.
obsidian tabs
# Include tab IDs
obsidian tabs --ids
tab:open
Open a new tab.
obsidian tab:open file="Journal/2026-02-28.md"
# Specific group
obsidian tab:open group=main-group file="Note"
# View type
obsidian tab:open view=search
Utility & Navigation
open
Open a file in editor (same as open in File Operations).
obsidian open file="Note"
random
Open a random note.
obsidian random
# From folder
obsidian random folder="Journal"
# In new tab
obsidian random --newtab
random:read
Read a random note.
obsidian random:read
# From folder
obsidian random:read folder="Ideas"
recents
List recently opened files.
obsidian recents
# Count
obsidian recents --total
outline
Show headings in a file.
obsidian outline file="Project Plan"
# Tree format (default)
obsidian outline file="Project Plan" format=tree
# Markdown format
obsidian outline file="Project Plan" format=md
# JSON format
obsidian outline file="Project Plan" format=json
# Count only
obsidian outline file="Project Plan" --total
reload
Reload the vault.
obsidian reload
restart
Restart Obsidian completely.
obsidian restart
version
Show Obsidian version.
obsidian version
Developer Tools
dev:screenshot
Take a screenshot of Obsidian UI.
obsidian dev:screenshot path=screenshot.png
dev:console
Show captured console messages.
obsidian dev:console
# Filter by level
obsidian dev:console level=error
# Clear buffer
obsidian dev:console --clear
# Limit output
obsidian dev:console limit=20
dev:errors
Show captured errors.
obsidian dev:errors
# Clear
obsidian dev:errors --clear
dev:debug
Attach/detach Chrome DevTools debugger.
obsidian dev:debug on # Attach
obsidian dev:debug off # Detach
dev:dom
Query DOM elements.
# Find elements
obsidian dev:dom selector=".cm-editor"
# Get text
obsidian dev:dom selector=".status-bar" --text
# Count matches
obsidian dev:dom selector="button" --total
# Get attribute
obsidian dev:dom selector="a.link" attr=href
# Get CSS property
obsidian dev:dom selector=".title" css=color
dev:css
Inspect CSS with source locations.
obsidian dev:css selector=".heading"
# Filter by property
obsidian dev:css selector=".text" prop=color
dev:cdp
Run Chrome DevTools Protocol command.
obsidian dev:cdp method=Page.printToPDF params='{"path":"output.pdf"}'
dev:mobile
Toggle mobile emulation.
obsidian dev:mobile on # Enable
obsidian dev:mobile off # Disable
devtools
Toggle Electron dev tools.
obsidian devtools
eval
Execute JavaScript in Obsidian context.
obsidian eval code='app.vault.getMarkdownFiles().length'
# Get custom object
obsidian eval code='app.workspace.activeEditor?.file?.name'
Common Patterns for GOBI Vault
Reading Daily Notes
# Today's journal
obsidian read file="Journal"
# Specific date
obsidian read path="Journal/2026-02-28.md"
Appending to Journal
obsidian append file="Journal" content="\n## Reflection\n[Your thoughts]"
Finding Todos
# All incomplete tasks
obsidian tasks --todo
# TODOs in projects
obsidian search query="TODO" path="Projects"
Getting File Properties
# Read specific property
obsidian property:read name=tags file="Article"
# All properties on a file
obsidian properties file="My Note"
Searching Your Vault
# Find by keyword
obsidian search query="machine learning" limit=10
# In specific folder
obsidian search query="meeting" path="Work"
# Case-sensitive
obsidian search query="MyClass" --case
Managing Projects
# List all project files
obsidian files folder="Projects"
# Get project outline
obsidian outline file="Project X"
# Search project issues
obsidian search query="BUG:" path="Projects/ProjectX"
Working with Tags
# All tags and their counts
obsidian tags --counts
# Files with tag
obsidian tag name=important --verbose
# Tags in article
obsidian tags file="Article"
Discovering Options
Every command has built-in help. Use obsidian help to learn more:
# List all commands
obsidian help
# Help for specific command
obsidian help read
obsidian help search
obsidian help property:set
# Short help (in command output)
obsidian <command>
Quality Checklist
Before using obsidian CLI commands:
- [ ] Obsidian is running and responding
- [ ] Correct vault targeted (if using
vault=parameter) - [ ] File name or path is correct
- Use
file=for name-based lookup - Use
path=for exact vault-root paths
- Use
- [ ] Parameters quoted if containing spaces
- [ ] Output format appropriate (json/tsv/csv available for most commands)
- [ ] Understand the difference between metadata (properties/tags) and content
Error Handling
Common Issues
"Obsidian is not running"
- Solution: Start Obsidian before running CLI commands. The CLI requires IPC connection.
"Vault not found"
- Solution: Use
obsidian vaultsto list available vaults, then specifyvault="Name"
"File not found" (with file= parameter)
- Solution: Verify file exists with
obsidian files. Consider usingpath=instead for exact match.
"Permission denied"
- Solution: Ensure you have read/write permissions in Obsidian vault folder and plugins are not interfering.
Debug Commands
# Check vault status
obsidian vault
# List all files
obsidian files --total
# Test search
obsidian search query="test" limit=1
# Check version
obsidian version
Next Steps: Run obsidian help to explore specific commands, or use pattern examples above for GOBI vault operations.