Для создания своего цифрового сада мне была необходима программа с возможностью публикации в статичный HTML, если не из коробки, то хотя бы сторонними средствами. И желательно, чтобы на выходе это смотрелось относительно прилично как с десктопа, так и с телефона. Сперва я рассматривал разные wiki-движки, а то, что мне нужно, в общем-то является маленькой личной вики, но быстро переключился на близкие к нимPKM, так как они больше соответствуют желаемому. Я предпринял несколько попыток, которые и расписаны ниже.

Чтобы сэкономить время, можно сразу обратиться к Попытка №6

Попытка №1

Первой моей попыткой устроить цифровой сад была связка Obsidian и Obyde. Obsidian используется для создания и редактирования постов, Obyde для конвертации в формат, подходящий для Hugo — движка моего сайта.

Признаюсь, не самое удачное решение, так как моя тема Hugo не имеет многих обычных для вики возможностей, но это то немногое, что я нашёл достаточно простым и удобным в каждодневном использовании без необходимости изменять весь сайт.

И, да, это работает, но Obyde обязательно требует дату создания во front matter. Это с одной стороны позволяет постам в вики не пересекаться ссылками с другим содержимым сайта, а с другой создаёт не самые удобные имена файлов. Так как я не веду историю в этой вики и дата создания постов не имеет значения, решается это наиболее дубовым способом — date: 0001-01-01. Если дата будет меняться, то при большом количестве постов придётся то и дело устраивать зачистку от руки, так как старые версии постов не удаляются. Это можно было бы решить скриптом, который удаляет всё содержимое папки, куда прилетают готовые .md, но там лежат символические ссылки и я не хочу с этим возиться.

К сожалению, найденный мною способ указывать все связи на страницах (это то, что прямо под счётчиком слов) никак не сходится с такой схемой именования файлов. Но важно, что он работает. Так я отказался от Obyde, а вслед за ним и от Obsidian.

Попытка №1.1

Вторая попытка с Obsidian, которую я предпринял уже имея на руках вполне рабочий Logseq, оказалась даже относительно удачной, если бы опять же не публикация. Но она работает!

Да, работает и Logseq, но Obsidian мне всё ещё кажется более удобным средством сам по себе, кроме одной важнейшей детали — публикации.

Я нашел ещё одно стороннее средство для создания статичного сайта из хранилища Obsidian, которое после небольшой настройки дало мне вполне работающую страницу, которую можно размещать где угодно.
ObsidianHtml

Я было перетащил все свои статьи в Obsidian, где работать с текстом без вездесущих блоков и “пуль” Logseq куда как приятнее. Поставил ObsidianHtml через ‘pip’, создал конфиг, некоторое время правил его (тут не без заковык, но терпимо), а затем получил готовую статичную страницу.

А потом всё увязло в моей лени. Стандартный вид сайта, получившегося на экспорте, мне кажется мало приятным и годится скорее для документации. Я же хочу, чтобы сад выглядел хотя бы отдалённо похожим на мой блог — как минимум в той же цветовой схеме. Также очень не понравился шрифт. Я считаю, что страница должна быть приятной, так как вряд ли здесь складируется настолько важная информация, что можно потерпеть, продираясь через всё это.
Возможно, позднее я вернусь и сделаю как следует, после чего переведу сад на связку Obsidian + ObsidianHtml.

Попытка №2

Отказавшись от Obsidian + Obyde, я решил сделать некую имитацию вики на самом Hugo, без сторонних средств. Эта вики заполняется вручную, через обычный текстовый редактор. Просто кучка Markdown-документов, отдаваемых на обработку Hugo. Нет визуального графа связей, чтобы было наглядно, удобно и красиво — может быть позднее я найду, откуда это скопипастить.

Попытка №3

Прежде имел опыт с TiddlyWiki и она в общем-то имеет в себе всё желаемое, но проблема в том, что она имеет это в себе буквально — TiddlyWiki представляет собой один жирный монолитный html со всем содержимым, который очень странно обновляется и оттого доверия у меня совсем не вызывает. Результат, конечно, есть и он доступен, но доверять ей что-то большее я пока побаиваюсь.

Попытка №4

Теперь я решил попробовать Quartz. Quartz — это готовый шаблон сайта на Hugo, который умеет обрабатывать заметки Obsidian и выдавать их в надлежащем виде. И здесь, конечно, свои недостатки:

  • Quartz — это не тема Hugo, а шаблон сайта, что означает, что нормально обновлять её невозможно. Любые свои правки придётся куда-то сохранять, накатывать апдейт, возвращать правки.
  • Quartz гвоздями прибит к Github и Github-actions.
  • Невозможно править тему, запустив превью сайта через hugo serve на своём компьютере. hugo serve не работает, рассыпаясь в ошибках.

Хорош же Quartz тем, что он нормально выглядит и даёт на выходе нормальный сайт.
Если бы он был просто темой, вид сайта можно было бы изменять как угодно и спокойно обновлять тему, которая лежит в своей директории и никак изменений, накладываемых поверх неё, не касается. Также для этого не потребовался бы Github — не более, чем для скачивания обновлений темы оттуда.
Попытка провальная и пока это существует в таком виде, к сожалению, браться за это не стоит. Если же кто-то сделает форк Quartz в виде темы, я сразу же перелезу.

Попытка №5

Попробовал Logseq. Это что-то вроде Obsidian, но более сырое. Думаю, им следовало приписать статус beta и не убирать до той поры, пока это точно не будет работать как следует.

Нет, всё не так плохо, как может показаться, и юзеров у этой штуки уже немало. Есть и куча плагинов, а значит есть и настолько постоянные юзеры, что сами допиливают функционал для себя и остальных. Проблемы же небольшие, но они есть.

Во-первых, иногда Logseq подвисает и это можно было бы объяснить моим некрожелезом, но Joplin так же Electron-приложение, сейчас у меня там ~2.4 тысячи заметок и он никогда так себя не ведёт. и сейчас, на новом железе, я замечаю, что при одинаковом количестве заметок Obsidian куда отзывчивее в плане интерфейса. Кроме того, что Logseq сам по себе шевелится чуть медленнее, особенности его интерфейса (“bullets” и блоки) также добавляют к этому.

Во-вторых, есть и мобильное приложение, пока вроде как в зачатке, но на вид вполне соответствует функционально десктопному. А проблема в том, что никакой штатной синхронизации тут нет. Разработчики что-то делают, пока не показывают и есть вероятность, что это будет платное облачко. Благо, Logseq — offline first или, как они пишут, local only. Это значит, что все заметки/статьи лежат открытыми Markdown и Org файлами на диске и доступны как угодно и через что угодно. Берём Syncthing или MEGA на компе, на телефоне, настраиваем синхронизацию и вот свежая заметка на десктопе уже доступна с телефона, а с этим и всегда есть бэкап. Да, это работает, но в какой-то момент, когда я написал что-то с телефона, десктопный Logseq неслабо так призадумался и думал, пока я его вырубил через kill. Кстати, прямо сейчас, когда я не пользуюсь синхронизацией, Logseq ведёт себя куда стабильнее.

В-третьих, есть одна функция, но нет полноценного результата — экспорт. Я пользуюсь Joplin для заметок и слезать с него не собираюсь, но все эти Obsidian’ы и Logseq’и пробую для того, чтобы найти себе удобное средство для создания цифрового сада. Joplin совсем не про то, пусть даже внутри него можно намутить и викификацию, и визуальный граф связей между статьями. Obsidian даёт нужное в лучшем виде, но даёт исключительно платно, а работающих сторонних плагинов для экспорта в готовые html в нём нет. Logseq же, будучи бесплатным, даёт функцию экспорта, что я и сделал.

В папке лежал готовый сайт, куча всяких потрохов, обещающих приятный интерфейс, а не голые страницы текста. Я открываю Index.html в браузере и не вижу ничего, кроме цветного фона. В коде страницы текст есть и он обернут в какое-то ужасающее количество тэгов, но страница эта просто не работает. Я даже залил её и открыл из сети, но лучше не стало. Не сработало и через другой браузер. Оказалось же, что экспорт каким-то дурным образом заточен на публикацию строго в Github Pages. Прежде там хостился мой блог, так что не проблема, но это не тот вариант, который я в идеале хотел бы. Пока что обойдусь этим, но надеюсь на лучшее.

Вышло несколько апдейтов Logseq и то ли функцию починили, а то ли была проблема и в моём браузере (хотя я тестил не в одном), но теперь экспорт работает полноценно и я могу захостить свой сад там же, где лежит мой блог вместо Github Pages, что я и сделал.

Попытка №6

Я вернулся попробовать Quartz, который с последнего раза заметно изменился — теперь это не замороченная тема для Hugo, а отдельное приложение на NodeJS.

Мне потребовалось всего три команды, чтобы запустить его:

git clone https://github.com/jackyzha0/quartz.git
cd quartz
npm i
npx quartz create

То есть клонируем репозиторий из Github, заходим в директорию, NPM устанавливает всё необходимое барахло, а далее запускаем и создаём болванку сайту.

После этого я скопировал мой текущий vault. Можно сделать и символическую ссылку, но я поостерёгся. Наверное зря, так как Quartz вряд ли вообще стал бы как-то затрагивать хранилище, не считая чтения. Запустить это дело, ровно как в случае с Hugo, можно командой npx quartz build --serve, а просто npx quartz build соответственно собирает готовый статичный сайт в директорию ./public. Да, ровно как Hugo, чего я в общем-то и хотел. Я сразу же создал два скрипта с нужными строками, как обычно делаю.

Из минусов сразу заметил разницу обработки Markdown, а именно обработку строк. То, что в самом Obsidian выглядит как разные строки, в Quartz рендерится одной строкой, пока на разобъёшь всё это через пробел. Было слегка не очевидно, но я нашёл, что вписать в конфиг, чтобы решить эту проблему. Также несколько напрягает изменчивость путей и с этим ничего не поделать. В остальном всё пока отлично, я удалил Logseq. По стандартному и теперь единственному адресу находится именно вариант на Osidian + Quartz.


Стоит упомянуть и несколько средств, которые я по разным причинам не опробовал.

MindStone — MindStone is a free open-source alternative solution to Obsidian Publish. (Github)

obsidian-zola — This repo contains an easy-to-use (read: simplistic) solution for converting an Obsidian Personal Knowledge Management System (read: bunch of random Markdowns) into a Zola site. (Демо)

Digital garden Jekyll template (Демо)