README file from
GithubAdvanced Note Composer
Obsidian's core Note composer moves text between notes, but it moves it bluntly: relative links come out pointing at nothing, a heading whose title contains a character a file name cannot hold is refused outright, and extracted text is always appended to the target — you never get to say where it lands. This Obsidian plugin fixes those, and then goes considerably further: whole folders can be merged, split, flattened, reordered and renamed; a note's heading hierarchy can become a folder tree; and a selection can be marked in one note and dropped at an exact cursor position in another.
Demo vault
The documentation is an interactive demo vault. Every feature has a note that explains what it does and why you would want it, and walks you through it step by step — most of them with a button that sets the relevant setting for you so you can try it immediately.
Start reading here — it is plain markdown, so it works on GitHub with nothing installed.
A copy of the vault ships with every release. You can access it via any of the following:
- Running the Advanced Note Composer: Open demo vault command.
- Downloading
advanced-note-composer-demo-vault-<version>.zip(<version>is the release version) from the Releases. - Browsing its source in
demo-vault/in this repository.
What it does
- Merge — a note into another, a folder into a folder, several selected notes at once, or a whole folder tree down into one file, with frontmatter reconciled by a strategy you choose and attachments carried along. Merge file · Merge folder · Merge folder into single file · Merge multiple files · Frontmatter merge strategy
- Extract — a selection, a heading and everything under it, the block between two horizontal rules, or everything before or after the cursor — leaving a link, an embed, or nothing behind. With nothing selected it creates an empty note and leaves the link at the cursor, so a note you have not written yet can exist without your cursor going anywhere; the file explorer's folder menu creates one the same way. Give it a split template and the new note is not empty at all — it comes out holding the template, with the cursor where
{{content}}was. Extract selection · Extract heading · Extract between horizontal rules · Text after extraction · Create empty note - Split — by heading level, or recursively, turning a whole note's heading hierarchy (or one section of it) into a folder tree. The picker says up front whether you are creating a note or merging into an existing one. Split by headings · Split into folder · Split headings recursively · Create or merge when splitting
- Swap — two files, two folders, or two selections trade places in one reversible operation. Swap file · Swap folder · Swap selections
- Folder operations — flatten a folder into its parent, move one somewhere else, create a folder and its notes from a template, reorder folders and renumber them, or rename one and keep its folder note in step. Flatten folder · Move folder to · Create folder with notes · Reorder folders · Rename folder
- Smart cut & paste — mark a selection or a whole heading, then drop it at an exact cursor position in any note, including the one you took it from. Smart cut and paste
- Titles, links and frontmatter — relative links are rewritten so they keep resolving, invalid title characters are cleaned up (or mapped by a template of your own) instead of refused, a title containing
/can become a real path, and merged or split content can be wrapped in a template. Relative links · Invalid titles · Treat title as path · Templates - Headings — reorder a note's sections, or rename a heading and have its backlinks follow. Reorder headings · Rename heading
- Include / exclude paths — two independent filters: what the plugin may touch, and where its commands are offered at all — the second one narrowable per command category, so a folder can lose its merges and keep everything else. Block commands on excluded paths
- UI — every dialog can be minimized, and every one of them can be pointed at a different target without cancelling the operation; operations report what they are doing; and the settings tab is a short list of pages rather than one long scroll. Minimizing dialogs · Operation notices · Change target · Finding a setting
Installation
The plugin is available in the official Community Plugins repository.
Beta versions
To install the latest beta release of this plugin (regardless if it is available in the official Community Plugins repository or not), follow these steps:
- Ensure you have the BRAT plugin installed and enabled.
- Click Install via BRAT.
- An Obsidian pop-up window should appear. In the window, click the
Add pluginbutton once and wait a few seconds for the plugin to install.
Debugging
By default, debug messages for this plugin are hidden.
To show them, run the following command:
window.DEBUG.enable('advanced-note-composer');
For more details, refer to the documentation.
Changelog
All notable changes to this project will be documented in the CHANGELOG.
Contributing
Contributions are welcome — see CONTRIBUTING to get set up.
Support
My other Obsidian resources
See my other Obsidian resources.