Agent skill
creating-coloring-books
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".
Install this agent skill to your Project
npx add-skill https://github.com/delorenj/skills/tree/main/creating-coloring-books
SKILL.md
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.zshbashsource ~/.config/zshyzsh/secrets.zsh -
Python venv with deps:
bashcd ~/.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:
bashsource ~/.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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
openclaw-upgrade
Upgrade OpenClaw installations to the latest version. Handles global npm installs, local development setups, release channels (stable/beta/dev), configuration preservation, and platform-specific requirements. Use when updating OpenClaw, switching release channels, or troubleshooting update issues.
vercel-composition-patterns
React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.
security-monitor
Real-time security monitoring for Clawdbot. Detects intrusions, unusual API calls, credential usage patterns, and alerts on breaches.
event-driven-architecture
Kafka, RabbitMQ, SQS/SNS, event sourcing, CQRS, saga patterns, dead letter queues, and idempotency. Use when designing asynchronous systems, implementing message-driven workflows, or building event streaming pipelines.
shadcn-ui
Expert guidance for integrating and building applications with shadcn/ui components, including component discovery, installation, customization, and best practices.
just-fucking-cancel
Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Outputs interactive HTML audit with one-click cancel workflow. Pairs with Plaid integration for real-time transaction access without CSV exports.
Didn't find tool you were looking for?