mcpField
O
obsidian-canvas-creator

obsidian-canvas-creator

github.com/axtonliu生产力3.7k2.0k 次安装37 周前更新
代码仓库

关于 obsidian-canvas-creator

obsidian-canvas-creator 是将文本转为结构化 Obsidian Canvas 文件的技能,适合以可视方式整理信息。它支持层级思维导图和自由布局,并提供 JSON 校验规范。

主要功能

  1. 01文本转 Canvas
  2. 02思维导图与自由布局
  3. 03规划节点和连线
  4. 04校验 Canvas JSON

适用场景

  1. 01将笔记整理成思维导图
  2. 02可视化文章中的关系

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/axtonliu/axton-obsidian-visual-skills --skill obsidian-canvas-creator

安装后在 Claude Code 中输入/obsidian-canvas-creator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
template-freeform-grouped.canvas
template-mindmap-simple.canvas
references/
canvas-spec.md
layout-algorithms.md

详细介绍

Obsidian Canvas 创建器

将文本内容转换为结构化的 Obsidian Canvas 文件,支持思维导图和自由布局。

何时使用此技能

  • 用户要求根据文本创建画布、思维导图或可视化图表
  • 用户想要以空间方式组织信息
  • 用户提及“Obsidian Canvas”或类似的可视化工具
  • 将结构化内容(文章、笔记、大纲)转换为可视化格式

核心工作流

1. 分析内容

阅读并理解输入内容:

  • 确定主题及层级关系
  • 提取要点、事实和支持性细节
  • 留意已有结构(标题、列表、章节)
2. 确定布局类型

询问用户选择,或根据上下文推断:

思维导图布局:

  • 从中心向外辐射的结构
  • 父子关系
  • 层级清晰
  • 适用于:头脑风暴、主题探索、层级内容

自由布局:

  • 自定义定位
  • 灵活的关系
  • 多种连接类型
  • 适用于:复杂网络、非层级内容、自定义排列
3. 规划结构

思维导图:

  • 确定中心概念(根节点)
  • 绘制主要分支(主题)
  • 组织次级分支(子主题)
  • 放置叶节点(细节)

自由布局:

  • 将相关概念分组
  • 确定连接模式
  • 规划空间区域
  • 考虑视觉流向
4. 生成画布

按照 Canvas 规范创建 JSON:

创建节点:

  • 分配唯一的 8-12 位十六进制 ID
  • 根据内容长度设置合适的尺寸
  • 采用一致的配色方案
  • 确保坐标不重叠

创建边:

  • 连接父子关系
  • 使用合适的箭头样式
  • 为复杂关系添加标签
  • 选择线条样式(层级关系用直线,交叉引用用曲线)

分组(可选):

  • 为相关节点创建可视化容器
  • 使用柔和的背景颜色
  • 添加描述性标签
5. 应用布局算法

思维导图布局计算:

详细算法请参阅 references/layout-algorithms.md。关键原则:

  • 将根节点置于 (0, 0)
  • 径向分布主要节点
  • 根据同级节点数量调整次级节点间距
  • 保持最小间距:水平 320px,垂直 200px

自由布局原则:

  • 从逻辑分组入手
  • 分组之间留出清晰的间隔
  • 用曲线边连接不同分组
  • 平衡整个画布的视觉重量
6. 验证并输出

输出前:

验证清单:

  • 所有节点都有唯一 ID
  • 坐标没有重叠(检查距离是否大于节点尺寸加间距)
  • 所有边都引用有效的节点 ID
  • 分组(如有)都带有标签
  • 颜色格式一致(十六进制或预设编号)
  • JSON 转义正确(中文引号:双引号使用『』,单引号使用「」)

输出格式:

  • 完整、有效的 JSON Canvas 文件
  • 不附加任何解释性文本
  • 可直接导入 Obsidian

节点尺寸指南

根据文本长度调整尺寸:

  • 短文本(<30 个字符):220 × 100 px
  • 中等长度文本(30-60 个字符):260 × 120 px
  • 长文本(60-100 个字符):320 × 140 px
  • 很长的文本(>100 个字符):320 × 180 px

配色方案

预设颜色(推荐):

  • "1" - 红色(警告、重要内容)
  • "2" - 橙色(待办事项)
  • "3" - 黄色(问题、笔记)
  • "4" - 绿色(正向内容、已完成事项)
  • "5" - 青色(信息、细节)
  • "6" - 紫色(概念、抽象内容)

自定义十六进制颜色: 用于保持品牌一致性或应用特定主题。始终使用大写格式:"#4A90E2"

关键规则

  1. 引号处理:

    • 中文双引号 → 『』
    • 中文单引号 → 「」
    • 英文双引号 → \"
  2. ID 生成:

    • 8-12 个字符的随机十六进制字符串
    • 所有节点和边的 ID 必须唯一
  3. Z-index 顺序:

    • 先输出分组(底层)
    • 然后输出子分组
    • 最后输出文本/链接节点(顶层)
  4. 间距要求:

    • 最小水平间距:节点中心之间相距 320px
    • 最小垂直间距:节点中心之间相距 200px
    • 计算时考虑节点尺寸
  5. JSON 结构:

    • 顶层仅包含 nodes 和 edges 数组
    • 不添加额外的包装对象
    • 输出中不包含注释
  6. 不使用 Emoji:

    • 节点文本中不要使用任何 Emoji 符号
    • 使用颜色编码或文本标签来区分视觉元素

示例

简单的思维导图请求

用户:「创建一张关于太阳系行星的思维导图」

流程:

  1. 确定中心主题:「太阳系」
  2. 主要分支:内行星、外行星、矮行星
  3. 次级节点:各个行星及其关键事实
  4. 应用放射状布局
  5. 生成间距合理的 JSON
自由布局内容请求

用户:「将这篇文章转换为画布」+ [文章文本]

流程:

  1. 提取文章结构(引言、正文部分、结论)
  2. 确定关键概念及其关系
  3. 在空间上对相关部分进行分组
  4. 添加带标签的边进行连接
  5. 应用自由布局,并划分清晰的区域

参考文档

  • Canvas 规范:references/canvas-spec.md - 完整的 JSON Canvas 格式规范
  • 布局算法:references/layout-algorithms.md - 两种布局类型的详细定位算法

以下情况请加载这些参考文档:

  • 需要了解边缘情况的规范细节
  • 实现复杂的布局计算
  • 排查验证错误

制作优质 Canvas 的提示

  1. 保持文本简洁:每个节点都应便于快速浏览(最好少于 2 行)
  2. 使用层级结构:按重要性和关系分组
  3. 保持画布平衡:分布节点,避免聚集
  4. 策略性地使用颜色:用颜色表达含义,而非仅作装饰
  5. 建立有意义的连接:仅添加有助于说明关系的边
  6. 在 Obsidian 中测试:确认输出能够正确打开

应避免的常见问题

  • 节点重叠(务必检查间距)
  • 引号转义不一致(会导致 JSON 解析失败)
  • 缺少分组标签(会导致侧边栏导航问题)
  • 节点中的文本过多(长内容请使用文件节点)
  • ID 重复(每个 ID 都必须唯一)
  • 节点未连接(除非有意将其作为孤立节点)

评论

支持 Markdown