Собрала свой плагин для Obsidian. Это Tome Reader — читалка EPUB с четырьмя темами, выделением текста в заметки и в словарные карточки, закладками, правкой опечаток прямо во время чтения, автоматическим оглавлением для «битых» книг и опциональным AI‑ассистентом, куда пользователь добавляет собственный ключ. Читалка доступна в официальном каталоге плагинов Obsidian.

Зачем вообще своя читалка

Однажды в поисках вдохновения решила просмотреть заметки по книгам в своей базе Obsidian. И… либо я читала катастрофически мало, либо после прочтения забывала создавать заметки в базе знаний (что больше похоже на правду). Стало очевидно, постоянно напоминать себе вносить интересные цитаты и свои мысли в Obsidian — плохой план. Лучше автоматизировать сам процесс и читать там же, где живёт моя система знаний.

Для начала я решила изучить существующие плагины, но варианта, закрывающего все мои задачи, не нашла. Так я и пришла к идее создать плагин‑читалку для Obsidian. Гениальный план, подобный завоеванию Трои, учитывая, что из языков программирования на курсах изучала только Python. Поэтому вайб‑кодинг мне в помощь.

Первое, что я сделала, выписала требования:

  1. Удобно читать на планшете и телефоне, так как читаю я в основном не за компьютером.

  2. Выделил → в заметку или в словарь, прямо из текста и без копипаста (при этом заметка по новой книге создаётся автоматически).

  3. Темы «как бумага» и всё настраиваемое: шрифт, размер, перелистывание.

  4. EPUB обязателен, FB2 — желательно, PDF — по возможности.

  5. Умный помощник, без ИИ сейчас никуда.

Кстати, брифовать самого себя — это полезная привычка не только при вайб‑кодинге, но и перед началом любой более‑менее сложной задачи.

Как я ставила задачу нейросети

Как вы уже поняли, код писала нейросеть. Для меня это давно рабочий инструмент, как автодополнение или подсветка синтаксиса. Сразу оговорюсь, что не считаю вайб‑кодинг универсальной таблеткой. ИИ может написать много кода, но разбираться в инструменте всё равно придётся. А составить продуманное описание и план работы — это хороший первый шаг.

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

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

И так далее прописывала необходимые функции и как я это вижу шаг за шагов в единую задачу.

Главное помните, при вайб‑кодинге задачи должны быть не абстрактными, а конкретными и измеримыми, прямо как те, что мы ставим себе на работе. Тут хочется выделить несколько правил (как я люблю правила):

  • Задача и критерий готовности (результат). Не «сделай красиво», а конкретные кнопки, цвета, функции и тому подобное

  • «Объясни, прежде чем я применю». Это хорошая привычка держать руку на пульсе и + отличный способ чему‑то научиться по дороге.

  • Давайте нейросети контекст. Для кого вы это делаете, где будет использоваться, если какие‑то ограничения (например, по безопасности или блокировки)

  • Проверять. ИИ ошибается уверенно, с ровной интонацией и без тени сомнения. Лучше прописать на старте, что нужна обратная связь после каждого существенного шага.

  • Подробно описывайте ошибки, что не так. Хороший результат получается из нормального диалога (прямо как с человеком). Задача → результат → проверка → корректировка.

Никакого секретного промпта не существует. Есть внятность и терпение.

Что умеет Tome Reader

Файл .epub из вашего хранилища открывается в обычной вкладке Obsidian, как заметка. Плагин запоминает позицию чтения, плюс может создавать закладки, если читаете в разных местах книги. Закрыли, вернулись через какое‑то время и продолжили с того же места.

Перелистывание — тап у края страницы или клавиши, есть опциональная анимация (по умолчанию выключена в настройках). В шапке пишется название, текущая глава и процент прогресса.

Четыре темы и настройка на лету

Классическая светлая и тёмная + темы, которые более всего удобны мне для чтения: «Пергамент» (имитация старой бумаги и тёмно‑коричневых чернил) и «Серый туман» (тёмный фон с багровым акцентом, стиль моей системы Obsidian).

Панель Aa прямо в читалке. Тема, размер шрифта, межстрочный интервал, цвет текста можно менять на странице, а не только в настройках.

Выделил → и оно уже в базе

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

В заметку уходит цитата вместе с названием главы и, если хочется, ваши мысли по поводу заметки. Если заметки ещё нет, то она создается автоматически в папке, которую вы указали в настройках.

В словарь падает строка в формате плагина Spaced Repetition. Т.е. если в процессе чтения книги, я выделила незнакомое слово и отправила его в нужный словарь с переводом, то назавтра оно придёт ко мне на повторение уже как флеш‑карточка. Словарей может быть несколько, они добавляются в настройках.

Оглавление, поиск по главам и закладки

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

Оглавление для книг, у которых его нет

Отдельная беда, с которой я столкнулось, — это книги, у которых оглавления нет вовсе. Конвертированные файлы в EPUB из PDF сплошь и рядом приходят с единственной записью «Start». Открыл том на сотни страниц, а прыгать некуда.

Tome Reader в этом случае строит оглавление сам, то есть проходит по тексту и вылавливает заголовки. Причём заголовком считается не только настоящий заголовок, но и абзац, который выделен жирным и начинается со слов «Глава», «Часть», «Пролог» или с номера. Собранное оглавление кэшируется, поэтому сканирование происходит один раз.

В этом месте стоит обязательно сделать оговорку, если конвертер из PDF съел разметку заголовков вообще (текст едет «столбиком», абзацы разорваны), то собирать будет не из чего. Также она банально может в таких файлах распознать не все главы (я как раз с такой и проблемой столкнулась при конвертации книги из PDF). Читалка старается, но скажем прямо, это не Джарвис Тони Старка.

Правка опечаток прямо в книге

Функция, которая родилась, когда я в очередной раз взорвалась от «гениального» перевода и количества опечаток... Если в переводе попадается кривая фраза, то можно исправить её прямо в файле книги, не выходя из читалки.

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

AI‑ассистент, куда вы приносите свой ключ

Эта функция появилась, когда я поняла, что во время прочтения текста мне нужна пояснительная бригада. И так как прокрастинация, судя по всему, стоит в моих настройках по умолчанию, мне лень открывать лишние вкладки и окна. Но вернёмся к AI‑ассистенту в читалке...

Ключ приносит пользователь. Без настроенного ключа плагин не делает ни единого сетевого запроса. Чтобы всё заработало как надо в настройках плагина нужно подключить свой API. Провайдер может быть любой. Groq, OpenAI, OpenRouter, Anthropic или что угодно совместимое: адрес и модель задаются в настройках. Ключ хранится локально, у вас.

Что ассистент умеет:

  • Перевод с учётом контекста. Выделяете слово и оно переводится не «по словарю», а с учётом контекста, так как у одного и того же слова часто бывает разный смысл. Перевод можно отправить в словарь, а завтра это слово придёт к вам на повторение в виде карточки. Главное не забудьте установить плагин Spaced Repetition.

  • Пояснение. Термины, идиомы, культурные отсылки и тому подобное. В общем всё то, ради чего обычно лезешь в браузер и отрываешься от чтения.

  • Свободный вопрос по тексту. Тут всё понятно, это просто уточнения каких‑то моментов, которые тебе не понятны или уже забылись по сюжету.

  • Антиспойлерный пересказ. Кнопка «Что было раньше?» пересказывает сюжет. Модель получает текст строго до вашей текущей позиции и физически не видит того, что дальше. Если вернулись к книге через месяц и забыли, кто все эти люди и что вообще происходит. Когда читаете несколько книг одновременно, то это топ‑инструмент в арсенале читалки. Пересказ можно сохранить в заметку книги вместе с главой и процентом прогресса, так что конспект по книге собирается сам.

Антиспойлерный пересказ
Антиспойлерный пересказ
Перевод с учётом контекста (специально выбрала английский интерфейс, чтобы повторять сразу два язык)
Перевод с учётом контекста (специально выбрала английский интерфейс, чтобы повторять сразу два язык)

Мелочи, которые всегда полезны

  • Интерфейс на английском и русском, переключается в настройках.

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

  • Кнопка «Проверить подключение» в настройках ИИ.

  • Исходные файлы книги читалка не трогает и никак не изменяет, кроме случаев, когда вы сами правите опечатки по тексту.

Чего плагин пока не умеет

  • Только EPUB. FB2 в планах, PDF — вопрос открытый.

  • Книги, убитые конвертацией, останутся убитыми: если разметка потеряна, восстанавливать нечего.

  • Нет свайпа «за пальцем». Перелистывание тапом, анимация опциональная.

Кому это доступно

Возможно, вы сейчас думаете: «Хочу сделать свой плагин». Я скажу так, если у вас есть интересная идея, то почему бы и да!

Чего НЕ нужно: уметь программировать, знать TypeScript, иметь техническое образование или ментора.

Что нужно:

  • Формулировать. Понимать, чего вы хотите, и уметь это сказать словами. Это, внезапно, гуманитарный навык.

  • Терпение тестировать. Любой плагин (продукт), включая читалку, проверяется, проверяется и ещё раз проверяется перед запуском. У меня было тринадцать версий читалки за три недели.

  • Не бояться ошибок. Ошибки — это не значит, что надо всё бросить. Надо извлечь уроки и попробовать ещё, ещё и ещё... Не сдавайтесь!

  • Задавать вопросы «Почему?», «Как исправить?», «Где улучшить?» и тому подобное. Это буквально вся отладка.

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

Самое важное: сохранять контроль. Мир, где инструмент берёт на себя техническую часть, — это не мир, где вопросов стало меньше. Их стало больше. Нужно всегда понимать: что делать, почему именно так делать и что будет, когда плагин или приложение сломается.

Сейчас очень классное время, когда можно воплотить многие идеи из своей головы в жизнь. Ещё пару лет назад идея, умирающая на фразе «нужно создать приложение, но я не программист», сегодня доживает до минимально жизнеспособной рабочей версии. Цена вопроса — несколько вечеров вашего времени.

Справедливости ради в программировании я немного разбираюсь и код всё‑таки пишу, но в другом месте. Как уже писала выше, я изучаю Python и создаю на нём свою визуальную новеллу с элементами RPG «КрасноЦарство.exe». Но это уже другой экспириенс.

Что дальше по плагину?

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

Напишите в комментариях:

  • Форматы. FB2 в планах. Что ещё нужно? PDF, MOBI, что‑то экзотическое?

  • Темы оформления. Четыре есть, но добавить несложно. Каких не хватает: контрастных, «ночных», под дислексию, ещё каких‑то?

  • Языки интерфейса. Сейчас английский и русский.

  • Функции. Свайп за пальцем? Прогресс чтения в свойствах заметки? Что‑то, до чего я не додумалась?

И конечно, баг‑репорты всегда приветствуются. Присылайте в issues на GitHub или прямо в комментарии.

Плагин в каталоге  ставится прямо из Obsidian: настройки → плагины сообщества → поиск «Tome Reader».

Исходники (MIT)