goofish-reply-buyer

star 29

闲鱼买家消息回复 skill。何时激活:用户说"看看我有没有未读 / 回复下买家 / 有人问 XX 怎么办 / 他要砍价我怎么办 / 帮我回一下消息 / 处理下催付 / 议价策略"。 功能:拉未读会话 → 逐会话拉历史 → 分类意图(询价/议价/催付/售后/外联风险)→ 按卖家预设策略起草回复 → 用户确认后 `message_send`。核心约束: **不托管发送权**——所有对外消息必须人类点头;调用 `goofish-risk-guard` 做外联词扫描。

fancyboi999 By fancyboi999 schedule Updated 4/22/2026

name: goofish-reply-buyer description: | 闲鱼买家消息回复 skill。何时激活:用户说"看看我有没有未读 / 回复下买家 / 有人问 XX 怎么办 / 他要砍价我怎么办 / 帮我回一下消息 / 处理下催付 / 议价策略"。 功能:拉未读会话 → 逐会话拉历史 → 分类意图(询价/议价/催付/售后/外联风险)→ 按卖家预设策略起草回复 → 用户确认后 message_send。核心约束: 不托管发送权——所有对外消息必须人类点头;调用 goofish-risk-guard 做外联词扫描。 metadata: author: goofish-cli version: "0.3.0" tags: [xianyu, im, messaging, buyer] allowed-tools: - mcp__goofish__auth_status - mcp__goofish__message_list_chats - mcp__goofish__message_history - mcp__goofish__message_send - mcp__goofish__item_get

闲鱼回买家消息

触发姿势

用户典型输入:

  • "看看我未读消息"
  • "有人问 XXX 怎么回"
  • "那个议价的我回他多少"
  • "催付一下下单没付钱的"
  • "帮我批量处理一下消息"

核心原则(反复强调)

永远不自动发消息

即使用户说"随便回一下"、"你看着办",也要:

  1. 起草一条
  2. 展示给用户
  3. 等明确的"发 / 嗯发 / ok"后才调 message_send

为什么硬要这么做:

  • 发错话在闲鱼成本高(外联词封号、情绪化引战、误报价)
  • 买家一旦觉得"卖家不是本人"(AI 味太重),信任归零
  • message_watch 的长连接事件流不同,单条对话是对外行为,不可逆

标准流程

Step 1 · 登录态自检

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

Step 2 · 拉未读会话

mcp__goofish__message_list_chats(limit=20)

返回会话列表,每项含 cid / 对方昵称 / 最后一条消息预览 / 未读数。

筛选策略

  • 优先未读数 > 0 的
  • 按最近活跃倒序
  • 一次别处理太多(建议 ≤ 5 个会话一轮),消息太长用户看不过来

Step 3 · 逐会话拉上下文

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

20 条基本够分类意图了。太长的会话(50+ 条)拉 30 条。

同时(如果消息提到具体商品 ID):

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

Step 4 · 意图分类

详见 references/intent-classification.md。粗分 5 类:

意图 典型 处理策略
询价 / 基本信息 "多少钱"、"还在吗"、"在哪发货" 直接回,参考卖家商品描述
议价 "便宜点"、"XXX 行吗" bargain-ladder.md 阶梯回
催付 "已付款"、"明天到吗" 回发货时间
售后 "坏了"、"不对"、"要退款" 谨慎回,留证据;严重时建议人工介入
外联 / 风险 "加个微信"、"走转账" block + 合规话术替换

Step 5 · 起草回复

按意图走不同子流程(各有对应 reference)。

起草完必过 risk-guard 扫描

  • 调用 goofish-risk-guardexternal-contact-keywords.md 扫草稿
  • 命中 → 换词、重写或标红警告

Step 6 · 用户确认

展示格式:

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

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

用户回 "发 / 嗯 / 是 / ok / 1" 才调 message_send

用户回 "改" → 让他说具体改啥,重新起草。 用户回 "跳过" → 跳到下个会话。

Step 7 · 发送

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

成功后:

  • 给用户确认"已发"
  • 等一下再处理下一个(别连发多个 cid,触发频控)

卖家人设保持

Agent 要模仿用户自己的语气,不要用 AI 常见的书面语:

  • ❌ "您好,非常感谢您的关注"
  • ✅ "在的~"
  • ❌ "经过慎重考虑,我们愿意给您一个优惠"
  • ✅ "可以少 20,1200 行吗"

具体调教见 references/tone-guide.md

特殊场景

场景:批量催付

用户说"把所有没付款的催一下"

  • list_chats 找"已下单未付款"标签的会话
  • 每人起草一条温和催付话术
  • 逐条确认(不要批量群发 — 给发送权等于关掉最后一道保险)

场景:买家发差评

不要用 AI 写攻击性回评。

  • 起草克制的回应(客观 + 解释)
  • 明确告诉用户"情绪化会扩大损失"
  • 严重的差评建议走官方申诉,不建议公开回复撕

场景:疑似骗子 / 恶意仅退款

  • 提示用户"这看起来像 XX 类型的典型操作,小心"
  • 让用户判断是否升级到人工客服介入
  • Agent 不主动承诺"帮你追责"——界限清晰

场景:买家问外联

  • 必须用 risk-guard 的合规话术替换
  • 同时提示卖家"对方在问外联,按合规回,不要心软"

相关 skill

  • goofish-risk-guard — 每条出门前扫外联词
  • goofish-publish-item — 发布的商品会回来的消息走本 skill
  • goofish-shop-diagnosis — 发现大量消息都是"还在吗"时,可能是已被限流(消息流入但买家看不到)
Install via CLI
npx skills add https://github.com/fancyboi999/goofish-cli --skill goofish-reply-buyer
Repository Details
star Stars 29
call_split Forks 7
navigation Branch main
article Path SKILL.md
More from Creator