Перейти к содержимому
nectar Документация

Документация / Описание файла свитка

Описание файла свитка

Файл свитка - это один 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.

ПолеТипОбязательноПравилаОписание
languagestringдаКод языка, например ru или pt-BRЯзык исходной версии. Подходит любой язык. Не меняется при замене свитка.
titlestringнетДо 255 символовНазвание свитка. Без него свиток называется "Untitled".
authorsstring[]нетВсе имена вместе до 255 символовСоздатели источника по порядку: авторы, ведущие или докладчики. Можно указать и одну строку. Без имён показывается "Unknown".
descriptionstringнетДо 600 символовДва-три предложения о том, что узнает читатель.
tagsstring[]нетДо 5, каждый от 1 до 30 символов, без # и запятыхКороткие темы на этом языке. Теги, которые различаются только регистром, диакритикой или шириной символов, считаются одним. Если поля нет, сохранённые теги остаются; пустой список их удаляет.
sourceUrlstringнетАдрес http или https, до 2000 символовСсылка на оригинал.
originalYearintegerнетОт -3000 до текущего года, кроме 0Год выхода оригинала. Отрицательные годы - до н. э.
originalPeriodstringнетДо 80 символовКогда вышел оригинал, если точный год неизвестен, например "V век до н. э.".
summariesChapter[]даХотя бы одна идея; всего до 500 идейГлавы в порядке чтения.
translationsobjectнетКлючи - коды языков, кроме languageПолные версии на других языках. Каждое значение - Translation.

Глава (Chapter)

ПолеТипОбязательноПравилаОписание
titlestringнетДо 200 байтНазвание главы. Без него глава станет "Chapter N". Ограничение считается в байтах, поэтому в кириллице и других нелатинских алфавитах помещается меньше символов.
ideasIdea[]нетИдеи главы в порядке чтения.

Идея (Idea)

ПолеТипОбязательноПравилаОписание
textstringдаДо 400 символовСама идея: законченная мысль, понятная на отдельной карточке. Идея с пустым текстом пропускается.
tierstringнетimportant, good или commonНасколько идея важна. Важные идеи выделяются на карточке. Если значения нет или оно другое, считается common.
examplesstring[]нетДо 20, каждый до 400 символовВидны при свайпе в сторону. Пустые и нетекстовые элементы отбрасываются.

Перевод (Translation)

Каждая запись в translations - полная версия свитка на этом языке. В ней должны быть те же главы, идеи и примеры, что и в оригинале, в том же порядке и количестве.

ПолеТипОбязательноПравилаОписание
titlestringдаНе пустое, до 255 символовНазвание на этом языке.
authorsstring[]даНе пустоеИмена создателей так, как их пишут на этом языке.
descriptionstringнетКак в оригиналеОписание на этом языке.
tagsstring[]нетКак в оригиналеТеги для читателей на этом языке. Они не обязаны повторять теги оригинала.
originalPeriodstringнетКак в оригиналеПериод на этом языке; если его нет, показывается период оригинала.
summariesTranslatedChapter[]даСтолько же, сколько в оригиналеГлавы на этом языке.

У 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" с кодом, например ru.
  • Идея или пример слишком длинные. Сообщение называет язык, главу, идею и пример; сократите этот текст.
  • Перевод не совпадает. В каждой версии должно быть одинаковое число глав, идей и примеров в том же порядке.
  • Слишком много идей или слишком большой файл. Разделите источник на два свитка.
  • У вас уже максимум свитков. Замените свиток, который больше не нужен; см. Изменение, замена и доступ.