Advanced Note Composer

approved

by Michael Naumov

Enhances Note composer core plugin.

23 stars10,477 downloadsUpdated 13d agoMIT

Advanced Note Composer

Buy Me a Coffee GitHub release GitHub downloads Coverage: 100%

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.

Split a note into one file per heading, nested

More screenshots
Extract a heading into its own note, linked in place Reorder a note by moving whole sections Rename a heading and every link to it Merge this note into another One long note, five sections Reorder a note by moving whole sections Rename a heading and every link to it Split it into one file per heading, nested Or split just one heading, and all it contains

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:

  1. Running the Advanced Note Composer: Open demo vault command.
  2. Downloading advanced-note-composer-demo-vault.zip from the Releases. It unzips into a single advanced-note-composer-demo-vault-<version> folder.
  3. 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 length leaves 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:

  1. Ensure you have the BRAT plugin installed and enabled.
  2. Click Install via BRAT.
  3. An Obsidian pop-up window should appear. In the window, click the Add plugin button 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

Buy Me A Coffee

My other Obsidian resources

See my other Obsidian resources.

License

© Michael Naumov

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.