Документація
/ Опис файлу сувою
Опис файлу сувою
Файл сувою - це один JSON-об'єкт: дані сувою, його розділи з ідеями та необов'язкові переклади. На цій сторінці описано кожен об'єкт і кожне поле, яке читає імпорт.
Файли для завантаження
- Приклад файлу: вигаданий сувій з усіма основними полями та повними версіями всіма 15 мовами інтерфейсу.
- JSON-схема: ті самі правила в машиночитному вигляді (JSON Schema 2020-12) для редакторів, скриптів і ШІ-агентів. Її обмеження беруться з того самого коду, який виконує імпорт.
Структура
Scroll
├── language, title, authors, description, tags,
│ sourceUrl, originalYear, originalPeriod
├── summaries: Chapter[]
│ └── ideas: Idea[]
│ └── examples: string[]
└── translations: { language: Translation }
└── summaries: TranslatedChapter[]
└── ideas: TranslatedIdea[]
Сувій (Scroll)
Кореневий об'єкт. Інші об'єкти в схемі називаються Chapter (розділ), Idea (ідея), Translation (переклад), TranslatedChapter і TranslatedIdea.
| Поле | Тип | Обов'язкове | Правила | Опис |
|---|
language | string | так | Код мови, наприклад uk або 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 символів | Коли вийшов оригінал, якщо точний рік невідомий, наприклад "V століття до н. е.". |
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 МБ |
| Завантажуваний файл | 8 МБ |
| Ваших сувоїв | 200 |
Часті помилки імпорту
- Файл - некоректний JSON. Попросіть асистента відповісти "лише коректним JSON" або знайдіть пропущену кому чи лапки. Видаліть текст до й після JSON-об'єкта.
- Не вказано мову. Додайте
"language" з кодом, наприклад uk. - Ідея чи приклад задовгі. Повідомлення називає мову, розділ, ідею й приклад; скоротіть цей текст.
- Переклад не збігається. Кожна версія має мати однакову кількість розділів, ідей і прикладів у тому самому порядку.
- Забагато ідей або завеликий файл. Розділіть джерело на два сувої.
- У вас уже максимум сувоїв. Замініть сувій, який більше не потрібен; див. Редагування, заміна й доступ.