Obsidian
Find, search and add to your Obsidian notes
palupdated 2026-09-29ProductivityIn pal's registry3 deep links
In pal's registry: the button shows it in pal, which asks before installing; the command does the same from a terminal. This page can't see what your pal has installed.






What it does
Your Obsidian vault in the panel: find any note by title, search the full text, append to today's daily note and start new notes from a template. Notes open in Obsidian or your editor, or read right in the panel.
- Every note at the root by title, alias, tag or folder;
enteropens it in Obsidian,cmd+enterin your editor - Full-text search across the vault as you type, the matching line under each note
- Today's daily note, created from its template if missing; Append to today adds a line
- New notes from a template; tags, recent notes, backlinks and outgoing links
- Read a note in the panel with its headings, callouts, code and tables (
cmd+shift+r) cmd+ccopies a[[wikilink]]; the list stays in step with the vault on disk
Palettes 7
-
Notes
noteslistrefreshes every 5 minEvery note of the vault by title, alias, tag or folder, sectioned by folder; Today's note, New note (the title and the folder typed in the bar), Search notes and Random note at the top.
- ↵Open in Obsidian (or the editor, per the setting)
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
-
Search Notes
searchinputFull-text over every note as you type: ripgrep when on PATH, a one-second scan otherwise; the matching line on the row, the matches bold in the pane.
- ↵Open in Obsidian (or the editor, per the setting)
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
-
Daily Notes
dailyliveToday's note (created from the template when missing), yesterday's, this week's; Append to today and New note, their values typed in the bar.
- ↵Open the note; on Create today's note, create it (asks first); on Append to today and New note, with the line, or the title and folder, typed in the bar's fields
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
-
Tags
tagslistcatalogrefreshes every 5 minEvery tag in the vault with how many notes carry it; Enter lists them.
- ↵The notes with the tag
- ⌘CCopy the tag
-
Recent Notes
recentliveThe twenty notes changed last, newest first.
- ↵Open in Obsidian (or the editor, per the setting)
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
-
Backlinks
backlinkslistrefreshes every 5 minThe notes that link to the note you opened last, or to the row cmd+b came from.
- ↵Open the linking note
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
-
Outgoing Links
outgoinglistrefreshes every 5 minThe notes the note you opened last links to, or the row cmd+l came from; a link to nothing yet offers Create the note.
- ↵Open the linked note; on a link to nothing, create it
- ⌘↵Open in the editor (or Obsidian)
- ⌘CCopy the wikilink
- ⌘⇧RRead the note in pal
- ⌘BWhat links to the note
- ⌘LWhat the note links to
- ⌘⇧CCopy the path
- ⌘⇧AAppend the line typed in the bar
Actions
- Open in ObsidianThe note in Obsidian, through obsidian://open; first or second per the Open with setting.↵
- Open in editorThe editor command with the file's path; the OS opener without one.⌘↵
- Copy wikilink[[name]], or [[folder/name]] when another note shares the name.⌘C
- Read in palThe note drawn in the panel.⌘⇧R
- BacklinksThe notes that link to it.⌘B
- Outgoing linksThe notes it links to; a link to nothing yet offers Create the note.⌘L
- Copy pathThe file's absolute path.⌘⇧C
- Append a lineThe line typed in the bar (the note row's argument) lands at the end of the note, placeholders filled; a form when picked without it.⌘⇧A
- Create today's noteFrom the daily template; asks first.↵
- Append to todayThe line typed in the bar lands on its own line at the end of today's note; from Today's note's cmd+enter, a form.↵
- New noteThe title and the folder typed in the bar; the body from the template or your selection.↵
- Notes with the tagOn a tag row: the notes carrying it.↵
- Search in ObsidianOn the Search notes command: Obsidian's own search.⌘↵
Links 3
Obsidian answers these pal:// routes from a web page, a script or a keybind; pal call is the same route from a terminal. A link from a page asks first unless you trust the extension. How links work.
-
Open a note in Obsidian or the editor
openpal call obsidian/open path=<path>path*The note's path in the vault (with or without .md) or its name as a wikilink says it
-
Create a note and open it
newpal call obsidian/new title=<title>title*The title, also the file namebodyThe markdown body; {{title}} and {{date}} are filledfolderA folder of the vault; the top when empty
-
Append a line to today's daily note, created when missing
append-todaypal call obsidian/append-today text=<text>text*The line; {selection}, {clipboard}, {date} and {time} are filled
Settings
Extension, [extensions.obsidian]
vaultThe vault folder. Empty takes the vault Obsidian has open, or opened last (obsidian.json).
open_withWhat Enter does on a note; cmd+Enter is the other one. One of obsidian, editor.
editorThe command Open in editor runs with the file's path last (code, subl, zed). Empty opens the file with whatever the OS opens .md files with.
daily_folderWhere daily notes live, relative to the vault. Empty reads Obsidian's daily-notes plugin (.obsidian/daily-notes.json).
daily_formatThe date format of a daily note's name, moment's tokens as Obsidian takes them. Empty reads the plugin; YYYY-MM-DD when it says nothing.
daily_templateThe note a new daily note starts as, relative to the vault ({{date}}, {{time}}, {{title}} filled). Empty reads the plugin.
templateThe note New note starts as, relative to the vault ({{title}}, {{date}}, {{time}} filled). Empty starts from your selection or the clipboard.
excludeFolders and files left out of every palette, as globs relative to the vault. Dot folders (.obsidian, .trash) are always out.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything Obsidian does, key by key, from the extension's own README.md
Obsidian
Your Obsidian vault in the panel: every note by title at the root, sectioned by folder with its tags and change date; full-text search as you type; today's daily note, made from its template when missing, with a line appended to it from the clipboard or what you type; new notes from a template; tags with counts; what links to a note and what it links to. A note opens in Obsidian or in your editor, and reads inside the panel with its headings, callouts, lists, code and tables drawn in pal's own tokens.
| palette | id | kind | what Enter does |
|---|---|---|---|
| Notes | obsidian-notes |
indexed, 5 min | opens the note |
| Search Notes | obsidian-search |
input | opens the note |
| Daily Notes | obsidian-daily |
live | opens today's note, or creates it |
| Tags | obsidian-tags |
indexed, 5 min, catalog | lists the notes with the tag |
| Recent Notes | obsidian-recent |
live | opens the note |
| Backlinks | obsidian-backlinks |
indexed, 5 min | opens the linking note |
| Outgoing Links | obsidian-outgoing |
indexed, 5 min | opens the linked note |
What it reads
The vault folder from the vault setting, or, when that is empty, the
vault Obsidian has open (else opened last) in Obsidian's own
obsidian.json (~/Library/Application Support/obsidian/ on macOS,
~/.config/obsidian/ on Linux). Without either, every palette is one hint
row naming the setting.
Every .md under the vault, dot folders (.obsidian, .trash, .git)
and the exclude globs left out. Each note gives its title (the front
matter's title, else the first # heading, else the file name), its
description (the front matter's, else the first body line), its tags
(inline #tag and #a/b, the front matter's tags), its aliases and its
[[wikilinks]], which resolve as Obsidian resolves them: a path, else the
unique name, else the shortest path among namesakes, else an alias. The
index is kept per file by modification time and size, so a rebuild
re-reads only what changed; a watcher on the vault marks it stale on any
change (a burst is one), and the next listing rebuilds it. Search runs
ripgrep over the vault when rg is on PATH, else a scan in Bun that stops
after a second.
The daily-notes plugin's .obsidian/daily-notes.json (folder, format,
template) stands in for the daily_folder, daily_format and
daily_template settings while those are empty; YYYY-MM-DD when nothing
says. The format is moment's, the tokens Obsidian takes (YYYY MM DD dddd MMMM Do WW and [literal]); {{date}}, {{time}}, {{title}} and
{{date:FORMAT}} are filled in a template.
What it writes, and when
Three things, each on your action and nowhere else:
- Today's daily note, from its template, when you pick Today's note or Create today's note (which asks first) and the file is missing; also before an append when it is missing.
- A line at the end of today's note: Append to today (the line is
the row's typed argument: with the cursor on the row the bar shows the
field, Tab into it, Enter appends;
{selection},{clipboard},{date},{time}filled in) and theappend-todaylink. Today's note's⌘Enter, and a pick without the value (pal run, a hotkey), ask in a form with the same field, prefilled from the clipboard. - A new note: New note (the title and the folder are the row's typed
arguments, the folder a choice among the vault's; the body is the
templatesetting with{{title}}and{{date}}filled, else your selection or the clipboard, and the note opens at once), thenewlink, and Create the note on a link to nothing in Outgoing Links (a# Titleline). A title that names a note already there is refused, with the fields as a form to fix it in.
Nothing is edited or deleted. The note opened or read last is remembered in pal's storage for Backlinks and Outgoing links.
What each palette does
Notes lists every note, sectioned by folder (Vault for the top
level), the description as the subtitle, up to three tags and the change
date on the right; the name, the aliases, the tags and the folder are
keywords, so #infra or the box finds a note too. Four commands lead:
Today's note (⌘Enter appends instead), New note (title and folder typed
in the bar), Search notes (⌘Enter opens Obsidian's own search) and
Random note. Pushed from Tags it lists
one tag's notes (a nested tag under its parent too).
On every note row: Open in Obsidian (obsidian://open, so Obsidian
switches to the vault and the file) and Open in editor; which is Enter
and which ⌘Enter is the open_with setting. The editor is the editor
command with the file's absolute path last (code, subl, zed; a
command off PATH is a toast naming the setting); empty, the OS opens the
file with whatever owns .md. Copy wikilink (⌘C) writes [[name]], or
[[folder/name]] when another note shares the name. Read in pal (⌘⇧R)
draws the note as a view through the same markdown renderer tela's pages
use: headings, lists, tasks, callouts as tinted cards, quotes and code on
sunken wells, tables as aligned columns, links under their paragraph.
Backlinks (⌘B) and Outgoing links (⌘L) push those palettes with the
row; Copy path (⌘⇧C) is the absolute path. Marked notes (⌘-click,
⇧↓) open in the editor together (one call with every path), and Copy
wikilink and Copy path put one a line; Open in Obsidian stays one note's,
since its URI shows one note in the pane. Append a line (⌘⇧A) takes
the line as the row's typed argument (Tab into the field in the bar;
{clipboard}, {selection}, {date}, {time} filled in) and lands it
at the end of the note; a pick without it asks in a form. The pane (⌘I) is the note
as markdown with the front matter off, callouts as a bold lead, wikilinks
as links into Obsidian (a link to nothing yet says so), then the path,
the modified time, the words, the tags, the aliases, the links (an
unresolved one grey) and the backlinks with their titles.
Search Notes searches the text of every note as you type, case- insensitive, the words as typed: ripgrep when installed, a scan otherwise (the empty hint says which). Rows are notes sectioned by folder, the first matching line as the subtitle, how many lines matched on the right; the pane lists the matching lines (three per note) with the match bold. A note named or titled like the query comes first, then the ones with more matches, then the newest; sixty at most.
Daily Notes is live: today's note (a Create row when missing, which
asks before writing), yesterday's, the rest of the last seven days under
This week, then Append to today (the line typed in the bar) and New note
(the title and the folder). Tags counts every tag
across the vault, most used first; Enter lists the notes, ⌘C copies the
tag. Recent Notes is the twenty changed last. Backlinks and
Outgoing Links are for the note you opened last, or the row ⌘B /
⌘L came from; a link to a note that does not exist yet offers Create
the note.
Links
pal://obsidian/open?path=infra/theater(a path with or without.md, or a name as a wikilink says it) opens the note as Enter would.pal://obsidian/new?title=Trip&body=...&folder=personalcreates the note and opens it;{{title}}and{{date}}in the body are filled.pal://obsidian/append-today?text=...appends to today's note, created when missing;{selection},{clipboard},{date},{time}are filled.
Settings
[extensions.obsidian]:
| key | type | default | what |
|---|---|---|---|
vault |
path | (none) | The vault folder; empty takes Obsidian's open vault. |
open_with |
obsidian / editor |
obsidian |
What Enter does; ⌘Enter is the other. |
editor |
text | (none) | The editor command; empty is the OS opener. |
daily_folder |
text | (none) | Daily notes folder; empty reads the plugin. |
daily_format |
text | (none) | The daily note's name format; empty reads the plugin, then YYYY-MM-DD. |
daily_template |
text | (none) | The daily note's template; empty reads the plugin. |
template |
text | (none) | The template New note starts from. |
exclude |
list | [] |
Globs relative to the vault to leave out. |
For the tests, PAL_OBSIDIAN_CONFIG names an obsidian.json to read and
PAL_OBSIDIAN_SEARCH=scan forces the scan.
Not there
Editing a note's body (that is Obsidian's or the editor's), Obsidian's
search syntax (tag:, path:; the words are matched as typed), the
Periodic Notes community plugin's weekly and monthly notes, canvases,
attachments.