Sign in

Markdown — широко підтримуваний формат простого тексту: він легко читається в будь-якому редакторі й однаково відображається в різних інструментах. Wikilayer зберігає текст кожного вузла в Markdown, розбирає його за допомогою goldmark + GFM і додає кілька власних розширень для перехресних посилань і вбудованих виносок.

CommonMark і GFM

Підтримується все з CommonMark і GitHub-Flavored Markdown, за одним винятком: рядок-заголовок у тексті відхиляється, бо заголовок — це місце вузла, і рендерер виводить його із заголовка вузла.

Отже, текст може містити:

  • Напівжирний (**text**), курсив (*text*), закреслений (~~text~~).
  • Вбудований код (`text`) і огороджені блоки коду з необов’язковою позначкою мови.
  • Марковані списки (-, *, +), нумеровані списки (1.), вкладені списки через відступ.
  • Цитати (> ).
  • Таблиці (синтаксис GFM із вертикальними рисками).
  • Списки завдань (- [x], - [ ]).
  • Горизонтальні лінії (---).
  • Посилання ([text](url)) і зображення (![alt](url)).

Розширення Wikilayer

Деякі конструкції під час рендерингу переписуються.

Короткі посилання

Коротке посилання — це посилання за ідентифікатором вузла, яке рендерер переписує на власну адресу вікі. Воно працює й після зміни заголовка чи слага, бо ідентифікатор залишається тим самим.

Короткі посилання на сторінки

[text](page:N) веде на канонічну адресу цільової сторінки: /{owner}/{wiki}/{id}-{slug} або /{owner}/{wiki}/{lang}/{id}-{slug} для сторінки неосновною мовою. Після перейменування слаг може змінитися; ідентифікатор сталий.

Короткі посилання на блоки

[text](block:N) веде на якір #block-N: на власній сторінці блоку це посилання всередині сторінки, а з будь-якої іншої — адреса сторінки блоку з цим якорем.

Виноски

Візуальні виноски записуються як цитати > [!KIND] у синтаксисі виносок GitHub.

Блоки-виноски

Виноски в стилі GitHub відображаються як оформлені блоки. У першому рядку цитати вказано її тип:

> [!NOTE]
> Текст виноски.

Підтримуються типи: NOTE, TIP, IMPORTANT, WARNING, CAUTION. Кожен має власний колір і значок.

Вбудовані карти

Виноска [!MAP] із lat, lng у наступному рядку вбудовує інтерактивну карту. Третій рядок, якщо він є, стає підписом.

> [!MAP]
> 44.7866, 20.4489
> Белград, центр міста.

Вбудовування зображень

Зображення зберігається на сервері та вставляється за його шляхом /s/. Для завантаження є два інструменти MCP:

  • upload_image приймає публічну адресу http або https чи файл, прикріплений до розмови. Сервер сам завантажує зображення, тому його байти не потрібно передавати через контекст агента. Це підходить агенту в браузерному чаті, який не має доступу до командної оболонки.
  • request_upload видає одноразову адресу, на яку агент із командною оболонкою надсилає локальний файл: curl --data-binary @<file> -H 'Content-Type: <mime>' '<upload_url>'.

В обох випадках зображення перетворюється на JPEG із довшою стороною не більш ніж 1600 px і зберігається у вікі. upload_image повертає його шлях; у випадку request_upload шлях повертає POST-запит. Шлях вставляється прямо в текст, точно в отриманому вигляді: ![альтернативний текст](/s/images/…).

Поруч із текстом, із підписом

Зображення в окремому абзаці займає всю ширину тексту. Якщо вказати заголовок, воно розміститься праворуч від тексту, як мініатюра в енциклопедії: заголовок стане підписом, текст обтікатиме зображення ліворуч, а клацання відкриє його повністю.

![Олійна лампа й кам’яна чаша біля відчинених дверей](/s/images/… "Будинок у сутінках")

Альтернативний текст описує зображення читачеві, який не може його побачити; підпис пояснює, що з нього слід зрозуміти. Високе зображення або ілюстрація, яка доповнює текст, а не пояснює його, краще виглядає поруч із текстом. Знімок екрана чи схема, де важливі деталі, залишається на всю ширину.

На екрані завширшки з телефон зображення займає всю ширину; мобільні застосунки показують усі зображення на всю ширину.

Жодних зовнішніх хостингів

Зображення вбудовується лише з власного сховища вікі, за його шляхом /s/. Запис, що посилається на зображення з GitHub, Imgur чи іншого хостингу, на data: URI або повну адресу, відхиляється, а стороннє зображення, що вже є в тексті, показується як посилання. Зовнішні зображення зникають, потрапляють під обмеження частоти запитів і повідомляють своєму хостингу, хто читав сторінку.

Без об’єктного сховища обхідного шляху немає

Якщо ні upload_image, ні request_upload немає в списку інструментів, на цьому сервері не налаштовано об’єктне сховище і вбудовування зображень недоступне; зовнішній хостинг його не замінить.