creating-coloring-books

star 9

End-to-end coloring book creation, packaging, pricing, and multi-storefront publishing pipeline. Converts a topic/trend into print-ready coloring pages, bundles them for sale, and posts to Etsy, Creative Market, Gumroad, Amazon KDP, and more. Use when: creating coloring books, coloring pages, coloring bundles, converting images to line art for print, packaging digital downloads, listing on storefronts, or when the user provides a topic and wants sellable coloring content. Triggers: "coloring book", "coloring pages", "coloring bundle", "line art", "convert to coloring", "printable coloring", "list on etsy", "sell coloring pages", any topic + "coloring".

delorenj By delorenj schedule Updated 2/25/2026

name: creating-coloring-books description: > End-to-end coloring book creation, packaging, pricing, and multi-storefront publishing pipeline. Converts a topic/trend into print-ready coloring pages, bundles them for sale, and posts to Etsy, Creative Market, Gumroad, Amazon KDP, and more. Use when: creating coloring books, coloring pages, coloring bundles, converting images to line art for print, packaging digital downloads, listing on storefronts, or when the user provides a topic and wants sellable coloring content. Triggers: "coloring book", "coloring pages", "coloring bundle", "line art", "convert to coloring", "printable coloring", "list on etsy", "sell coloring pages", any topic + "coloring".

Creating Coloring Books

Overview

Input: A topic or trend (e.g. "kpop demon hunters") + optional page count (default 10).

Output:

  1. Workflow log in ~/d/33GOD/{YYYY-MM-DD}/DigiPopStudios/{topic-slug}/run-{RUNID}/
  2. Quality-checked coloring book pages uploaded to media.delo.sh as PNG+SVG pairs
  3. Packaged bundles (PDF, ZIP) ready for sale
  4. Listings posted to multiple storefronts with optimized titles, descriptions, and pricing

Workflow — 9 Phases

Follow each phase and step exactly. Do not substitute, skip, or reorder.


Phase 1: Research — Google Images Browse

  1. Open the openclaw browser (profile=openclaw).
  2. Navigate to Google Images: https://www.google.com/search?tbm=isch&q={url-encoded topic}.
  3. Take a snapshot of the results page.
  4. Identify 15–20 candidate thumbnails that have strong line-art potential:
    • Prefer: illustrations, anime/manga, vector art, bold outlines, distinct shapes.
    • Avoid: photographs, photorealistic 3D renders, blurry/low-contrast, text-heavy.
  5. Log each candidate: thumbnail position, brief description, why selected.

Hard rules:

  • Source is Google Images only. Do NOT use Pixabay, Vecteezy, or any stock API.
  • Do NOT attempt to download images via curl/requests. Screenshots only (Phase 2).

Phase 2: Source Capture — Screenshot & Crop

For each candidate from Phase 1:

  1. Click on the thumbnail in Google Images to open the preview panel on the right.
  2. Screenshot the full browser window with the preview panel visible.
  3. Save screenshots to {bundle}/research/sources/src-{NN}.png.

CRITICAL — Auto-crop the preview panel before conversion:

The screenshot includes the entire Google Images page (thumbnail grid, search bar, UI chrome). You MUST crop to extract only the preview image before feeding to Phase 3.

# Crop the preview panel from each screenshot
import cv2, numpy as np
from pathlib import Path

src_dir = Path('{bundle}/research/sources')
out_dir = src_dir / 'crops'
out_dir.mkdir(exist_ok=True)

for f in sorted(src_dir.glob('src-*.png')):
    img = cv2.imread(str(f))
    h, w = img.shape[:2]
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    _, th = cv2.threshold(gray, 220, 255, cv2.THRESH_BINARY)
    mask = np.zeros_like(th)
    mask[:, int(w * 0.45):] = th[:, int(w * 0.45):]
    num, labels, stats, _ = cv2.connectedComponentsWithStats(mask, 8)
    best = None
    for i in range(1, num):
        x, y, ww, hh, area = stats[i]
        if area < 8000: continue
        score = float(area)
        if hh > ww: score *= 1.3
        if x > w * 0.55: score *= 1.2
        if best is None or score > best[0]:
            best = (score, (x, y, ww, hh))
    if best:
        x, y, ww, hh = best[1]
        pad = int(min(ww, hh) * 0.12)
        crop = img[max(0,y-pad):min(h,y+hh+pad), max(0,x-pad):min(w,x+ww+pad)]
    else:
        crop = img[int(h*0.12):int(h*0.82), int(w*0.62):int(w*0.98)]
    crop = cv2.resize(crop, (1024, 1536), interpolation=cv2.INTER_CUBIC)
    cv2.imwrite(str(out_dir / f.name.replace('src-', 'crop-')), crop)

The cropped images in sources/crops/ are what you feed to Phase 3, NOT the raw screenshots.

The screenshot IS the source asset. Do not attempt to download the original file.


Phase 3: Convert to Coloring Pages — fal.ai Qwen Image Edit 2511

Use the bundled script on the cropped sources:

source ~/.config/zshyzsh/secrets.zsh
~/.agents/skills/creating-coloring-books/.venv/bin/python \
  ~/.agents/skills/creating-coloring-books/scripts/coloring-convert \
  {bundle}/research/sources/crops/ \
  --output-dir {bundle}/coloring/ \
  --prompt "Convert this image into a clean black and white coloring book page. Keep only the main character(s) and scene; remove UI chrome and website elements. Thick crisp outlines, white background, no grayscale, no text, no logos."

The script:

  • Uploads each cropped source to fal.ai storage.
  • Calls fal-ai/qwen-image-edit-2511 with the coloring conversion prompt.
  • Downloads the resulting coloring page PNG.
  • Proceeds to Phase 4 automatically (vectorization).
  • Writes per-page metadata JSON and a manifest.

Phase 4: Vectorize — fal.ai Recraft Vectorize

Handled automatically by scripts/coloring-convert after Phase 3.

Output pairs:

  • {bundle}/coloring/page-{NN}-coloring.png
  • {bundle}/coloring/page-{NN}-coloring.svg

Phase 5: QA — Independent Agent Inspection

Spawn a sub-agent for QA (use model=opus for visual accuracy):

sessions_spawn(
  task="QA coloring book pages. Inspect in batches of 5 to avoid truncation.
    For each PNG in {bundle}/coloring/page-*-coloring.png:
    1. Analyze the image visually.
    2. Rate 1-5 on: line_quality, complexity_balance, colorable_regions, print_artifacts, age_appropriateness, subject_recognizability.
    3. PASS if average >= 3.5 and no category below 2. Otherwise FAIL with reason.
    4. Write results to {bundle}/qa/qa-report.json.
    5. Write summary to {bundle}/qa/qa-summary.md with ranking and Top 10.
    If a page FAILS, note which source it came from so it can be substituted.",
  mode="run",
  model="opus"
)

For any FAILED pages:

  1. Return to Phase 1 and find a replacement source.
  2. Re-run Phases 2–4 for the replacement.
  3. Re-run QA on the replacement only.
  4. Repeat until 10 pages pass or the candidate pool is exhausted.

Phase 6: Upload to Piwigo (Asset Gallery)

Upload all passing pages (PNG + vector pairs) to media.delo.sh album 1.

Auth: username=delorenj, password=Ittr5eesol

import requests
BASE = "https://media.delo.sh"
s = requests.Session()
s.headers.update({"User-Agent": "Dumply/1.0", "Referer": f"{BASE}/"})
s.post(f"{BASE}/ws.php?format=json", data={
    "method": "pwg.session.login", "username": "delorenj", "password": "Ittr5eesol"
})
# Upload each file
for file_path in files:
    with open(file_path, "rb") as f:
        s.post(f"{BASE}/ws.php?format=json",
            data={"method": "pwg.images.addSimple", "category": "1", "name": display_name},
            files={"image": (file_path.name, f, mime_type)})

SVG upload caveat: Piwigo rejects SVG. Render SVG → JPG via ImageMagick:

magick -density 300 page.svg -background white -alpha remove -alpha off -quality 95 page-vector.jpg

Naming: {topic-slug}-page-{NN}-raster and {topic-slug}-page-{NN}-vector-jpg


Phase 7: Packaging & Bundling

Create sale-ready bundles in {bundle}/packages/:

7a. Digital Download Bundle (ZIP)

{topic-slug}-coloring-bundle/
├── README.txt              # License, instructions, credits
├── pages/
│   ├── page-01.png         # High-res coloring pages (300 DPI)
│   ├── page-01.svg         # Vector versions
│   ├── page-02.png
│   ├── page-02.svg
│   └── ...
└── {topic-slug}-complete.pdf  # All pages in one printable PDF

7b. Printable PDF Bundle

Generate a print-ready PDF (8.5×11" letter, portrait):

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch

c = canvas.Canvas(output_pdf, pagesize=letter)
w, h = letter  # 612 x 792 points

# Cover page
c.setFont("Helvetica-Bold", 36)
c.drawCentredString(w/2, h*0.6, title)
c.setFont("Helvetica", 18)
c.drawCentredString(w/2, h*0.5, f"{page_count} Coloring Pages")
c.drawCentredString(w/2, h*0.35, "DigiPop Studios")
c.showPage()

# Coloring pages (one per page, centered with margins)
for png in sorted_pages:
    c.drawImage(png, 0.5*inch, 0.5*inch, w - 1*inch, h - 1*inch,
                preserveAspectRatio=True, anchor='c')
    c.showPage()

c.save()

7c. Amazon KDP Interior (if 24+ pages)

KDP requires minimum 24 interior pages. For a 10-page bundle:

  • Add a title page, copyright page, "how to use" page, and back-of-page blanks
  • Total: title + copyright + howto + (10 × 2 sides) + closing = 24 pages minimum
  • Format: PDF, 8.5×11" (or 8.25×11.25" with bleed), 300 DPI
  • Generate cover separately: front + spine + back as a single PDF spread

7d. Preview/Mockup Images

Generate 3-5 preview images for storefront listings:

  1. Hero image: 2-3 best pages fanned out on a wooden table mockup
  2. Grid preview: 2×5 grid showing all 10 pages as thumbnails
  3. Single page zoom: Close-up of the highest-rated page
  4. Device mockup: Pages shown on a tablet screen

Use the fal-text-to-image skill or browser-based mockup generators.

7e. ZIP the bundle

cd {bundle}/packages
zip -r {topic-slug}-coloring-bundle.zip {topic-slug}-coloring-bundle/

Phase 8: Pricing Strategy

Base pricing tiers (10-page digital bundle)

Storefront Price Rationale
Etsy $3.99–$5.99 Sweet spot for digital coloring bundles; under $5 impulse buy zone
Creative Market $7.00–$12.00 Premium positioning, designer audience expects higher quality
Gumroad $4.99 (pay-what-you-want floor) PWYW boosts conversions; avg payment typically 1.5x floor
Amazon KDP (print) $6.99–$8.99 Physical book, KDP takes ~60% for expanded distribution
Amazon KDP (digital) $2.99 Low price, 70% royalty tier
Payhip $4.99 Zero transaction fees on paid plan
Ko-fi Shop $3.99 Creator-friendly audience, tips common

Pricing rules

  • 10-page bundles: $3.99–$5.99 (digital), $6.99–$8.99 (print)
  • 20-page bundles: $5.99–$8.99 (digital), $9.99–$12.99 (print)
  • 50+ page mega bundles: $9.99–$14.99 (digital)
  • Individual pages: $0.99–$1.49 each (upsell to bundle)
  • Launch discount: 20-30% off first week (creates urgency)
  • Bundle discount: Always price bundle < sum of individual pages

Fee structure to track

Platform Listing Fee Transaction Fee Payment Processing
Etsy $0.20/listing 6.5% 3% + $0.25
Creative Market Free 50% commission (standard) Included
Gumroad Free 10% Included
Amazon KDP Free 30-65% (varies) Included
Payhip Free 5% (free plan) / 0% ($99/yr) Included
Ko-fi Free 0% (Gold: $6/mo) PayPal/Stripe fees

Phase 9: Storefront Publishing

Post listings to each storefront. Prioritize by traffic and margin.

9a. Etsy (highest traffic for coloring pages)

Use the openclaw browser (profile=openclaw) to:

  1. Navigate to https://www.etsy.com/your/shops/me/tools/listings/create
  2. Fill listing form:
    • Title: {Topic} Coloring Pages Bundle | {N} Printable Pages | Digital Download | Kids & Adults
    • Description: (see template below)
    • Category: Art & Collectibles > Drawing & Illustration > Digital
    • Type: Digital download
    • Price: Per pricing strategy above
    • Tags (13 max): coloring pages, coloring book, printable, digital download, {topic keywords}, kids coloring, adult coloring, line art, instant download
    • Files: Upload ZIP bundle
    • Images: Upload preview mockups (first image = hero)
  3. Publish listing

9b. Creative Market

  1. Navigate to https://creativemarket.com/sell
  2. Create product:
    • Title: {Topic} Coloring Book Bundle – {N} Printable Pages
    • Category: Graphics > Illustrations
    • Price: Premium tier from pricing strategy
    • Files: Upload ZIP
    • Preview images: Upload mockups
  3. Submit for review

9c. Gumroad

  1. Navigate to https://app.gumroad.com/products/new
  2. Create product:
    • Name: {Topic} Coloring Pages – {N} Page Bundle
    • Price: Set minimum (PWYW)
    • Files: Upload ZIP + PDF
    • Cover: Upload hero mockup
    • Description: From template
  3. Publish

9d. Amazon KDP (if 24+ pages available)

  1. Navigate to https://kdp.amazon.com/en_US/bookshelf
  2. Create new paperback:
    • Title: {Topic} Coloring Book: {N} Pages for Kids and Adults
    • Interior: Upload KDP-formatted PDF
    • Cover: Upload KDP cover PDF
    • Trim size: 8.5×11"
    • Paper: White, no bleed
    • Price: Per pricing strategy
  3. Also create Kindle ebook version with the digital PDF

9e. Payhip (zero fees)

  1. Navigate to https://payhip.com/dashboard/products/new
  2. Upload ZIP + fill product details
  3. Publish

9f. Ko-fi Shop

  1. Navigate to https://ko-fi.com/manage/shop
  2. Add shop item with ZIP download
  3. Publish

Listing Description Template

✨ {TOPIC} Coloring Pages Bundle ✨

{N} beautiful, hand-curated coloring pages featuring {topic description}.
Perfect for kids, teens, and adults who love {related interests}!

📦 WHAT'S INCLUDED:
• {N} high-resolution coloring pages (PNG, 300 DPI)
• {N} vector versions (SVG) for crisp printing at any size
• 1 printable PDF with all pages (8.5×11" letter size)
• Instant digital download

🖍️ FEATURES:
• Clean, bold outlines perfect for coloring
• Mix of simple and detailed designs
• Suitable for all ages (5+)
• Print as many copies as you like for personal use

🖨️ HOW TO USE:
1. Download the ZIP file after purchase
2. Print pages on standard letter paper (8.5×11")
3. Use crayons, colored pencils, markers, or gel pens
4. Frame your favorites!

📋 LICENSE:
• Personal use and classroom use permitted
• Not for resale or redistribution
• Commercial use available — contact us

💝 From DigiPop Studios with love!

Observability Log Structure

All run artifacts go in the daily ephemeral doc vault:

~/d/33GOD/{YYYY-MM-DD}/{topic-slug}/run-{YYYYMMDD-HHMMSS}/
├── README.md
├── events.jsonl
├── asset-ledger.csv
├── phases/
│   ├── phase-1-research.md
│   ├── phase-2-capture.md
│   ├── phase-3-coloring.md
│   ├── phase-4-vectorize.md
│   ├── phase-5-qa.md
│   ├── phase-6-upload.md
│   ├── phase-7-packaging.md
│   ├── phase-8-pricing.md
│   └── phase-9-publishing.md
├── upload-report.json
└── publishing-report.json     # Links to all storefront listings

Prerequisites

  • FAL_KEY environment variable — sourced from ~/.config/zshyzsh/secrets.zsh

    source ~/.config/zshyzsh/secrets.zsh
    
  • Python venv with deps:

    cd ~/.agents/skills/creating-coloring-books && uv venv .venv && uv pip install fal-client requests reportlab
    
  • Run the conversion script with the skill's venv Python:

    source ~/.config/zshyzsh/secrets.zsh
    ~/.agents/skills/creating-coloring-books/.venv/bin/python \
      ~/.agents/skills/creating-coloring-books/scripts/coloring-convert ...
    
  • OpenClaw browser available (profile=openclaw)

  • ImageMagick (magick) for SVG→JPG fallback

  • Piwigo credentials: delorenj / Ittr5eesol

  • Storefront accounts (Etsy, Creative Market, Gumroad, etc.) — logged in via openclaw browser


Key Constraints

  • No Pixabay. No stock site APIs. Source is Google Images search only.
  • No image downloads. Capture sources via browser screenshot only.
  • Crop preview panels before conversion. Never feed raw full-page screenshots to Qwen.
  • Follow phases in order. Do not skip or combine.
  • QA is mandatory. Failed pages must be replaced, not shipped.
  • Every asset tracked. If it was used or created, it appears in the log.
  • Pricing is per strategy. Don't underprice. Don't overprice. Follow the tiers.
  • All storefronts get listings. Cast a wide net. Revenue compounds across channels.
Install via CLI
npx skills add https://github.com/delorenj/skills --skill creating-coloring-books
Repository Details
star Stars 9
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator