Materialization is the act of turning a temporary Canvas text card into a permanent Markdown file stored in your vault. You can materialize a single card in isolation or batch-convert an entire selection of cards at once — the plugin processes all of them in a single operation and replaces every text node on the Canvas with a file node pointing to the newly created file.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/redsheep913/Canvas-Card-Materializer/llms.txt
Use this file to discover all available pages before exploring further.
Selecting and Materializing
- Single Card
- Multiple Cards
- Click on any text card on your Canvas to select it.
- Right-click the selected card to open the context menu.
- Choose “Materialize cards to files”.
canvas.selection, creates the Markdown file, and replaces the text node with a file node — all without moving or resizing anything on the Canvas.What Happens After You Click
Once you confirm the action, the plugin runs through four internal passes:- File creation — For each selected text node, a
.mdfile is created inside a folder named after your Canvas, organized into a color sub-folder. Pre-existing file nodes are registered in the export map but their files are left untouched. - Edge resolution — All Canvas arrows (edges) connecting materialized nodes are inspected and the target paths are resolved into Obsidian wiki-link strings.
- Frontmatter & backlinks — Each file receives
canvas_idandcanvas_colorentries in its YAML frontmatter. If a node had arrows connecting it to other materialized nodes, a Connected Nodes section is appended at the bottom of the file with a list of[[backlinks]]. - Canvas update — The Canvas data is rewritten so that the original text nodes are replaced by file nodes pointing to the newly created files, and a
canvas.requestSave()call persists the change to disk.
N is the number of nodes that were processed (including any pre-existing file nodes that were part of the selection).
How Filenames Are Derived
The filename for each new Markdown file is derived from the first line of the card’s text content. The derivation follows these rules in order:| Rule | Detail |
|---|---|
| Strip Markdown headers | Leading # characters and their trailing space are removed (/^#+\s*/) |
| Strip backticks | All ` characters are removed |
| Strip illegal characters | The characters \ / : " * ? < > | # ^ [ ] are removed |
| Truncate to 50 characters | If the sanitized name exceeds 50 characters, it is trimmed to 50 and trailing whitespace is stripped |
| Deduplicate with timestamp | If two cards produce the same sanitized filename, a suffix _YYYYMMDDHHmm_N is appended to the duplicate (e.g., My-Note_202506011430_1) |
| Fallback | If sanitization produces an empty string, the filename falls back to Untitled |
## Investigating the Root Cause becomes the file Investigating the Root Cause.md.
If a selected node is already a file node (i.e., it references an existing
.md file rather than containing raw text), the plugin does not re-create or overwrite the file. The node is still included in connection processing — its edges are resolved and backlinks are written — but the file itself is left untouched.