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:
- Workflow log in
~/d/33GOD/{YYYY-MM-DD}/DigiPopStudios/{topic-slug}/run-{RUNID}/ - Quality-checked coloring book pages uploaded to media.delo.sh as PNG+SVG pairs
- Packaged bundles (PDF, ZIP) ready for sale
- 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
- Open the openclaw browser (
profile=openclaw). - Navigate to Google Images:
https://www.google.com/search?tbm=isch&q={url-encoded topic}. - Take a snapshot of the results page.
- 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.
- 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:
- Click on the thumbnail in Google Images to open the preview panel on the right.
- Screenshot the full browser window with the preview panel visible.
- 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-2511with 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:
- Return to Phase 1 and find a replacement source.
- Re-run Phases 2–4 for the replacement.
- Re-run QA on the replacement only.
- 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:
- Hero image: 2-3 best pages fanned out on a wooden table mockup
- Grid preview: 2×5 grid showing all 10 pages as thumbnails
- Single page zoom: Close-up of the highest-rated page
- 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:
- Navigate to
https://www.etsy.com/your/shops/me/tools/listings/create - 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)
- Title:
- Publish listing
9b. Creative Market
- Navigate to
https://creativemarket.com/sell - 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
- Title:
- Submit for review
9c. Gumroad
- Navigate to
https://app.gumroad.com/products/new - Create product:
- Name:
{Topic} Coloring Pages – {N} Page Bundle - Price: Set minimum (PWYW)
- Files: Upload ZIP + PDF
- Cover: Upload hero mockup
- Description: From template
- Name:
- Publish
9d. Amazon KDP (if 24+ pages available)
- Navigate to
https://kdp.amazon.com/en_US/bookshelf - 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
- Title:
- Also create Kindle ebook version with the digital PDF
9e. Payhip (zero fees)
- Navigate to
https://payhip.com/dashboard/products/new - Upload ZIP + fill product details
- Publish
9f. Ko-fi Shop
- Navigate to
https://ko-fi.com/manage/shop - Add shop item with ZIP download
- 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_KEYenvironment variable — sourced from~/.config/zshyzsh/secrets.zshsource ~/.config/zshyzsh/secrets.zshPython venv with deps:
cd ~/.agents/skills/creating-coloring-books && uv venv .venv && uv pip install fal-client requests reportlabRun 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 fallbackPiwigo credentials:
delorenj/Ittr5eesolStorefront 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.