agentsclimarketplace

Pdp ai readable

Skill passeth/evas-pdp-geo-skills/skills/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

Install
npx -y skills add passeth/evas-pdp-geo-skills --skill pdp-ai-readable

Assembled 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

  1. Collect product facts + detail images
  2. OCR (prefer Mistral OCR 4)
  3. Build layout v3: uninterrupted images + <details open> continuous text
  4. Write Product + FAQPage JSON-LD files (not inside Froala body)
  5. Save artifacts under artifacts/pdp/{brand}/idx-{n}/
  6. 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.

ItemValue
ProductMistral OCR 4
Model id (API)mistral-ocr-latest or docs card ocr-4-0 / project alias mistral-ocr-4-0
Docshttps://docs.mistral.ai/models/model-cards/ocr-4-0 · Cookbook: https://docs.mistral.ai/resources/cookbooks?useCase=OCR
Why hereLong vertical PDP images need accurate KR/EN text, tables, and ingredient lines for GEO without inventing claims
Pilot evidenceartifacts/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

  1. Collect detail images in order (CDN fr-dib / imweb upload URLs).
  2. Call Mistral OCR API per slice (or batched if API supports multi-page).
  3. Save raw responses:
    ocr/slice_01.json … slice_N.json
    ocr/combined_markdown.json
    
  4. Post-correct brand/product OCR errors (예: 약육 → 약쑥, FRAIJOUR spelling).
  5. Build HTML tables/lists/FAQ answers only from OCR + mall disclosure (가격·고시).
  6. Record in source.json:
    { "ocr_model": "mistral-ocr-4-0", "ocr_provider": "mistral", "images": ["…"] }
    

Auth

  • API key: MISTRAL_API_KEY env, 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:

  1. Vision LLM transcript of each slice (explicitly label ocr_model: vision-fallback)
  2. 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)

  1. Build HTML without <style> tags.
  2. First child inside .evas-pdp-ai: visible .evas-pdp-seo-lead pure-text blurb (ingredient ppm, texture, volume).
  3. Emit clean-summary.txt + product-v3.jsonld.json + faq-v3.jsonld.json + graph-v3.2.jsonld.json (@graph).
  4. Product.description = clean-summary only; never concatenate Froala/HTML/CSS.
  5. Always set cosmetics additionalProperty from OCR/disclosure facts only.
  6. Header inject snippet must be one IIFE writing one application/ld+json with @graph.

Structured data guards (critical)

Confirmed failure modes on Imweb:

  1. 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 in deployed-*.html. Use inline styles only. Imweb may still inject lazy-image styles (ignore those).

  2. 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.

  3. description must be pure text
    Reject any description matching /evas-pdp|summary::|\{display|font-family/.
    Prefer explicit clean-summary.txt / SEO meta over scraping Froala HTML.

  4. 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).

  5. @id policy

    • Product: https://www.evasmall.co.kr/shop_view/?idx={n}#product
    • FAQPage: …#faq with about → Product @id
    • brand/manufacturer: https://www.evascosmetic.com/#brand-… / #organization (site-wide graph)
  6. Shipping/return in Offer only when live page states them (e.g. 2,500원 / 2만원 이상 무료 / 14일 반품).

  7. Verify live after deploy:

    • inject Product descCss=false and additionalProperty.length >= 5
    • Imweb Product descCss=false
    • FAQPage question count matches body

Field placement (critical)

Imweb product form has two HTML fields:

FieldDOM / admin labelWhat goes here
요약 설명simple_content / first Froala / live .goods_summaryShort pure text only (clean-summary.txt) — no images, no full widget
상품 상세 설명prod_content / Froala under "상품 상세 설명" / live ._prod_detail_detail_lazy_loadFull 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

  1. Identify editors by section label, not only by size
  2. Summary editor: set clean-summary text only (one short paragraph)
  3. Detail editor: set full widget HTML
  4. Never put evas-pdp-ai full layout into summary
  5. After save, live-check:
    • .goods_summary .evas-pdp-ai must be absent
    • detail lazy load must contain .evas-pdp-ai

What ships with it: 1 file

2.2 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.