文件
/ 卷軸檔案說明
卷軸檔案說明
卷軸檔案是一個 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-TW 或 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-TW 這樣的代碼加入 "language"。 - 想法或範例太長。 訊息會指出語言、章節、想法和範例,把那段文字縮短。
- 翻譯對不上。 每個版本的章節、想法和範例數量與順序都必須相同。
- 想法太多或檔案太大。 把來源拆成兩個卷軸。
- 你擁有的卷軸已達上限。 替換一個不再需要的卷軸,請參閱編輯、替換與分享。