English | 한국어 | 中文 | 日本語 | Español
Turn a product into a detail page that sells — a verified image cut sheet, not a spec sheet.
Give it the product facts. Get back 10~20 vertically stacked image cuts with copy inside the image, plus an HTML legal block. Quantitative statements require an exact input match or a reviewed source link preserving attribute, unit and conditions. The checker does not establish factual truth or verify arithmetic.
Quick Start • Why sangse? • How it works • Features • Requirements
Live examples (fictional health-food products): https://fivetaku.github.io/sangse/
/plugin marketplace add https://github.com/fivetaku/gptaku_plugins.git
/plugin install sangse
/plugin install pumasi # image generation backend (/pumasi:image)
Restart Claude Code after installation.
codex features enable image_generation/sangse <product info as text, a file path, or a URL>
/sangse 카피만 <product info> # stop after copy approval, no images
/sangse check sangse/<slug> # re-run the verification gates on an existing folder
Or just say it — "상세페이지 만들어줘", "make a detail page for this product".
- You built a product, not a sales page — solo founders and vibe-coders who need a detail page that converts, not a feature list.
- You sell on Kurly, Coupang or Naver Smart Store — the output is the image cut sheet those channels actually use, sized for upload (Smart Store 860 px / web 720 px).
- You need copy, images and the legal block verified together — three gates catch template overflow, untraceable numbers, banned claims and missing mandatory labels before you publish.
- You will not accept invented claims — the Iron Law: nothing that is not in the input gets written. Gaps become
[자료 필요: …]placeholders and a to-do table.
product facts (text / file / URL)
│
▼
Step 0 dependency check check_deps.sh (--install)
Step 1 product interview only the uncertain slots · ≤4 questions × 2 rounds
Step 2 offer check what the customer gets + which anxiety it removes + why now
Step 2½ style pack interview picks one of 6 packs (recommended one pre-selected) — decides cut sequence, palette strategy, emphasis, visual mode
Step 3 cut sheet cuts.md (14 cuts by default) + legal.md
Step 3½ humanize humanize_cuts.py — GPT (Codex CLI) re-reads each cut's meaning and rewrites the copy like a person; per-cut guards keep numbers, placeholders, slot limits
│
├─ Gate 1 check_cuts.py deterministic: slot limits · Q coverage · every number traced · banned words · legal blocks
├─ Gate 2 4 reviewer agents sceptical customer · regulatory examiner · CRO reviewer · competitor marketer
└─ copy approval
│
Step 4 cut images /pumasi:image — anchor cut first, the rest chained with --ref, text + physical plausibility inspected
Step 5 HTML assembly assemble_html.py — cuts stacked edge to edge, legal block below
│
└─ Gate 3 render_check.py Playwright render at 390 / 860 px + a 5-second test on the first screen
│
▼
sangse/<slug>/ cuts.md · legal.md · images/ · index.html · qa/ · scorecard
The cuts follow the 8 questions a customer silently asks before paying: Is this for me → What do I get → Why this way → Can I do it → How hard is it → What exactly do I receive → What if it fails → Why now.
| Feature | Description |
|---|---|
| Image cut sheet format | 10~20 cuts designed at 1000 px width; actual generated dimensions are checked. Copy is rendered inside the image; prices, phone numbers, nutrition tables and legal notices stay in HTML |
| 44 cut templates | Dissected from real pages — Kurly, Coupang, a brand mall, Samsung, LG, Musinsa (fashion), Kmong (services) |
| Uncertainty-driven interview | Asks only what cannot be inferred from the input; at most 4 questions × 2 rounds |
| Offer check before copy | Weak offers are flagged before a single line of copy is written |
| GPT humanize pass | A second model (Codex CLI) interprets what each cut is trying to say and rewrites it without AI tells (translation-ese, ad clichés, uniform rhythm, hedging — rules borrowed from humanize-korean); code guards reject any cut that adds a number, drops a placeholder, overflows a slot or introduces a banned word |
| Style packs | Pick how the page persuades: story-first (customer-scene opener), checkpoint (point index), proof-first (numbers, badges, reviews), lookbook (photo-led, minimal copy), spec showcase (features, comparisons, spec sheet), offer-first (promo landings). Each pack sets the cut sequence, typography limits, background strategy, emphasis, visual mode and image-prompt style — measured from 17 real Korean detail pages. No brand or site names anywhere in a pack |
| Gate 1 — deterministic checker | check_cuts.py: template slot limits, Q1~Q8 coverage, every number traced to the input, category banned words, mandatory legal blocks, image existence |
| Gate 2 — four reviewer agents | Separate from the writer; pass = customer answers "yes" on all 8 questions and zero regulatory violations, max 2 rounds |
| Gate 3 — real render | render_check.py: Playwright render at 390 / 860 px plus a 5-second first-screen test |
| Cut images with inspection | /pumasi:image anchor → --ref chain; every cut checked for text accuracy and product plausibility (sealed packaging, counts, fingers) |
| Compliance filters | references/compliance.md: detailed rules for food and health functional food (Food Labeling and Advertising Act art. 8, approved functional claims, pre-review, mandatory labels) and a legal index for cosmetics, medical devices, finance, education, real estate and electronics — category-specific filters for those are in progress |
| Iron Law | No invented cases, numbers, reviews, refund terms or deadlines — placeholders instead |
Nothing here is legal advice; final wording is subject to the relevant review body.
| Command | Description |
|---|---|
/sangse <product info> |
Full run: interview → cut sheet → gates → images → HTML → scorecard |
/sangse 카피만 <product info> |
Copy only — stops after the copy approval gate |
/sangse 스마트스토어 <product info> |
Pre-set the platform (also 웹, 크몽), skip that interview question |
/sangse check <dir> |
Run only the verification gates on an existing sangse/<slug> folder |
/sangse humanize <dir> |
Run only the GPT humanize pass on an existing folder and show what was accepted or rejected |
/sangse --style <pack> <product info> |
Skip the style question and force a pack (story-first, checkpoint, proof-first, lookbook, spec-showcase, offer-first) |
- "상세페이지 만들어줘", "스마트스토어 상세 만들어줘", "세일즈 페이지 써줘", "이 제품 소개 페이지 써줘"
- "make a detail page", "product page copy", "sales page copy", "landing page copy"
| Path | Role |
|---|---|
commands/sangse.md |
Single entry point (/sangse), argument routing |
skills/sangse/SKILL.md |
Workflow (Step 0 → interview → offer check → cut sheet → 3 gates → images → HTML → report), Iron Law, red flags |
skills/sangse/references/ |
framework.md (8 questions), cut-sheet.md, reference-patterns.md (page analysis), interview.md, humanize.md (GPT rewrite prompt + guards), numerical-provenance.md (source-link contract), style-packs.md (6 packs, 44 templates in the catalog), compliance.md, verification.md, evidence.md, image-briefs.md, reference-capture.md |
skills/sangse/scripts/ |
check_deps.sh, humanize_cuts.py, check_cuts.py, check_copy.py, assemble_html.py, render_check.py, capture_reference.js |
skills/sangse/assets/ |
cut-templates.json, banned-words.json, humanize-schema.json, style-packs/*.json (6 packs + schema), template.html |
setup/ |
First-run setup (gptaku standard) |
tests/test-gates.sh |
Regression: gate 1 PASS on the three examples, assembler smoke, humanize guards, dependency check, frontmatter contract |
examples/ |
Three fictional products with the full artefact trail and qa/ results; style-pack-variants/ shows the same product in three packs |
Run bash tests/test-gates.sh for the offline regressions. With Node Playwright and Chrome available, run SANGSE_RENDER_TESTS=1 bash tests/test-gates.sh to include browser width and CTA-metric regressions.
Automatic PASS is not image-text approval, product-fidelity approval or publication readiness. Image-embedded CTA position remains manual_review; fictional or incomplete drafts are not ready to publish. See numerical provenance, verification and example status.
- Claude Code CLI with the gptaku-plugins marketplace
pumasiplugin for cut images (optional — without it the run stops at copy + HTML placeholders)- Codex CLI logged in with
image_generationenabled (image backend) - python3 — gates and assembler use the standard library only
- (optional) Node + Playwright for gate 3 render checks;
~/.insane-search/node/node_modulesis picked up automatically bash skills/sangse/scripts/check_deps.sh --installchecks and installs the above
See CHANGELOG.md. Release procedure (version bump → GitHub release → marketplace submodule pointer → cache) follows gptaku_plugins/PLUGIN_STANDARD.md; tests/test-gates.sh must pass before every bump.
MIT — see LICENSE and DISCLAIMER.md.
Product facts in. A detail page that sells — with nothing made up.
