Pdp ai readable
Convert image-heavy EVAS product detail pages into AI-readable HTML for Imweb (KR default): Mistral OCR 4 (mistral-ocr-4-0), images-first + open collapsible text panel, Product/FAQ JSON-LD files for header inject. Use for PDP convert, 상세페이지 AI, GEO/AEO product HTML, BubbleShare-style conversion without BubbleShare. Prefer evas-pdp-geo-kr for full OpenSEO+deploy loop when user only gives idx/product code.From its SKILL.md
npx -y skills add passeth/evas-pdp-geo-skills --skill pdp-ai-readableAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.3 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it
PDP AI-Readable
One-line run (convert only, no deploy)
idx={N} PDP convert only
Full loop (demand+deploy) → use evas-pdp-geo-kr with idx={N} KR PDP GEO.
Convert one product detail page into crawlable HTML for EVAS Imweb.
Default language: Korean (evasmall.co.kr). Do not deploy EN unless explicitly requested.
For the full KR GEO loop (OpenSEO MCP → prompts → deploy → verify), use evas-pdp-geo-kr.
Goal
- Collect product facts + detail images
- OCR (prefer Mistral OCR 4)
- Build layout v3: uninterrupted images +
<details open>continuous text - Write Product + FAQPage JSON-LD files (not inside Froala body)
- Save artifacts under
artifacts/pdp/{brand}/idx-{n}/ - Cosmetics claim safety pass
Canonical layout (v3)
[detail images only]
<details open>
summary: 제품 정보·성분·FAQ (클릭하여 접기/펼치기)
panel: dense continuous HTML (tables, how-to, FAQ answers)
</details>
Why:
- Design images stay clean
- Humans see text expanded by default
- Crawlers still get full text in DOM
- Froala strips
<script>→ JSON-LD via site Header inject, not body
Inputs
Required:
- Product URL (KR mall)
Optional:
related-prompts.json(from OpenSEO / GSC)- Brand
@id(default FRAIJOUR) - Organization
@id:https://www.evascosmetic.com/#organization
Workflow
1. Page evidence
- name, price, short description, disclosure
- detail images (
fr-dib/ upload CDN)
2. OCR
See Mistral OCR 4 section below.
3. Demand language
If related-prompts / OpenSEO exists, drive FAQ and title seeds from it.
Else product-grounded FAQ only; volumes unknown.
4. Build HTML
- Images first (single set)
- Open collapsible continuous text panel
- No JSON-LD scripts in body
5. JSON-LD files
product-v3.jsonld.json,faq-v3.jsonld.json- Header registry snippet for idx
6. Deliverables
artifacts/pdp/{brand}/idx-{n}/
INDEX.json
deployed-kr.html
product-v3.jsonld.json
faq-v3.jsonld.json
related-prompts.json
ocr/
meta.md
7. Deploy notes (KR only)
- Imweb KR language unit only
- Verify live open details +
data-evas-pdp-ld
EN
Do not deploy EN from this skill. Generate EN files only when orchestrated by evas-pdp-geo-en.
During KR work: never switch Imweb EN language tabs.
Orchestration:
- KR full loop →
evas-pdp-geo-kr - EN full loop (separate OpenSEO market) →
evas-pdp-geo-en
Reference
artifacts/pdp/fraijour/idx-19/
Mistral OCR 4 (required for new SKUs)
Default OCR engine for this pipeline. Do not skip for new products unless artwork text is already fully available as trusted HTML/disclosure.
| Item | Value |
|---|---|
| Product | Mistral OCR 4 |
| Model id (API) | mistral-ocr-latest or docs card ocr-4-0 / project alias mistral-ocr-4-0 |
| Docs | https://docs.mistral.ai/models/model-cards/ocr-4-0 · Cookbook: https://docs.mistral.ai/resources/cookbooks?useCase=OCR |
| Why here | Long vertical PDP images need accurate KR/EN text, tables, and ingredient lines for GEO without inventing claims |
| Pilot evidence | artifacts/pdp/fraijour/idx-19/ocr/ + source.json → "ocr_model": "mistral-ocr-4-0" |
What OCR 4 gives us (use it)
- Extracted markdown/text per detail slice
- Prefer structured fields when returned: bounding boxes, block types (title/table/…), confidence — keep low-confidence lines out of clinical claims or mark
<!-- REVIEW --> - Strong multilingual (KR packaging + EN global art)
Procedure
- Collect detail images in order (CDN
fr-dib/ imweb upload URLs). - Call Mistral OCR API per slice (or batched if API supports multi-page).
- Save raw responses:
ocr/slice_01.json … slice_N.json ocr/combined_markdown.json - Post-correct brand/product OCR errors (예: 약육 → 약쑥, FRAIJOUR spelling).
- Build HTML tables/lists/FAQ answers only from OCR + mall disclosure (가격·고시).
- Record in
source.json:{ "ocr_model": "mistral-ocr-4-0", "ocr_provider": "mistral", "images": ["…"] }
Auth
- API key:
MISTRAL_API_KEYenv, Aside secrets, or session file (never commit keys). - If key missing: stop convert for new SKUs, or use existing
ocr/only when user confirms reuse.
Fallback
Only if Mistral unavailable and user accepts lower quality:
- Vision LLM transcript of each slice (explicitly label
ocr_model: vision-fallback) - Never present fallback as Mistral OCR 4
EN skill
Reuse KR ocr/ facts; re-OCR only when EN-only artwork differs.
Layout + schema build rules (v3.2)
- Build HTML without
<style>tags. - First child inside
.evas-pdp-ai: visible.evas-pdp-seo-leadpure-text blurb (ingredient ppm, texture, volume). - Emit
clean-summary.txt+product-v3.jsonld.json+faq-v3.jsonld.json+graph-v3.2.jsonld.json(@graph). - Product.description = clean-summary only; never concatenate Froala/HTML/CSS.
- Always set cosmetics
additionalPropertyfrom OCR/disclosure facts only. - Header inject snippet must be one IIFE writing one
application/ld+jsonwith@graph.
Structured data guards (critical)
Confirmed failure modes on Imweb:
-
CSS leak into platform Product.description
If detail HTML contains a<style>block, Imweb may scrape it into auto Product JSON-LD.
Rule: no<style>tags indeployed-*.html. Use inline styles only. Imweb may still inject lazy-image styles (ignore those). -
Dual Product nodes
Imweb always emits its own Product (no@id). We inject a canonical Product with@id…#product.
Do not invent a second custom Product. Prefer one inject@graph=[Product, FAQPage].
Platform Product cannot be deleted; keep its description clean by (1) no style blocks (2) pure-text SEO lead paragraph at top of detail. -
description must be pure text
Reject any description matching/evas-pdp|summary::|\{display|font-family/.
Prefer explicitclean-summary.txt/ SEO meta over scraping Froala HTML. -
additionalProperty required for cosmetics GEO
Include at least: key ingredient + concentration (if disclosed), skin concern, texture, volume, mildness positioning.
Do not invent ppm/counts not on artwork/disclosure (e.g. do not invent "17 extracts" if page says otherwise). -
@id policy
- Product:
https://www.evasmall.co.kr/shop_view/?idx={n}#product - FAQPage:
…#faqwithabout→ Product@id - brand/manufacturer:
https://www.evascosmetic.com/#brand-…/#organization(site-wide graph)
- Product:
-
Shipping/return in Offer only when live page states them (e.g. 2,500원 / 2만원 이상 무료 / 14일 반품).
-
Verify live after deploy:
- inject Product
descCss=falseandadditionalProperty.length >= 5 - Imweb Product
descCss=false - FAQPage question count matches body
- inject Product
Field placement (critical)
Imweb product form has two HTML fields:
| Field | DOM / admin label | What goes here |
|---|---|---|
| 요약 설명 | simple_content / first Froala / live .goods_summary | Short pure text only (clean-summary.txt) — no images, no full widget |
| 상품 상세 설명 | prod_content / Froala under "상품 상세 설명" / live ._prod_detail_detail_lazy_load | Full deployed-*.html widget |
Wrong placement symptom
- Full AI panel appears beside price / in summary column (
goods_summary) - Detail tab lower on page is empty or short
Deploy targeting rules
- Identify editors by section label, not only by size
- Summary editor: set
clean-summarytext only (one short paragraph) - Detail editor: set full widget HTML
- Never put
evas-pdp-aifull layout into summary - After save, live-check:
.goods_summary .evas-pdp-aimust be absent- detail lazy load must contain
.evas-pdp-ai
What ships with it: 1 file
2.2 KB alongside SKILL.md
references/
- widget-template.html2.2 KB