跳转到内容
简体中文

导入 Obsidian 仓库

Scriptorium 可以把整个 Obsidian 仓库导入为一个新项目。文件夹 树会被镜像复制,[[wikilinks]] 会变成真正的页面链接并带有可用的反向链接, #tags 会变成可供筛选的标签,标注框会渲染为标注框,而 YAML frontmatter 会变成带类型的属性。

最后你会得到一份报告,列出所有未能搬过来的内容,因此 不会有任何东西悄无声息地丢失。

  1. 在欢迎界面点击导入。
  2. 把仓库文件夹拖到投放区。这里没有单独的仓库导入器 需要你去找:同一个投放区既收文档,也收压缩包和仓库,并会 自行判断收到的是什么。仓库的 .zip 同样可以;如果你更想点击 而不是拖动,请使用选择 Obsidian 仓库文件夹。
  3. 设定项目名称和语言,检查看板,然后按导入。

如果你什么都不改,每条笔记都会变成笔记,你的文件夹结构也会 原样保留。这是安全的默认行为,而且它永远不会出错。

你得到的不是一串提问,而是一幅即将创建的项目的 图景。

┌── Wiki ────────────┐ ┌── Manuscript ──────┐ ┌── Entities ────────┐
│ ▸ Assets 4 │ │ ▾ Manuscript ACT │ │ Character 142 │
│ ▸ Events 61 │ │ ▾ Act One CHAP │ │ Location 38 │
│ ▸ people 142 │ │ Ch. Two SCENE│ │ Event 61 │
│ Index.md │ │ Ch. Three SCENE│ │ │
└────────────────────┘ └────────────────────┘ └────────────────────┘
1,842 notes · 142 Character · 38 Location · 61 Event · 47 folders

Wiki 和书稿是文件可以存放的两个去处。一切都从 Wiki 开始。把某个文件夹——或某条笔记——拖进书稿,它就成为正文; 再拖回来,它又变回笔记。每一行还带有一个 … 菜单,提供同样的 操作,通常比拖动更快。

设定不是第三个去处。它只是覆盖在 Wiki 树之上的一层标签:被分组的 笔记仍然创建在它原来所在的文件夹里,而悬停在某个分组上会在笔记 实际所在的位置将它们高亮。

底部那一条是整个导入的数字摘要,并会随着你移动内容 而更新。在你按下「导入」之前,不会写入任何东西。

拖进书稿的文件夹会变成一幕。它的子文件夹会变成 章,再下一层变成场景——因此你在仓库里已经搭好的结构, 就是你在侧边栏中得到的结构。随后每个文件会按其标题 切分成小节。

四层是上限。更深的文件夹不会获得自己的小节; 它的文件会被放进最近的场景,报告会列出每一个发生了这种情况的文件夹。

同级之间的顺序遵循你的文件夹名和文件名。项目创建之后,你可以在 侧边栏中重新排列。

只把真正包含正文的文件夹放进书稿——一个按标题切开的 wiki 页面,读起来就像一本其实并不是书的书。页面链接、标注框和标签 都能挺过这次搬迁,因此某条笔记若最终属于书稿,放到那里 不会有任何损失。

如果你的仓库用 frontmatter 说明一条笔记是什么——

---
type: character
born: 1815-12-10
died: 1852-11-27
---

——那么看板打开时,这些分组已经在上面了。是你声明的;你 不该再一个下拉菜单一个下拉菜单地重新声明一遍。type、class、 category 和 kind 都会被识别,而每一个取值都会得到一个分组,无论带着它的 笔记有多少:你只写过一次的类别,依然是一个类别。

一个分组会成为一种设定类型——共享同一模板的记录,出现在设定表格、 思维导图和时间线上。

每张卡片都带有字段,说明每个 frontmatter 键会变成什么:文本、 数字、是/否、选项、日期、一个标签、开始日期或结束日期,或者 什么都不是。这些是从该分组自己的笔记中读出来的,因此在你的人物中取值为 draft/done 的 status,会变成恰好只有这两个选项的 选择项——而不是 status 这个词在你整个仓库中出现过的所有取值。

在卡片上输入即可重命名。取消分组会让它的笔记变回普通 笔记。把笔记拖到另一张卡片上即可移动它,拖出来则可把它移出分组。

在你的仓库没有给出说明之处,Scriptorium 可能会提供一个由形态相近的笔记 组成的建议分组。在你按下接受之前,建议不作任何主张。

这一步做错并不具破坏性。属性在普通笔记上同样有效,因此 弄错只会损失共享模板和时间线上的定位,而不会损失你的数据。

**任何被你移到书稿的内容都会脱离它的分组。**把它移回来,它就会 重新加入——这期间不会丢失任何东西。

有两点值得知道:

  • 有歧义的日期会被拒绝,而不是靠猜。03/04/2024 在世界大部分地区 是 4 月 3 日,在美国则是 3 月 4 日,而文件里没有任何东西能 决断。Scriptorium 会把该值保留为文本,并在报告中指出文件和键名。 写成 2024-03-04、2024/03/04 或 March 4, 2024,它就会被读作 日期。
  • **时刻不会造成偏移。**写作 1885-03-12T10:30+02:00 的生日会被导入为 3 月 12 日 10:30。时区绝不会让日期发生位移。

当 Scriptorium 识别出成对的键时,会自行填好时间线的两个槽位—— born/died、birth/death、start/end、from/to——因此一个同时带有 born 和 died 的人物,无需你做任何事就会以时段的形式落在时间线上。

时间线只有一个开始和一个结束,所以每个分组最多只能有一个开始日期键和一个 结束日期键——把槽位交给第二个字段,就会把它从第一个字段那里 拿走。不过每个日期键仍然都会变成日期字段,因此一个带有 born、died、crowned 和 modified 的仓库,可以把 born 和 died 放到 时间线上,同时把四个都保留下来。

把文件夹或笔记拖到不导入,它就会被完全跳过,连同 它下面的一切。只有当里面有东西时,这个回收区才会出现。

Obsidian Scriptorium
仓库文件夹 一个新项目,置于以你仓库命名的单个文件夹之下
嵌套文件夹 侧边栏中同样的嵌套结构,以及书稿中的幕 / 章 / 场景
.md 文件 笔记,或按看板所定的设定与书稿小节
图片、PDF、音频 文件附件
Obsidian Scriptorium
标题、列表、表格、代码、任务列表、$math$ 保持一致
> [!note] Title 标注框 标注框,标题作为其首行
==highlight== 高亮
%%comment%% 一条批注,锚定在它原先所处的段落上
#tag 以及 frontmatter 中的 tags: 标签,并保留嵌套关系
Frontmatter 带类型的属性
[^1] 脚注 真正的脚注,定义的文字收在其中
Obsidian Scriptorium
[[Note]] 一个页面链接,并在另一端生成反向链接
[[Note|alias]] 一个显示为「alias」的页面链接
![[image.png]] 该图片,保存在你的项目中
![[Note]] 一张链接卡片——Scriptorium 没有嵌入引用
[[Note#Heading]] 指向该笔记的链接;标题会显示在链接文字中
[[Ghost]] 纯文本,并列入报告
[Ada](People/Ada.md) 一个页面链接,与 wikilink 形式相同
![](Assets/map.png) 该图片,保存在你的项目中

两种链接写法都支持,因此关闭了 Use [[Wikilinks]] 的仓库导入后 链接依然完好。

链接的解析方式与 Obsidian 相同,包括最短唯一基名 和 frontmatter 别名。当有两个文件都可能匹配时,报告 会说明选中了哪一个。

  • 画布(.canvas)会被计数并跳过。
  • Dataview 和 Templater 区块会原样作为代码导入。它们不会被 求值。
  • 块引用(^block-id)和标题锚点会链接到笔记本身, 而不是具体的那个区块。
  • 标注框的折叠状态和行内 HTML 标签会被丢弃;其中的文字 会保留。
  • 一条在文件中任何地方都没有定义的脚注,会保持为你写下的那个 [^1] ——因为没有内容可以放进去。

以上所有情况都会列在导入结束时的报告中,你可以把它复制 下来,稍后逐项处理。

大型仓库需要一些时间——几千条笔记大约是几十秒。 进度条是准确的,取消在任何时刻都有效。取消不会留下 任何残留:你的书架上不会冒出一个建到一半的项目。