文档
/ 卷轴文件说明
卷轴文件说明
卷轴文件是一个 JSON 对象:包含卷轴的详情、带观点的章节,以及可选的翻译。本页说明导入时读取的每个对象和字段。
下载
- 示例文件:一个虚构的卷轴,用到了所有常用字段,并包含界面全部 15 种语言的完整版本。
- JSON Schema:用机器可读的形式(JSON Schema 2020-12)写成的同一套规则,供编辑器、脚本和 AI 智能体使用。其中的限制与导入时运行的代码来自同一处。
结构
Scroll
├── language, title, authors, description, tags,
│ sourceUrl, originalYear, originalPeriod
├── summaries: Chapter[]
│ └── ideas: Idea[]
│ └── examples: string[]
└── translations: { language: Translation }
└── summaries: TranslatedChapter[]
└── ideas: TranslatedIdea[]
卷轴(Scroll)
根对象。在 schema 中,其他对象叫作 Chapter(章节)、Idea(观点)、Translation(翻译)、TranslatedChapter 和 TranslatedIdea。
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|
language | string | 是 | 语言代码,例如 zh-CN 或 pt-BR | 原始版本的语言。任何语言都可以。替换卷轴时不会改变。 |
title | string | 否 | 最多 255 字符 | 卷轴标题。没有时为 "Untitled"。 |
authors | string[] | 否 | 所有名字合计最多 255 字符 | 来源的创作者,按顺序:作者、主持人或讲者。也可以只写一个字符串。没有名字时显示 "Unknown"。 |
description | string | 否 | 最多 600 字符 | 两三句话说明能学到什么。 |
tags | string[] | 否 | 最多 5 个,每个 1 到 30 字符,不能含 # 或逗号 | 该语言的简短主题。只有大小写、重音或全半角不同的标签视为同一个。省略该字段会保留已有标签;空列表会清空标签。 |
sourceUrl | string | 否 | http 或 https 地址,最多 2000 字符 | 指向原作的链接。 |
originalYear | integer | 否 | 从 -3000 到今年,不能为 0 | 原作问世的年份。负数表示公元前。 |
originalPeriod | string | 否 | 最多 80 字符 | 没有确切年份的作品的问世时期,例如"公元前 5 世纪"。 |
summaries | Chapter[] | 是 | 至少一个观点;合计最多 500 个观点 | 按阅读顺序排列的章节。 |
translations | object | 否 | 键为 language 以外的语言代码 | 其他语言的完整版本。每个值都是一个 Translation。 |
章节(Chapter)
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|
title | string | 否 | 最多 200 字节 | 章节标题。没有时变成 "Chapter N"。该限制按字节计算,所以中文能写的字数会少一些。 |
ideas | Idea[] | 否 | | 该章的观点,按阅读顺序。 |
观点(Idea)
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|
text | string | 是 | 最多 400 字符 | 观点本身:一张卡片上就能看懂的完整想法。文本为空的观点会被跳过。 |
tier | string | 否 | important、good 或 common | 观点的重要程度。重要观点在卡片上有专门的样式。缺少或为其他值时按 common 处理。 |
examples | string[] | 否 | 最多 20 个,每个最多 400 字符 | 左右滑动时显示。空项和非文本项会被丢弃。 |
翻译(Translation)
translations 中的每一项都是该语言的完整卷轴。章节、观点和示例必须与原始版本顺序相同、数量相同。
| 字段 | 类型 | 必填 | 规则 | 说明 |
|---|
title | string | 是 | 不能为空,最多 255 字符 | 该语言的标题。 |
authors | string[] | 是 | 不能为空 | 用该语言书写的创作者名字。 |
description | string | 否 | 与原始版本相同 | 该语言的简介。 |
tags | string[] | 否 | 与原始版本相同 | 面向该语言读者的标签,不必与原始版本一致。 |
originalPeriod | string | 否 | 与原始版本相同 | 该语言的时期;没有时显示原始版本的时期。 |
summaries | TranslatedChapter[] | 是 | 数量与原始版本相同 | 该语言的章节。 |
TranslatedChapter 包含不为空的 title,以及与原章节观点数量相同的 ideas。TranslatedIdea 包含不为空的 text,以及与原观点数量相同、且没有空项的 examples。翻译后的观点不写 tier:它取自原始版本,填写不同的值会被拒绝。
导入如何读取值
- 文本会去掉首尾空格,长度按你看到的字计算。
- 为空的可选字段视为没有填写。
- 本页没有说明的字段会被忽略。
- 读者看到与自己语言相符的版本;没有时看到原始版本。
示例
{
"language": "en",
"title": "Small steps",
"authors": ["Ada Example"],
"description": "How small, repeated actions shape what you notice and do.",
"tags": ["habits", "attention"],
"sourceUrl": "https://example.org/small-steps",
"originalYear": 1841,
"summaries": [
{
"title": "Starting small",
"ideas": [
{
"text": "Make the first step so small that you can take it on a bad day.",
"tier": "important",
"examples": ["Read one page every evening."]
},
{
"text": "You notice more of what you have decided to look for.",
"tier": "common",
"examples": []
}
]
}
],
"translations": {
"de": {
"title": "Kleine Schritte",
"authors": ["Ada Beispiel"],
"description": "Wie kleine, wiederholte Handlungen prägen, was wir bemerken und tun.",
"tags": ["gewohnheiten", "aufmerksamkeit"],
"summaries": [
{
"title": "Klein anfangen",
"ideas": [
{
"text": "Mach den ersten Schritt so klein, dass er dir auch an einem schlechten Tag gelingt.",
"examples": ["Lies jeden Abend eine Seite."]
},
{
"text": "Du bemerkst mehr von dem, wonach du zu suchen beschlossen hast.",
"examples": []
}
]
}
]
}
}
}
限制
| 项目 | 上限 |
|---|
| 观点或示例 | 400 字符 |
| 每个卷轴的观点 | 500 |
| 每个观点的示例 | 20 |
| 标题、作者 | 255 字符 |
| 章节标题 | 200 字节 |
| 简介 | 600 字符 |
| 标签 | 每种语言 5 个,每个 30 字符 |
| 一种语言的内容 | 1 MB |
| 上传的文件 | 8 MB |
| 可拥有的卷轴 | 200 |
常见导入错误
- 文件不是有效的 JSON。 请助手"只回复有效的 JSON",或检查是否少了逗号或引号。删掉 JSON 对象前后的所有文字。
- 缺少语言。 用
zh-CN 这样的代码添加 "language"。 - 观点或示例太长。 提示会指出语言、章节、观点和示例,把那段文字缩短。
- 翻译对不上。 每个版本的章节、观点和示例数量与顺序都必须相同。
- 观点太多或文件太大。 把来源拆成两个卷轴。
- 你拥有的卷轴已达上限。 替换一个不再需要的卷轴,参见编辑、替换与分享。