Write a concept.
Get a book.
Paste your API key. Describe your book. Keep the browser open. Download your EPUB and PDF when it's done. No servers. No accounts. No data collection.
HOW IT WORKS
Three steps. One browser tab.
Configure
Paste your OpenRouter or LLMAPI key. Pick a model. Keys stay in localStorage -- we never see them.
Describe your book
Title, premise, genre, chapter count, word target. We generate an outline for you to review and edit.
Generate & download
Watch chapters stream in real-time. When it's done, download your EPUB and PDF. The whole book runs in your browser.
FEATURES
Everything happens in your browser
Bring Your Own Key
Use OpenRouter, LLMAPI, or any OpenAI-compatible endpoint. You control the model and the cost.
Zero Server Dependency
Everything runs in your browser. Static site on Cloudflare Pages. No backend, no database, no tracking.
Real-Time Progress
Watch every API call, every chapter streaming in, word counts updating live. Full transparency.
EPUB + PDF Output
Download both formats instantly. Built client-side with JSZip and jsPDF. Ready for Kindle or print.
Academic Research
Optional OpenAlex integration fetches real papers to ground your book in actual research. No API key needed.
Survives Refresh
All progress saved to localStorage. Close the tab, come back tomorrow. Your book is still there.
FAQ
Common questions
What API keys do I need?
You need an API key from OpenRouter (recommended, supports browser CORS) or LLMAPI, or any OpenAI-compatible endpoint. OpenAlex for research is free and needs no key.
How much does it cost to generate a book?
Depends on the model and chapter count. A 12-chapter book with Google Gemini 2.0 Flash via OpenRouter typically costs $0.50-2.00 total in API credits.
Is my API key safe?
Your key is stored only in your browser's localStorage. This site is a static page on Cloudflare Pages -- there is no server to send your key to. You can verify this in your browser's Network tab.
What about CORS for non-OpenRouter providers?
OpenRouter explicitly supports browser CORS. Other providers (LLMAPI, custom endpoints) may block browser requests. If you get CORS errors, use OpenRouter or a browser extension that adds CORS headers.
What happens if I close my browser?
All progress is saved to localStorage. When you return, you can resume from the last completed chapter.
What models work best?
Google Gemini 2.0 Flash (via OpenRouter) gives the best cost/quality ratio. Claude and GPT-4o produce higher quality but cost more. Any model that supports streaming via the OpenAI chat completions API format will work.