Retour au blog

Comment utiliser l'IA directement sur votre Kindle

2025-10-045 min read

Cela continue de se produire. Je lis sur mon Kindle, je tombe sur quelque chose que je ne comprends pas entièrement, et je fais face au même choix ennuyeux : poser le Kindle et prendre mon téléphone, ou lutter avec le navigateur du Kindle en essayant d'utiliser l'interface de ChatGPT qui n'a pas été conçue pour les écrans e-ink.

Après avoir fait face à cela suffisamment de fois, j'ai passé ce week-end à créer Kindle-ChatGPT : un chat IA simple qui fonctionne directement dans le navigateur de votre Kindle. Pas d'application à télécharger, pas de compte à créer. Tapez simplement votre question et obtenez une réponse optimisée pour l'e-ink.

Le problème avec l'IA sur Kindle

Lorsque je lis sur mon Kindle et que je rencontre quelque chose que je souhaite mieux comprendre, j'ai deux options :

  • Poser le Kindle et prendre mon téléphone
  • Essayer d'utiliser le navigateur du Kindle pour accéder à une interface de chat IA traditionnelle qui n'est pas optimisée pour les écrans e-ink

Aucune des deux options n'est idéale. La première interrompt mon flux de lecture, et la seconde me donne une interface pénible à utiliser sur un écran e-ink avec son faible taux de rafraîchissement et son interactivité limitée.

Ce que j'ai construit

Kindle-ChatGPT est une application web conçue exclusivement pour les navigateurs des liseuses Kindle. Voici ce qui la rend performante sur Kindle :

  • Conception à contraste élevé : Interface noir et blanc optimisée pour les écrans e-ink
  • Interaction simple : UI minimale qui fonctionne avec les limitations du navigateur Kindle
  • Aucune connexion requise : Accès instantané sans création de compte
  • Léger : Chargement rapide et consommation minimale de batterie
  • Réponses en streaming : Voyez la réponse de l'IA apparaître progressivement, tout comme ChatGPT

Le nom dit "ChatGPT" car c'est ce que les gens recherchent, mais il utilise en réalité l'API Gemini de Google en coulisses.

Implémentation technique

J'ai construit Kindle-ChatGPT avec ces technologies :

  • Next.js 15 : Framework React avec rendu côté serveur
  • TypeScript : Sécurité des types pour une meilleure qualité de code
  • Tailwind CSS : CSS utilitaire pour un développement UI rapide
  • Google Gemini AI : Spécifiquement le modèle gemini-2.5-flash-lite-preview-09-2025
  • Cloudflare Workers : Edge computing pour des performances mondiales rapides

Pourquoi Gemini au lieu de ChatGPT ?

Bien que le service soit nommé "ChatGPT" pour des raisons de découvrabilité, j'ai choisi l'API Gemini de Google pour plusieurs raisons techniques :

  • Meilleur niveau gratuit : Gemini offre des limites de débit plus généreuses pour une utilisation gratuite
  • Réponses plus rapides : Le modèle flash-lite est optimisé pour la vitesse
  • Streaming natif : Support SSE (Server-Sent Events) intégré pour des réponses progressives
  • Latence plus faible : Fonctionne bien avec le réseau edge de Cloudflare

Défis techniques clés

La création pour Kindle a présenté des défis uniques :

1. Détection du navigateur Kindle

L'application ne fonctionne que sur les navigateurs Kindle afin de maintenir la concentration sur l'expérience optimisée. J'ai implémenté la détection d'appareils pour m'assurer que les utilisateurs obtiennent l'interface conçue spécifiquement pour les écrans e-ink.

2. Limitation du débit sans authentification

Comme il n'y a pas de connexion, j'ai implémenté une limitation du débit basée sur l'IP en utilisant le stockage Cloudflare KV :

// Configuration de la limitation du débit
const RATE_LIMIT_PER_MINUTE = 10; // Max 10 requêtes par minute
const DAILY_MESSAGE_LIMIT = 100; // Max 100 messages par jour
const MAX_MESSAGE_LENGTH = 5000; // Max 5000 caractères par message

Cela évite les abus tout en gardant le service gratuit et accessible.

3. Réponses en streaming pour l'e-ink

Les écrans e-ink ont des taux de rafraîchissement lents, j'ai donc dû équilibrer la vitesse de streaming avec la lisibilité. L'implémentation utilise les Server-Sent Events (SSE) pour diffuser les réponses de 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. Gestion de l'historique des conversations

Pour fournir des réponses contextuelles, je maintiens l'historique des conversations côté client et je l'envoie avec chaque requête :

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

Comment l'utiliser

Utiliser Kindle-ChatGPT est simple :

  1. Ouvrez le navigateur web de votre Kindle (Menu → Navigateur expérimental ou Navigateur Web, selon votre modèle)
  2. Accédez à kindle-chatgpt.com
  3. Commencez à taper votre question dans la zone de texte
  4. Appuyez sur Entrée ou touchez le bouton Envoyer
  5. Regardez la réponse arriver en streaming

Cas d'utilisation réels

Voici comment je l'utilise réellement pendant la lecture :

  • Définitions rapides : "Que signifie 'épistémologie' en termes simples ?"
  • Contexte sur des événements historiques : "Que se passait-il en Europe en 1848 ?"
  • Clarification de concepts : "Expliquez l'intrication quantique comme si j'avais 12 ans"
  • Contexte sur l'auteur : "Qui est Yuval Noah Harari et quel est son parcours ?"
  • Recommandations de livres : "Quels autres livres sont similaires à Sapiens ?"
  • Aide à la rédaction : "Aidez-moi à reformuler cette phrase pour qu'elle soit plus claire"

L'essentiel est que je n'ai jamais à quitter mon Kindle. La conversation reste dans le contexte, et l'interface à contraste élevé ne fatigue pas mes yeux.

Pourquoi uniquement pour Kindle ?

Certaines personnes m'ont demandé pourquoi je l'avais limité aux navigateurs Kindle. Voici mon raisonnement :

  • Optimisation ciblée : En ciblant un seul type d'appareil, je peux optimiser toute l'expérience
  • Proposition de valeur claire : Les utilisateurs de Kindle savent exactement ce qu'ils obtiennent
  • Prévention des abus : Limite le potentiel de trafic de bots et d'abus
  • Efficacité de la batterie : L'interface simplifiée est conçue spécifiquement pour les caractéristiques d'alimentation de l'e-ink

Si quelqu'un essaie d'accéder au site depuis un navigateur normal, il voit une page d'accueil expliquant le service et l'encourageant à l'utiliser sur son Kindle.

Sécurité et confidentialité

Comme il n'y a pas d'authentification, la confidentialité était une préoccupation majeure :

  • Aucune sauvegarde de données : Les conversations ne sont pas enregistrées sur le serveur
  • Aucun suivi : Pas d'analyses ni de cookies au-delà de ce qui est nécessaire pour la limitation du débit
  • Limitation du débit basée sur l'IP : Utilise Cloudflare KV avec expiration automatique
  • Validation des entrées : Limites strictes de longueur de message et validation du contenu
  • En-têtes de sécurité : CSP, X-Frame-Options et autres en-têtes de sécurité appropriés

Déploiement sur Cloudflare

J'ai déployé ceci sur Cloudflare Workers en utilisant @opennextjs/cloudflare, qui adapte Next.js au réseau edge de Cloudflare. Cela offre plusieurs avantages :

  • Réseau edge mondial : Temps de réponse rapides dans le monde entier
  • Niveau gratuit : 100 000 requêtes par jour sur le plan gratuit
  • Stockage KV : Stockage clé-valeur intégré pour la limitation du débit
  • Mise à l'échelle automatique : Gère les pics de trafic sans configuration

Le processus de construction est simple :

npm run pages:build
npm run deploy

Leçons apprises

La création de ce projet m'a appris plusieurs choses sur le travail dans des environnements contraints :

1. Les contraintes peuvent simplifier les décisions

Les limitations du Kindle (rafraîchissement lent, JavaScript limité, prise en charge CSS basique) m'ont obligé à supprimer la complexité inutile. Ce que j'ai obtenu était plus simple et plus ciblé.

2. L'amélioration progressive est importante

L'application fonctionne avec un minimum de JavaScript. Si le streaming échoue, elle revient à un modèle simple de requête-réponse. Cela la rend plus résiliente.

3. Construire pour soi-même accélère l'itération

J'ai construit cela parce que j'en avais besoin. Chaque décision technique a été testée immédiatement en utilisant réellement l'application sur mon Kindle pendant la lecture.

4. Les services gratuits nécessitent des limites claires

Sans limitation de débit appropriée, un service d'IA gratuit serait exploité instantanément. La limite de 100 messages par jour est suffisamment généreuse pour une utilisation légitime mais empêche les abus.

Prochaines étapes

J'envisage ces ajouts :

  • Prise en charge de plusieurs modèles d'IA (permettant aux utilisateurs de choisir entre Gemini, Claude, etc.)
  • Historique des conversations sauvegardé (facultatif, avec le consentement de l'utilisateur)
  • Intégration avec le dictionnaire intégré du Kindle
  • Exportation des conversations par e-mail

Mais je suis prudent quant à l'ajout de fonctionnalités. La simplicité fait partie de ce qui la rend performante sur Kindle.

Essayez par vous-même

Si vous possédez une liseuse Kindle, essayez-la sur kindle-chatgpt.com. C'est gratuit et ne nécessite aucune inscription.

Restez Informé

Recevez les derniers articles et insights dans votre boîte mail.

Unsubscribe anytime. No spam, ever.