Advanced Note Composer
approvedby Michael Naumov
Enhances Note composer core plugin.
Advanced 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.zipfrom the Releases. It unzips into a singleadvanced-note-composer-demo-vault-<version>folder. - 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, and what it creates can be auto-numbered, continuing the sequence the destination folder already has. Split by headings · Split into folder · Split headings recursively · Create or merge when splitting · Auto-number splits
- 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
- Select — commands that only set the selection and stop: a heading and its section, that section without its heading line, everything before or after the cursor, the block between two horizontal rules — or an arbitrary range, by anchoring one end and marking the other. Every other feature here starts from a selection, and making one by hand is exactly what fails on a phone. Select ranges · Selection anchor
- 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 — each narrowable per command category, so a folder can lose its merges and keep everything else, or stay out of the reorder dialog while every other command still uses it. 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; each category of commands can be moved off the crowded editor context menu and onto the empty margin
Readable line lengthleaves beside the text; and the settings tab is a short list of pages rather than one long scroll. Minimizing dialogs · Operation notices · Change target · Finding a setting · Command menu placement
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 in the DevTools Console:
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.
License
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.










