Всем привет, меня зовут Влад. Сегодня я хочу рассказать как и с помощью чего, я веду свои задачи в Obisiadn.
Как я докатился до жизни такой…
C таск трекерами у меня долгая история: я много сидел на Todoist, потом перешел на TickTick. Не знаю на сколько это было связанно с сами таск трекерами или уже с моими личными проблемами – но по итогу они мне мало помогали закрывать задачи, что личные, так и по работе. Потом у меня появился iPad и годовая подписка на Microsoft Office. Так я и перешел на OneNote.
Примерно в тоже время после тренинга по эмоциональному интеллекту было принято решение делить задачи на сферы жизни: Быт, Работа, Яркость жизни, Хобби и тд, – чтобы можно было заметить перекос в ту или иную сторону. Текстовый редактор, как по мне, в отличие от приложений, дает больше свободы в структурировании и нахождении своего способа организации дел. Если не знаешь как тебе удобно (а ты не знаешь, если только начинаешь вести задачи), то приложения будут структурировать хаос, а не наводить порядок.
Подписка закончилась, продлевать было лень и не очень то и хотелось за один OneNote платить. Так я и перешел на Obsidian, который и по сей день является моим основным приложением для всего.
Переход к автоматизации
По началу я разделял задачи руками, сферы жизни – заголовки, месяц – отдельный файл. Но спустя некоторое время, как бы обойтись без французкого… мне надоело это делать руками, Я ЖЕ ПРОГРАММИСТ подумал я и начала автоматизировать свою работу.
Начал я с плагина Tasks, который позволяет писать кастомные запросы на задачи со всего хранилища. И это был ад.
Сама возможность использовать мой любимый Javascript в запросах не может не вызывать уважения к плагину, но то как это пишется… примерно так
filter by function
const SPRINT_P = 'SPRINT';
const SPRINT_START_DATE = '2025-03-17';
const SPRINT_END_DATE = '2025-03-30';
const hasSprintTag = () => {
const sprintTagBegin = '#Спринт25';
const currentSprint = '03С2';
const sprintTag = sprintTagBegin+currentSprint;
return task.tags.includes(sprintTag);
};
...
Про дебагинг я вообще молчу, один раз я искал пробел после слеша целый час, может быть если я изначально знал, что искать, то нашел бы быстрее, в том же Templater с этим проблем нет, я конечно не пробовал Dataview, но может быть там все хорошо.
Сейчас мой запрос работает на свойствах файла и тегах задач.
Структура самого шаблона:
-
Инбокс – задачи, которые появились в текущем спринте
-
Задачи – блок с запросом Tasks
Сам результат запроса выглядит так:

Символом параграфа отмечаются категории в тегах, двойными – родительские задачи (так удобнее понимать к чему относиться задача). В “Не сгруппировалось” попадают задачи без категории
Описание свойств, которое используются в запросе:
Свойство |
Описание |
Значения |
---|---|---|
HAS_TASK |
Чтобы задачи попали в запрос у Файла должно быть это свойство |
Не имеет значения |
SPINT |
свойство отвечающее за то, зависят ли задачи от тега со спринтом |
DONE – попадает в запрос, если дата завершения попадает в период спринта TAG – задачи попадают в тот спринт, который указан в теге задачи |
GROUPING |
отвечает за группировку |
HEADING – группировка по заголовкам (нужна для списков, где есть несколько категорий) CUSTOM – группировка по свойствам файла |
GROUP_NAME |
Название группы |
Строка |
SUBGROUP_NAME |
Название субгруппы |
Строка или |
На сегодня я использую только два набора свойств для списков:
Свойство |
|
Значения |
---|---|---|
Описание |
Списки с несколькими категориями, например, беклог на год или на квартал |
Список под конкретную категорию Пример: Похудение, Петпроект %NAME%, и тд |
SPINT |
TAG |
DONE |
GROUPING |
HEADING |
CUSTOM |
GROUP_NAME |
– |
{{Название категории}} |
SUBGROUP_NAME |
– |
$FILENAME |
Шаблон с запросом Tasks: https://github.com/imabramon/my-templates
Работа с тегами
После агрегирования главной проблемой стала работа с тегами, так как вся группировка основана них. По началу я еще не уставал вручную писать, но, например, когда начинается спринт, пишешь очень много задач, многие их которых относятся к разным категориям, то это надоедает. Так я написал первые версии шаблоны на JS. В целом ничего сложного, бьешь tp.selection на строки и добавляешь в конец теги из промта.
Но планы были грандиозные (да и сейчас остались), вот например есть такой список:
- [ ] task
- [ ] sub parent
- [x] sub 1
- [ ] sub 2
- [x] sub 3
Хотелось бы шаблон который сможет превратить его в
- [ ] task
- [ ] sub parent
- [ ] sub 2
- [x] task
- [x] sub parent
- [x] sub 1
- [x] sub 3
Т.е. разделить на завершенную часть и незавершенную. Например у меня есть большая задача в инбоксе, и я не хочу переносить всю ее в беклог или следующий спринт. Так или иначе были идеи шаблонов, для которых нужна была абстракция, чтобы можно было удобнее работать, да и перспектива писать код в обсидиане меня не впечатляла. Так я перешел в привычный vs code.
К сожалению не так часто удавалось или даже хотелось писать из-за личных загонов. Но по спустя временя, понял что это было интересно, как говорил Жан Пьер Польнореф. Потихоньку писал парсер, фиксил баги, писал тесты, фиксил баги, думал какие шаблоны сделать еще и фиксил баги. Не хватает пару обычных для коллекций функций по типу map, reduce и тд, но то что уже есть сейчас хватит, чтобы покрыть большое количество запросов (в первую очередь моих).
По итогу сейчас есть следующие шаблоны:
-
добавление и удаление тегов – тут понятно
-
разделение по завершенности – пример выше
-
счетчик – создает однотипные задачи вида
- [ ] N
, удобно использовать для трекеров привычек
Так же есть 2 шаблон использующие понятие категории (сферы жизни):
-
разделить по категории – удобно сортировать инбокс
-
теги как у родителя – так же удобно работать с инбоксом, так как обычно у меня нет пересечений по категориям
Более подробно про сами шаблоны с примерами и JS API, которое есть на данным момент есть, можно найти на гитхабе: https://github.com/imabramon/templater_tasks_processor
Заключение
Пациент в глубокой коме…
Пока все это делал, довольно много устал от этого проекта. Вот в начале каждого пета есть некий тильт, так как еще не очень шаришь, мало что есть и много что надо сделать, в середине самый пик приятных эмоций – уже много что есть, начал уже жестко шарить за область проекта, но вот в конце, когда надо полишить – самый тягостный период разработки, как по мне. Понимаешь, что так оставлять нельзя, но и доделывать очень тяжело (возможно у меня SVG).
Надеюсь получилось не слишком душно и кому-нибудь это поможет для работы в obsidian.
Автор: im_abramon