Pull to refresh

Синхронизация контактов с Obsidian

Level of difficultyMedium
Reading time2 min
Views1.2K

В своих заметках часто хочется сослаться на определённого контакта. Более того, именно в заметках хочется отметить кого-то определённого и описать, в чём его особенность.
Например, контакт строителя, который делал ремонт в спальне и запомнился отличными навыками по электрике.
Писать подобные заметки в самой телефонной книжке не очень удобно, и сложно впоследствии находить нужные контакты.
Дублировать контакт в 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.

Tags:
Hubs:
0
Comments2

Articles