关于 xmind
XMind Mind Map Skill 可通过中文或英文自然语言创建、读取和分析 .xmind 文件。它支持现代与旧版格式,并提供创建脑图、搜索内容和检查任务等操作。
主要功能
- 01创建思维导图和项目计划
- 02读取并搜索脑图内容
- 03支持现代和旧版格式
- 04处理流程图和组织架构图
- 05更新现代文件时保留样式
适用场景
- 01将文档整理成思维导图
- 02制作时间线或任务清单
- 03查找节点、备注、标签或待办
- 04更新现有脑图并保留样式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ apeyroux/ mcp-xmind --skill xmind安装后在 Claude Code 中输入/xmind确认已加载。
附带文件scripts/create_xmind.mjsscripts/read_xmind.mjs
详细介绍
XMind 思维导图技能
创建、读取和分析 .xmind 思维导图文件。支持使用自然的中文和英文交互。
自然语言路由
此技能支持中文和英文。收到用户请求时,识别意图,并将请求路由到正确的脚本和操作。使用与用户相同的语言回复。
创建意图 → create_xmind.mjs
| 用户可能会说(中文) | 用户可能会说(英文) | 路由到 |
|---|---|---|
| "帮我做个思维导图" / "创建脑图" / "画个脑图" / "生成xmind" / "做个脑图" | "create a mind map" / "make an xmind" / "build a brainstorm" | create_xmind.mjs — 标准思维导图 |
| "做个项目计划" / "甘特图" / "排期" / "时间线" / "项目排期" / "里程碑" | "project plan" / "Gantt chart" / "timeline" / "schedule" / "milestones" | create_xmind.mjs — 使用包含 durationDays + dependencies 的计划任务 |
| "画个流程图" / "逻辑图" / "算法图" / "画个程序流程" | "flowchart" / "logic diagram" / "algorithm diagram" | create_xmind.mjs — 使用 freePositioning: true + detachedTopics + 直线关系 |
| "组织架构图" / "组织结构" / "人员架构" | "org chart" / "organization structure" | create_xmind.mjs — 使用 org.xmind.ui.org-chart.down 布局 |
| "鱼骨图" / "因果分析" / "根因分析" | "fishbone" / "cause and effect" / "root cause" | create_xmind.mjs — 使用 org.xmind.ui.fishbone.leftHeaded 布局 |
| "待办清单" / "任务清单" / "todo" | "todo list" / "checklist" / "task list" | create_xmind.mjs — 使用 taskStatus: "todo"/"done" |
| "把这个PDF/文档/内容整理成脑图" / "总结成思维导图" | "summarize as mind map" / "turn this into a mind map" | 先阅读源内容,然后运行 create_xmind.mjs |
读取/分析意图 → read_xmind.mjs
| 用户可能会说(中文) | 用户可能会说(英文) | 操作 | 额外参数 |
|---|---|---|---|
| "打开这个xmind" / "看看这个脑图" / "分析一下这个思维导图" / "读取这个文件" | "open this xmind" / "read this mind map" / "analyze this file" | read | path |
| "找一下xmind文件" / "有哪些脑图" / "列出所有思维导图" | "find xmind files" / "list mind maps" / "what xmind files are there" | list | directory |
| "搜索脑图" / "找包含xxx的脑图" / "哪个xmind里有xxx" | "search mind maps for..." / "find the xmind with..." | search_files | pattern, directory |
| "对比这几个脑图" / "同时打开这些文件" / "比较这两个思维导图" | "compare these maps" / "read multiple files" | read_multiple | paths |
| "找到xxx节点" / "定位到xxx" / "xxx在哪个位置" | "find the node about..." / "locate..." / "where is..." | extract_node | path, searchQuery |
| "查找所有待办" / "哪些任务没完成" / "还有什么没做的" / "看看做完了哪些" | "find all todos" / "what tasks are incomplete" / "show done tasks" | search_nodes | taskStatus: "todo" or "done" |
| "搜索笔记内容" / "在备注里找xxx" / "哪个节点的笔记提到了xxx" | "search in notes for..." / "find notes mentioning..." | search_nodes | searchIn: ["notes"], query |
| "搜索标签" / "找带xxx标签的" | "find nodes with label..." / "search labels" | search_nodes | searchIn: ["labels"], query |
| "搜索xxx" / "在脑图里找xxx" / "全文搜索" | "search for..." / "find in map..." | search_nodes | query(搜索所有字段) |
路由提示
- 用户提供
.xmind文件路径并要求“看看”/“检查”/“看看”/“打开”时,使用read操作 - 用户说“这个脑图里有什么关于xxx的”时,使用
search_nodes - 用户询问任务进度(“进度怎么样”/“完成了多少”)时,使用带有
searchIn: ["tasks"]的search_nodes - 用户提到多个文件时,使用
read_multiple - 用户对位置的描述比较模糊(“找到那个关于后端的节点”)时,使用
extract_node进行模糊匹配 - 始终使用用户所用的语言回复——如果用户说中文,就用中文回复
如何创建 XMind 文件
- 创建包含
path和sheets字段的 JSON 对象(参见下方格式) - 将其写入临时文件,然后运行:
node <skill-dir>/scripts/create_xmind.mjs < /tmp/xmind_input.json
其中 <skill-dir> 是此 SKILL.md 文件所在的目录。
更新现有文件(保留主题/样式)
如果 path 指向一个已存在的文件(例如,你要在别人已经设置好样式的思维导图中添加/编辑一个分支),create_xmind.mjs 会自动保留该文件的视觉主题、布局扩展和嵌入资源(如 Thumbnails/thumbnail.png)——按每个工作表的 title 进行匹配。你不需要读取旧主题、备份文件或手动合并任何内容;只需在输入 JSON 中包含未更改的工作表/分支(使用相同的工作表 title),并与新增/编辑的内容放在一起,脚本便会沿用原有样式。
这仅适用于现代 zen 格式。如果你重写工作表时使用的标题与原先不同,系统会将其视为全新的工作表,并应用全新的默认主题——如果希望更新时保留样式,请保持工作表标题不变。
格式兼容性
两个脚本都支持两类 XMind 格式:
| 格式 | ZIP 内的文件 | XMind 版本 | 默认 |
|---|---|---|---|
zen(现代) | content.json、metadata.json、manifest.json | XMind Zen、XMind 2020+ | 是 |
legacy(XML) | content.xml、meta.xml、META-INF/manifest.xml | XMind 3–8(2008–2019) | 否 |
**读取:**自动检测格式——无需配置。首先检查 content.json(zen),然后检查 content.xml(legacy)。所有 8 个操作在两种格式下的工作方式都相同。
**创建:**在输入 JSON 中添加 "format"。支持多种版本别名:
{
"path": "/tmp/old_format.xmind",
"format": "xmind8",
"sheets": [...]
}
| 别名示例 | 解析后的格式 |
|---|---|
"zen"、"json"、"latest"、"modern"、"new" | 现代(JSON) |
"xmind2024"、"2024"、"xmind2020"、"2020" | 现代(JSON) |
"legacy"、"xml"、"old" | 旧版(XML) |
"xmind8"、"xmind7"、"xmind6"、"8"、"7" | 旧版(XML) |
"2013"、"2012"、"2008" | 旧版(XML) |
"pro8"、"pro7" | 旧版(XML) |
**数值的启发式判断:**版本号 ≤ 9 → 旧版(XMind 3–8),版本号 ≥ 10 → zen(XMind 10+),年份 ≤ 2019 → 旧版,年份 ≥ 2020 → zen。
**检查格式:**使用 format_info 操作检查现有文件:
echo '{"action": "format_info", "path": "/path/to/file.xmind"}' | node <skill-dir>/scripts/read_xmind.mjs
当用户说“兼容旧版” / “XMind 8 格式” / “旧版本格式” / “old format” / “XMind 8 compatible” / “兼容其他编辑器”时,使用 "format": "legacy"。否则使用默认的 zen 格式。
JSON 输入格式
{
"path": "/Users/user/Desktop/my_mindmap.xmind",
"sheets": [
{
"title": "Sheet 1",
"rootTopic": {
"title": "Central Topic",
"children": [
{
"title": "Branch 1",
"notes": "Plain text note",
"children": [
{ "title": "Sub-topic A" },
{ "title": "Sub-topic B" }
]
}
]
},
"relationships": [
{ "sourceTitle": "Sub-topic A", "targetTitle": "Sub-topic B", "title": "related" }
]
}
]
}
主题属性
每个主题对象支持:
| 字段 | 类型 | 说明 |
|---|---|---|
title | string(必填) | 主题标题 |
children | topics 数组 | 子主题 |
notes | string 或 {plain?, html?} | 备注。HTML 支持:<strong>、<u>、<ul>、<ol>、<li>、<br>。不支持 <code>。 |
href | string | 外部 URL 链接 |
attachment | string | 要附加的文件的绝对路径(嵌入 .xmind 文件中)。不能与 href 同时使用。 |
linkToTopic | string | 要链接到的另一个主题的标题(内部 xmind:#id 链接,可跨工作表使用) |
labels | string[] | 标签 |
markers | string[] | 标记 ID:task-done、task-start、priority-1 至 priority-9 |
callouts | string[] | 注释气泡文本 |
boundaries | {range, title?}[] | 子主题的视觉分组。范围:"(start,end)" |
summaryTopics | {range, title}[] | 跨越子主题范围的总结主题 |
structureClass | string | 布局(见下文) |
shape | string | 主题形状(见下文) |
position | {x, y} | 绝对位置(仅适用于自由定位工作表中的独立主题) |
主题形状
org.xmind.topicShape.roundedRect— 圆角矩形(默认)org.xmind.topicShape.diamond— 菱形(用于条件/决策)org.xmind.topicShape.ellipserect— 椭圆形(用于开始/结束)org.xmind.topicShape.rect— 矩形org.xmind.topicShape.underline— 仅下划线org.xmind.topicShape.circle— 圆形org.xmind.topicShape.parallelogram— 平行四边形(用于输入/输出)
布局结构
org.xmind.ui.map.clockwise— 平衡图org.xmind.ui.map.unbalanced— 非平衡图org.xmind.ui.logic.right— 逻辑图(向右)org.xmind.ui.org-chart.down— 组织结构图(向下)org.xmind.ui.tree.right— 树状图(向右)org.xmind.ui.fishbone.leftHeaded— 鱼骨图org.xmind.ui.timeline.horizontal— 时间线
任务属性
简单复选框(无需日期):
taskStatus:"todo"或"done"
计划任务(用于 XMind 中的甘特图/时间线视图):
| 字段 | 类型 | 描述 |
|---|---|---|
progress | 数字 0.0-1.0 | 完成进度 |
priority | 数字 1-9 | 优先级(1 = 最高) |
startDate | ISO 8601 字符串 | 开始日期,例如 "2026-02-01T00:00:00Z" |
dueDate | ISO 8601 字符串 | 截止日期 |
durationDays | 数字 | 持续天数(相对规划时优先使用) |
dependencies | 数组 | {targetTitle, type, lag?} — 类型:FS、FF、SS、SF |
计划任务的两种方式:
- 相对方式(优先): 使用
durationDays+dependencies。XMind 会自动计算日期。 - 绝对方式: 使用
startDate+dueDate设置固定日期。
当用户提到“规划”“排期”“时间线”“甘特图”“项目”“阶段”“排期”“甘特图”“项目计划”“时间线”“里程碑”时,除非给出了具体日期,否则使用相对计划任务。
工作表属性
| 字段 | 类型 | 描述 |
|---|---|---|
title | 字符串(必填) | 工作表标题 |
rootTopic | 主题(必填) | 根主题 |
relationships | 数组 | {sourceTitle, targetTitle, title?, shape?} — 按标题连接主题。shape:"org.xmind.relationshipShape.curved"(默认)或 "org.xmind.relationshipShape.straight" |
detachedTopics | 主题数组 | 自由浮动的主题(每个主题都需要 freePositioning: true 和 position) |
freePositioning | 布尔值 | 启用主题自由定位(用于逻辑图/流程图) |
逻辑图/流程图
对于流程图、逻辑图或算法图,使用自由定位、分离主题和直线关系:
{
"path": "/tmp/flowchart.xmind",
"sheets": [{
"title": "Algorithm",
"freePositioning": true,
"rootTopic": {
"title": "START",
"shape": "org.xmind.topicShape.ellipserect",
"structureClass": "org.xmind.ui.map.clockwise"
},
"detachedTopics": [
{"title": "IS X > 0?", "position": {"x": 0, "y": 130}, "shape": "org.xmind.topicShape.diamond"},
{"title": "PRINT YES", "position": {"x": 200, "y": 130}},
{"title": "PRINT NO", "position": {"x": -200, "y": 130}},
{"title": "END", "position": {"x": 0, "y": 260}, "shape": "org.xmind.topicShape.ellipserect"}
],
"relationships": [
{"sourceTitle": "START", "targetTitle": "IS X > 0?", "shape": "org.xmind.relationshipShape.straight"},
{"sourceTitle": "IS X > 0?", "targetTitle": "PRINT YES", "title": "YES", "shape": "org.xmind.relationshipShape.straight"},
{"sourceTitle": "IS X > 0?", "targetTitle": "PRINT NO", "title": "NO", "shape": "org.xmind.relationshipShape.straight"},
{"sourceTitle": "PRINT YES", "targetTitle": "END", "shape": "org.xmind.relationshipShape.straight"},
{"sourceTitle": "PRINT NO", "targetTitle": "END", "shape": "org.xmind.relationshipShape.straight"}
]
}]
}
约定: 开始/结束使用椭圆,条件使用菱形,操作使用矩形(默认),输入/输出使用平行四边形。所有连接线均使用 "org.xmind.relationshipShape.straight"。将主题排列在网格上(y 轴每次增加约 130px,分支的 x 轴偏移约 200px)。
当用户提到“流程图”“算法”“逻辑图”“流程图”“逻辑图”“算法图”“程序流程”时,使用此模式。
处理大型文件
读取 PDF 或其他大型文件失败时(例如“PDF 太大”),请先使用 CLI 工具提取文本,再构建思维导图:
# Preferred: pdftotext (install: apt install poppler-utils)
pdftotext input.pdf /tmp/extracted.txt
# Fallback if pdftotext unavailable:
python3 -c "
import subprocess, pathlib, sys
p = sys.argv[1]
try:
subprocess.run(['pdftotext', p, '/tmp/extracted.txt'], check=True)
except FileNotFoundError:
subprocess.run(['pip', 'install', 'pymupdf'], check=True, capture_output=True)
import importlib; fitz = importlib.import_module('fitz')
doc = fitz.open(p)
pathlib.Path('/tmp/extracted.txt').write_text('\n'.join(page.get_text() for page in doc))
" input.pdf
然后读取 /tmp/extracted.txt 来构建思维导图。
如何读取和分析 XMind 文件
将包含 action 字段的 JSON 对象通过管道传递给读取脚本:
echo '{"action": "read", "path": "/path/to/file.xmind"}' | node <skill-dir>/scripts/read_xmind.mjs
可用操作
| 操作 | 输入字段 | 描述 |
|---|---|---|
read | path | 解析 .xmind 文件,并以 JSON 格式返回完整的思维导图结构 |
list | directory | 递归扫描目录中的 .xmind 文件 |
search_files | pattern、directory | 按名称或内容搜索 .xmind 文件 |
read_multiple | paths(数组) | 一次读取多个 .xmind 文件 |
extract_node | path、searchQuery | 模糊路径搜索 — 返回按置信度排序的前 5 个匹配项 |
extract_node_by_id | path、nodeId | 提取具有指定 XMind ID 的节点 |
search_nodes | path、query、searchIn?、caseSensitive?、taskStatus? | 高级多字段搜索 |
format_info | path | 检测 XMind 格式版本(zen/legacy)并列出内部文件 |
操作详情
read — 解析完整思维导图:
echo '{"action": "read", "path": "/path/to/file.xmind"}' | node <skill-dir>/scripts/read_xmind.mjs
返回一个工作表数组,每个工作表都包含一个根主题,其中包含完整的树形结构,包括备注、标签、标记、任务状态、关系等。
list — 查找目录中的 .xmind 文件:
echo '{"action": "list", "directory": "/Users/user/Documents"}' | node <skill-dir>/scripts/read_xmind.mjs
search_files — 按文件名或内容搜索:
echo '{"action": "search_files", "pattern": "project", "directory": "/Users/user"}' | node <skill-dir>/scripts/read_xmind.mjs
首先返回文件名匹配项,然后返回内容匹配项。
extract_node — 不知道确切路径时进行模糊搜索:
echo '{"action": "extract_node", "path": "/path/to/file.xmind", "searchQuery": "Backend API"}' | node <skill-dir>/scripts/read_xmind.mjs
返回置信度评分最高的 5 个匹配项。探索复杂导图时使用。
extract_node_by_id — 直接按 ID 查找(最快):
echo '{"action": "extract_node_by_id", "path": "/path/to/file.xmind", "nodeId": "abc123def456"}' | node <skill-dir>/scripts/read_xmind.mjs
search_nodes — 使用筛选条件进行高级搜索:
echo '{"action": "search_nodes", "path": "/path/to/file.xmind", "query": "auth", "searchIn": ["title", "notes"], "taskStatus": "todo"}' | node <skill-dir>/scripts/read_xmind.mjs
searchIn 选项:title、notes、labels、callouts、tasks。默认值:所有字段。
各操作的使用场景
- 浏览/理解导图:使用
read获取完整结构 - 查找 .xmind 文件:使用
list或search_files - 定位特定主题:使用
extract_node(模糊搜索)或extract_node_by_id(精确搜索) - 跨导图查找内容:使用
search_nodes并设置适当的searchIn筛选条件 - 筛选任务:使用
search_nodes并设置taskStatus: "todo"或"done" - 比较导图:使用
read_multiple一次加载多个文件
重要规则
- 绝不要在 .xmind 文件上使用
unzip、zipinfo或任何外部 ZIP 工具。 两个脚本都会在内部处理 ZIP——create_xmind.mjs使用内置代码写入 ZIP,read_xmind.mjs使用内置代码读取 ZIP。只需将 JSON 传递给脚本,脚本会处理所有操作。无需自行提取、解压或检查 .xmind 文件。 - 编辑或添加到现有 .xmind 文件时,始终包含每个工作表及其原始
title——即使是未修改的工作表也要包含,这样create_xmind.mjs才能将它们对应起来并保留其主题/样式/缩略图(参见上文“更新现有文件”)。只有在有意将工作表重置为默认样式时,才省略或重命名工作表。 - 输出路径必须以
.xmind结尾 - 始终将文件写入用户指定的位置(例如
/Downloads、/Desktop) - ID 会自动生成
- 关系和依赖项中的主题引用会按标题解析
- HTML 备注:仅支持
<strong>、<u>、<ul>、<ol>、<li>、<br>。XMind 不支持<code>。 - 内部链接(
linkToTopic)可跨工作表使用 - 备注应充实且详尽——不要只重复主题标题。使用备注补充说明、背景、定义、示例、要点或推理。每条备注至少写 2-5 句话。使用包含
<strong>、<ul>/<li>、<br>的 HTML 备注,让内容结构清晰。除非主题是无需解释的叶节点,否则大多数主题都应有备注。 - 读取脚本会将 JSON 输出到 stdout——根据需要使用管道或重定向
- 所有读取操作的输入 JSON 都必须包含
action字段