Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Obsidian CLI

Manage your obsidian vaults, notes and databases from the command line

Obsidian CLI Demo

Features

  • Create, edit and read notes from the command line
  • View and export properties from your notes
  • Soon: query your vaults and database folders with SQL

Commands

Notes

Commands for interacting with individual notes
Usage: obx notes
obx notes <COMMAND>
Commands:
view Output the raw markdown contents of a note
open Open a note in the Obsidian app
uri Print the Obsidian URI of a note
create Create a new note
edit Open a note in your default editor ($EDITOR)
path Print the full file-path of the note
properties View the properties of a note
help Print this message or the help of the given subcommand(s)

Usage:

# Print a note> obx notes view simple-note
# Notes commands all accept a --vault specifier> obx notes view from-another-vault --vault=secondary
> obx notes create new-note
# Edit a note in $EDITOR> obx notes edit simple-note
# Open the note in Obsidian.app> obx notes open simple-note
# Print the obsidian:// uri for the note> obx notes uri simple-note
# Print the absolute path to a note> obx notes path simple-note
# Print the properties of a note in a table> obx notes properties with-fm-properties
# Print properties as JSON> obx notes properties with-fm-properties -f json

Vaults

Commands for interacting with vaults
Usage: obx vaults
obx vaults <COMMAND>
Commands:
create Create a new vault and switch to it. The name will be inferred from the last segment unless --name is explicitly provided
list List all vaults
switch Set a vault as current, to be implicitly used by commands. A vault can be explicitly provided, or chosen interactively
current Print the name and path of the current vault
path Print the absolute path to the current vault
help Print this message or the help of the given subcommand(s)
# Create a new vault called "new-vault"> obx vaults create path/to/new-vault
# Explicitly name a vault> obx vaults create path/to/new-vault --name another-vault
# Print a table of vaults> obx vaults list
# Print the vaults as JSON> obx vaults list -f json
# Interactively switch vaults> obx vaults switch
# Switch to a named vault> obx vaults switch secondary
# Print information about the current vault> obx vaults current
# Print the absolute path to the current vault# Useful for combining, e.g. tree $(obx vaults path)> obx vaults path

Roadmap

  • Fuzzy searching of files within vaults
  • Pretty rendering of notes in the command line
    • It's been tricky finding a markdown renderer with support for all the features I'd expect, so for now I suggest piping to another tool such as glow, e.g. obx notes view my-note | glow
  • Query your vault with SQL
    • Query notes across a vault
    • Query a "database folder"
  • Run dataview queries from the command line

About

A CLI for interacting with and querying data from your obsidian vault

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages