☰
Obsidian自动生成人物关系白板:基于Markdown笔记的可视化方案
2026/10/1 8:28:24 网站建设 项目流程

写小说的人,尤其是世界观比较完整、角色数量较多的类型小说作者,应该都有过这种体验:主角、配角、反派、家族长辈、旧友、宿敌加在一起,几十个人物分布在好几卷剧情里,今天想查一下“谁和谁是什么关系”,翻笔记翻了半天没找到,最后只能自己临时整理一张关系表。关系表在 Word 或 Excel 里也能做,但人物一多,维护起来非常麻烦,而且不够直观。Obsidian 作为本地 Markdown 知识库,本来已经很适合写设定集,但纯文本并不会自动帮你画出人物关系。

这篇文章要分享的是一套从 Obsidian Markdown 笔记自动生成人物关系白板(Canvas)的方案:你只需要在每个人物笔记的 frontmatter 里把关系字段写清楚,运行一次模板命令,Obsidian 就会自动扫描这些笔记,生成一张包含人物节点和关系连线的白板。整篇文章会覆盖数据结构设计、Obsidian 原生关系图谱、Templater 脚本生成白板、Python 脚本兜底方案,以及常见问题排查。写小说、跑团、剧本杀世界观搭建、动漫项目设定整理都比较适用。

1. 背景与核心概念

1.1 为什么用 Obsidian 管理人物关系

Obsidian 是本地优先的 Markdown 笔记软件,所有笔记都是.md纯文本文件,可以离线编辑、方便备份、也能纳入 Git 版本管理,非常适合长期维护文档型项目。它支持双链语法[[笔记名]],你可以在不同笔记之间建立关联,Obsidian 会自动构建一套链接网络。对于人物设定集来说,这个特性天然契合:一个角色做一条笔记,角色之间通过双链互相引用,人物关系和剧情线索都以链接形式沉淀下来。

不过,纯 Markdown 文本没有“可视化”能力。如果只有一堆.md文件,你还是要在脑中整理人物网络。这个时候就需要借助 Obsidian 的关系图谱和画布能力。关系图谱负责展示“哪些笔记互相链接”,画布则负责把链接关系变成一张可以自由摆放、标注箭头和文字的展示图。问题是,手动在画布中建节点、连线非常耗时,尤其当人物规模达到几十个时,效率很低。

1.2 关系图谱与画布的区别

关系图谱(Graph view)是 Obsidian 内置的全局关系视图。它会把所有双链形成的节点和连线渲染出来,适合快速看全局。但它有一个明显缺点:它只能表示“这两个笔记之间有链接”,无法表达“师徒”“父子”“敌人”这类关系语义。布局也是自动计算的,节点会随笔记数量增加变得混乱,不太适合做成对外展示或自己精细阅读的关系图。

画布(Canvas,官方中文版翻译为“画布”,很多用户也叫它白板)是另一个核心插件机制。你可以把笔记卡片、文本框、图片放到无限画布上,手动拖动节点、添加箭头连线、给箭头上写文字。更重要的是,画布文件本质上是一个 JSON 文件,包含nodes和edges两个数组。这个特性非常关键:既然它是 JSON,那么我们完全可以用脚本来自动生成。本文说的“自动生成人物关系白板”,就是扫描人物 Markdown 笔记,把解析出来的节点和连线写成.canvasJSON。

1.3 本文依赖的核心插件与概念

  • frontmatter:Markdown 文件开头的 YAML 元信息区域,用---包裹,用来存结构化字段。
  • 双链:[[角色名]]这种链接语法,Obsidian 会建立链接索引。
  • Templater:第三方模板插件,允许在模板中嵌入 JavaScript,用来扫描笔记并生成文件。
  • Dataview(可选):第三方查询插件,把笔记当作数据库查询,可以配合生成人物索引表。

Templater 和 Dataview 都是 Obsidian 社区生态中非常常见的插件,可以先安装好备用。哪怕你只用原生功能,只要掌握 frontmatter 和双链,也已经能完成大部分人物关系管理;但要让“自动生成白板”真正一键化,Templater 或 Python 脚本是效率最高的路径。

2. 环境准备与版本说明

2.1 准备 Obsidian 与核心插件

本文以 Obsidian 桌面版 1.x 为例。Obsidian 版本更新较快,但本文涉及的方案尽量使用稳定 API,对版本要求不高。移动端可以查看白板文件,但执行模板脚本、运行 Python 建议在桌面端完成,操作更顺畅。

在 Obsidian 中启用“画布”核心插件:打开设置 → 核心插件 → 找到“画布”(Canvas)并打开。如果你以前用过 Obsidian,画布通常默认开启。启用之后,新建文件时会出现.canvas类型,双击就能打开白板画布。默认情况下,.开头的隐藏文件不会出现在 Obsidian 文件列表中,但.canvas不是隐藏文件,可以正常显示和打开。

2.2 安装第三方插件:Templater 与 Dataview

打开设置 → 第三方插件 → 关闭受限模式(如果 Obsidian 版本中有这个开关),然后在“社区插件”中搜索 Templater 与 Dataview,点击安装后启用。如果遇到搜索不到、安装慢的问题,通常和网络环境有关,可以稍等一段时间重试,也可以从 Obsidian 官方插件目录或可靠渠道手动下载插件包,放进 vault 的.obsidian/plugins目录,重启后启用。需要提醒的是:不要轻信来源不明的插件包,安装前确认它包含manifest.json和main.js,并且尽量从官方或可信渠道获取。

Templater 安装后,建议先做一步配置:打开设置 → Templater → Template folder location,选择你打算存放模板的文件夹,比如_templates。后面我们会把生成白板的模板文件放在这里。Dataview 不是必须安装,但如果你后续想把人物关系做成索引表格,它会非常有用。

2.3 示例目录结构

建议按照下面的目录结构来组织知识库:

你创建的知识库/ ├── 00-收件箱/ ├── 01-素材/ ├── 02-人物/ │ ├── 林一.md │ ├── 林舟.md │ └── 沈月.md ├── 03-白板/ │ └── 人物关系.canvas ├── _templates/ │ └── 生成人物关系白板.md └── .obsidian/ └── plugins/ ├── templater/ └── dataview/

02-人物目录存放所有角色笔记,03-白板目录存放自动生成的白板文件,_templates目录存放 Templater 模板。目录名可以根据自己的习惯调整,但后面脚本中扫描路径要和目录结构保持一致,否则会扫不到笔记。

3. 数据结构设计

3.1 为什么需要统一的数据结构

工具要“自动”读笔记,首要前提是笔记里的信息可以被机器解析。小说人物设定通常写在正文里:“林舟是林一的哥哥,也是风盟左使。”这句话人一眼能看懂,但脚本很难稳定提取出“林舟”和“林一”以及关系类型“兄妹”。更稳妥的做法是把人物基础信息和关系放到 frontmatter 字段里,用稳定的 YAML 结构描述,脚本读取时就非常可靠。

这

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询