A mindmap that is really a map.
真正的思维投影。
脑图不是普通思维导图,而是一张可以像地图一样缩放、导航和承载资料的思维画布。
将插件文件放入 Obsidian vault 的 .obsidian/plugins/mindcanvas/ 目录下。
创建语义缩放脑图打开脑图文件,或在文件中打开 .naotu 后执行 打开当前 .naotu从当前 Markdown 标题创建脑图从当前文件创建本地知识图谱创建示例脑图(100 / 1000 / 3000 节点)(用于性能测试)简单的单句脑图节点,用于构建思维结构。深度 ≥2 的文本节点渲染为仅下划线样式,减少视觉干扰。
绑定到 Obsidian 笔记的节点,放大时可预览笔记内容。
绑定到 Obsidian vault 内的图片文件(png、jpg、jpeg、gif、webp、svg、avif、bmp),放大时显示图片预览。
绑定到 Excalidraw 文件(.excalidraw 或 .excalidraw.md),放大时显示 Excalidraw 绘图预览。
| 操作 | 快捷键 |
|---|---|
| 编辑节点标题 | 双击标题 |
| 新增子节点 | Tab |
| 新增兄弟节点 | Enter |
| 展开/收起节点 | Space |
| 编辑当前节点 | F2 |
| 节点间移动 | 方向键 |
| 回到根节点 | Home |
| 删除节点 | Delete / Backspace |
| 撤销 | Cmd/Ctrl + Z |
| 重做 | Cmd/Ctrl + Shift + Z |
| 搜索 | Cmd/Ctrl + F |
| 回到根节点并适配视口 | Cmd/Ctrl + 0 |
| 放大 | Cmd/Ctrl + + |
| 缩小 | Cmd/Ctrl + - |
| 清除选择 | Escape |
{{title}} 变量脑图保存为 .naotu 文件,格式如下:
{
"version": 1,
"title": "Mindmap Title",
"layoutMode": "tree-mirror",
"viewport": { "x": 0, "y": 0, "zoom": 1 },
"nodes": [
{
"id": "node-id",
"kind": "text",
"title": "Node Title",
"x": 0,
"y": 0,
"width": 180,
"height": 56,
"customWidth": 200,
"customHeight": 150,
"treeControl": "auto"
}
],
"edges": [
{
"id": "edge-id",
"source": "parent-id",
"target": "child-id",
"relation": "mindmap",
"type": "curve"
}
]
}
version - 文档版本号layoutMode - 布局模式:tree-mirror | tree-right | freeviewport - 视口状态nodes - 节点数组kind - 节点类型:text | notebookcustomWidth / customHeight - 自定义尺寸(笔记本节点手动调整后)aspectRatio - 宽高比(用于嵌入文件节点)treeControl - 展开状态:auto | manual-expanded | manual-collapsednotebook - 笔记本绑定信息(仅 notebook 类型)targetType - 目标类型:file | heading | blocktargetKind - 目标文件类型:markdown | image | excalidrawlink - Obsidian 内部链接(如 [[note]] 或 ![[image.png]])tags - 标签数组(预留)importance - 重要度数值(预留)style - 自定义样式:{ fill?, stroke? }edges - 边数组relation - 关系类型:mindmap(树结构)| reference(预留引用关系)type - 边类型:line | curvelabel - 边标签(预留)style - 自定义样式:{ stroke?, dashed? }本插件不发送任何分析数据、遥测数据或用户内容到远程服务器。本插件不会发起任何网络请求。脑图数据以 .naotu 文件形式存储在用户 vault 内。
详见 DEVELOPMENT.md。
MindCanvas 使用浏览器 Canvas 2D 渲染,不依赖 Node.js 或 Electron API。
插件可以在移动端 Obsidian 安装,但当前公开版本主要针对桌面端体验优化。移动端触控、缩放、拖拽和大图性能将在后续版本继续改进。
MIT
A mindmap that is really a map.
真正的思维投影。
MindCanvas is a zoomable mindmap for Obsidian that helps you organize ideas, notes, images, links, and knowledge on a visual canvas like a real map.
Place plugin files in your Obsidian vault's .obsidian/plugins/mindcanvas/ directory.
Create semantic zoom mindmapOpen mindmap file, or open a .naotu file and run Open current .naotuCreate mindmap from current markdown headingsCreate local knowledge map from current fileCreate sample mindmap (100 / 1000 / 3000 nodes) (for performance testing)Simple single-sentence mindmap nodes for building thought structures. Text nodes at depth ≥2 render as underline-only style to reduce visual clutter.
Nodes bound to Obsidian notes, with content preview when zoomed in.
Nodes bound to image files in Obsidian vault (png, jpg, jpeg, gif, webp, svg, avif, bmp), showing image preview when zoomed in.
Nodes bound to Excalidraw files (.excalidraw or .excalidraw.md), showing Excalidraw drawing preview when zoomed in.
| Action | Shortcut |
|---|---|
| Edit node title | Double-click title |
| Add child node | Tab |
| Add sibling node | Enter |
| Expand/collapse node | Space |
| Edit current node | F2 |
| Navigate between nodes | Arrow keys |
| Go to root node | Home |
| Delete node | Delete / Backspace |
| Undo | Cmd/Ctrl + Z |
| Redo | Cmd/Ctrl + Shift + Z |
| Search | Cmd/Ctrl + F |
| Fit root in viewport | Cmd/Ctrl + 0 |
| Zoom in | Cmd/Ctrl + + |
| Zoom out | Cmd/Ctrl + - |
| Clear selection | Escape |
{{title}} variableMindmaps are saved as .naotu files:
{
"version": 1,
"title": "Mindmap Title",
"layoutMode": "tree-mirror",
"viewport": { "x": 0, "y": 0, "zoom": 1 },
"nodes": [
{
"id": "node-id",
"kind": "text",
"title": "Node Title",
"x": 0,
"y": 0,
"width": 180,
"height": 56,
"customWidth": 200,
"customHeight": 150,
"treeControl": "auto"
}
],
"edges": [
{
"id": "edge-id",
"source": "parent-id",
"target": "child-id",
"relation": "mindmap",
"type": "curve"
}
]
}
version - Document version numberlayoutMode - Layout mode: tree-mirror | tree-right | freeviewport - Viewport statenodes - Node arraykind - Node type: text | notebookcustomWidth / customHeight - Custom size (after manual resize of notebook node)aspectRatio - Aspect ratio (for embedded file nodes)treeControl - Expand state: auto | manual-expanded | manual-collapsednotebook - Notebook binding info (notebook type only)targetType - Target type: file | heading | blocktargetKind - Target file type: markdown | image | excalidrawlink - Obsidian internal link (e.g. [[note]] or ![[image.png]])tags - Tags array (reserved)importance - Importance value (reserved)style - Custom style: { fill?, stroke? }edges - Edge arrayrelation - Relation type: mindmap (tree structure) | reference (reserved reference relation)type - Edge type: line | curvelabel - Edge label (reserved)style - Custom style: { stroke?, dashed? }This plugin does not send analytics, telemetry, or user content to remote servers. This plugin does not make any network requests. Mindmap data is stored as .naotu files inside the user's vault.
See DEVELOPMENT.md.
MindCanvas uses browser Canvas 2D and does not rely on Node.js or Electron APIs.
The plugin can be installed on mobile Obsidian, but the first public version is primarily optimized for desktop usage. Mobile interaction and performance may be improved in future releases.
MIT