The workflow: I write stories in .md files, one heading per chapter, --- for scene breaks. When I'm ready to publish, I run one command and get a paperback PDF, hardcover PDF, and Kindle EPUB with correct margins, typography, and scene breaks. The tool wraps Pandoc and XeLaTeX with a custom LaTeX template and a Lua filter that handles the scene break conversion. Commander.js is the only Node dependency.
I used this to publish my first novelette, a hard sci-fi story called "The Pull" about an astrophysicist mapping the Zone of Avoidance behind the Milky Way. The science in the story is grounded in real astrophysics (the Great Attractor, large scale cosmic flows, the Zone of Avoidance). I also built an author website at 'alanvoss.me' with Next.js and Payload CMS, deployed as a static site on Vercel, where you can read the first chapter and see the characters.
On AI use and Graphics: The story concept and science are mine. I used Claude Opus 4.6 to help with some character dialogue and for grammar and spelling checks. Character portraits on the website were generated with Midjourney and OpenAI image models. Book covers were made in Canva.
The tool itself is simple (~200 lines of JS), but it solved a real problem for me. The KDP margin requirements are fiddly, especially the difference between paperback and hardcover inner margins, and getting scene breaks to render correctly in both LaTeX and EPUB needed the Lua filter approach. Hopefully useful to other developers who write.
Please let me know if you have any questions about the tool, the publishing process, or KDP in general.
dhruv3006•5h ago
Something I made on markdown : https://voiden.md