agentsclimarketplace

Evas pdp geo kr

Skill passeth/evas-pdp-geo-skills/skills/evas-pdp-geo-kr

EVAS PDP GEO/AEO agent skills for Aside: OpenSEO demand → OCR HTML → Imweb deploy + JSON-LD. Includes vendored OpenSEO skills.

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

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 16 days oldThe repository was created 16 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 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.

What its author says it does

Copied from the file, not written here

Korean EVAS PDP GEO/AEO pipeline: OpenSEO MCP KR demand, related-prompts, Mistral OCR 4, collapse-open HTML, Imweb KR deploy, FAQ/Product JSON-LD header inject. On success, hands off to evas-pdp-geo-en as a separate job. Use when user gives only product idx (e.g. idx=18), product code (e.g. FJCR002), product URL, or says PDP GEO / 상세 AI. Never deploy EN inside this skill.

SKILL.md

12.3 KB, as published. Nobody here has run it

EVAS PDP GEO (KR)

One-line run (user can send only this)

idx={N} KR PDP GEO

or product code only:

{PRODUCT_CODE} KR PDP GEO

Examples: idx=18 KR PDP GEO · FJCR002 KR PDP GEO · idx=19 KR PDP GEO EN skip

Agent contract when user sends idx / product code / URL (minimal prompt):

  1. Resolve identity without asking if possible:
    • idx=Nhttps://www.evasmall.co.kr/shop_view/?idx=N and admin …/product/detail?idx=N
    • product code (e.g. FJCR002) → Imweb admin product search by 자체 상품 코드 / 상품명; get idx
    • URL with idx= → parse idx
    • else artifacts/seo-aeo/priority-10-products.json match
  2. Run full KR loop (demand → convert via pdp-ai-readable → deploy KR only → live verify) without waiting for extra confirmation unless blocked (no MCP, no admin, claim uncertainty).
  3. Default EN skip unless user says EN / 핸드오프 / 풀 파이프라인.
  4. If user says only a code/idx with no verbs, treat as KR PDP GEO run (this skill).

Stable, repeatable Korean pipeline for evasmall.co.kr.

EN is not done here. After KR verify, hand off to skill evas-pdp-geo-en only when user requested EN or handoff_en: true (separate OpenSEO market + separate Imweb language unit).

End-to-end loop

0) Prerequisites (once)
   OpenSEO MCP + KR projectId (market KR/ko)
   GSC optional but recommended
   Mistral OCR 4 API key (`MISTRAL_API_KEY`)
   Header inject REGISTRY pattern

1) Demand (OpenSEO KR)
   keyword-research on KR market
   related-prompts.json (source=openseo|gsc|hybrid)
   optional save_keywords after user confirm

2) Convert (pdp-ai-readable)
   OCR → layout v3 (images + details[open] text)
   FAQ from related-prompts; answers from OCR/disclosure only

3) Deploy Imweb KR unit ONLY
   detail HTML + SEO title/meta + header REGISTRY

4) Verify live KR
   details open, KR FAQ body, data-evas-pdp-ld Product+FAQPage

5) Handoff EN (separate skill)
   If gate ok → read/run evas-pdp-geo-en
   Else write EN_BLOCKED.md

Prerequisites

  • list_projects works; project market KR (e.g. 2410/ko)
  • GSC connected OR accept third-party metrics only
  • Mistral OCR 4 (mistral-ocr-4-0) available when converting new SKUs
  • Imweb admin evasmall.imweb.me

If OpenSEO MCP missing: stop demand; use GSC CSV only. Never invent volumes.

OpenSEO: what save_keywords is for

Saving keywords does not change the mall. It stores a tagged library on the OpenSEO project so later runs can:

UseHow
Resume researchlist_saved_keywords instead of full re-research
Segment by SKU/linetags e.g. sku:idx-19, line:약쑥, lang:ko, priority:P1
Clustering / briefskeyword-clustering and content workflows read saved sets
Avoid duplicate paid callsreuse saved list + get_keyword_metrics only when stale

Always ask before save_keywords.
Suggested tags: lang:ko, sku:idx-{n}, line:{line}, intent:{problem|brand|ingredient}.

Step 1 — Demand (KR)

Use keyword-research (and GSC if connected).

  1. Seeds: product name + problem intents (예: 수부지 수분크림, 속건조 수분크림, brand)
  2. GSC striking distance for product URL when available
  3. research_keywords + get_keyword_metrics + small SERP sample
  4. Write:
artifacts/seo-aeo/keywords/{date}-kr-idx{n}.json
artifacts/pdp/{brand}/idx-{n}/related-prompts.json

related-prompts.json must include metrics when known:

{
  "product_idx": "19",
  "source": "openseo",
  "prompts": [
    {
      "prompt": "...",
      "intent": "purchase_guidance",
      "entities": [],
      "volume": 170,
      "kd": 0,
      "seed_keyword": "수부지 수분크림",
      "priority": "P1"
    }
  ]
}

Mistral OCR 4

Convert step requires Mistral OCR 4 for new SKUs (mistral-ocr-4-0).
Implementation details live in pdp-ai-readable (API, artifacts under ocr/, corrections, fallbacks).

Prereq: MISTRAL_API_KEY (or Aside secret). Without it, do not invent on-image text.

Step 2 — Convert

Use pdp-ai-readable layout v3-collapse-open:

  1. Images only (uninterrupted)
  2. <details open> continuous text (tables, how-to, FAQ)
  3. No JSON-LD in Froala body → header inject
  4. OCR corrections (약육 → 약쑥)
  5. FAQ Qs aligned to related-prompts; answers OCR/disclosure only

Outputs:

artifacts/pdp/{brand}/idx-{n}/
  INDEX.json
  deployed-kr.html
  product-v3.jsonld.json
  faq-v3.jsonld.json
  header-inject-pdp-ld.html
  related-prompts.json
  ocr/
  meta.md / meta-v3.1.md

FAQ refresh (existing SKU)

When only demand changed:

  1. Rebuild FAQ section in deployed-kr.html
  2. Sync faq-v3.jsonld.json + header REGISTRY entry
  3. Redeploy KR detail + header; verify live

Imweb flag tabs (do not touch US during KR)

Product editor shows 🇰🇷 / 🇺🇸 above Froala. Underline = active language unit.

  • KR deploy: stay on 🇰🇷 only. Never click 🇺🇸 in the same edit session.
  • Clicking 🇺🇸 loads EN field values; pasting KR HTML there overwrites EN (and the reverse destroys KR).
  • EN work uses skill evas-pdp-geo-en after KR verify.

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

Step 3 — Deploy (KR only)

Admin: https://evasmall.imweb.me/admin/shopping/product/detail?idx={n}

  1. KR language tab only (do not open EN tab)
  2. Product detail HTML ← deployed-kr.html (Froala code view or fr-element inject)
  3. SEO title/meta from demand terms
  4. Header: 설정 → SEO → 고급 → 공통 코드 → Header Code REGISTRY for idx
    • Editors are CodeMirror; prefer full valid <script>(function(){...})();</script>
    • After save, verify live script[data-evas-pdp-ld]
  5. Save toast: 상품이 수정되었어요 / SEO 내용을 정상적으로 저장했어요

Step 4 — Verify live

Live URL patterns: https://www.evasmall.co.kr/264/?idx={n} or /shop_view/?idx={n}

  • .evas-pdp-ai present, details open
  • New FAQ questions visible in body
  • script[data-evas-pdp-ld="{n}"] → Product + FAQPage (FAQ Q count matches)
  • No EN overwrite of KR

Step 5 — Handoff to EN skill

After KR verify succeeds:

IF user said skip EN OR handoff_en === false:
  stop; report KR done
ELSE IF EN gate met OR user forces EN:
  Read skill evas-pdp-geo-en and run it as a NEW job
  Pass: idx, brand, folder path, kr_verified_live=true
ELSE:
  Write artifacts/pdp/{brand}/idx-{n}/EN_BLOCKED.md with missing gate items

EN gate (for automatic handoff)

  • KR live verified this session
  • related-prompts.json source is openseo or gsc or hybrid
  • Prefer ≥3 KR SKUs completed historically before batch EN; single-SKU OK if user asks

Never implement EN deploy steps inside this skill file’s deploy section.

Batch mode

Priority list: artifacts/seo-aeo/priority-10-products.json

  1. Demand by line when possible
  2. One SKU full KR loop before next
  3. EN handoff per SKU only if user wants parallel EN; default = finish KR batch first

Failure modes

FailureAction
OpenSEO downGSC CSV only or pause
OCR garbageRe-OCR; do not publish
Froala strips scriptHeader inject only
EN tab opened mid-KRAbort; re-verify KR
Header CM truncatesRe-paste full script; verify live LD before leaving
Save toast missingHard refresh live + admin

v3.2 operational checklist (idx pilot lessons)

After demand + convert, before marking SKU done:

HTML

  • No <style> blocks in deployed-kr.html (inline styles only)
  • Visible pure-text SEO lead at top: <p class="evas-pdp-seo-lead">…</p> (first scrapable text; do not rely on clip/off-screen hide — Imweb ignores those)
  • Layout still images-first then <details open> text panel
  • Write clean-summary.txt (same pure text as Product.description)

JSON-LD inject

  • Single script inject via Header Code 상단 only (data-evas-pdp-ld="{idx}")
  • Body = one @graph: [Product, FAQPage] (not two separate Product scripts)
  • Product has @id …/shop_view/?idx={n}#product, pure-text description, additionalProperty ≥5 cosmetics fields
  • FAQPage @id …#faq, about → Product @id, questions from related-prompts
  • brand/manufacturer use https://www.evascosmetic.com/#… ids
  • Offer shipping/return only if live page states them
  • Second Header Code field: leave empty or comment only — Imweb CM truncates long scripts there on save

Deploy / verify

  • KR language unit only
  • Live: inject Product description has no CSS; additionalProperty.length >= 5
  • Live: Imweb auto Product may still exist — must not contain CSS selectors
  • Canonical for agents/search enrichment = inject Product @id, not platform Product without @id
  • Save artifacts: graph-v3.2.jsonld.json, header-inject-pdp-ld.html, meta-v3.2.md

Do not

  • Invent extract counts (e.g. "17 extracts") not on OCR/disclosure
  • Replace demand-aligned FAQ with generic shipping-only FAQ (shipping belongs on Offer when disclosed)
  • Open EN tab during KR deploy

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

Related skills

  • evas-pdp-geo-enEN separate job (call after Step 5)
  • pdp-ai-readable — convert mechanics
  • keyword-research — OpenSEO demand
  • Pilot: artifacts/pdp/fraijour/idx-19/

Keep looking

Skills are one crate of 328,083. 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.