Bullet-base
unlistedby Herve Sliwa
Turn the selected lines into an entry in a base — the note lands in the base's folder with the properties its filters require.
Bullet-base
Turn the lines you are looking at into an entry in one of your bases.
A base is a query over notes, so an entry is a note: one that lives in the folder the base filters on and carries the properties its filters expect. Bullet-base writes that note for you and leaves a link behind.
- Fix the deck ─ select, run the command, pick Todo.base ─▶ Efforts/Backlog/Fix the deck.md
- order boards ---
- rent saw Done: false
---
- [[Fix the deck]] ◀─ what the source note is left with - order boards
- rent saw
Use
- Select the lines (or just put the cursor on one).
- Run Convert selection to base entry.
- Paste a base link —
[[Todo.base]],![[Todo.base#Daily]], anobsidian://URL, or start typing a name. The base you used last is prefilled. - Pick the view, check the preview, hit Enter.
Convert selection to last used base skips the prompt entirely, for capturing several things in a row.
- The first selected line becomes the note's name; the rest becomes its body, dedented.
- List markers, checkboxes, headings,
**bold**and[[links]]are stripped from the name; characters that are illegal in file names are removed. An existing name gets2,3, … - The selected lines are replaced by a link, keeping their indent and bullet — so an outline stays an outline. This is configurable (leave them alone, or remove them).
Which properties get written
Only what the base's filters require, read from the base file and the view you picked:
| Filter | Written |
|---|---|
file.inFolder("Efforts/Backlog") | the note goes there |
file.hasTag("clippings") | tags: [clippings] |
Done != true | Done: false |
AddToList == true, Prio == 1, Status == "open" | that value |
note["Read Date"].isEmpty() | the key, left empty |
Anything else — Prio > 2, isNotEmpty(), or/not branches — is listed in the prompt as
not auto-filled rather than guessed at. Everything else about the note is left for you to
fill in from the base's table.
A base with no folder filter uses the fallback folder from settings, or the folder the
.base file is in.
Settings
- Selected lines — replace with a link (default), leave alone, or remove.
- Open the new entry — off by default; the point is to stay where you are.
- Fallback folder — for bases with no
file.inFolder(…)filter.
Development
npm install
npm run dev # watch build
npm test # headless checks, no Obsidian needed
npm run build # typecheck + production bundle
BULLETBASE_VAULT="$HOME/MyVault" npm run deploy
MIT.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.