Hoe je AI rechtstreeks op je Kindle gebruikt
Het gebeurt steeds weer. Ik lees op mijn Kindle, kom iets tegen dat ik niet helemaal begrijp, en sta voor dezelfde vervelende keuze: de Kindle neerleggen en mijn telefoon pakken, of worstelen met de browser van de Kindle om de interface van ChatGPT te gebruiken die niet is gebouwd voor e-ink schermen.
Nadat ik dit vaak genoeg had meegemaakt, heb ik dit weekend Kindle-ChatGPT gebouwd: een eenvoudige AI-chat die rechtstreeks in de browser van je Kindle werkt. Geen app om te downloaden, geen account om aan te maken. Typ gewoon je vraag en krijg een antwoord dat is geoptimaliseerd voor e-ink.
Het probleem met AI op de Kindle
Wanneer ik op mijn Kindle lees en iets tegenkom dat ik beter wil begrijpen, heb ik twee opties:
- De Kindle neerleggen en mijn telefoon pakken
- Proberen de browser van de Kindle te gebruiken om toegang te krijgen tot een traditionele AI-chatinterface die niet is geoptimaliseerd voor e-ink schermen
Geen van beide opties is ideaal. De eerste onderbreekt mijn leesflow, en de tweede geeft me een interface die pijnlijk is om te gebruiken op een e-ink scherm vanwege de lage verversingssnelheid en beperkte interactiviteit.
Wat ik heb gebouwd
Kindle-ChatGPT is een webapp die exclusief is ontworpen voor de browsers van Kindle e-readers. Dit is wat het goed laat werken op de Kindle:
- Hoog contrast ontwerp: Zwart-witte interface geoptimaliseerd voor e-ink schermen
- Eenvoudige interactie: Minimale UI die werkt met de beperkingen van de Kindle-browser
- Geen login vereist: Directe toegang zonder een account aan te maken
- Lichtgewicht: Snel laden en minimaal batterijverbruik
- Streaming antwoorden: Zie het antwoord van de AI geleidelijk verschijnen, net als bij ChatGPT
De naam zegt "ChatGPT" omdat mensen daarop zoeken, maar onder de motorkap gebruikt het eigenlijk de Gemini API van Google.
Technische implementatie
Ik heb Kindle-ChatGPT gebouwd met deze technologieën:
- Next.js 15: React framework met server-side rendering
- TypeScript: Typeveiligheid voor betere codekwaliteit
- Tailwind CSS: Utility-first CSS voor snelle UI-ontwikkeling
- Google Gemini AI: Specifiek het gemini-2.5-flash-lite-preview-09-2025 model
- Cloudflare Workers: Edge computing voor snelle wereldwijde prestaties
Waarom Gemini in plaats van ChatGPT?
Hoewel de service "ChatGPT" heet voor vindbaarheid, koos ik om verschillende technische redenen voor de Gemini API van Google:
- Betere gratis laag: Gemini biedt ruimere snelheidslimieten voor gratis gebruik
- Snellere antwoorden: Het flash-lite model is geoptimaliseerd voor snelheid
- Native streaming: Ingebouwde SSE (Server-Sent Events) ondersteuning voor progressieve antwoorden
- Lagere latentie: Werkt goed met het edge-netwerk van Cloudflare
Belangrijkste technische uitdagingen
Bouwen voor de Kindle bracht unieke uitdagingen met zich mee:
1. Detectie van de Kindle-browser
De app werkt alleen in Kindle-browsers om de focus op de geoptimaliseerde ervaring te behouden. Ik heb apparaatdetectie geïmplementeerd om ervoor te zorgen dat gebruikers de interface krijgen die specifiek is ontworpen voor e-ink schermen.
2. Rate limiting zonder authenticatie
Aangezien er geen login is, heb ik IP-gebaseerde rate limiting geïmplementeerd met behulp van Cloudflare KV opslag:
// Configuratie van de snelheidslimiet
const RATE_LIMIT_PER_MINUTE = 10; // Maximaal 10 verzoeken per minuut
const DAILY_MESSAGE_LIMIT = 100; // Maximaal 100 berichten per dag
const MAX_MESSAGE_LENGTH = 5000; // Maximaal 5000 tekens per bericht
Dit voorkomt misbruik en houdt de service gratis en toegankelijk.
3. Streaming antwoorden voor e-ink
E-ink schermen hebben trage verversingssnelheden, dus ik moest de streamsnelheid afwegen tegen leesbaarheid. De implementatie gebruikt Server-Sent Events (SSE) om antwoorden van Gemini te streamen:
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. Beheer van de conversatiegeschiedenis
Om contextbewuste antwoorden te geven, houd ik de conversatiegeschiedenis aan de clientzijde bij en stuur deze bij elk verzoek mee:
const contents = (history || []).map((msg: { role: string; content: string }) => ({
role: msg.role === 'assistant' ? 'model' : 'user',
parts: [{ text: msg.content.substring(0, MAX_MESSAGE_LENGTH) }],
}));
Hoe te gebruiken
Kindle-ChatGPT gebruiken is eenvoudig:
- Open de webbrowser van je Kindle (Menu → Experimentele browser of Webbrowser, afhankelijk van je model)
- Navigeer naar kindle-chatgpt.com
- Begin je vraag te typen in het tekstveld
- Druk op Enter of tik op de Verzenden-knop
- Kijk hoe het antwoord binnenstroomt
Praktische toepassingen
Dit is hoe ik het daadwerkelijk gebruik tijdens het lezen:
- Snelle definities: "Wat betekent 'epistemologie' in eenvoudige bewoordingen?"
- Context over historische gebeurtenissen: "Wat gebeurde er in Europa in 1848?"
- Conceptverduidelijking: "Leg kwantumverstrengeling uit alsof ik 12 ben"
- Achtergrond van de auteur: "Wie is Yuval Noah Harari en wat is zijn achtergrond?"
- Boekaanbevelingen: "Welke andere boeken lijken op Sapiens?"
- Hulp bij schrijven: "Help me deze zin te herformuleren zodat hij duidelijker is"
Het belangrijkste is dat ik mijn Kindle nooit hoef te verlaten. Het gesprek blijft in context en de interface met hoog contrast belast mijn ogen niet.
Waarom alleen Kindle?
Sommige mensen vroegen waarom ik het beperkte tot Kindle-browsers. Hier is mijn redenering:
- Gerichte optimalisatie: Door één apparaattype te targeten, kan ik de gehele ervaring optimaliseren
- Duidelijke waardepropositie: Kindle-gebruikers weten precies wat ze krijgen
- Voorkomt misbruik: Beperkt de potentie voor botverkeer en misbruik
- Batterij-efficiëntie: De vereenvoudigde UI is specifiek ontworpen voor de energiekenmerken van e-ink
Als iemand de site probeert te benaderen vanuit een gewone browser, zien ze een landingspagina met uitleg over de service en de aanmoediging om deze op hun Kindle te gebruiken.
Beveiliging en privacy
Aangezien er geen authenticatie is, was privacy een topprioriteit:
- Geen gegevensopslag: Gesprekken worden niet opgeslagen op de server
- Geen tracking: Geen analyses of cookies buiten wat nodig is voor rate limiting
- IP-gebaseerde snelheidsbeperking: Maakt gebruik van Cloudflare KV met automatische vervaldatum
- Invoer validatie: Strikte limieten voor berichtlengte en inhoudsvalidatie
- Beveiligingsheaders: Correcte CSP, X-Frame-Options en andere beveiligingsheaders
Implementatie op Cloudflare
Ik heb dit geïmplementeerd op Cloudflare Workers met behulp van @opennextjs/cloudflare
, wat Next.js aanpast voor het edge-netwerk van Cloudflare. Dit biedt verschillende voordelen:
- Wereldwijd edge-netwerk: Snelle responstijden over de hele wereld
- Gratis laag: 100.000 verzoeken per dag in het gratis abonnement
- KV-opslag: Ingebouwde key-value opslag voor snelheidsbeperking
- Automatische schaalbaarheid: Verwerkt verkeerspieken zonder configuratie
Het bouwproces is eenvoudig:
npm run pages:build
npm run deploy
Geleerde lessen
Het bouwen hiervan heeft me verschillende dingen geleerd over werken met beperkte omgevingen:
1. Beperkingen kunnen beslissingen vereenvoudigen
De beperkingen van de Kindle (trage verversing, beperkte JavaScript, basis CSS-ondersteuning) dwongen me om onnodige complexiteit te verwijderen. Wat ik overhield was eenvoudiger en gerichter.
2. Progressieve verbetering is belangrijk
De app werkt met minimale JavaScript. Als streaming mislukt, valt deze terug op een eenvoudig verzoek-antwoordmodel. Dit maakt het veerkrachtiger.
3. Voor jezelf bouwen versnelt iteratie
Ik heb dit gebouwd omdat ik het nodig had. Elke technische beslissing werd onmiddellijk getest door de app daadwerkelijk op mijn Kindle te gebruiken tijdens het lezen.
4. Gratis diensten hebben duidelijke limieten nodig
Zonder de juiste snelheidsbeperking zou een gratis AI-service onmiddellijk worden misbruikt. De limiet van 100 berichten per dag is ruim voldoende voor legitiem gebruik, maar voorkomt misbruik.
Wat nu?
Ik overweeg deze toevoegingen:
- Ondersteuning voor meerdere AI-modellen (gebruikers laten kiezen tussen Gemini, Claude, etc.)
- Opgeslagen conversatiegeschiedenis (optioneel, met toestemming van de gebruiker)
- Integratie met het ingebouwde woordenboek van de Kindle
- Conversaties exporteren naar je e-mail
Maar ik ben voorzichtig met het toevoegen van functies. De eenvoud is een deel van wat het goed laat werken op de Kindle.
Probeer het zelf
Als je een Kindle e-reader hebt, probeer het dan op kindle-chatgpt.com. Het is gratis en vereist geen aanmelding.