Install any skill in seconds. Free to start, no credit card required.
Get Started Free →한국 이커머스 상세페이지 13섹션 이미지를 자동 생성하고 1080×12720 단일 PNG로 합성하는 스킬입니다. "상세페이지 이미지 만들어줘", "13섹션 합성 이미지", "상폐 이미지", "1080 12720 합성"처럼 말하면 됩니다. detail-page-copy의 13섹션 카피와 사용자 상품 사진을 받아 섹션별 이미지 프롬프트를 작성하고, moai-media:higgsfield-image(Nano Banana Pro 등 11개 모델)로 13장의 이미지를 생성한 뒤 Pillow 기반 자체 합성 스크립트(scripts/compose.py)로 1080×12720 세로 합성 PNG를 만듭니다. 외부 패키지 설치 불필요 — 합성 로직은 cowork에 자체 구현되어 있습니다.
.claude/skills/modu-ai-detail-page-image/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 107% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 85% | 0% |
13섹션 감정여정 상세페이지 이미지를 생성하고 세로 합성 PNG로 만드는 스킬입니다. moai-media:higgsfield-image를 백엔드로 사용하여 카테고리별 비주얼 톤이 일관된 13장의 섹션 이미지를 만들고, Pillow 단일 의존성으로 1080×12720 단일 합성 이미지를 산출합니다.
상세페이지 이미지, 상폐 이미지, 13섹션 이미지, 1080 12720, 상세페이지 합성, 상품 상세 이미지, combined.png, 상폐 합성본, 이커머스 이미지 합성
pip install Pillow 또는 uv pip install Pillow다음을 확보합니다:
detail-page-copy 스킬 출력)product-photo-brief 스킬 출력)./commerce-output/{job_id}/)각 섹션의 카피와 카테고리 비주얼 브리프를 합쳐 higgsfield-image 프롬프트를 작성합니다. references/image-prompts.md 참조 (섹션별 비주얼 언어, 합성 가이드).
각 섹션은 고유한 비주얼 언어를 가집니다:
생성 전략:
references/sections-spec.md 표 참조 (Hero 1600-Filter 700)생성 결과를 output_dir/{job_id}/sections/01_hero.png 부터 13_cta.png 까지 저장.
생성 실패 시: 해당 섹션은 다크 플레이스홀더(40,40,40)로 채워 합성을 진행합니다.
scripts/compose.py)bashpython scripts/compose.py \ --sections-dir ./commerce-output/{job_id}/sections/ \ --output ./commerce-output/{job_id}/combined.png
스크립트 동작:
(40,40,40) 다크 플레이스홀더로 대체상세 알고리즘은 scripts/compose.py와 scripts/README.md 참조.
json{ "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_sections가 비어있지 않으면 사용자에게 다음을 안내:
--output --job-id로 재실행 시 자동 재개되는지 (재개는 사용자가 수동으로 해당 섹션만 재생성)./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 세로 합성본자세한 사용법은 scripts/README.md 참조. 핵심 명령:
bash# 13장이 sections/ 폴더에 01_hero.png ~ 13_cta.png로 있을 때 python scripts/compose.py \ --sections-dir ./commerce-output/abc12345/sections/ \ --output ./commerce-output/abc12345/combined.png
옵션:
--width INT: 출력 너비 (기본 1080)--placeholder-color "R,G,B": 누락 섹션 플레이스홀더 색 (기본 "40,40,40")--quiet: 진행 로그 억제moai-commerce:detail-page-copy — 13섹션 카피 생성 (이 스킬 입력)moai-commerce:product-photo-brief — 상품 사진 사전 분석moai-commerce:marketplace-coupang — 채널별 이미지 규격 가이드detail-page-copy 단독 사용moai-content:product-detailMIT.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 27,363 | 19,441 | -29% | 1 | 1 | 0% | 5,552 | 5,478 | -1% | 0 | 0 | — |
case-02 | fail→pass | 24,668 | 24,276 | -2% | 1 | 1 | 0% | 4,622 | 6,165 | +33% | 0 | 0 | — |
case-03 | fail→fail | 21,617 | 9,345 | -57% | 1 | 1 | 0% | 4,208 | 2,723 | -35% | 0 | 0 | — |
case-04 | fail→fail | 33,747 | 22,345 | -34% | 1 | 1 | 0% | 4,084 | 5,560 | +36% | 0 | 0 | — |
case-05 | fail→fail | 15,962 | 12,584 | -21% | 1 | 1 | 0% | 2,549 | 3,908 | +53% | 0 | 0 | — |
case-06 | pass→pass | 30,698 | 31,604 | +3% | 1 | 1 | 0% | 6,186 | 8,148 | +32% | 0 | 0 | — |
case-07 | pass→pass | 14,902 | 12,123 | -19% | 1 | 1 | 0% | 2,199 | 3,797 | +73% | 0 | 0 | — |
case-08 | fail→pass | 12,760 | 5,527 | -57% | 1 | 1 | 0% | 1,962 | 2,984 | +52% | 0 | 0 | — |
case-09 | fail→pass | 17,261 | 11,452 | -34% | 1 | 1 | 0% | 2,328 | 3,773 | +62% | 0 | 0 | — |
case-10 | fail→pass | 11,495 | 18,340 | +60% | 1 | 1 | 0% | 1,876 | 3,882 | +107% | 0 | 0 | — |
case-11 | fail→pass | 8,088 | 4,722 | -42% | 1 | 1 | 0% | 1,434 | 2,654 | +85% | 0 | 0 | — |
case-12 | fail→pass | 11,865 | 4,356 | -63% | 1 | 1 | 0% | 1,998 | 2,898 | +45% | 0 | 0 | — |
case-13 | pass→pass | 14,230 | 6,824 | -52% | 1 | 1 | 0% | 2,197 | 3,003 | +37% | 0 | 0 | — |
case-14 | fail→pass | 13,542 | 7,453 | -45% | 1 | 1 | 0% | 2,183 | 3,083 | +41% | 0 | 0 | — |
case-15 | fail→pass | 7,844 | 3,370 | -57% | 1 | 1 | 0% | 1,400 | 2,609 | +86% | 0 | 0 | — |
case-16 | pass→pass | 12,904 | 3,244 | -75% | 1 | 1 | 0% | 2,027 | 2,413 | +19% | 0 | 0 | — |
case-17 | fail→pass | 15,416 | 11,419 | -26% | 1 | 1 | 0% | 2,410 | 3,831 | +59% | 0 | 0 | — |
case-18 | fail→pass | 12,560 | 3,134 | -75% | 1 | 1 | 0% | 1,942 | 2,452 | +26% | 0 | 0 | — |
case-19 | fail→pass | 13,013 | 5,211 | -60% | 1 | 1 | 0% | 2,033 | 2,773 | +36% | 0 | 0 | — |
case-20 | fail→pass | 11,496 | 6,886 | -40% | 1 | 1 | 0% | 1,866 | 3,020 | +62% | 0 | 0 | — |
case-21 | pass→pass | 11,291 | 3,392 | -70% | 1 | 1 | 0% | 1,991 | 2,521 | +27% | 0 | 0 | — |
case-22 | fail→pass | 6,633 | 2,744 | -59% | 1 | 1 | 0% | 1,086 | 2,344 | +116% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.