SuperAPI AI Directory

goofish-publish-item

General & other

View repository

Updated 10-15 21:40

About this skill

Xianyu listing

Tool naming

The body uses auth_status logical names like this. OpenClaw calls goofish__<逻辑名>; Claude Code / Cursor call mcp__goofish__<逻辑名>. In frontmatter, allowed-tools keep the Claude permission pre-approval format; OpenClaw does not read this field.

Trigger posture

Typical user input:

  • "Help me post these earphones to Xianyu, 300, 9 out of 10 condition"
  • "I took a few photos, write me a title and description"
  • "List this figurine, price negotiable, bottom line 200"

When you can extract from the user message (the item itself + at least one image or a text description of the item) then start this flow. When information is insufficient,ask the userinstead of guessing.

Standard flow (7 steps)

Step 1 · Login state self-check (mandatory)

调 auth_status
  valid=true → 继续
  valid=false → 不继续;告诉用户: "登录态失效了,请执行 goofish auth login(扫码走 --qr)",停。

Step 2 · Information gathering

Extract from the conversation and the materials provided by the user:

Field Required Source
Core item (what it is) ✅ User description / image recognition
Brand + model ✅ User description
Condition (X out of 10) ✅ User description; if not mentioned,ask
Price ✅ User description; if not mentioned,ask
Images (URL or local path) ✅ Provided by user
Flaw description Recommended Ask the user "is there any flaw worth mentioning"
Purchase channel Recommended Helps make the description more convincing
Whether negotiable / bottom line Optional Prepares for the later reply-buyer
Shipping location ⚪️ If left blank, call location_default as fallback

If a required field is missing, stop and ask; do not fill in default values。

Step 3 · Category recognition

调 category_recommend(title=候选标题, images=[首图])
  → 拿到 catId / catName

Result validation:

  • If catName clearly does not match the user description (for example, the user says phone case but "phone" is returned), tell the user and have them confirm
  • If confidence is low (multiple candidates are returned), show the top 3 for the user to choose

Step 4 · Title generation

Follow "brand + core word + attribute + scenario + emotion" 5-segment format to generate 3 candidates. See references/title-formula.md。

Thencall goofish-risk-guard to scan:

  • Absolute terms, outbound-link terms, or infringement terms hit → regenerate
  • Suspected "price-drop relabeling" hit (title contains promotional words + historical price changes) → regenerate

Show the scanned candidates to the user to choose / edit.

Step 5 · Description generation

For the structure, refer to references/title-formula.md 's "description skeleton" section. Key points:

  • If there are flaws, say so openly(protects the seller against refund-only requests)
  • Be clear aboutwhy you're selling("upgraded to a new model", "rarely used" are more credible than "idle")
  • Be clear aboutshipping location + courier + whether shipping is included
  • State your bargaining policy clearly ("small discounts welcome / no haggling over XX")

Step 6 · Image processing

for image in images:
    调 media_upload(image)
    收集返回的 {url, width, height}

检查:
    总图数 ≤ 9 ?
    首图是 1:1 ?(如果不是,提示用户换首图)
    张数 ≥ 3 ?(少于 3 张警告但不拦)

Step 7 · Final user confirmation + publish

Show to the user(mandatory):

【标题】...(最终版)
【类目】catName (catId=XXXX)
【描述】
(全文)
【价格】XXX 元
【图片】9 张,首图 1:1 ✅
【发货地】XX 市 / 默认
【风控扫描】通过 ✅

是否确认发布?

Wait for the user to explicitly reply "post / go ahead / confirm / OK / yes / mm". A vague "let me see" / a single "mm" does not count as confirmation.

After confirmation:

调 item_publish(
    title=..., 
    desc=..., 
    price=..., 
    image_urls=[...],
    cat_id=..., 
    addr=...(没有就省略,让服务端用 location_default)
)

Anti-patterns (don't do)

❌ Skip category_recommend, guess catId yourself ❌ Publish first, edit later(suggesting the user "post it first and tweak it slowly later" → frequent edits after publishing will lose traffic pool weight) ❌ Skip the risk-control scan(a title with absolute terms published directly → 100% downranking) ❌ Publish without confirmation(write operations are irreversible; spend 5 extra seconds waiting for user confirmation) ❌ Publish ten items in a batch without stopping(token bucket 1 item/minute; consecutive posts will trigger rate limiting)

Batch publishing scenario

The user says "I have 10 items all to be posted":

  1. First have them confirm "are these 10 completely different items, or 10 of the same model?"
  2. Same model: merge into 1 item with a multi-SKU description, not 10 separate posts
  3. Different models: go through the full flow for each item,confirm each one individually, don't "confirm all 10 at once" (the user can't keep track)
  4. Tell the user "due to rate limits, this will take about 12-15 minutes"

After publishing

  • Return item_id to display to the user
  • Mention the traffic pool window: "The item has been published. The first 24 hours are the initial recommendation window; during this period do not change the title/price tag"
  • Record the item_id (in case the user later wants a diagnosis or to delist)

Related skills

  • goofish-risk-guard — pre-publish scan (title/description/images)
  • goofish-reply-buyer — reply to buyer messages after publishing
  • goofish-shop-diagnosis — if traffic is poor after publishing