База блоков в Obsidian

· 5 min read

Мой друг, Антон Давыдов, пришел с вопросом: есть ли у меня статья о том, как я веду проекты в Obsidian. А у меня в блоге оказалась статья только о том, что я остановился на Obsidian. Это было уже три года назад, и пора рассказать, что это выросло в целую базу блоков.

Теория

Поиск статей в сети по самоорганизации и ведению заметок всегда находит темы, которые близки, но обособлены. Одни люди рассказывают, как организовать персональную базу знаний, а другие — как спроектировать процесс ведения задач. Это разделение является ложным или, корректнее сказать, не актуальным для всех.

Суть в том, что существует некий процесс накопления фактов, а затем превращения их в знания. У меня он выстраивается следующим образом:

  1. планирование задач с помощью чек-листов;
  2. ведение ежедневника;
  3. выполнение рабочих проектов и сохранение материалов по ним (да, банально набор ссылок);
  4. перенос новых знаний в базу;
  5. обновление чек-листов.

Наверное, нагляднее будет показать это на картинке: Obsidian command center

Здесь сразу видна цикличность этого процесса. Чем ближе различные элементы располагаются друг к другу, тем выше вероятность того, что мысли начнут взаимно обогащаться. Суть в том, чтобы одновременно и 1000 раз повторить одно и то же, и чтобы 10 разных вещей как бы соединились между собой. Лучше об этом написано в блоге thesephist: https://thesephist.com/posts/tools/#tasks-and-notes-a-false-dichotomy, который стал моим вдохновением.

Obsidian graph

Настройка Obsidian

Строго для АнтонаКомбайны - это круто, потому что они свои.

Теперь о том, почему именно Obsidian. Его преимущества и недостатки заключаются в двух вещах:

  1. он написан на Electron, а значит, можно использовать JavaScript для гибкой настройки;
  2. всё работает поверх локальных файлов, так что даже при отсутствии Obsidian контент можно будет восстановить (но не все связи).

Для того чтобы примеры из поста работали, необходим следующий набор плагинов:

  • Dataview
  • Templater
  • MetaEdit
  • Buttons
  • Obsidian Charts

Dataview предоставляет возможность расставлять метаданные по заметкам. Метаданные хранятся в двух местах: в YAML-заголовке или в тексте заметки в формате Key:: value. На основе этих метаданных Dataview позволяет строить таблицы. Здесь прослеживается аналогия с Notion, только там сначала создаётся таблица, а потом она заполняется контентом. Важное ограничение заключается в том, что редактировать данные в таблицах нельзя. Есть два варианта: либо использовать альтернативы (folderDB, Obsidian Projects), либо сделать свой HTML.

Templater позволяет создавать шаблоны с интерактивными элементами. Помимо шаблонного текста, можно добавить:

  1. попап-модалку с вопросом;
  2. попап-модалку со списком вариантов;
  3. перемещение файла в другое место;
  4. вставку подшаблона, иногда просто по заголовку другой заметки.

Это два основополагающих инструмента, а дальше всё зависит от ваших навыков работы с JavaScript. Ранее такой подход часто встречался в среде Emacs/org-mode, где для автоматизации использовался Lisp. Здесь подход похожий. Хватит теории, давайте посмотрим, как это выглядит на практике.

Пример: проектный трекер

Проекты мои проектики

Эта система состоит из шаблона проекта (ссылка на шаблон) и вьюхи, написанной на JavaScript (ссылка на вьюху). В сообществе Obsidian эта штука получила лайки, но, подозреваю, что никто её толком не установил.

С шаблоном проектов всё интереснее. Его условно можно разделить на три части:

  1. метаданные;
  2. чеклист;
  3. материалы.

Про метаданные в проектных файлах говорить скучно, вы наверняка сталкиваетесь с ними на работе: это статус, время начала, окончания и примерная оценка. Как видно на текущем скрине, я успеваю со статьёй и докладом, но уже давно застрял на своём pet-проекте. Подробно об этом можно прочитать в моём цифровом садике — метаданные для заметок проектов.

Чеклист для меня превратился в три вещи:

  1. описание результата и условий проверки;
  2. составление начальных шагов;
  3. оценка рисков.

Не все пункты обязательны для каждого проекта, шаблон можно подстраивать, например, под разные сроки (вряд ли в двухнедельном проекте нужны риски), но пока я оставил это на ручное управление.

Пример проекта на примере статьи

Для вдохновения можно пойти по ссылочкам:

Пример: найм сотрудников

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

Из каких шагов состоит процесс найма?

  1. понять, кто нам нужен;
  2. создать вакансию;
  3. проводить собеседования;
  4. ???;
  5. profit.

В HRTech такие сервисы принято называть “системами привлечения талантов”, поэтому именно так называется соответствующая заметка. Она состоит из двух шаблонов и одной таблицы: шаблона описания вакансии + профиля кандидата и шаблона собеседования.

Шаблон вакансии

Тут тебе сразу и личные качества сверху, а ещё есть описанные типовые позиции, где есть банк задач.

При этом в шаблоне по собеседованию написана следующая автоматизация:

const vacancies = tp.user.suggest_folder("#vacancy");
const vacancy = await tp.system.suggester(vacancies, vacancies);
const candidate = await tp.system.prompt("Имя кандидата?");
const questions = `[[${vacancy}#Список вопросов]]`;
const title = `${tp.date.now()} ${candidate}`;
const filename = tp.user.sanitaze_filename(title);
await tp.file.move(filename);

Мы достаём все вакансии по шаблону, спрашиваем имя кандидата и создаём заметку с дата + кандидат, И внутри будет уже весь текст из подзаголовка списка вопрос.

Финальный результат:

Собесы

Обмазываем интеграциями

Здесь стоит немного отступить и отметить, что в компаниях всегда существуют корпоративные инструменты со своими воркфлоу, и их множество: таск-трекеры, вики, системы для найма, Google Docs, Miro и так далее. Преимущество JavaScript-стека в этом контексте становится ещё более очевидным благодаря возможности интеграции через API (пример):

  1. получаем собственный воркфлоу, удобный для нас;
  2. и сохраняем совместимость с корпоративной средой.

Итого

Тиаго Форте в книге “Building a Second Brain” называл заметки строительными блоками для идей. В моём случае, заметка является строчкой в нормализованной таблице. Это следствие профессиональной деформации, но такой формат демонстрирует свою жизнеспособность. Дальше всё зависит от того, насколько глубоко это прорабатывать.

Стоит ещё раз отметить, что табличное представление — это мой личный выбор. Некоторые предпочитают графовые структуры, другим понятен линейный текст. За то время, что я пользовался Obsidian, появились две замечательные альтернативы: LogSeq и AnyType. В них гибрид Obsidian и Notion пошёл по другому пути: единицей контента является блок, а заметка — это либо ссылка на конкретный блок, либо…

P.S. А кто-то просто может сказать, что лучше освоить Excel, ведь там всё это уже давно есть.