
В своих заметках часто хочется сослаться на определённого контакта. Более того, именно в заметках хочется отметить кого-то определённого и описать, в чём его особенность.
Например, контакт строителя, который делал ремонт в спальне и запомнился отличными навыками по электрике.
Писать подобные заметки в самой телефонной книжке не очень удобно, и сложно впоследствии находить нужные контакты.
Дублировать контакт в Obsidian — это и время занимает, и неизбежно приведёт к конфликтам в данных.
Ведение части контактов в телефонной книжке, а части — в Obsidian — вообще приведёт к хаосу, в котором непонятно будет, как и где искать нужный контакт.
В очередные выходные пришла идея: почему бы не сделать синхронизацию телефонной книжки с Obsidian?
Пускай первичным источником остаётся телефонная книга, а в Obsidian по каждому контакту создаётся заметка контакта с различными контактными и персональными данными в блоке мета-данных, а всё, что ниже, — будет свободной зоной для любых заметок в свободной форме.
Телефонная книга у меня в Google. Соответственно, всё, что необходимо сделать — это написать плагин, который будет соединяться с API, вытягивать все контакты и создавать заметки.
В начале спросил у ChatGPT, какой должна быть структура файлов проекта для подобного плагина для Obsidian.
Получив ответ, сразу попросил LLM-ку реализовать код.
С первого раза не запустилось: пришлось добавить парочку import
в первой строке TypeScript-файла.
Далее выяснилось, что ИИ придумал компонент диалогового окна, которого не существует, но быстро исправился и прислал код для нового модального окна.
В результате проект без проблем сбилдился. Ещё пришлось поинтересоваться у чата, что дальше делать с этим билдом и в какую папочку Obsidian положить, чтобы получился плагин.
Далее — немного танцев с бубном вокруг Google API: создание приложения в клауде, OAuth-клиента. За счёт помощи GPT на всё ушло не более 30 минут и... оно заработало.
Поиск заметки по уникальному Google ID контакта — в мета-данных. Если заметки нет — создаётся. Если есть — обновляется блок мета-данных, не трогая нижнюю часть.
---
id: 123456789
name: Ivan Ivanov
email: ivan@example.com
phone: "+7-999-000-0000"
synced: 2025-04-19
---
# Notes
Here is the text, which won't be overriden after the sync
Конечно, если глянуть код — он не выглядит идеальным. Да и получение токена авторизации не реализовано. Однако хотелось просто поделиться идеей, что контакты можно автоматически синхронизировать с Obsidian, тем самым не только расширив возможности ведения заметок по контактам, но и создав своего рода локальный «бэкап» телефонной книги в ином формате. А результаты этого небольшого эксперимента говорят о том, что отсутствие плагина — это больше вообще не проблема, и современные LLM без проблем справляются с хитрыми запросами пользователей.
Ссылка на проект в github.