I publish my own ebooks, and I kept losing hours to the same repetitive checks every time: cover dimensions rejected by KDP, EPUB validation errors that only showed up after upload, and a spreadsheet to track royalties that I dreaded opening.
So I built PublishWizard — a Windows desktop tool that automates the parts of self-publishing that have nothing to do with actually writing.
What it does
- EPUB validation via EPUBCheck integration, before you upload anywhere
- Cover validator against KDP / Google Play Books / Gumroad / StreetLib specs
- DOCX → EPUB conversion pipeline with drop caps and auto-generated TOC
- Royalty calculator with visual reports
- AI-assisted keyword research for KDP listings
- Multilingual interface (IT/EN/ES/FR/DE)
The technically annoying parts
PyInstaller path resolution. The app worked perfectly from source, then broke immediately once packaged — turns out frozen builds need a clear split between a writable APP_DIR and a read-only RESOURCE_DIR, and I hadn't accounted for that at all in the first version.
f-string compatibility. Some users were still on Python 3.10, I was developing on 3.12 — a few f-string constructs I used are 3.12-only. Silent failures on older versions until I caught it.
Threading. The GUI would freeze during long operations (EPUB generation on large files). Fixed by moving blocking work off the main thread and routing all UI updates back through root.after() — obvious in hindsight, less obvious when you're debugging a frozen window at 1am.
Where it stands now
Windows-only, no subscriptions, no cloud dependency. Free 7-day trial, full features, no credit card:
Genuinely curious what other self-publishers here think is missing — I built this around my own workflow, so I know there are blind spots.
Top comments (0)