Создаем картотеку людей в Obsidian максимально лениво или «Тронул мышку — проиграл»
Я уже писал на Хабре статью, что такое СДВГ и как он влияет на жизнь. Жизнь с этим синдромом создаёт свои трудности и я (как имеющий этот синдром) ненавижу и максимально стараюсь избегать любую рутину.
Иногда это доходит до крайности — мне необходимо заполнить какие-то заметки, но они все одинаковые. Ты их копируешь, вставляешь, опять поднимаешь руку к мышке, пытаешься попасть в нужную строку иии… глючит при прокрутке ролик, ты промазываешь и эмоции такие, что хочется выкинуть всю технику в окно.
Поэтому я сделал для себя кучу шаблонов заметок, которые очень быстро заполняются по правилу игры «Тронул мышку — проиграл«. Эти шаблоны сильно облегчили мою жизнь и одним таким шаблоном я и хочу поделиться.
Содержание статьи
Rolodex
Вы вряд ли слышали про Rolodex. Это картотека, которая связана больше с американской культурой. Удобно было обменяться визитками и сразу вставить в свой ролодекс, потому что визитки уже имели специальные прорези под это:

У миллиардера Джона Рокфеллера карточки ролодекса выглядели более массивно и информативно (и, по некоторым данным, их у него было около 200 тысяч):

Давайте возьмем подобный формат за основу нашего ролодекса, а именно Имя, Фамилия, Момент знакомства с человеком и Заметки о человеке в свободной форме.
Предварительная настройка Obsidian
Пошаговая инструкция для полнейших чайников, у кого всё ещё нет Obsidian (или пропускаем этот раздел, если, в целом, уже умеете пользоваться приложением):
-
Скачиваем Obsidian с официального сайта, если до сих пор этого не сделали: https://obsidian.md/download
-
Запускаем Obsidian. Нас встречает Главное меню приложения. Можете изменить язык на Русский в выпадающем меню, я же это делать не буду (но буду дублировать свои выборы на русском языке).
Выбираем в меню Create new vault (Создать новое хранилище). Кликаем по Create (Создать). -
Vault name (Имя хранилища) выбираем какое Вашей душе угодно. Но лучше не использовать пробелы, называть хранилище одним словом.
-
Location (Расположение) лучше не делать длинным и не иметь пробелы в пути (это не обязательно, просто с большой базой становится сложнее работать со скриптами). Лучше лаконично, к примеру, «C:Work». Итак, я создал хранилище в C:Work и назвал её rolodex, кликнув по Create (Создать):

Всё, мы всё создали и, в целом, настраивать даже ничего и не нужно в самом приложении, из коробки всё уже хорошо:

Но если Вам что-либо нужно изменить — необходимо кликать по шестеренке напротив названия нашего хранилища. К настройкам мы ещё далее вернемся.

Настройка шаблона Rolodex
Создаем новую папку, назовём её Templates.

Перейдем в Настройки (кликнув по той самой шестеренке, как я объяснял выше). Переходим в Community plugins (Сторонние плагины):

Включаем Turn on community plugins (Включить плагины сообщества) и выбираем Browse (Обзор):

У меня сразу тут вылез нужный мне Templater. Устанавливаем его. Для этого переходим по нему и кликаем по Install (Установить) и Enable (Включить):

Заходим сразу в Options (Настройки) и выбираем Templates, как папку по умолчанию:

Создаём новую заметку в папке Templates и называем её Rolodex Template:

И вставляем этот код прямо в заметку:
---
<%*
/*
* © 2025 Jarwix
*
* Этот шаблон предоставляется по лицензии MIT.
* Вы можете использовать, изменять и распространять его свободно,
* при условии обязательного указания автора и включения этой лицензии.
*
* Author: Jarwix (https://t.me/sdvghack)
*/
%>
title: <%*
const surname = await tp.system.prompt("Введите фамилию");
const name = await tp.system.prompt("Введите имя");
const title = `${surname.trim()} ${name.trim()}`;
tR += title;
%>
created: <% tp.date.now("YYYY-MM-DD HH:mm") %>
<%*
let categories = [
"Друзья",
"Коллеги",
"Семья",
"Клиенты",
"Партнёры",
"Знакомые",
"Образование",
"Другое"
];
let selectedCategory = await tp.system.suggester(
categories,
categories,
false,
"Выберите категорию контакта"
);
let rolesByCategory = {
"Друзья": ["Друг", "Близкий друг", "Романтический партнёр"],
"Коллеги": ["Коллега", "Руководитель", "Подчинённый", "Наставник", "Ученик"],
"Семья": ["Родственник", "Супруг/Супруга", "Родитель", "Ребёнок", "Брат/Сестра"],
"Клиенты": ["Клиент", "Заказчик", "Контрагент"],
"Партнёры": ["Деловой партнёр", "Инвестор", "Соавтор"],
"Знакомые": ["Знакомый", "Сосед", "Бывший коллега"],
"Образование": ["Учитель", "Преподаватель", "Наставник", "Тренер", "Репетитор"],
"Другое": ["Коуч", "Советник", "Вдохновитель", "Спикер", "Онлайн-знакомый", "Знаменитость", "Другое"]
};
let roles = rolesByCategory[selectedCategory] || ["Другое"];
let selectedRole = await tp.system.suggester(
roles,
roles,
false,
"Выберите роль контакта"
);
tR += `category: ${selectedCategory}nrole: ${selectedRole}`;
%>
birthday: <%*
let birthday = await tp.system.prompt("Введите день рождения (например, 1990-05-15)", "-");
birthday = birthday.trim();
if (!birthday.match(/^d{4}-d{2}-d{2}$/)) {
birthday = "";
}
tR += birthday;
%>
tags:
- Rolodex
- Person
- Контакт
---
# Карточка: <% title %>
**Дата создания:** <% tp.date.now("YYYY-MM-DD") %>
---
## Основная информация
**Место работы/учебы:** <%*
let workplace = await tp.system.prompt("Введите место работы/учебы (например, Поликлиника в Химках)", "-");
tR += workplace.trim();
%>
**Должность:** <%*
let jobtitle = await tp.system.prompt("Введите название должности (например, врач)", "-");
tR += jobtitle.trim();
%>
**Знакомство:** <%*
let meeting = await tp.system.prompt("Как именно познакомились (в чате, лично, можно краткую историю)", "-");
tR += meeting.trim();
%>
**Дата знакомства:** <%*
let timemeeting = await tp.system.prompt("Введите дату знакомства (год, если не получается вспомнить точную дату)", "-");
tR += timemeeting.trim();
%>
---
## Контактные данные
**Телефон:** <%*
let phone = await tp.system.prompt("Введите номер телефона", "Не указан");
tR += phone.trim();
%>
**Email:** <%*
let email = await tp.system.prompt("Введите email", "Не указан");
tR += email.trim();
%>
**Социальные сети:** <%*
let socials = await tp.system.prompt("Введите ссылки на соцсети (или оставьте пустым)", "Не указаны");
tR += socials.trim();
%>
---
## Заметки
<%*
let notes = [];
let continueAdding = true;
while (continueAdding) {
const note = await tp.system.prompt("Введите заметку о человеке, его хобби, отношение к Вам. Можно вводить несколько пунктов через Enter. Для завершения оставьте пустое поле.");
if (note) {
notes.push(note);
} else {
continueAdding = false;
}
}
if (notes.length > 0) {
tR += notes.map(n => `- ${n}`).join("n");
} else {
tR += "- Нет заметок";
}
%>
---
## Встречи и события
<%*
let flag = true;
let events = await tp.system.prompt("Добавить событие или встречу? (или оставьте пустым)");
if (events) {
tR += `- [ ] ${events} #rolodexn`;
flag = false;
}
if (!birthday) {
tR += `- [ ] Узнать и добавить день рождения #rolodexn`;
flag = false;
}
if (notes.length == 0) {
tR += `- [ ] Нет заметок — необходимо узнать о человеке побольше #rolodexn`;
flag = false;
}
if (flag){
tR += `- [ ] Нужно что-то запланировать совместное с человеком? #rolodexn`;
}
%>
<%*
let fileName = `${title}`;
let startFolder = `Картотека`;
const firstLetter = fileName.charAt(0).toUpperCase();
let targetFolder = "";
if (/[А-И]/.test(firstLetter)) {
targetFolder = `${startFolder}/А-И/${firstLetter}`;
} else if (/[К-Т]/.test(firstLetter)) {
targetFolder = `${startFolder}/К-Т/${firstLetter}`;
} else if (/[У-Я]/.test(firstLetter)) {
targetFolder = `${startFolder}/У-Я/${firstLetter}`;
} else if (/[A-I]/.test(firstLetter)) {
targetFolder = `${startFolder}/A-I/${firstLetter}`;
} else if (/[J-Q]/.test(firstLetter)) {
targetFolder = `${startFolder}/J-Q/${firstLetter}`;
} else if (/[R-Z]/.test(firstLetter)) {
targetFolder = `${startFolder}/R-Z/${firstLetter}`;
} else {
targetFolder = `${startFolder}/-Другое`;
}
let finalFilePath = `${targetFolder}/${fileName}`;
let counter = 2;
while (await app.vault.adapter.exists(`${finalFilePath}.md`)) {
finalFilePath = `${targetFolder}/${fileName} - ${counter}`;
counter++;
}
await tp.file.rename(fileName);
await tp.file.move(finalFilePath);
%>
Тронул мышку — проиграл
Следим за пальцами, чтобы они не переключились на мышку:
-
CTRL+N (создаём новую заметку).
-
ALT+E (горячая клавиша Templater, возможно придется переключить раскладку клавиатуры на Английский язык).
-
Клавиша вниз и Enter:
-
Вводим фамилию. Enter:
— -
Вводим Имя. Enter:
-
Стрелочками выбираем Категорию контакта. Enter:
-
Выбираем Роль контакта. Enter:
-
Вводим дату рождения в формате ГГГГ-ММ-ДД (можем пропустить, если не знаем). Enter:

-
Вводим место работы (или пропускаем, если не знаем). Enter:

-
Вводим название должности у человека (пропускаем, если пока не знаем). Enter:

-
Вводим как и где познакомились с человеком (тоже можно пропустить). Enter:

-
Вводим дату знакомства. Можно в свободной форме, если не знаете точно. Enter:



-
Номер телефона и другие пункты я заполнять не буду, пусть они будут не указаны. Вообще было бы умнее номер телефона и другие данные вытащить во Frontmatter, но здесь это не особо имеет смысла, так как с такими данными никакого аналитики не построить или какой-то особый парсинг не нужен (а день рождения, например, важен).

-
Здесь вводим заметки о человеке, как в ролодексе у Рокфеллера. Важные даты у человека, его интересы и т.д. Не старайтесь разные мысли ввести в одну строку, лучше мысли разделить на несколько пунктов. Помните, к этому и всем остальным пунктам Вы можете вернуться позже. Enter (с пустым полем для перехода к следующему пункту):

-
Вы можете добавить сразу событие или встречу с этим человеком, она появится с тегом #rolodex. Я оставлю пустым, чтобы показать что будет при пустом вводе. Enter:

Карточка сгенерирована. Что сразу видно: создана папка Картотека, в ней создалась папка А-И и далее буква под фамилию человека И. То есть не нужно волноваться про создание папок и подпапок, шаблон сделает всё сам.

Мы не заполнили последний этап, поэтому появился отдельный пункт снизу, чтобы человек не выпал вообще из вашего поля зрения и Вы его не забыли, когда будете вытаскивать данные по тегу #rolodex. Если, например, не будет введена дата рождения — будет напоминание о том, чтобы Вы узнали информацию о дне рождения. Если не будет заметок — будет напоминание о том, что нужно узнать о человеке побольше.
Ну и финальный вид, как бы это выглядело, если бы были найдены все люди на все папки:

Выложу ещё некоторые шаблоны у себя в Telegram-канале, где я делюсь своими лайфхаками по борьбе с СДВГ и выкладываю некоторые свои разработки: https://t.me/sdvghack
Автор: Jarwix