Назад к блогу

Как использовать ИИ прямо на вашем Kindle

2025-10-045 min read

Это повторяется снова и снова. Я читаю на своем Kindle, натыкаюсь на что-то, что не до конца понимаю, и сталкиваюсь с тем же досадным выбором: отложить Kindle и взять телефон, или мучиться с браузером Kindle, пытаясь использовать интерфейс ChatGPT, который не был создан для экранов E-Ink.

После того как я достаточно с этим намучился, я провел эти выходные за созданием Kindle-ChatGPT: простого ИИ-чата, который работает прямо в браузере вашего Kindle. Не нужно скачивать приложение или создавать учетную запись. Просто введите свой вопрос и получите ответ, оптимизированный для E-Ink.

Проблема с ИИ на Kindle

Когда я читаю на своем Kindle и натыкаюсь на что-то, что хочу понять лучше, у меня есть два варианта:

  • Отложить Kindle и взять телефон
  • Попытаться использовать браузер Kindle для доступа к традиционному интерфейсу ИИ-чата, который не оптимизирован для дисплеев E-Ink

Ни один из вариантов не идеален. Первый прерывает мой поток чтения, а второй предлагает интерфейс, которым мучительно пользоваться на экране E-Ink из-за низкой частоты обновления и ограниченной интерактивности.

Что я создал

Kindle-ChatGPT — это веб-приложение, разработанное специально для браузеров электронных книг Kindle. Вот что делает его удобным для Kindle:

  • Высококонтрастный дизайн: Черно-белый интерфейс, оптимизированный для дисплеев E-Ink
  • Простое взаимодействие: Минималистичный интерфейс, работающий с учетом ограничений браузера Kindle
  • Вход не требуется: Мгновенный доступ без создания учетной записи
  • Легковесность: Быстрая загрузка и минимальный расход батареи
  • Потоковая передача ответов: Ответ ИИ появляется постепенно, как в ChatGPT

Название содержит «ChatGPT», потому что люди ищут именно это, но на самом деле под капотом используется API Gemini от Google.

Техническая реализация

Я создал Kindle-ChatGPT, используя следующие технологии:

  • Next.js 15: Фреймворк React с рендерингом на стороне сервера
  • TypeScript: Типобезопасность для лучшего качества кода
  • Tailwind CSS: CSS с утилитами для быстрой разработки интерфейса
  • Google Gemini AI: В частности, модель gemini-2.5-flash-lite-preview-09-2025
  • Cloudflare Workers: Периферийные вычисления для быстрой глобальной производительности

Почему Gemini, а не ChatGPT?

Хотя сервис называется «ChatGPT» для лучшей обнаруживаемости, я выбрал API Gemini от Google по нескольким техническим причинам:

  • Лучший бесплатный тариф: Gemini предлагает более щедрые лимиты запросов для бесплатного использования
  • Более быстрые ответы: Модель flash-lite оптимизирована для скорости
  • Нативная потоковая передача: Встроенная поддержка SSE (Server-Sent Events) для постепенного вывода ответов
  • Меньшая задержка: Хорошо работает с периферийной сетью Cloudflare

Ключевые технические проблемы

Разработка для Kindle представила уникальные проблемы:

1. Определение браузера Kindle

Приложение работает только в браузерах Kindle, чтобы сохранить фокус на оптимизированном опыте. Я реализовал определение устройства, чтобы пользователи получали интерфейс, специально разработанный для дисплеев E-Ink.

2. Ограничение скорости без аутентификации

Поскольку входа в систему нет, я реализовал ограничение скорости на основе IP с использованием хранилища Cloudflare KV:

// Конфигурация ограничения скорости
const RATE_LIMIT_PER_MINUTE = 10; // Максимум 10 запросов в минуту
const DAILY_MESSAGE_LIMIT = 100; // Максимум 100 сообщений в день
const MAX_MESSAGE_LENGTH = 5000; // Максимум 5000 символов на сообщение

Это предотвращает злоупотребления, сохраняя при этом сервис бесплатным и доступным.

3. Потоковая передача ответов для E-Ink

Дисплеи E-Ink имеют низкую частоту обновления, поэтому мне нужно было найти баланс между скоростью потоковой передачи и читаемостью. Реализация использует Server-Sent Events (SSE) для потоковой передачи ответов от Gemini:

const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_MODEL}:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}`;

const response = await fetch(apiUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
contents,
generationConfig: {
temperature: 0.7,
maxOutputTokens: 2048,
topP: 0.95,
topK: 40,
},
}),
});

4. Управление историей разговора

Чтобы предоставлять контекстно-зависимые ответы, я храню историю разговора на стороне клиента и отправляю ее с каждым запросом:

const contents = (history || []).map((msg: { role: string; content: string }) => ({
role: msg.role === 'assistant' ? 'model' : 'user',
parts: [{ text: msg.content.substring(0, MAX_MESSAGE_LENGTH) }],
}));

Как использовать

Использовать Kindle-ChatGPT очень просто:

  1. Откройте веб-браузер вашего Kindle (Меню → Экспериментальный браузер или Веб-браузер, в зависимости от вашей модели)
  2. Перейдите по адресу kindle-chatgpt.com
  3. Начните вводить свой вопрос в текстовое поле
  4. Нажмите Enter или кнопку «Отправить»
  5. Наблюдайте, как появляется ответ

Сценарии использования в реальной жизни

Вот как я на самом деле использую его во время чтения:

  • Быстрые определения: «Что такое 'эпистемология' простыми словами?»
  • Контекст об исторических событиях: «Что происходило в Европе в 1848 году?»
  • Разъяснение концепций: «Объясни квантовую запутанность так, будто мне 12 лет»
  • Справка об авторе: «Кто такой Юваль Ной Харари и каков его бэкграунд?»
  • Рекомендации книг: «Какие еще книги похожи на 'Sapiens'?»
  • Помощь в написании: «Помоги мне перефразировать это предложение, чтобы оно было понятнее»

Главное — мне никогда не приходится покидать Kindle. Разговор остается в контексте, а высококонтрастный интерфейс не напрягает глаза.

Почему только для Kindle?

Некоторые спрашивали, почему я ограничил его браузерами Kindle. Вот мои соображения:

  • Сфокусированная оптимизация: Ориентируясь на один тип устройства, я могу оптимизировать весь опыт
  • Четкое ценностное предложение: Пользователи Kindle точно знают, что они получат
  • Предотвращение неправомерного использования: Ограничивает потенциал для бот-трафика и злоупотреблений
  • Эффективность батареи: Упрощенный интерфейс разработан специально для характеристик энергопотребления E-Ink

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

Безопасность и конфиденциальность

Поскольку аутентификация отсутствует, конфиденциальность была главной заботой:

  • Хранение данных отсутствует: Разговоры не сохраняются на сервере
  • Отслеживание отсутствует: Никакой аналитики или файлов cookie, кроме необходимых для ограничения скорости
  • Ограничение скорости на основе IP: Использует Cloudflare KV с автоматическим истечением срока действия
  • Проверка ввода: Строгие ограничения на длину сообщений и проверка содержимого
  • Заголовки безопасности: Правильные CSP, X-Frame-Options и другие заголовки безопасности

Развертывание на Cloudflare

Я развернул это на Cloudflare Workers с помощью @opennextjs/cloudflare, который адаптирует Next.js для периферийной сети Cloudflare. Это дает несколько преимуществ:

  • Глобальная периферийная сеть: Быстрое время отклика по всему миру
  • Бесплатный тариф: 100 000 запросов в день по бесплатному плану
  • Хранилище KV: Встроенное хранилище ключ-значение для ограничения скорости
  • Автоматическое масштабирование: Обрабатывает всплески трафика без дополнительной настройки

Процесс сборки прост:

npm run pages:build
npm run deploy

Извлеченные уроки

Создание этого проекта научило меня нескольким вещам о работе с ограниченными средами:

1. Ограничения могут упростить принятие решений

Ограничения Kindle (медленное обновление, ограниченный JavaScript, базовая поддержка CSS) заставили меня отбросить ненужную сложность. В итоге получилось что-то более простое и сфокусированное.

2. Прогрессивное улучшение имеет значение

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

3. Создание для себя ускоряет итерации

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

4. Бесплатные сервисы нуждаются в четких лимитах

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

Что дальше

Я рассматриваю следующие дополнения:

  • Поддержка нескольких моделей ИИ (позволить пользователям выбирать между Gemini, Claude и т. д.)
  • Сохранение истории разговоров (необязательно, с согласия пользователя)
  • Интеграция со встроенным словарем Kindle
  • Экспорт разговоров по электронной почте

Но я осторожен с добавлением функций. Простота — это часть того, что делает его хорошо работающим на Kindle.

Попробуйте сами

Если у вас есть электронная книга Kindle, попробуйте ее на kindle-chatgpt.com. Это бесплатно и не требует регистрации.

Оставайтесь в курсе

Получайте последние статьи и идеи в свой почтовый ящик.

Unsubscribe anytime. No spam, ever.