SuperAPI AI Directory

commerce-detail-page-image

Design & creation

View repository

Updated 10-15 21:04

About this skill

Detail Page Image Composer

Overview

This is a skill that generates 13-section emotional journey detail page images and creates a vertically composited PNG. Using moai-media:media-higgsfield-image as the backend, it creates 13 section images with a consistent visual tone per category, and produces a single 1080×12720 composite image with Pillow as the sole dependency.

Trigger Keywords

detail page image, sangpye image, 13-section image, 1080 12720, detail page composite, product detail image, combined.png, sangpye composite, e-commerce image composite

Prerequisites

  1. Pillow installation: pip install Pillow or uv pip install Pillow
    • Python 3.10+ environment
    • No other dependencies (NumPy not required)
  1. moai-coworker plugin enabled: use media-higgsfield-image for 13-section image generation

    • Or the user separately prepares 13 section images and provides the folder path
  2. 1-14 product photos: actual product reference (optional but recommended)

Workflow

Step 1: Collect Inputs

Secure the following:

  • 13-section copy JSON (commerce-detail-page-copy skill output)
  • Paths to 1-14 product photos
  • Category (electronics/fashion/food/beauty/home/supplement/pet/kids/handmade/general)
  • ProductDNA (optional, commerce-product-photo-brief skill output)
  • Output directory (default: ./commerce-output/{job_id}/)

Step 2: Generate 13-Section Image Prompts

Combine each section's copy and category visual brief to write media-higgsfield-image prompts. references/image-prompts.md reference (per-section visual language, composition guide).

Each section has a unique visual language:

  • Hero: cinematic_product_portrait — full bleed + dramatic rim light
  • Pain: emotional_photography_no_product — dark tone, product not shown
  • Problem: clinical_infographic — clean infographic
  • Story: editorial_split_before_after — Before/After left-right split
  • Solution: product_beauty_shot — studio beauty shot
  • How: illustrated_step_sequence — 3-step illustration
  • Proof: magazine_spread — magazine spread
  • Authority: portrait_with_quote — portrait + quote
  • Benefits: icon_grid_with_lifestyle — icon grid + lifestyle
  • Risk: document_with_seal — document/certification style
  • Compare: split_screen_vs — 50/50 split comparison
  • Filter: checklist_visual — checklist visualization
  • CTA: urgent_product_reveal — urgency + price emphasis

Step 3: Image Generation (moai-media:media-higgsfield-image)

Generation strategy:

  • Each section width: 1080px
  • Height per section: references/sections-spec.md See table (Hero 1600-Filter 700)
  • Category visual brief (electronics/fashion/...) injected into all prompts
  • Pass product reference photos to media-higgsfield-image's image-to-image mode

Save generation results from output_dir/{job_id}/sections/01_hero.png to 13_cta.png .

On generation failure: fill that section with a dark placeholder (40,40,40) and proceed with composition.

Step 4: 1080×12720 composition (Pillow inline assembly)

Without a separate script, run the Pillow code below as-is to stitch the 13 images vertically. Behavior: (1) Load in order 01_hero~13_cta → (2) Resize to width 1080 (preserve aspect ratio + center crop) → (3) Adjust to standard height per section → (4) Vertical stack → (5) Missing sections replaced with (40,40,40) dark placeholder.

from PIL import Image
from pathlib import Path

WIDTH = 1080
# (파일명 슬러그, 표준 높이) — sections-spec.md 표와 동일
SECTIONS = [
    ("01_hero", 1600), ("02_pain", 800), ("03_problem", 900), ("04_story", 1000),
    ("05_solution", 1100), ("06_how", 1000), ("07_proof", 1100), ("08_authority", 900),
    ("09_benefits", 1000), ("10_risk", 800), ("11_compare", 900), ("12_filter", 700),
    ("13_cta", 900),
]
PLACEHOLDER = (40, 40, 40)

def fit(img, w, h):
    # 비율 유지 리사이즈 후 중앙 크롭으로 정확히 w×h 맞춤
    scale = max(w / img.width, h / img.height)
    img = img.resize((round(img.width * scale), round(img.height * scale)), Image.LANCZOS)
    left, top = (img.width - w) // 2, (img.height - h) // 2
    return img.crop((left, top, left + w, top + h))

sections_dir = Path("./commerce-output/JOB_ID/sections")   # 실제 job_id로 치환
total_h = sum(h for _, h in SECTIONS)
canvas = Image.new("RGB", (WIDTH, total_h), PLACEHOLDER)
failed, y = [], 0
for slug, h in SECTIONS:
    p = sections_dir / f"{slug}.png"
    if p.exists():
        canvas.paste(fit(Image.open(p).convert("RGB"), WIDTH, h), (0, y))
    else:
        failed.append(slug)   # 누락 → 다크 플레이스홀더 그대로 유지
    y += h
canvas.save(sections_dir.parent / "combined.png")
print({"size": f"{WIDTH}x{total_h}", "failed_sections": failed})

For standard height values, refer to references/sections-spec.md, and for per-section visual language, refer to references/image-prompts.md.

Step 5: Output report

{
  "job_id": "a1b2c3d4",
  "output_dir": "/abs/.../commerce-output/a1b2c3d4",
  "combined": "/abs/.../combined.png",
  "sections": [
    "/abs/.../sections/01_hero.png",
    "...",
    "/abs/.../sections/13_cta.png"
  ],
  "failed_sections": [],
  "elapsed_sec": 0,
  "size": "1080x12720"
}

failed_sectionsIf is not empty, guide the user on the following:

  • Which sections failed
  • Whether it auto-resumes when re-run with the same --output --job-id(resume means the user manually regenerates only that section)

Output file structure

./commerce-output/{job_id}/
├── analysis.json              # 13섹션 카피 + 프롬프트 + ProductDNA
├── sections/                   # 13장 섹션 (1080×가변)
│   ├── 01_hero.png            (1080×1600)
│   ├── 02_pain.png            (1080×800)
│   ├── ...
│   └── 13_cta.png             (1080×900)
└── combined.png                # 1080×12720 세로 합성본

Composition code adjustment points

In the Step 4 inline Pillow code, you only need to change the following values:

  • WIDTH: Output width (default 1080)
  • PLACEHOLDER: Missing section color (default (40, 40, 40))
  • SECTIONS: Section order·standard height (default 13 sections, references/sections-spec.mdsame as)
  • sections_dir: Replace with actual job_id path

This skill replaced the reference to the nonexistent script (compose.py) with Principle A (prompt/inline code path) — composition directly runs the Pillow code above.

Usage examples

  • "Compose a 13-section image with this copy result"
  • "Make a 1080 12720 detail page with 5 product photos"
  • "electronics category, wireless earbuds detail page image full set"

Related skills

  • moai-seller:commerce-detail-page-copy — 13-section copy generation (input to this skill)
  • moai-seller:commerce-product-photo-brief — Product photo pre-analysis
  • 13-section image generation — Higgsfield MCP(Soul·cinematic image·character) direct call
  • moai-seller:commerce-marketplace-coupang — Image spec guide per channel

When not to use this skill

  • When only copy is needed: commerce-detail-page-copy use standalone
  • When only a single product shot is needed: Higgsfield MCP direct call
  • Video generation: Higgsfield MCP(DOP·Soul) direct call
  • shadcn/ui-based web detail page: moai-seller:commerce-product-detail

License

MIT.