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".
Input: A topic or trend (e.g. "kpop demon hunters") + optional page count (default 10).
Output:
~/d/33GOD/{YYYY-MM-DD}/DigiPopStudios/{topic-slug}/run-{RUNID}/Follow each phase and step exactly. Do not substitute, skip, or reorder.
profile=openclaw).https://www.google.com/search?tbm=isch&q={url-encoded topic}.Hard rules:
For each candidate from Phase 1:
{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.
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:
fal-ai/qwen-image-edit-2511 with the coloring conversion prompt.Handled automatically by scripts/coloring-convert after Phase 3.
Output pairs:
{bundle}/coloring/page-{NN}-coloring.png{bundle}/coloring/page-{NN}-coloring.svgSpawn 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:
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
Create sale-ready bundles in {bundle}/packages/:
{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
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()
KDP requires minimum 24 interior pages. For a 10-page bundle:
Generate 3-5 preview images for storefront listings:
Use the fal-text-to-image skill or browser-based mockup generators.
cd {bundle}/packages
zip -r {topic-slug}-coloring-bundle.zip {topic-slug}-coloring-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 |
| 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 |
Post listings to each storefront. Prioritize by traffic and margin.
Use the openclaw browser (profile=openclaw) to:
https://www.etsy.com/your/shops/me/tools/listings/create{Topic} Coloring Pages Bundle | {N} Printable Pages | Digital Download | Kids & Adultscoloring pages, coloring book, printable, digital download, {topic keywords}, kids coloring, adult coloring, line art, instant downloadhttps://creativemarket.com/sell{Topic} Coloring Book Bundle – {N} Printable Pageshttps://app.gumroad.com/products/new{Topic} Coloring Pages – {N} Page Bundlehttps://kdp.amazon.com/en_US/bookshelf{Topic} Coloring Book: {N} Pages for Kids and Adultshttps://payhip.com/dashboard/products/newhttps://ko-fi.com/manage/shop✨ {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!
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
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