🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Obsidian CLI

by @adolago

Skill for the official Obsidian CLI (v1.12+). Complete vault automation including files, daily notes, search, tasks, tags, properties, links, bookmarks, base...

Versionv2.0.0
Downloads4,802
Installs78
Stars⭐ 7
TERMINAL
clawhub install obsidian-cli

πŸ“– About This Skill


name: obsidian-cli description: Skill for the official Obsidian CLI (v1.12+). Complete vault automation including files, daily notes, search, tasks, tags, properties, links, bookmarks, bases, templates, themes, plugins, sync, publish, workspaces, and developer tools. version: 2.0.0 author: adolago tags: - obsidian - cli - notes - automation - vault triggers: - obsidian - vault - daily note - obsidian cli

Obsidian CLI (Official, v1.12+)

The official Obsidian CLI connects to a running Obsidian instance via IPC. Requires Obsidian 1.12+ with CLI enabled in Settings > General.

Prerequisites

  • Obsidian 1.12+ installed and running
  • CLI enabled: Settings > General > Enable CLI
  • The obsidian binary must be in your PATH
  • Important: Obsidian must be running for CLI commands to work. The CLI communicates with the running instance via IPC.

    Platform Notes

  • macOS/Windows: The Obsidian installer typically places the CLI binary in PATH automatically.
  • Linux: You may need a wrapper script to avoid Electron flag injection that breaks CLI arg parsing. Ensure your wrapper is in PATH before the system obsidian binary. If running as a service, ensure PrivateTmp=false for IPC to work.
  • Complete Command Reference

    Basics

    obsidian version                            # Show Obsidian version
    obsidian help                               # List all available commands
    obsidian vault                              # Show vault info (name, path, files, size)
    obsidian vault info=name                    # Just vault name
    obsidian vault info=path                    # Just vault path
    obsidian reload                             # Reload the vault
    obsidian restart                            # Restart the app
    

    Daily Notes

    obsidian daily                              # Open today's daily note
    obsidian daily silent                       # Open without focusing
    obsidian daily:read                         # Read daily note contents
    obsidian daily:append content="- [ ] Task"  # Append to daily note
    obsidian daily:prepend content="# Header"   # Prepend to daily note
    obsidian daily paneType=tab                 # Open in new tab (tab|split|window)
    

    Files

    obsidian read file=Recipe                   # Read by name (wikilink resolution)
    obsidian read path="Work/notes.md"          # Read by exact path
    obsidian file file=Recipe                   # Show file info (path, size, dates)
    obsidian create name=Note content="Hello"   # Create a new note
    obsidian create name=Note template=Travel   # Create from template
    obsidian create path="Work/note.md" content="text"  # Create at exact path
    obsidian create name=Note overwrite         # Overwrite if exists
    obsidian create name=Note silent newtab     # Create silently in new tab
    obsidian open file=Recipe                   # Open in Obsidian
    obsidian open file=Recipe newtab            # Open in new tab
    obsidian delete file=Old                    # Delete (to trash)
    obsidian delete file=Old permanent          # Delete permanently
    obsidian move file=Old to="Archive/Old.md"  # Move/rename (include .md in target)
    obsidian append file=Log content="Entry"    # Append to file
    obsidian append file=Log content="text" inline  # Append inline (no newline)
    obsidian prepend file=Log content="Header"  # Prepend to file
    obsidian unique name="Meeting" content="notes"  # Create note with unique timestamp
    obsidian wordcount file=Note                # Word and character count
    obsidian wordcount file=Note words          # Words only
    obsidian wordcount file=Note characters     # Characters only
    obsidian random                             # Open a random note
    obsidian random:read                        # Read a random note
    obsidian random folder="Work"               # Random note from folder
    obsidian recents                            # List recently opened files
    obsidian recents total                      # Count of recent files
    

    Search

    obsidian search query="meeting notes"               # Search vault
    obsidian search query="TODO" matches                 # Show match context
    obsidian search query="project" path="Work" limit=10 # Scoped search
    obsidian search query="test" format=json             # JSON output
    obsidian search query="Bug" case                     # Case-sensitive search
    obsidian search query="error" total                  # Count matches only
    obsidian search:open query="TODO"                    # Open search view in Obsidian
    

    Tasks

    obsidian tasks daily                        # Tasks from daily note
    obsidian tasks daily todo                   # Incomplete daily tasks
    obsidian tasks daily done                   # Completed daily tasks
    obsidian tasks all todo                     # All incomplete tasks in vault
    obsidian tasks file=Recipe done             # Completed tasks in file
    obsidian tasks verbose                      # Tasks with file paths + line numbers
    obsidian tasks total                        # Count of tasks
    obsidian tasks status="/"                   # Tasks with custom status character
    obsidian task daily line=3 toggle           # Toggle task completion
    obsidian task daily line=3 done             # Mark task done
    obsidian task daily line=3 todo             # Mark task incomplete
    obsidian task ref="Work/todo.md:5" toggle   # Toggle by file:line reference
    obsidian task daily line=3 status="/"       # Set custom status
    

    Tags & Properties

    # Tags
    obsidian tags all counts                    # All tags with counts
    obsidian tags all counts sort=count         # Sorted by frequency
    obsidian tags file=Note                     # Tags in specific file
    obsidian tags total                         # Total tag count
    obsidian tag name=project verbose           # Tag details with file list
    obsidian tag name=project total             # Count of files with tag

    Properties (frontmatter)

    obsidian properties all counts # All properties with counts obsidian properties all counts sort=count # Sorted by frequency obsidian properties file=Note # Properties of specific file obsidian properties name=status # Files with specific property obsidian properties format=yaml # YAML output obsidian properties format=tsv # TSV output obsidian property:read name=status file=Note # Read a property value obsidian property:set name=status value=done file=Note # Set a property obsidian property:set name=due value="2026-03-01" type=date file=Note # Set with type obsidian property:remove name=status file=Note # Remove a property

    Aliases

    obsidian aliases # List all aliases in vault obsidian aliases all # Include files without aliases obsidian aliases file=Note # Aliases for specific file obsidian aliases total # Count of aliases obsidian aliases verbose # With file paths

    Links & Structure

    obsidian backlinks file=Note                # Files linking to Note
    obsidian backlinks file=Note counts         # With link counts
    obsidian backlinks file=Note total          # Count of backlinks
    obsidian links file=Note                    # Outgoing links from Note
    obsidian links file=Note total              # Count of outgoing links
    obsidian orphans                            # Files with no incoming links
    obsidian orphans total                      # Count of orphans
    obsidian orphans all                        # Include non-markdown files
    obsidian deadends                           # Files with no outgoing links
    obsidian deadends total                     # Count of deadends
    obsidian unresolved                         # Broken/unresolved links
    obsidian unresolved total                   # Count of unresolved
    obsidian unresolved counts                  # With reference counts
    obsidian unresolved verbose                 # With source file details
    obsidian outline file=Note                  # Headings tree
    obsidian outline file=Note format=md        # Headings as markdown
    obsidian outline file=Note total            # Count of headings
    

    Vault Info

    obsidian files total                        # File count
    obsidian files folder="Work" ext=md         # Filter by folder and extension
    obsidian folders                            # List all folders
    obsidian folders total                      # Folder count
    obsidian folders folder="Work"              # Subfolders of path
    obsidian folder path="Work" info=size       # Folder size in bytes
    obsidian folder path="Work" info=files      # File count in folder
    obsidian folder path="Work" info=folders    # Subfolder count
    

    Bookmarks

    obsidian bookmarks                          # List all bookmarks
    obsidian bookmarks total                    # Count of bookmarks
    obsidian bookmarks verbose                  # With details
    obsidian bookmark file="Work/note.md"       # Bookmark a file
    obsidian bookmark file="note.md" subpath="#heading"  # Bookmark a heading
    obsidian bookmark folder="Work"             # Bookmark a folder
    obsidian bookmark search="TODO"             # Bookmark a search query
    obsidian bookmark url="https://example.com" title="Example"  # Bookmark a URL
    

    Bases (Database Views)

    obsidian bases                              # List all base files
    obsidian base:views                         # List views in current base
    obsidian base:query file=MyBase             # Query base, default format
    obsidian base:query file=MyBase format=json # JSON output
    obsidian base:query file=MyBase format=csv  # CSV output
    obsidian base:query file=MyBase format=tsv  # TSV output
    obsidian base:query file=MyBase format=md   # Markdown table
    obsidian base:query file=MyBase format=paths  # Just file paths
    obsidian base:query file=MyBase view="View Name"  # Query specific view
    obsidian base:create name="New Item"        # Create item in current base view
    obsidian base:create content="text" silent  # Create silently
    

    Templates

    obsidian templates                          # List available templates
    obsidian templates total                    # Count of templates
    obsidian template:read name=Daily           # Read template content
    obsidian template:read name=Daily resolve   # Read with variables resolved
    obsidian template:read name=Daily resolve title="My Note"  # Resolve with title
    obsidian template:insert name=Daily         # Insert template into active file
    

    Commands & Hotkeys

    obsidian commands                           # List all command IDs
    obsidian commands filter="editor"           # Filter by prefix
    obsidian command id=app:open-settings       # Execute a command
    obsidian hotkeys                            # List assigned hotkeys
    obsidian hotkeys all                        # Include unassigned
    obsidian hotkeys total                      # Count of hotkeys
    obsidian hotkeys verbose                    # With command details
    obsidian hotkey id=app:open-settings        # Hotkey for specific command
    obsidian hotkey id=app:open-settings verbose # With full details
    

    Tabs & Workspaces

    # Tabs
    obsidian tabs                               # List open tabs
    obsidian tabs ids                           # With tab IDs
    obsidian tab:open                           # Open new empty tab
    obsidian tab:open file="Work/note.md"       # Open file in new tab
    obsidian tab:open group=2                   # Open in specific tab group

    Workspaces

    obsidian workspaces # List saved workspaces obsidian workspaces total # Count of workspaces obsidian workspace # Show current workspace tree obsidian workspace ids # With element IDs obsidian workspace:save name="coding" # Save current layout obsidian workspace:load name="coding" # Load saved workspace obsidian workspace:delete name="old" # Delete saved workspace

    History & Diff (File Recovery)

    obsidian history file=Note                  # List version history for file
    obsidian history:list                       # List all files with history
    obsidian history:read file=Note             # Read latest history version
    obsidian history:read file=Note version=3   # Read specific version
    obsidian history:restore file=Note version=3  # Restore a version
    obsidian history:open file=Note             # Open file recovery UI
    obsidian diff file=Note                     # List/diff local versions
    obsidian diff file=Note from=1 to=3         # Diff between versions
    obsidian diff file=Note filter=local        # Local versions only
    obsidian diff file=Note filter=sync         # Sync versions only
    

    Sync (Obsidian Sync)

    obsidian sync:status                        # Show sync status
    obsidian sync on                            # Resume sync
    obsidian sync off                           # Pause sync
    obsidian sync:history file=Note             # Sync version history
    obsidian sync:history file=Note total       # Count of sync versions
    obsidian sync:read file=Note version=2      # Read a sync version
    obsidian sync:restore file=Note version=2   # Restore a sync version
    obsidian sync:deleted                       # List files deleted in sync
    obsidian sync:deleted total                 # Count of deleted files
    obsidian sync:open file=Note               # Open sync history UI
    

    Publish (Obsidian Publish)

    obsidian publish:site                       # Show publish site info
    obsidian publish:status                     # List all publish changes
    obsidian publish:status new                 # New files to publish
    obsidian publish:status changed             # Changed files
    obsidian publish:status deleted             # Deleted files
    obsidian publish:status total               # Count of changes
    obsidian publish:list                       # List published files
    obsidian publish:list total                 # Count of published files
    obsidian publish:add file=Note              # Publish a file
    obsidian publish:add changed                # Publish all changed files
    obsidian publish:remove file=Note           # Unpublish a file
    obsidian publish:open file=Note             # Open on published site
    

    Themes & CSS Snippets

    # Themes
    obsidian theme                              # Show active theme
    obsidian theme name="Minimal"               # Get theme info
    obsidian themes                             # List installed themes
    obsidian themes versions                    # With version numbers
    obsidian theme:set name="Minimal"           # Set active theme
    obsidian theme:install name="Minimal"       # Install community theme
    obsidian theme:install name="Minimal" enable  # Install and activate
    obsidian theme:uninstall name="Minimal"     # Uninstall theme

    CSS Snippets

    obsidian snippets # List installed snippets obsidian snippets:enabled # List enabled snippets obsidian snippet:enable name="custom" # Enable a snippet obsidian snippet:disable name="custom" # Disable a snippet

    Plugins

    obsidian plugins                            # List all installed
    obsidian plugins filter=core                # Core plugins only
    obsidian plugins filter=community           # Community plugins only
    obsidian plugins versions                   # With version numbers
    obsidian plugins:enabled                    # List enabled plugins
    obsidian plugins:enabled filter=community versions  # Enabled community with versions
    obsidian plugins:restrict                   # Check restricted mode status
    obsidian plugins:restrict on                # Enable restricted mode
    obsidian plugins:restrict off               # Disable restricted mode
    obsidian plugin id=dataview                 # Get plugin info
    obsidian plugin:enable id=dataview          # Enable plugin
    obsidian plugin:disable id=dataview         # Disable plugin
    obsidian plugin:install id=dataview         # Install community plugin
    obsidian plugin:install id=dataview enable  # Install and enable
    obsidian plugin:uninstall id=dataview       # Uninstall community plugin
    obsidian plugin:reload id=my-plugin         # Reload plugin (dev)
    

    Web Viewer

    obsidian web url="https://example.com"      # Open URL in web viewer
    obsidian web url="https://example.com" newtab  # Open in new tab
    

    Developer Tools

    # JavaScript evaluation
    obsidian eval code="app.vault.getFiles().length"  # Run JS in Obsidian context

    Screenshots

    obsidian dev:screenshot # Screenshot to default path obsidian dev:screenshot path=screenshot.png # Screenshot to file

    DevTools

    obsidian devtools # Toggle Electron devtools

    Console & Errors (requires dev:debug on)

    obsidian dev:debug on # Attach CDP debugger (required for console) obsidian dev:debug off # Detach debugger obsidian dev:console # Show captured console messages obsidian dev:console limit=10 # Last 10 messages obsidian dev:console level=error # Filter by level (log|warn|error|info|debug) obsidian dev:console clear # Clear captured messages obsidian dev:errors # Show captured JS errors obsidian dev:errors clear # Clear errors

    DOM inspection

    obsidian dev:dom selector=".workspace" # Query DOM elements obsidian dev:dom selector=".nav-file" total # Count matching elements obsidian dev:dom selector=".nav-file" text # Get text content obsidian dev:dom selector=".nav-file" inner # Get innerHTML obsidian dev:dom selector=".nav-file" all # All matches obsidian dev:dom selector="h1" attr=class # Get attribute obsidian dev:dom selector="h1" css=color # Get CSS property

    CSS inspection

    obsidian dev:css selector=".workspace" # Inspect CSS with source locations obsidian dev:css selector=".workspace" prop=background # Specific property

    Chrome DevTools Protocol

    obsidian dev:cdp method="Page.getLayoutMetrics" # Raw CDP command obsidian dev:cdp method="Runtime.evaluate" params='{"expression":"1+1"}'

    Mobile emulation

    obsidian dev:mobile on # Enable mobile emulation obsidian dev:mobile off # Disable mobile emulation

    Multi-Vault

    obsidian vaults                             # List known vaults
    obsidian vaults verbose                     # With paths
    obsidian vaults total                       # Count of vaults
    obsidian vault=Notes daily                  # Target specific vault
    obsidian vault=Notes search query="test"    # Search in specific vault
    

    Parameter Syntax

  • param=value for parameters (quote spaces: content="Hello world")
  • Bare words for flags: obsidian tasks daily todo verbose
  • Multiline: use \n for newline, \t for tab
  • file= resolves like wikilinks (name only, no path/extension needed)
  • path= requires exact path from vault root
  • vault= must be the FIRST parameter to target a specific vault
  • Targeting Vaults

  • If CWD is inside a vault, that vault is used
  • Otherwise, the active vault is used
  • Use vault= as FIRST parameter to target a specific vault
  • Troubleshooting

  • "Cannot connect": Ensure Obsidian is running and CLI is enabled in Settings > General.
  • "Command not found": Ensure the obsidian binary is in your PATH.
  • Linux IPC issues: If running headless or as a service, ensure the IPC socket is accessible (no PrivateTmp, correct user context).
  • Electron flag conflicts (Linux): Use a wrapper script that omits electron-flags.conf for CLI invocations.
  • Notes

  • CLI connects to running Obsidian via IPC singleton lock
  • For non-interactive use (scripts/cron), ensure Obsidian is running first
  • move requires the full target path including .md extension
  • folders can be slow on large vaults (19k+ files)
  • dev:console requires dev:debug on to be run first
  • βš™οΈ Configuration

  • Obsidian 1.12+ installed and running
  • CLI enabled: Settings > General > Enable CLI
  • The obsidian binary must be in your PATH
  • Important: Obsidian must be running for CLI commands to work. The CLI communicates with the running instance via IPC.

    Platform Notes

  • macOS/Windows: The Obsidian installer typically places the CLI binary in PATH automatically.
  • Linux: You may need a wrapper script to avoid Electron flag injection that breaks CLI arg parsing. Ensure your wrapper is in PATH before the system obsidian binary. If running as a service, ensure PrivateTmp=false for IPC to work.
  • πŸ“‹ Tips & Best Practices

  • CLI connects to running Obsidian via IPC singleton lock
  • For non-interactive use (scripts/cron), ensure Obsidian is running first
  • move requires the full target path including .md extension
  • folders can be slow on large vaults (19k+ files)
  • dev:console requires dev:debug on to be run first