Иногда сложно справиться с большим потоком задач и информации, особенно если это касается работы. Поэтому создание персональной базы знаний для своих текущих дел становится весьма актуальным. Но простая фиксация данных не всегда эффективна: легко потеряться в куче заметок. Различные методики помогают правильно организовать процесс. Вместе с тем информация не существует сама по себе, она, как правило, неразрывно связана со всеми нашими проектами, задачами и другими событиями. Если это учитывать, то проще оперировать данными, находить нужные факты. Через задачу легко выйти на связанную с ней информацию или, наоборот, через данные можно найти проект или задачу, в рамках которых они появились. Однако на практике все это будет эффективно работать, если получится создать единую среду для ведения дел и хранения всех связанных с ними данных.
Существующие приложения, как правило, не могут предоставить готовое решение для работы в таком контексте. Приходится придумывать или создавать что-то свое. Самое простое — это начать с каких-то стандартных заметочников, например Evernote или OneNote, и приспособить их под себя. Однако с появлением Roam-подобных программ пришло понимание, что можно создать очень гибкую систему, которую легко настроить под ведение любого вида задач, проектов и хранение различного типа связанной с ними информации. В этой статье познакомимся с примером настройки и практического использования маркдаун-заметочника Obsidian.md совместно с методологией Getting Things Done (GTD) Дэвида Аллена.
Все по-разному пытаются управлять своими делами. Чаще всего применяется простой подход: задачи ведутся в to-do-приложении или удерживаются в голове, а связанная с ними информация раскидывается весьма хаотично. Документы хранятся на диске или в облаке, обсуждения — в email или мессенджерах, заметки — на бумаге или в специализированных приложениях, ссылки на ресурсы — в браузере.
Возможны различные комбинации, но очевидно, что такой подход не слишком эффективен. Для ведения дел и хранения связанных данных удобно использовать один инструмент, например Obsidian. Это не обычный заметочник, как OneNote или Evernote, — он относится к Roam-подобным приложениям (Roam Research с начала 2020 года задал новый стандарт в классе). Основные отличительные возможности и полезные фишки такого типа приложений:
Обратные ссылки (Backlinks).
Визуализация связей между заметками (в виде графа).
Markdown-разметка.
Шаблоны заметок.
Ежедневные заметки.
Расширяемость через плагины.
Благодаря системе прямых и обратных ссылок, а также их визуализации стала возможна сетевая организация заметок вместо иерархической. Эта организация играет ключевую роль в описанном далее решении.
К Roam-подобным приложениям также относятся Logseq, Notion, RemNote, Foam, TiddlyWiki и другие — смотрите подробнее:
• What are the best knowledge base systems for personal use?
• My 2d Brain Networked Notebook App
Основные достоинства приложения Obsidian:
Полностью бесплатное для персонального использования.
Возможна работа в офлайне, данные хранятся локально на диске в текстовом формате.
Удобный пользовательский интерфейс.
Много плагинов.
Большое сообщество.
Работает на платформах Mac, Windows, Linux, iOS/Android.
В качестве методики управления делами будем использовать проверенную временем и до сих пор популярную систему Getting Things Done (GTD) Дэвида Аллена. Для более детального знакомства с GTD рекомендую статьи на Habr:
Общая концепция
Для начала рассмотрим общий вид будущего решения. Идея остается прежней — в рамках одного приложения реализовать ведение дел и хранение связанной с ними информации. В качестве управляющей системы использовать GTD.
В Obsidian определяем пять основных типов заметок:
Inbox — заметка для фиксации идей, мыслей, планов и т. п.
Task — задача. Единичное действие.
Project — проект. Активность, требующая планирования. Состоит из одного и более действий.
Meeting — встреча, собрание, то, что требует напоминания.
Reference — справочные материалы.
Согласно GTD, заметки Inbox являются источником для создания всех других типов заметок. Справочные материалы (Reference) рождаются в процессе работы и связываются с конкретными задачами, проектами или другими элементами.
Никакой иерархии не существует, все заметки находятся на одном уровне и связываются между собой через линки.

Заметки в Obsidian будут создаваться не напрямую, а через шаблоны. Для каждого типа заметки свой шаблон. В нем определяется структура заметки, тег типа и при необходимости дополнительные элементы.
Тегами типов заметок будут inbox, project, task и т. д. Для некоторых типов, например для task или reference, добавляются подтипы (через вложенные теги).

Для task вложенные теги определяют вид действия:
- task/now — выполнить сейчас;
- task/next — потом/отложить;
- task/waiting — поручено/контроль;
- task/someday — когда-нибудь/может быть.
Также в Obsidian потребуется установить и настроить три комьюнити-плагина: obsidian-dataview, obsidian-checklist-plugin и obsidian-reminder. Необходимы для визуализации в интерфейсе приложения:
панель с активными проектами;
панель с активными задачами, сгруппированными по виду действия;
панель с событиями, требующими напоминания о времени.
По итогам всех настроек алгоритм работы в Obsidian будет выглядеть следующим образом:
Создать новую заметку.
Применить к заметке шаблон выбранного типа.
Заполнить заметку, установить связи с другими заметками.
Просматривать и управлять задачами/проектами на боковых панелях (плагины).
Получать напоминания о предстоящих событиях.
Настройка конфигурации Obsidian
Для тех, у кого нет времени или желания настраивать вручную, я подготовил хранилище Vault Obsidian и выложил на GitHab obsidian_gtd_vault. Vault настроен и заполнен первичными данными. Можно подключить хранилище, все примеры в статье приводятся на его основе.
Заходим в настройки Obsidian:
Проверяем, что в разделе «Встроенные плагины» (Core plugins) подключены:
Панель тегов (Tags).
Шаблоны (Templates).
Избранное (Bookmarks).
В Сторонних плагинах (Community plugins) находим и устанавливаем плагины:
Dataview (obsidian-dataview).
Checklist (obsidian-checklist-plugin).
Reminder (obsidian-reminder).
В настройках плагина «Шаблоны» указываем путь к папке с шаблонами, например Templates.
В настройках плагина Checklist:
В Tag Name устанавливаем два значения — task и project (каждое значение в отдельной строке).
В Group By выбираем Tag.
В Group Sort выбираем “A -> Z”.
В Include Files указываем
!Templates/**
.
В пункте настроек «Файлы и ссылки» (File & Links):
В списке «Место для вложенных файлов по умолчанию» (Default location for new attachments) выбираем значение «В папке, указанной ниже» (In subfolder under current folder).
В текстовом поле «Путь к папке для вложенных файлов» (Subfolder name) указываем Attachments.
Завершаем настройки и возвращаемся в главное окно программы:
На панели файлового менеджера (Files) создаем две корневые папки — Templates и Attachments (названия папок должны совпадать с заданными в настройках в п. 3 и 5).
Компонуем боковые панели интерфейса по собственному вкусу. Ненужные удаляем.
В итоге должно получиться примерно так:

Настройка шаблонов Obsidian
Создадим пять шаблонов для каждого из типа заметок. Напомню, это:
Inbox — заметка для фиксации идей, мыслей, планов и т. п.
Task — задача, подразумевает единичное действие.
Project — проект, состоит из одного и более действий.
Meeting — встреча, собрание, то, что требует напоминания.
Reference — справочные материалы.
Шаблоны — это обычные заметки, размещаются в директории Templates файлового менеджера.
В шаблонах будет, в частности, использоваться функциональность плагина Dataview. Плагин позволяет формировать представления на основе запросов к заметкам Obsidian. Общий формат запросов такой:
```dataview
<QUERY-TYPE> <fields>
FROM <source>
<DATA-COMMAND> <expression>
<DATA-COMMAND> <expression>
...
```
Сделаем так, чтобы в каждой нашей заметке мы сразу видели все ее обратные (backlinks) и исходящие (outgoing) ссылки. Для этого в шапку всех шаблонов добавляем следующий dataview-запрос:
```dataview
TABLE without id
file.outlinks AS "OUTGOING",
file.inlinks AS "BACKLINKS"
WHERE file.name = this.file.name
```
Очень удобно видеть всю информацию о ссылках непосредственно в документе. Также это сэкономит место в интерфейсе, так как панели для входящих/исходящих ссылок можно будет убрать.
UPD 09.07.2024
После обновления плагина Dataview возникла проблема: размещённые в заметке картинки отображаются в разделе Outgoing не как ссылки, а как изображения. Как вариант решения (спасибо @UnexDN), можно разделить запрос Dataview на два:
OUTGOING
LIST without id
link(meta(out).path)
WHERE file.name = this.file.name
flatten file.outlinks as out
BACKLINKS
LIST without id
link(meta(in).path)
WHERE file.name = this.file.name
flatten file.inlinks as in
Если кому-то важно видеть в заметке дату ее создания и последней модификации, то можно добавить еще такой запрос:
```dataview
TABLE without id
dateformat(this.file.ctime, "dd.MM.yyyy HH:mm") as created,
dateformat(this.file.mtime, "dd.MM.yyyy HH:mm") as "last modified"
WHERE file.name = this.file.name
```
Далее определим шаблоны для каждого типа заметки, названия шаблонов будут совпадать с типами. Все шаблоны обязательно должны находиться в созданной нами директории Templates.
Шаблон Task
```dataview
TABLE without id
file.outlinks AS "OUTGOING",
file.inlinks AS "BACKLINKS"
WHERE file.name = this.file.name
```
#task/now %% now | next | waiting | someday %%
- [ ] {{title}}
# Links
# Description
В тексте шаблона могут присутствовать комментарии (не отображаются в режиме просмотра документа). Комментарий начинается и заканчивается двойным символом процента: %%. В примере присутствует комментарий с перечислением всех возможных подтипов задачи.
Шаблон содержит:
Тег, обозначающий вид действия (по умолчанию всегда task/now — выполнить сейчас).
Чекбокс
- []
для фиксации статуса заявки: активная/завершена.Переменная {{title}}. В момент применения шаблона подменяется на заголовок заметки.
Два раздела — Links (для размещения ссылок на внешние или внутренние ресурсы) и Descriptions (описание, текст заметки).
Здесь и далее шаблоны имеют упрощенный вид, и их можно и нужно подстраивать под себя. Однако чекбоксы и теги должны оставаться в исходном виде.
Шаблон Project
```dataview
TABLE without id
file.outlinks AS "OUTGOING",
file.inlinks AS "BACKLINKS"
WHERE file.name = this.file.name
```
#project
- [ ] {{title}}
# Todo List
> [!todo] Active
> ```dataview
> TASK
> FROM [[]]
> WHERE !completed
> SORT file.ctime desc
> ```
> [!todo] Completed
> ```dataview
> TASK
> FROM [[]]
> WHERE completed
> SORT file.ctime desc
> LIMIT 30
> ```
# Links
# Description
Шаблон проекта аналогичен предыдущему, обозначается тегом project. Дополнительно в нем присутствует раздел Todo List, в котором через Dataview отображается список активных (Active) и завершенных (Completed) задач, ссылающихся на проект.
Шаблон Meeting
```dataview
TABLE without id
file.outlinks AS "OUTGOING",
file.inlinks AS "BACKLINKS"
WHERE file.name = this.file.name
```
#meeting
- [ ] {{title}} (@{{date}} {{time}})
# Links
# Attendees
# Agenda
%% Write down the nain topic to discuss %%
# Notes
%% Cover any key information disscused in the meeting %%
Шаблон для встреч, собраний обозначается тегом meeting. В конце строки с чекбоксом присутствует набор значений (@{{date}} {{time}})
:
{{date}} {{time}})
— переменные, автоматически подменяются текущей датой и временем в формате YYYY-MM-DD HH:MM.(@...)
— относится к функциональности плагина Reminder. Более подробно смотрите документацию. Внутри скобок указывается точная дата и время события, которое отображается на панели Reminders, и в назначенный час в интерфейсе Obsidian сработает напоминание.
Шаблон Inbox и Reference
Последние два шаблона самые простые. Содержат только соответствующий тег inbox или reference и какие-то дополнительные разделы. Настраиваются по собственному усмотрению.
#inbox
# Description
```dataview
TABLE without id
file.outlinks AS "OUTGOING",
file.inlinks AS "BACKLINKS"
WHERE file.name = this.file.name
```
#reference
# Links
# Description
Как это все работает
А теперь разберемся, как будет выглядеть работа в Obsidian после всех настроек. Логика работы так или иначе должна соответствовать базовым принципам Get Things Done.

Inbox
Создаем заметку и применяем к ней шаблон Inbox, когда нужно зафиксировать какие-то мысли, идеи, дела, планы.
Рекомендую в настройках Obsidian перейти в раздел «Сочетание клавиш» (Hotkeys) и в пункте «Шаблоны: вставить шаблон» (Templates: Insert template) задать клавиши для быстрой вставки шаблона.
Данный шаг можно пропустить (сразу перейти к созданию Task, Project или др.), если есть полное понимание, что делать с данными, и есть время для их обработки прямо сейчас.

Периодически обрабатываем накопленные в Inbox заметки. На их основе создаем новые заметки Task (задача), Project (проект), Reference (справочные материалы), Meeting (встреча). Неактуальные inbox-заметки удаляем.
Для контроля inbox-заметок можно создать пустую заметку Inbox Notes (добавить в «Избранное») и разместить в ней dataview-запрос, который отображает все существующие inbox-заметки:
```dataview
LIST
FROM #inbox and -"Templates"
```
Task
Для каждой задачи создаем заметку и применяем к ней шаблон Task. В зависимости от того, нужно ли приступить к выполнению сразу, потом или делегировать, меняем тег на task/now, task/next или task/wait соответственно. Если не требуется немедленных действий, но, может быть, когда-нибудь мы еще вернемся к этой работе, исправляем тег на task/someday.

Project
Если предполагаются комплексные работы с необходимостью планирования, создаем заметку из шаблона Project.

В рамках планирования для каждого шага проекта создаем отдельные задачи (шаблон Task). Для связи задач с проектом во всех задачах в разделе Links указываем markdown-ссылку на проект [[имя проекта]]
.

Если одну из задач отметить выполненной и вернуться на страницу проекта, то в разделах Active и Completed (Dataview) отобразятся все активные и завершенные задачи, связанные с проектом. В Backlinks увидим список заметок, ссылающихся на проект. В интерфейсе на боковой панели плагина Checklist (Todo List) отобразятся активные проекты и задачи, сгруппированные по виду действия.

Meeting
Если планируется встреча или собрание, создаем заметку из шаблона Meeting.
К сожалению, встроенной в Obsidian функциональности напоминаний не существует. Реализуется через комьюнити-плагины, например Reminder. В панели компонента отображается список запланированных событий, а в установленное время в интерфейсе появляется окно с напоминанием.
Дата и время события прописывается в заметке в строке с чекбоксом в формате (
@YYYY-MM-DD HH:mm)
. Формат меняется в настройках плагина.

Reference
Если данные являются справочной информацией, фиксируем их в заметке (шаблон Reference).

Для большей гибкости и удобства в Reference лучше всего добавить подтипы. Тогда для каждого подтипа потребуется сделать отдельный шаблон. Например, шаблон Ref-Person — для фиксации информации по людям (тег reference/person), Ref-Instruction — для инструкций (reference/instruction), Ref-document — для документов (reference/document) и т. д.
Рассмотрим пример с Ref-Person (reference/person). Через шаблон создаются заметки, каждая из которых соотносится с конкретным человеком. Тогда появляется возможность линковать задачи, проекты, встречи с конкретными исполнителями, участниками. Это удобно: так, в заметке «человека» в обратных ссылках (Backlinks) будет присутствовать вся информация о делах, в которых он был когда-либо задействован.
В качестве префикса в заголовке заметки Person лучше всего подставлять символ @ — это позволит быстро находить людей в списке.

В заметке персоны можно фиксировать любую дополнительную информацию о человеке в тексте или во frontmatter (также см. Metadata). Данные из всех frontmatter визуализируются через Dataview, например, так:
```dataview
TABLE
phone,
department,
position_
FROM
#reference/person and -"Templates"
SORT file.name
```

Best practice
Горячие клавиши
Рекомендую изучить и подстроить под себя сочетания клавиш (Hotkeys) для работы в интерфейсе. Это значительно повысит удобство и скорость работы. Базовые сочетания, которые могут пригодиться (Windows):
Ctrl + ,
— открыть настройки.Ctrl + N
— создать новую заметку.Вставка шаблона в заметку — задать в настройках, придумать сочетание.
Ctrl + Alt + <-
— вернуться.Ctrl + E
— переключиться между режимами редактирования и просмотра.Ctrl + O
— меню быстрого перехода, поиск по заголовкам заметок.Ctrl + Shift + F
— глобальный текстовый поиск по содержимому заметок.
Избранное
В системе можно создавать заметки, не связанные с задачами, проектами или встречами. Чтобы они не потерялись, их следует заносить в избранное. Своего рода аналог закрепленных сообщений. Отображаются на панели Bookmarks. Например, это могут быть заметки, содержащие:
данные о важных ресурсах, веб-ссылки;
справочную информацию;
дашборды с динамическими отчетами, формируемыми через плагин Dataview.
Как пример дашборда, можно создать заметку с Dataview, полностью воспроизвести функциональность плагина Checklist (панель Todo List).
Todo List dataview
> [!note] Meetings
> ```dataview
> task
> from #meeting and -"Templates"
> where !completed
> sort file.ctime desc
> [!important] Projects
> ```dataview
> task
> from #project and -"Templates"
> where !completed
> sort file.ctime desc
> [!todo] Tasks
>> [!todo] Now
>> ```dataview
>> task
>> from #task/now and -"Templates"
>> where !completed
>> sort file.ctime desc
>> ```
>
>> [!todo] Next
>> ```dataview
>> task
>> from #task/next and -"Templates"
>> where !completed
>> sort file.ctime desc
>> ```
>
>> [!todo] Waiting
>> ```dataview
>> task
>> from #task/waiting and -"Templates"
>> where !completed
>> sort file.ctime desc
>> ```
>
>> [!todo] Someday
>> ```dataview
>> task
>> from #task/someday and -"Templates"
>> where !completed
>> sort file.ctime desc
> [!done] Completed
> ```dataview
> task
> from #task
> where completed
> sort file.ctime desc
> limit 10
> ```

Внедряемый контент
Obsidian позволяет через обычную вставку внедрять контент из других файлов или даже веб-источников (через <iframe>). Это помогает сделать контент заметки более живым и понятным. Поддерживаются различные форматы.
Есть возможность рисовать схемы, диаграммы, которые также внедряются в текст заметки. Это можно делать через плагины:
Excalidraw (obsidian-excalidraw-plugin)
Diagrams (drawio-obsidian)
PlantUML (obsidian-plantuml)
Mermaid Diagrams (встроенный плагин)

Заметки в виде графа
В интерфейсе можно визуализировать заметки (Graph view) в виде неориентированного графа, где вершины — это заметки, а ребра — это связи (линки) между заметками. Как это использовать, исходя из текущего контекста, каждый решает сам. Однако какой-то смысл в этом есть. При накоплении большого количества данных наверняка получится увидеть интересные взаимосвязи между задачами, проектами, информацией.
У Graph view много настроек отображения — в частности, можно задать цвет заметок (вершин графа) в зависимости от условий, например по тегам.

Заключение
Obsidian — это действительно очень интересный и разносторонний инструмент. Можно сказать, «комбайн» заметок, легко настраиваемый под разные цели. Этому очень способствует большой набор комьюнити-плагинов. Есть мобильное приложение. Правда, трудность освоения Obsidian чуть выше, чем других приложений, но, уверен, оно того стоит.
Предложенное в статье решение является основой для настройки под свои потребности и способы ведения дел. Существуют другие плагины, с которыми можно поэкспериментировать в контексте статьи и при необходимости подстроить под себя:
Daily Notes (встроенный плагин), легко встраивается в концепцию управления задачами
Надеюсь, статья была полезна всем, кто интересуется темой, или даже новичкам.