KDP / AI Pipeline

I Built and Published a Children's Picture Book in 2 Days Using AI โ€” Now Live on Amazon

May 12, 2026 ยท The Dreaming World series ยท Book 1

๐Ÿ“– Book listing temporarily offline

The Amazon listing for What Does the Moon Dream About? is currently unavailable. We're confirming the book's status with KDP and will restore the buy link once resolved. The story behind the build is still below.

Two months ago I'd never used KDP. Three days ago I shipped my first paperback: What Does the Moon Dream About? โ€” a bedtime story for ages 3-7. Update 2026-05-13: the Amazon listing is currently offline pending KDP follow-up (see banner above). Two more books built on the same pipeline are en route.

The whole pipeline ran on free tools + ~6 hours of focused work + 2 KDP rejection cycles. Here's what it actually looked like.

The pipeline

Three Python scripts, three open-source models, zero external services:

  1. Pollinations FLUX (free, no auth) โ€” generated 24 illustrations at 2550ร—2550 (300 DPI for 8.5" print) with seed=42 for character consistency across pages
  2. reportlab + Google Fonts (Caveat + Patrick Hand) โ€” assembled the 24-page interior PDF with text overlays in soft cream panels
  3. reportlab again โ€” assembled the print-ready 17.31"ร—8.75" cover spread (back + spine + front, with bleed)

That's it. No designer, no illustrator, no manuscript editor. The rhyming verses I wrote myself (24 quatrains in one sitting), the character โ€” a sleepy crescent moon with pink cheek-blush and a small star companion โ€” was held consistent via prompt-engineering and shared seed.

What KDP rejected (twice)

Both rejections were mechanical, not content. KDP's automated prepress checker caught real issues:

RejectionCauseFix
1. Cover text too close to edgesTitle banner sat AT the trim line (0" safety zone); KDP requires โ‰ฅ0.375"Pulled banner 0.4" inside trim, dropped title font 60โ†’54pt so handwritten ascenders fit inside banner
2. Interior had insufficient bleedPages were 8.5ร—8.5 flat โ€” KDP wants 8.75ร—8.75 with images extending past trim on all four sidesRe-sized pages to bled dimensions, extended image draws to (0,0)โ†’(PAGE_W,PAGE_H)

Both fixes took ~30 minutes once diagnosed. The interior PDF binary went from 313 MB to 313 MB (same โ€” images dominate, the dimension change is metadata).

Automated preflight (saved me a third rejection)

After the first rejection I wrote a 50-line PyMuPDF script that extracts every text bounding box from the PDF and verifies each is inside KDP's 0.375" safety zone. Same logic runs on the cover (per-side: back / spine / front). 10/10 text spans inside safety = ship.

import fitz
TRIM = 8.5 * 72
BLEED = 0.125 * 72
SAFETY = 0.375 * 72
PAGE = TRIM + 2 * BLEED
safe = fitz.Rect(BLEED + SAFETY, BLEED + SAFETY,
                 PAGE - BLEED - SAFETY, PAGE - BLEED - SAFETY)

doc = fitz.open("book01_interior.pdf")
for i, page in enumerate(doc):
    for block in page.get_text("dict")["blocks"]:
        for line in block.get("lines", []):
            for span in line.get("spans", []):
                bbox = fitz.Rect(span["bbox"])
                if not safe.contains(bbox):
                    print(f"page {i+1} '{span['text'][:30]}' overflows")

If I'd run this before the first submit, I'd have saved a 24-hour KDP review cycle.

The economics

ItemNumber
List price (US)$9.99
KDP printing cost (US)$4.20
Royalty per US sale (60%)$3.47
India list price (auto-synced)โ‚น699
Sales required to recoup time~6 hours of work ร— $50/hr รท $3.47 = 86 copies

86 copies is the threshold for hourly-rate breakeven. At a competitive ranking for "moon bedtime story for kids," that's 2-4 months of organic sales without paid acquisition. After break-even, every additional copy is pure margin (KDP prints on demand โ€” no inventory cost).

Why this isn't a one-off

The full pipeline is now a 90-minute template. Same Pollinations FLUX + reportlab + KDP workflow โ†’ next 4 books in the Dreaming World series are queued (Sun / Stars / Ocean / Forest themes). Each one carries the moon character forward as a recurring guide.

The unit economics scale. A series of 8 books at 20 sales/month each clears ~$550/month in royalties, compounding for 5+ years. No staff, no support burden, no servers. KDP handles fulfillment globally.

Tools used (full list, all free)

What I'd do differently

Run the preflight checker as the FIRST step after rendering. Both KDP rejections cost me 24-48 hours each of review-queue time when 30 seconds of Python would have caught them.

๐Ÿ›  Grab the pipeline code

The full Python pipeline that built this book (FLUX cover gen + reportlab interior + cover assembler + KDP preflight checker) is in my GitHub org โ€” open-source. Two more books built on this pipeline are queued for release (AWS SAA-C03 practice exam, Cryptograms for Programmers).

View the source on GitHub โ†’