How I built it · Physical products

    How I turned Sean Levon Nash's paintings into seven coloring books

    Eight weeks, seven books, one real bill. The story book by book, where Claude hit a wall, and every prompt and script I tried.

    By Molly Shelestak · 7 min read

    Books live
    7
    First commit to all seven on Lulu
    8 weeks
    Active hours with Claude
    ~100
    Commits
    426
    Cached tokens Claude read
    3.17B
    The one real bill: image renders
    $81.01

    The story

    Five ways to strip a background failed. The fix was to never draw it.

    My friend Sean Levon Nash paints Northwest Coast formline, Aztec and Mixtec codex art, and Día de Muertos scenes. Over eight weeks I turned his paintings into seven coloring books on KDP and Lulu. I used a lot of stuff: a Python pipeline built with Claude, my own line-work and cover-art pipelines built in Codex, Replicate, exactly.ai, Canva, and about 100 active hours with Claude.

    Every book taught me something the last one didn't. This is the whole story, book by book: where Claude couldn't do the job, what it cost, and every approach that didn't work. The prompts and scripts are at the end.

    Side by side: a blue and red Northwest Coast formline orca painting on the left, and the same composition redrawn as clean black line art on the right.
    Painting in, coloring page out.

    Chapter 1 · Book 1 · Jul 20 – Aug 13

    Raven Steals the Sun: the one that taught me everything

    The first book started as a Python toolchain with a KDP preflight gate. My first line-art approach was an AI redraw, and it invented zentangle backgrounds that weren't in the paintings, so I switched to extracting the lines instead. Then came a die-cut sticker finish on Replicate, a no-fill fix, and a locked set of 72 drawings. That was 92 commits, all co-written with Claude.

    An early front cover: a red and black formline raven over an orange sun, titled Northwest Coast.
    The first cover said Northwest Coast. It shipped as Raven Steals the Sun.

    Then KDP rejected the cover at least twice. The dashboard trim was set to 8×10 against 8.5×11 files, and Claude reached six wrong conclusions from my screenshots before the trim size came up. The interior also embedded no fonts, and the QR code on the back pointed at a shortlink that had lapsed.

    No transcript survives from this book, so I can't tell you the hours. The Replicate spend for the early cleaning and outlining passes was roughly $50-70.

    Is this a pigeon meme. The man, labelled me, points at a butterfly labelled zentangle background and asks: Is this a coloring page?
    Side by side: a blue formline painting that runs off the edge, expanded, and the same design redrawn as black line art.
    A cropped painting, expanded and redrawn as line art.

    Chapter 2 · Book 2 · Aug 13 – Aug 21

    Jaguar Falls from the Sky: six prompts and a wallpaper problem

    The second book added a config file per book, perspective correction for photographed canvases, a review site and PDFs for Sean Levon Nash, and one house style across the pages.

    Two Aztec coloring pages, each shown before and after a pass that removed the busy patterned ground.
    Before and after the house-style pass.

    Then the prompts: B1, B2, B3, B5, C and D. B3 drew the best figures and the worst backgrounds, because its own ground section asked for a small, regular, repeating tile. Five ways of removing that background afterwards all failed. B5 on gpt-image-1 at high quality, traced by Recraft, finally worked.

    Every trial render was hardcoded to high quality. That became the one real bill of the project: $81.01 of OpenAI image generation. The fix was a low-quality default for trials. Sean Levon Nash picked from 12 versions of each painting, then I made three rounds of page-by-page calls. 27.2 active hours, about 73 commits.

    we recently made our first coloring book! i want to start on the next one
    Me, Aug 13
    X, X everywhere meme. Buzz points at the horizon: Diamond lattice. Diamond lattice everywhere.
    Two versions of a jaguar coloring page. Left: the jaguar on a busy patterned background, 333 areas. Right: the same jaguar with its spotted pelt and no background, 107 areas.
    The pelt stays, the wallpaper goes.
    The full cover wrap of Jaguar Falls from the Sky: back with sample pages and a bio, and a jaguar figure on orange on the front.
    The volume two cover, built from the volume one Canva template.

    Chapter 3 · Book 3 · Aug 21 – Aug 22

    Daze of the Dead: six hours, because the pipeline existed

    Book three reused book two's pipeline, so it took 6.4 active hours. All 133 source paintings were too small and had to be upscaled first. Some of the work happened in Codex, and Codex is how the line work came to look good.

    Two cover wraps stacked. Top, labelled what Claude made in code: a dark back cover and skeletons in top hats under a banner. Bottom, labelled what I made in Canva: the shipped Daze of the Dead cover with a skeleton in a flowered hat.
    Top: what Claude made. Bottom: what I made in Canva and shipped.

    Claude built the first cover in code, and I hated it. I told it to use Canva, made the real cover there myself, and got back to work. After I submitted, I noticed Claude had put the white ISBN block in the wrong place.

    huh? use canva to build my cover in same format as the others
    Me, Aug 22

    Chapter 4 · Aug 25 – Aug 31

    In between: Etsy, CMYK and upside-down pages

    Between books I opened Etsy for the digital editions, re-exported books one and two in CMYK from Canva, and fixed pages that came back rotated.

    A mockup of a colored-in formline orca page on loose sheets with colored pencils.
    An Etsy mockup for a digital edition.
    the ai cleaned up version is still his art
    Me, Aug 25
    Panik Kalm Panik meme. Panik: pages come back from the pipeline. Kalm: most look great. Panik: some are upside down.

    Chapter 5 · Books 1 and 4 · Sep 1 – Sep 12

    Turtle Carries the World: one book becomes two

    Volume one split into two books, traditional and contemporary, 66 pages each. Prompts NW through NW6 matched volume one's line on the new pages.

    Three formline designs in an earlier line style above the same designs in the NW5 restyle.
    The earlier line, and the NW5 restyle.

    Claude swapped the book one cover once, and once reached for a generic approach when we had a pipeline and prompts for exactly this. I called out both. 15.1 active hours.

    its not consistent stroke weight. its like pen work
    Me, Sep 1–12
    A sheet of numbered contemporary formline coloring pages: animals, masks and patterns.
    The contemporary set on one sheet.
    The full cover wrap of Turtle Carries the World: back with sample pages, a green formline sea turtle on the front.
    The contemporary book's cover.

    Chapter 6 · Books 5 to 7 · Sep 7 – Sep 12

    The Day of the Dead editions: the blank-garment bug

    The Day of the Dead paintings split by culture into four books of 42 drawings and 90 pages each. New scene paintings came from exactly.ai.

    Scooby Doo reveal meme. Fred unmasks a villain labelled blank garments: Let us see who you really are. It was a threshold of 128.

    Then the biggest bug of the project: new pages printed as a bold outline around a blank garment. The finishing threshold of 128 erased the grey pattern lines. Changing it to 200 fixed it without a single new render. 18.3 active hours.

    way fuckng better
    Me, Sep 9
    Three cover wraps stacked: Home of the Grave, The Cold Masters and Land of the Rising Dead.
    Home of the Grave, The Cold Masters and Land of the Rising Dead.
    A grid of skeleton coloring pages: a farm couple, a surfer, dancers and a motorcyclist.
    Pages from Home of the Grave.
    The Daze of the Dead cover wrap in the series design, with a skeleton in a flowered hat on the front.
    Daze of the Dead in the series design.

    Chapter 7 · All seven · Sep 1 – Sep 13

    Lulu: same books, different rules

    Lulu's spine is wider than KDP's for the same book: 0.209 in against 0.1486 in at 66 pages. Lulu takes RGB where KDP wants CMYK, and a Lulu book with no ISBN prints no barcode, so the barcode box gets painted out. The interiors were mostly waste, too: 19.5 MB became 3.2 MB.

    They're the same picture meme. Pam holds up two pictures, KDP spine: 0.1486 in, and Lulu spine: 0.209 in, and says they're the same picture.

    Claude drove the forms until Lulu showed a bot check. All seven went live on Lulu Direct.

    Where I tried to make Claude do all of it

    • Canva wouldn't take my files

      The Canva connector only imports from public URLs, so I dragged the art in by hand. A resize was blocked, and once Claude handed out links to the wrong design. Its words: my fault twice over.
    • It stops at the sign-in

      Claude filled the KDP forms, but an em-dash scrambled one description, and it stopped at Amazon's sign-in: it won't enter credentials.
    • The 10 MB wall

      Files over the browser's 10 MB limit were mine to attach. That's the day I told it something is wrong with you.
    • Bot checks are a hard stop

      Lulu showed a Cloudflare check, and Claude stopped: it can't complete bot checks for me.
    • Confidently wrong

      It switched an interior to no bleed and then said I was wrong. It also gave me three different cost figures without checking any of them.
    • Generic when it had the good stuff

      Once, with a pipeline and prompts built for exactly this, it reached for something generic. My words: we have a pipeline we have prompts we have lots of styff and you reach for generic thing.

    Where it bit me

    • Ask for wallpaper, get wallpaper

      The Aztec prompt drew the best figures and the worst backgrounds, because its own ground section asked for a small, regular, repeating tile like patterned wallpaper.
    • Five fixes, zero wins

      Removing the lattice by ink connectivity, stroke width, a halo ring, cell size and SVG fill value all failed. The lattice and the figure were one connected shape. Generating without it worked.
    • The 400 that said something else

      A newer model returned HTTP 400 on the edits endpoint and nearly got written off. The error named a parameter, not the endpoint: drop input_fidelity and it edits fine.
    • Final quality on throwaway trials

      Every call was hardcoded to high quality, copied from the script that renders final pages, then carried into about 160 throwaway trials. Now low is the default, and high has to be asked for by name.
    • Never delete a render

      Claude deleted a first-pass render to redo it, and I'd said I liked it while the redo was running. Image models don't reproduce a render, so move superseded ones aside instead.
    • Thicker isn't hand-drawn

      The tuned line thickness of 7 dilated fine ornament until it blobbed together. A sweep showed 1 to 3 is far crisper; the default was never re-tuned for the denser art.
    • Some edges can't be invented

      Two Aztec pages were cut off at the edge, and five completion attempts all failed. Some pages need a different source, not a better prompt.
    Daily struggle meme. A sweating man labelled me, five attempts in, chooses between two buttons: fix it in post, or never draw it.

    Who did what

    Claude

    • Built the Python pipeline: selection, vectorizing, layout, cover checks and preflight
    • Ran the model bake-offs and the render batches
    • Filled the KDP and Lulu forms until a sign-in or bot check stopped it

    Me

    • Built the line-work and cover-art pipelines in Codex
    • Wrote the line that made the redraw prompt work
    • Picked the version of every page
    • Designed every cover in Canva
    • Did the sign-ins, uploads and publish calls
    The full-wrap cover of Raven Steals the Sun: back cover with three sample pages and a bio, the spine, and the front with a red and black formline raven over an orange sun.
    Volume one, back to front.

    See the books

    All seven of Sean Levon Nash's coloring books are on Amazon, and together on his book page.

    Part two · The system

    The moving parts

    In the order things flow.

    1. 1

      Source paintings

      The originals, kept out of git, with a tracked catalog.

    2. 2

      Page selection

      Picks the approved pages for a book from its config, with per-page overrides.

    3. 3

      Redraw

      An image model turns each painting into line art with the redraw prompt.

    4. 4

      Crop completion

      Pages cut off at an edge get expanded first, then redrawn.

    5. 5

      Vectorize

      Threshold, trace to SVG, then rasterize to 1-bit at print resolution.

    6. 6

      Assembly

      Orders pages so no two neighbours share a subject, and pads to an even page count.

    7. 7

      Cover

      A full-wrap cover with the spine width read from the interior's page count.

    8. 8

      Preflight

      Checks page count, DPI floor, pure black and white, and file size before promoting to dist.

    Tools I used

    • ChatGPT · Where the redraw prompt was worked out, and where I expand cropped pages
    • Codex · My own pipelines for the line work and the cover art; it's how the line work got good
    • gpt-image-1 · Best figures of every model tried
    • Replicate · Runs image models; submit and poll so a killed run costs nothing
    • Recraft · Vectorizes the denser Aztec art and keeps fine ornament
    • potrace · Traces volume one's line art to vectors, locally
    • exactly.ai · New scene paintings for the Day of the Dead editions
    • Canva · Every cover, from the volume one template
    • Claude Code · Built and runs the pipeline, and drives the KDP and Lulu forms
    • Lulu · The second printer, with its own spine and colour rules
    A contact sheet of Aztec and Mixtec coloring pages in black line art, numbered, each with its page name.
    The Aztec interior, page by page.

    Build your own

    1. Prove the prompt on one painting

      Before building anything, run the redraw prompt on one painting in ChatGPT and judge the result as a coloring page: every region fully enclosed, no open paths, no floating marks.

    2. Trial cheap, finish expensive

      Test prompts and models at low quality. Line quality is the one thing you can't judge at low, so settle it with a single deliberate high render, not a batch.

    3. Don't fix the background in post

      If a prompt draws a pattern behind the figure, change the prompt. Removing it afterwards failed five different ways for me.

    4. Run a small bake-off

      Render the same page on a few models and compare them side by side. Line quality is a model behaviour, not a pixel count: one model at 2.5x the resolution came out worse.

    5. Vectorize to print resolution

      Threshold the line art, trace it to SVG, and rasterize it to a 1-bit image above 300 DPI on both axes. I use 306 so rounding never lands under.

      Prompt for Claude

      Write a Python function that takes a line-art PNG, thresholds it to black and white, traces it to SVG with potrace, and rasterizes the SVG with cairosvg to a 1-bit PNG that is at least 306 DPI on both axes for an 8.5 × 11 page. Fail with a clear message if potrace or cairo is missing.
    6. Make every step resumable

      Skip any output that already exists. Submit renders and poll for them, and save the job ids first, so a killed run collects its results instead of paying for them twice.

    7. Record every pick as it happens

      Renders can be redone. A person's judgement on each page can't, and an image model won't draw the same page twice, so write each pick to a file the moment it's made.

    8. Assemble, cover, preflight

      Lay out one drawing per page with a blank reverse, compute the spine from the final page count, and run preflight before upload. The KDP side has its own guide.

      Prompt for Claude

      Build a preflight check for a KDP coloring book interior PDF: page count and parity, every page 8.5 × 11, every image at least 300 DPI, pure black and white only. Print PASS or FAIL per check and exit 1 on any failure.
    Drake meme. Drake turns away from: High quality on every trial. Drake approves: Low for trials, high for the final page.

    Everything I tried

    The dead ends are the useful part. Here's what each one taught me.

    • Didn't

      AI redraw, volume one

      Invented zentangle backgrounds that weren't in the paintings.

      Lesson: Judge the first output as if it were the finished book.

    • Worked

      Extracting the lines

      Pulled the painting's own lines for volume one.

      Lesson: When a model adds things, take the model out of that step.

    • Sort of

      Die-cut sticker finish

      Looked right, but needed a no-fill fix.

      Lesson: Test a finish on the whole set, not one page.

    • Didn't

      Flux Fill for cropped edges

      It put a frame in the margin.

      Lesson: Outpainting tools have their own ideas about margins.

    • Didn't

      Flux Kontext

      Drifted from the original painting.

      Lesson: With someone else's art, fidelity beats style.

    • Worked

      Prompt A with the markers line

      Redraw from scratch as clean ink, assuming every line gets colored by hand.

      Lesson: One sentence about the person using the page changed the output more than any style wording.

    • Sort of

      Prompt B3

      Best figures, worst backgrounds.

      Lesson: A prompt does exactly what it says, including the parts you forgot you wrote.

    • Didn't

      Removing backgrounds afterwards

      Five approaches, all failed.

      Lesson: If a fix keeps failing in post, change what gets generated.

    • Worked

      B5 on gpt-image-1, traced by Recraft

      B3's figure without the background.

      Lesson: Combine pieces that each worked alone.

    • Didn't

      Completing cut-off pages

      Five attempts on two pages.

      Lesson: Some pages need a different source, not a better prompt.

    • Didn't

      Finishing threshold of 128

      Erased the grey pattern lines and left blank garments. 200 fixed it.

      Lesson: Check the cheapest knob before paying for new renders.

    • Sort of

      Claude driving KDP and Lulu

      It did the typing. I did the sign-ins, uploads and checks.

      Lesson: Plan the hand-offs up front: sign-ins, uploads, bot checks.

    Steal this

    line-art-redraw.md

    prompt · markdown

    # Painting to coloring-page line art (redraw prompt)
    
    Paste this into ChatGPT (or another image model) with one painting attached. It is the
    prompt that worked for turning full-colour paintings into coloring-book pages.
    
    The last paragraph made the biggest difference: telling the model the lines will be
    colored by hand pushes it toward large, clean, enclosed shapes.
    
    ---
    
    You are a professional illustrator preparing artwork for a premium adult coloring book.
    
    Your task is NOT to apply an edge-detection filter.
    
    Instead, imagine the original painting never existed.
    
    Your job is to recreate the artwork from scratch as if a skilled artist hand-traced and redrew the entire composition using clean vector line art.
    
    The finished illustration should look like an original ink drawing—not a filtered photograph.
    
    ------------------------------------
    PRESERVE
    ------------------------------------
    
    Preserve exactly:
    
    • overall composition
    • silhouette
    • pose
    • proportions
    • visual balance
    • symbolic forms
    • decorative motifs
    • relationships between shapes
    
    The finished drawing should be immediately recognizable as the original artwork.
    
    ------------------------------------
    REMOVE
    ------------------------------------
    
    Remove every trace of the painting process.
    
    Delete:
    
    • paint texture
    • canvas texture
    • visible brush strokes
    • color
    • gradients
    • highlights
    • shadows
    • lighting
    • reflections
    • pencil marks
    • rough edges
    • smudges
    • anti-aliasing artifacts
    • photographic noise
    
    The final artwork should appear as perfectly clean black ink.
    
    ------------------------------------
    REDRAW
    ------------------------------------
    
    Completely redraw every line.
    
    Do NOT trace pixel edges.
    
    Instead:
    
    • simplify curves
    • smooth every contour
    • correct wobbly brush edges
    • replace uneven paint borders with elegant flowing curves
    • create mathematically smooth Bézier-like paths
    • unify inconsistent stroke widths
    
    Everything should feel intentionally illustrated.
    
    ------------------------------------
    LINE STYLE
    ------------------------------------
    
    Use:
    
    • solid black outlines
    • consistent monoline stroke weight
    • crisp vector-quality curves
    • smooth flowing contours
    • no pressure variation
    • no sketchiness
    • no roughness
    
    Every line should look professionally inked.
    
    ------------------------------------
    INTERIOR DETAILS
    ------------------------------------
    
    Convert every colored region into an enclosed coloring area.
    
    Replace painted borders with smooth graphic contours.
    
    Preserve all symbolic design elements while simplifying noisy details.
    
    Every enclosed shape should become an individual coloring region.
    
    Merge tiny regions where appropriate to improve readability.
    
    ------------------------------------
    SIMPLIFY
    ------------------------------------
    
    Whenever small painted imperfections exist,
    
    replace them with cleaner, more elegant geometry.
    
    Favor:
    
    • flowing curves
    • symmetry
    • rhythm
    • balanced spacing
    • graceful transitions
    
    Avoid mechanical tracing.
    
    Make artistic decisions that improve clarity.
    
    ------------------------------------
    COLORING BOOK RULES
    ------------------------------------
    
    Every region must be:
    
    • fully enclosed
    • printable
    • easy to color
    • clearly separated
    • free of overlaps
    
    No open paths.
    
    No intersecting strokes.
    
    No floating marks.
    
    ------------------------------------
    STYLE TARGET
    ------------------------------------
    
    The result should look like it was hand-drawn by an expert illustrator creating original coloring book artwork from the painting.
    
    It should NOT resemble:
    
    • image tracing
    • edge detection
    • vectorization software
    • posterization
    • threshold filters
    
    Instead it should feel intentionally illustrated with clean flowing linework and elegant graphic design.
    
    The final result should resemble a premium published coloring book where the artist manually recreated the original painting as flawless black-and-white line art.
    
    Assume every line you draw will eventually be colored by hand with markers, so prioritize large, clean, enclosed shapes over exact fidelity to every painted edge.
    

    Paste it into ChatGPT with one painting attached. The same prompt drives the gpt-image-1 renders in the pipeline.

    How to break a problem like this down

    1. Prove one page before you build a pipeline

      One painting, one prompt, one judgement as a real coloring page. Everything after that is repetition.

    2. Make the human choices the fixed points

      Record every pick the moment it's made. Renders can be redone; a person's judgement on each page can't.

    3. Trial cheap, finish expensive

      Only pay for final quality on final pages. The one real bill of this project came from ignoring that.

    4. When post keeps failing, change the input

      Five ways of cleaning a background failed. A prompt that never drew it worked.

    5. Check what the file is judged against

      The first book's worst bug was a dashboard setting, not the file.

    6. Reuse the last book

      The second book built the pipeline. The third one took hours instead of weeks.

    Building something of your own? Get the free Claude skill, a build partner that keeps your side project moving.

    All free guides