Как использовать ИИ прямо на вашем Kindle
Это повторяется снова и снова. Я читаю на своем 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 очень просто:
- Откройте веб-браузер вашего Kindle (Меню → Экспериментальный браузер или Веб-браузер, в зависимости от вашей модели)
- Перейдите по адресу kindle-chatgpt.com
- Начните вводить свой вопрос в текстовое поле
- Нажмите Enter или кнопку «Отправить»
- Наблюдайте, как появляется ответ
Сценарии использования в реальной жизни
Вот как я на самом деле использую его во время чтения:
- Быстрые определения: «Что такое 'эпистемология' простыми словами?»
- Контекст об исторических событиях: «Что происходило в Европе в 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. Это бесплатно и не требует регистрации.