mcpField
X
xmind

xmind

github.com/apeyroux文档处理95119 次安装15 周前更新
代码仓库

关于 xmind

XMind Mind Map Skill 可通过中文或英文自然语言创建、读取和分析 .xmind 文件。它支持现代与旧版格式,并提供创建脑图、搜索内容和检查任务等操作。

主要功能

  1. 01创建思维导图和项目计划
  2. 02读取并搜索脑图内容
  3. 03支持现代和旧版格式
  4. 04处理流程图和组织架构图
  5. 05更新现代文件时保留样式

适用场景

  1. 01将文档整理成思维导图
  2. 02制作时间线或任务清单
  3. 03查找节点、备注、标签或待办
  4. 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"readpath
"找一下xmind文件" / "有哪些脑图" / "列出所有思维导图""find xmind files" / "list mind maps" / "what xmind files are there"listdirectory
"搜索脑图" / "找包含xxx的脑图" / "哪个xmind里有xxx""search mind maps for..." / "find the xmind with..."search_filespattern, directory
"对比这几个脑图" / "同时打开这些文件" / "比较这两个思维导图""compare these maps" / "read multiple files"read_multiplepaths
"找到xxx节点" / "定位到xxx" / "xxx在哪个位置""find the node about..." / "locate..." / "where is..."extract_nodepath, searchQuery
"查找所有待办" / "哪些任务没完成" / "还有什么没做的" / "看看做完了哪些""find all todos" / "what tasks are incomplete" / "show done tasks"search_nodestaskStatus: "todo" or "done"
"搜索笔记内容" / "在备注里找xxx" / "哪个节点的笔记提到了xxx""search in notes for..." / "find notes mentioning..."search_nodessearchIn: ["notes"], query
"搜索标签" / "找带xxx标签的""find nodes with label..." / "search labels"search_nodessearchIn: ["labels"], query
"搜索xxx" / "在脑图里找xxx" / "全文搜索""search for..." / "find in map..."search_nodesquery(搜索所有字段)
路由提示
  • 用户提供 .xmind 文件路径并要求“看看”/“检查”/“看看”/“打开”时,使用 read 操作
  • 用户说“这个脑图里有什么关于xxx的”时,使用 search_nodes
  • 用户询问任务进度(“进度怎么样”/“完成了多少”)时,使用带有 searchIn: ["tasks"] 的 search_nodes
  • 用户提到多个文件时,使用 read_multiple
  • 用户对位置的描述比较模糊(“找到那个关于后端的节点”)时,使用 extract_node 进行模糊匹配
  • 始终使用用户所用的语言回复——如果用户说中文,就用中文回复

如何创建 XMind 文件

  1. 创建包含 path 和 sheets 字段的 JSON 对象(参见下方格式)
  2. 将其写入临时文件,然后运行:
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.jsonXMind Zen、XMind 2020+是
legacy(XML)content.xml、meta.xml、META-INF/manifest.xmlXMind 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" }
      ]
    }
  ]
}

主题属性

每个主题对象支持:

字段类型说明
titlestring(必填)主题标题
childrentopics 数组子主题
notesstring 或 {plain?, html?}备注。HTML 支持:<strong>、<u>、<ul>、<ol>、<li>、<br>。不支持 <code>。
hrefstring外部 URL 链接
attachmentstring要附加的文件的绝对路径(嵌入 .xmind 文件中)。不能与 href 同时使用。
linkToTopicstring要链接到的另一个主题的标题(内部 xmind:#id 链接,可跨工作表使用)
labelsstring[]标签
markersstring[]标记 ID:task-done、task-start、priority-1 至 priority-9
calloutsstring[]注释气泡文本
boundaries{range, title?}[]子主题的视觉分组。范围:"(start,end)"
summaryTopics{range, title}[]跨越子主题范围的总结主题
structureClassstring布局(见下文)
shapestring主题形状(见下文)
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 = 最高)
startDateISO 8601 字符串开始日期,例如 "2026-02-01T00:00:00Z"
dueDateISO 8601 字符串截止日期
durationDays数字持续天数(相对规划时优先使用)
dependencies数组{targetTitle, type, lag?} — 类型:FS、FF、SS、SF

计划任务的两种方式:

  1. 相对方式(优先): 使用 durationDays + dependencies。XMind 会自动计算日期。
  2. 绝对方式: 使用 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
可用操作
操作输入字段描述
readpath解析 .xmind 文件,并以 JSON 格式返回完整的思维导图结构
listdirectory递归扫描目录中的 .xmind 文件
search_filespattern、directory按名称或内容搜索 .xmind 文件
read_multiplepaths(数组)一次读取多个 .xmind 文件
extract_nodepath、searchQuery模糊路径搜索 — 返回按置信度排序的前 5 个匹配项
extract_node_by_idpath、nodeId提取具有指定 XMind ID 的节点
search_nodespath、query、searchIn?、caseSensitive?、taskStatus?高级多字段搜索
format_infopath检测 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 字段

评论

支持 Markdown