Для создания своего цифрового сада мне была необходима программа с возможностью публикации в статичный HTML, если не из коробки, то хотя бы сторонними средствами. И желательно, чтобы на выходе это смотрелось относительно прилично как с десктопа, так и с телефона. Сперва я рассматривал разные wiki-движки, а то, что мне нужно, в общем-то является маленькой личной вики, но быстро переключился на близкие к нимPKM, так как они больше соответствуют желаемому. Я предпринял несколько попыток, которые и расписаны ниже.
Чтобы сэкономить время, можно сразу обратиться к Попытка №6
Попытка №1 - Obyde
Первой моей попыткой устроить цифровой сад была связка Obsidian и Obyde. Obsidian используется для создания и редактирования постов, Obyde для конвертации в формат, подходящий для Hugo — движка моего сайта.
Признаюсь, не самое удачное решение, так как моя тема Hugo не имеет многих обычных для вики возможностей, но это то немногое, что я нашёл достаточно простым и удобным в каждодневном использовании без необходимости изменять весь сайт.
И, да, это работает, но Obyde обязательно требует дату создания во front matter. Это с одной стороны позволяет постам в вики не пересекаться ссылками с другим содержимым сайта, а с другой создаёт не самые удобные имена файлов. Так как я не веду историю в этой вики и дата создания постов не имеет значения, решается это наиболее дубовым способом — date: 0001-01-01
. Если дата будет меняться, то при большом количестве постов придётся то и дело устраивать зачистку от руки, так как старые версии постов не удаляются. Это можно было бы решить скриптом, который удаляет всё содержимое папки, куда прилетают готовые .md
, но там лежат символические ссылки и я не хочу с этим возиться.
К сожалению, найденный мною способ указывать все связи на страницах (это то, что прямо под счётчиком слов) никак не сходится с такой схемой именования файлов. Но важно, что он работает. Так я отказался от Obyde, а вслед за ним и от Obsidian.
Попытка №1.1 - ObsidianHtml
Вторая попытка с Obsidian, которую я предпринял уже имея на руках вполне рабочий Logseq, оказалась даже относительно удачной, если бы опять же не публикация. Но она работает!
Да, работает и Logseq, но Obsidian мне всё ещё кажется более удобным средством сам по себе, кроме одной важнейшей детали — публикации.
Я нашел ещё одно стороннее средство для создания статичного сайта из хранилища Obsidian, которое после небольшой настройки дало мне вполне работающую страницу, которую можно размещать где угодно.
⇒ ObsidianHtml
Я было перетащил все свои статьи в Obsidian, где работать с текстом без вездесущих блоков и “пуль” Logseq куда как приятнее. Поставил ObsidianHtml через ‘pip’, создал конфиг, некоторое время правил его (тут не без заковык, но терпимо), а затем получил готовую статичную страницу.
А потом всё увязло в моей лени. Стандартный вид сайта, получившегося на экспорте, мне кажется мало приятным и годится скорее для документации. Я же хочу, чтобы сад выглядел хотя бы отдалённо похожим на мой блог — как минимум в той же цветовой схеме. Также очень не понравился шрифт. Я считаю, что страница должна быть приятной, так как вряд ли здесь складируется настолько важная информация, что можно потерпеть, продираясь через всё это.
Возможно, позднее я вернусь и сделаю как следует, после чего переведу сад на связку Obsidian + ObsidianHtml.
Попытка №2 - Hugo
Отказавшись от Obsidian + Obyde, я решил сделать некую имитацию вики на самом Hugo, без сторонних средств. Эта вики заполняется вручную, через обычный текстовый редактор. Просто кучка Markdown-документов, отдаваемых на обработку Hugo. Нет визуального графа связей, чтобы было наглядно, удобно и красиво — может быть позднее я найду, откуда это скопипастить.
Попытка №3 - TiddlyWiki
Прежде имел опыт с TiddlyWiki и она в общем-то имеет в себе всё желаемое, но проблема в том, что она имеет это в себе буквально — TiddlyWiki представляет собой один жирный монолитный html со всем содержимым, который очень странно обновляется и оттого доверия у меня совсем не вызывает. Результат, конечно, есть и он доступен, но доверять ей что-то большее я пока побаиваюсь.
Попытка №4 - Старые версии Quartz
Теперь я решил попробовать Quartz. Quartz — это готовый шаблон сайта на Hugo, который умеет обрабатывать заметки Obsidian и выдавать их в надлежащем виде. И здесь, конечно, свои недостатки:
- Quartz — это не тема Hugo, а шаблон сайта, что означает, что нормально обновлять её невозможно. Любые свои правки придётся куда-то сохранять, накатывать апдейт, возвращать правки.
- Quartz гвоздями прибит к Github и Github-actions.
- Невозможно править тему, запустив превью сайта через
hugo serve
на своём компьютере.hugo serve
не работает, рассыпаясь в ошибках.
Хорош же Quartz тем, что он нормально выглядит и даёт на выходе нормальный сайт.
Если бы он был просто темой, вид сайта можно было бы изменять как угодно и спокойно обновлять тему, которая лежит в своей директории и никак изменений, накладываемых поверх неё, не касается. Также для этого не потребовался бы Github — не более, чем для скачивания обновлений темы оттуда.
Попытка провальная и пока это существует в таком виде, к сожалению, браться за это не стоит. Если же кто-то сделает форк Quartz в виде темы, я сразу же перелезу.
Попытка №5 - Logseq
Попробовал 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
Я вернулся попробовать 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. По стандартному и теперь единственному адресу находится именно вариант на Obsidian + 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. (Демо)