SuperAPI AI Directory

goofish-reply-buyer

Office & productivity

View repository

Updated 10-15 21:40

About this skill

Xianyu reply to buyer messages

Tool naming

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

Triggering style

Typical user input:

  • "see my unread messages"
  • "someone is asking about XXX, how should I reply"
  • "for that bargaining one, how much should I reply with"
  • "send a payment reminder to those who ordered but haven't paid"
  • "help me batch process messages"

Core principles (repeatedly emphasized)

Never send messages automatically。

Even if the user says "just reply casually", "do whatever you think", you must:

  1. draft one
  2. show it to the user
  3. and only call after an explicit "send / yeah, send / ok" message_send

Why this must be done:

  • Sending the wrong thing on Xianyu is costly (off-platform contact words get the account banned, emotional remarks start fights, misquoting prices)
  • Once the buyer feels "the seller is not the person themselves" (too much AI flavor), trust drops to zero
  • Unlike the message_watch long-connection event stream, a single conversation isan outbound action, irreversible

Standard process

Step 1 · Login state self-check

auth_status → valid=false 直接停,提示用户 auth login

Step 2 · Pull unread conversations

message_list_chats(limit=20)

Return the conversation list, each item containing cid / the other party's nickname / last message preview / unread count.

Filtering strategy:

  • Prioritize those with unread count > 0
  • Sort by most recently active in reverse order
  • Do not process too many at once (suggest ≤ 5 conversations per round); if the messages are too long, the user cannot get through them

Step 3 · Pull context conversation by conversation

对每个选中的 cid:
    message_history(cid=..., limit=20)

20 messages are basically enough to classify intent. For very long conversations (50+ messages), pull 30.

At the same time(if the message mentions a specific product ID):

item_get(item_id=...)  # 拿商品的最新状态,价格/标题/是否在售

Step 4 · Intent classification

See references/intent-classification.mdfor details. Roughly split into 5 categories:

Intent Typical Handling strategy
Price inquiry / basic information "how much", "still available", "where do you ship from" Reply directly, refer to the seller's product description
Bargaining "cheaper", "is XXX okay" Reply according to bargain-ladder.md tiers
Payment reminder "already paid", "will it arrive tomorrow" Reply with the shipping time
After-sales "it's broken", "it's wrong", "want a refund" Reply cautiously, keep evidence; if serious, suggest human intervention
Off-platform contact / risk "add WeChat", "pay by transfer" block + replace with compliant wording

Step 5 · Draft a reply

Follow different sub-processes according to intent (each has a corresponding reference).

After draftingMust pass risk-guard scan:

  • Call goofish-risk-guard 's external-contact-keywords.md to scan the draft
  • Hit → swap words, rewrite, or flag with a red warning

Step 6 · User confirmation

Display format:

【会话】买家昵称 "xxxxx"(未读 N 条)
【最新来信】
> "原文..."
【意图判定】议价(想砍到 XX 元,距你底线 XX 元)
【草稿回复】
"..."
【风控扫描】通过 ✅

发送这条吗?(y/改/跳过)

User replies "send / mm / yes / ok / 1" only then call message_send。

User replies "change" → ask them to specify what to change, and redraft. User replies "skip" → skip to the next conversation.

Step 7 · Send

message_send(cid=..., text="...")

After success:

  • Confirm "sent" to the user
  • Wait a bit before handling the next one(don't send multiple cids in a row—it triggers rate control)

Maintain the seller persona

The Agent should imitatethe user's own tone, and not use the formal language common to AI:

  • ❌ "Hello, thank you very much for your interest"
  • ✅ "Here~"
  • ❌ "After careful consideration, we are willing to offer you a discount"
  • ✅ "Can knock off 20, 1200 okay?"

For specific tuning, see references/tone-guide.md。

Special scenarios

Scenario: Bulk payment reminders

The user says "remind everyone who hasn't paid"

  • list_chats Find conversations with the "ordered but unpaid" tag
  • Draft a gentle payment reminder for each person
  • Confirm one by one(do not bulk send—giving send permission is like turning off the last safeguard)

Scenario: Buyer leaves a bad review

Do notuse AI to write an aggressive reply to the review.

  • Draft a restrained response (objective + explanation)
  • Clearly tell the user "getting emotional will make the loss bigger"
  • For serious bad reviews, recommend going through official appeals; do not recommend a public back-and-forth

Scenario: Suspected scammer / malicious refund-only request

  • Alert the user: "This looks like a typical XX-type operation, be careful"
  • Let the user decide whether to escalate to human customer service intervention
  • The Agent does not proactively promise "we'll help you pursue accountability"—keep boundaries clear

Scenario: Buyer asks about off-platform contact

  • Must replace with risk-guard's compliant wording
  • At the same time, remind the seller: "The other party is asking about off-platform contact; reply compliantly, don't give in"

Related skills

  • goofish-risk-guard — scans for off-platform-contact words before every outgoing message
  • goofish-publish-item — messages coming back for listed products go through this skill
  • goofish-shop-diagnosis — when you find that a large number of messages are "are you still there", it may already be rate-limited (messages come in but the buyer cannot see them)