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

В моём хранилище 801 заметка. Когда я открывал Obsidian, меня встречала пустая вкладка - не главная страница, не список последнего, просто пустота, из которой надо было куда-то попасть.

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

Ниже - что я с этим сделал: какой чужой метод взял за основу, что в нём пришлось переписать под себя и какие два правила оказались важнее самого метода.

От обратных ссылок к прямым

Сначала я перемещался по хранилищу через обратные ссылки. Логика казалась разумной: заметка упомянута в десяти местах - открываю её, вижу панель обратных ссылок, вижу весь контекст вокруг.

Работало плохо, и я не сразу понял почему.

Обратные ссылки дают связность, но не дают порядка. Панель показывает список заметок, которые упомянули открытую, - в произвольной последовательности, без веса и без разбора. Случайное упоминание в конспекте встречи лежит там рядом с основным материалом по теме, и отличить одно от другого можно, только открыв обе заметки. Такая панель отвечает на вопрос «что с этим связано». Мне нужен был ответ на вопрос «куда идти дальше», а это разные вопросы.

Со временем связей накопилось столько, что их пришлось вычищать вручную.

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

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

Метод Dashboard++

Формат для таких страниц я взял готовый - метод Dashboard++, который описал TfTHacker в 2022 году. Автор выложил его вместе с CSS-сниппетом и демонстрационным хранилищем. Это по-прежнему самое разумное решение по перемещению внутри Obsidian из тех, что я видел.

Механика такая. В свойствах заметки указывается cssclasses: dashboard. Дальше страница делится заголовками первого уровня на крупные разделы. Под каждым заголовком идёт обычный маркированный список: пункт верхнего уровня - тема, вложенные в него пункты - ссылки на заметки. Сниппет убирает маркер у темы и раскидывает темы раздела по колонкам, поэтому вместо длинной простыни получается страница-указатель на один экран.

Вот та часть сниппета, которая это делает:

.dashboard div>ul {
    list-style: none;
    column-width: 220px;
    column-count: auto;
    column-gap: 30px;
}

.dashboard div>ul>li {
    break-inside: avoid;
    min-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

А вот как выглядит разметка моей рабочей страницы (имена клиентов заменены):

---
cssclasses:
  - dashboard
---
# 👥 Клиенты
- [[Андрей]]
- [[Ольга]]
- [[Елена]]
# 📚 Материалы и инструменты
- 📝 Контент
	- [[Демо-кейсы]]
	- [[Контент-план]]
	- [[Статьи]]
	- [[Телеграм-посты]]
- 📊 Аналитика
	- [[Метрики канала]]
	- [[Метрики статей]]

Плагинов метод не требует. Один файл в папке .obsidian/snippets/, галочка в настройках оформления - и всё.

Что прижилось без изменений

Разметка списками. Страница пишется руками за полминуты. Добавить тему - новая строка. Переставить - перетащить строку. Ни запросов, ни отладки, ни синтаксиса, который надо помнить.

Три уровня. Главная ведёт на тематические страницы: «Работа», «AI», «Бокс», «Чай». Внутри «Работы» - свои: «Статьи», «Контент-план», «Телеграм-посты», карточки клиентов. С них уже открываются сами заметки.

Эмодзи перед темами. Работает лучше, чем можно ожидать. Глаз цепляется за значок быстрее, чем прочитывает слово, и на странице из сорока ссылок это экономит время на каждом заходе.

Сейчас таких страниц у меня 44.

Что пришлось дописать самому

Одна правка в сниппете всё же понадобилась.

Не в каждом разделе есть подтемы. «Клиенты» у меня - просто несколько ссылок подряд. Исходный сниппет раскидывает по колонкам любой список без разбора, поэтому четыре ссылки размазывались на всю ширину экрана по одной строке в колонке. Занимало это полстраницы, читалось рвано.

Решение в две строки:

/* Разделы без подтем - показывать одним списком */
.dashboard div>ul:not(:has(>li>ul)) {
    column-count: 1;
}

Правило :has() позволяет выбрать элемент по тому, что лежит внутри него. Здесь оно читается так: взять список, внутри которого ни у одного пункта нет вложенного списка, и оставить его в одной колонке.

Что оказалось лишним

Статистика на DataviewJS. Автор предлагает вывести на страницу список недавно изменённых файлов, счётчики заметок и подборки по тегам - для этого нужен плагин Dataview. Я попробовал и снял. На странице-указателе мне нужны ссылки; счётчики её только удлиняют, а решения, куда идти, не меняют.

Баннеры. У автора это заметная часть метода: широкая картинка сверху каждой страницы, отдельный плагин, рекомендация ставить высоту 150 пикселей. Идея в том, что изображение настраивает на нужный лад. У меня баннер занимал верх экрана, ради которого я на страницу и заходил.

HTML-заголовок. Сниппет умеет красиво размещать заголовок страницы, если вписать в заметку <div class="title">HOME</div>. Я обошёлся эмодзи прямо в имени файла: 🏠 Homepage. Так заголовок виден в поиске и в списке файлов. HTML-вариант появляется только при чтении.

Плагин Emoji Toolbar. Системный выбор эмодзи справляется.

Собственный мобильный блок. Этот пункт мне нравится больше остальных, потому что он не про чужой метод, а про мой код. В исходном сниппете нет правил под узкие экраны, и когда-то я дописал свой: колонки в одну, перенос длинных названий вместо обрезки, отступ под вырез камеры.

Готовя статью, я полез снимать скриншоты «до» и «после». Отключил блок, перезапустил Obsidian на телефоне, посмотрел на самую длинную ссылку в хранилище - 46 символов. Она переносилась на вторую строку. Включил блок обратно, перезапустил снова - переносилась ровно так же.

Блок не делает ничего. Как минимум часть его работы платформа выполняет и без него: на узком экране колонка шириной 220 пикселей помещается ровно одна, и просить об этом отдельно незачем. Сколько он там пролежал в таком виде, я не знаю - ни разу не открывал, потому что всё работало.

Это и есть обычная судьба заплатки. Ты дописываешь её под конкретную поломку, поломка со временем исчезает сама, а строчки остаются лежать в конфиге и выглядят нужными. Заметить это можно, только когда сядешь объяснять кому-то, как оно устроено.

На странице-указателе нет текста

Дальше - то, чего в методе нет и без чего он у меня переставал работать.

Первое правило: на странице-указателе нет ничего, кроме ссылок. Никаких описаний и пояснений.

Тянет туда писать именно потому, что это самая посещаемая страница хранилища. Мысль по теме проще всего записать там же, где ты на тему смотришь. Один абзац выглядит безобидно, через месяц их пять, а через полгода на месте короткого списка лежит заметка на три экрана, по которой уже ничего не найти. Ради поиска страница и создавалась.

Всё описательное я выношу в отдельную заметку и ставлю на неё ссылку одной строкой. Три заметки - «Позиционирование профиля», «Контент», «Ритм публикаций» - и три строки на странице раздела.

Архив на каждой странице

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

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

Поэтому у меня на каждой такой странице последним разделом стоит «📦 Архив». Отработавшая ссылка переезжает туда одной строкой. Файл остаётся на месте, поиск его находит, история сохраняется - из рабочего поля зрения он просто уходит.

Чем окупилась дисциплина

Правило «на странице-указателе только ссылки» выглядит вкусовщиной ровно до того момента, когда захочется что-нибудь автоматизировать.

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

Собирает этот блок стартовый шаблон Templater. Пул кандидатов складывается из трёх источников: папка с цитатами, папка с мыслями из книг и обход по ссылкам от раздела «Мысли и развитие» на главной, вглубь до трёх уровней.

Весь фокус в том, как обход отличает страницу-указатель от обычной заметки:

function isHub(file) {
  const fm = app.metadataCache.getFileCache(file)?.frontmatter;
  const cls = fm?.cssclasses ?? fm?.cssclass;
  if (!cls) return false;
  return Array.isArray(cls)
    ? cls.some(c => String(c).trim() === 'dashboard')
    : String(cls).trim() === 'dashboard';
}

Указатель раскрывается дальше по своим ссылкам, обычная заметка идёт в пул. Плюс отсекается пустое: если в заметке кроме ссылок и заголовков меньше двадцати символов текста, показывать там нечего. Дальше берётся случайный файл из пула, у него срезается фронтматтер, содержимое заворачивается в callout и подставляется на главную между двумя маркерами-комментариями.

Интересно здесь не то, что скрипт короткий. Интересно, что он ходит по навигации, а не по папкам и не по тегам. Пул определяется тем, что я сам вынес на главную в раздел «Мысли». Добавил туда новую тему - её заметки автоматически попали в ротацию. Убрал - выпали. Скрипт при этом не меняется, потому что структура для него читаема: указатели помечены свойством, а всё остальное содержит текст.

Так что дисциплина, которая двумя разделами выше выглядела занудством, оказалась условием работоспособности. Однородную структуру может читать программа, разнородную - только человек.

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

Плоская папка вместо дерева

Здесь я ушёл от исходного метода дальше всего. У автора в примерах обычное дерево папок: Family/Recipes, запросы по путям.

У меня 396 заметок из 801 лежат в одной папке без всякой структуры. Подпапок шесть, и каждая существует по технической причине, а не по смысловой:

Папка

Зачем

кайдзен/

автоподстановка шаблона по папке

литература/

картотека книг на файлах .base

чай/

картотека на файлах .base

телеграм-посты/

однотипные файлы, отдельный шаблон

черновики/

рабочая зона до обработки

metrics/

служебные файлы автосбора

Всё остальное лежит плоско.

Работает это только в паре со страницами-указателями. Папка отвечает на вопрос «где физически лежит файл», и когда поиск переехал на ссылки, вопрос перестал меня занимать. Заметка про базы данных линкуется из страницы «Работа с заметками», из карточки клиента и из страницы «Статьи» - трижды, в трёх разных смыслах, без единой копии файла.

В обратную сторону не работает: без ссылочного слоя плоская папка на четыреста файлов становится помойкой за пару месяцев.

Что получилось

801 заметка, 44 страницы-указателя, четыре CSS-сниппета. Перемещение по хранилищу не зависит ни от одного плагина: всё держится на свойстве cssclasses и обычных списках markdown. Плагин Homepage у меня стоит - он открывает хранилище сразу на главной и вешает её на Alt+H, - но метод работает и без него, достаточно оставить нужную вкладку открытой.

Метод пережил и перенос за пределы моего хранилища. Я собираю системы в Obsidian на заказ, и клиентские проекты устроены так же: карточка клиента как входная страница, с неё ссылки на «Дано», «Решение», «Историю». Человек, который видит Obsidian вторую неделю, разбирается в такой странице сразу - там нет ничего, кроме списка ссылок. Ни один инструмент планирования, который я пробовал предлагать клиентам, не принимался так легко.

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

А если хочется коротких разборов между статьями - они у меня в телеграм-канале.