| name | goofish-publish-item |
| description | 闲鱼发商品 skill。何时激活:用户说"帮我发到闲鱼 / 挂个闲置 / 把 XX 上架 /
发布一件 / 新增商品 / 上新";或说"这个怎么写标题 / 类目该选啥 / 图片够了吗"。
功能:从 raw 描述 / 图片 → 确认类目 → 生成标题候选 → 风控预检 → 批量传图 →
拿默认地址 → 调用 `item_publish` 一键发布。核心约束:**发送前必须让用户确认文案**,
不自动提交;调用 `goofish-risk-guard` 做发布前扫描。
|
| metadata | {"author":"goofish-cli","version":"0.3.0","tags":["xianyu","publish","listing"]} |
| allowed-tools | ["mcp__goofish__auth_status","mcp__goofish__category_recommend","mcp__goofish__media_upload","mcp__goofish__location_default","mcp__goofish__item_publish","mcp__goofish__item_get"] |
闲鱼发商品
触发姿势
用户典型输入:
- "帮我把这个耳机发到闲鱼,300,9 成新"
- "我拍了几张图,给我写个标题和描述"
- "上架这个手办,可以议价,底线 200"
当你从用户消息中能提取 (商品本体 + 至少一张图 或 对物品的文字描述) 就启动本流程。信息不足时问用户而不是瞎猜。
标准流程(7 步)
Step 1 · 登录态自检(必做)
调 mcp__goofish__auth_status
valid=true → 继续
valid=false → 不继续;告诉用户: "登录态失效了,请执行 goofish auth login(扫码走 --qr)",停。
Step 2 · 信息收集
从对话和用户提供的素材里提取:
| 字段 | 必填 | 来源 |
|---|
| 核心物品(是什么) | ✅ | 用户描述 / 图片识别 |
| 品牌 + 型号 | ✅ | 用户描述 |
| 成色(X 成新) | ✅ | 用户描述;没说就问 |
| 价格 | ✅ | 用户描述;没说就问 |
| 图片(URL 或本地路径) | ✅ | 用户提供 |
| 瑕疵说明 | 推荐 | 问用户"有没有瑕疵要提一下的" |
| 购买渠道 | 推荐 | 帮写描述更有信服力 |
| 是否可议价 / 底线 | 可选 | 为后续 reply-buyer 做准备 |
| 发货地 | ⚪️ | 不填就调 location_default 兜底 |
缺必填字段就停下来问,不要补默认值。
Step 3 · 类目识别
调 mcp__goofish__category_recommend(title=候选标题, images=[首图])
→ 拿到 catId / catName
结果校验:
- 如果 catName 和用户描述明显不符(比如用户说手机壳,返回"手机"),告诉用户并让他确认
- 如果置信度低(返回多个候选),展示前 3 个让用户选
Step 4 · 标题生成
按 "品牌 + 核心词 + 属性 + 场景 + 情感" 5 段式生成 3 个候选。详见 references/title-formula.md。
然后调用 goofish-risk-guard 扫描:
- 绝对化词、外联词、侵权词命中 → 重新生成
- 命中"降价改标"嫌疑(标题含促销词+历史价格变动)→ 重新生成
把扫描过的候选展示给用户选 / 改。
Step 5 · 描述生成
结构参考 references/title-formula.md 的"描述骨架"段。重点:
- 有瑕疵就大方说(保护卖家对抗仅退款)
- 说清为什么卖("升级新款"、"不常用",比"闲置"可信)
- 说清发货地 + 快递 + 是否包邮
- 议价政策写明("小刀友好 / 超过 XX 勿扰")
Step 6 · 图片处理
for image in images:
调 mcp__goofish__media_upload(image)
收集返回的 {url, width, height}
检查:
总图数 ≤ 9 ?
首图是 1:1 ?(如果不是,提示用户换首图)
张数 ≥ 3 ?(少于 3 张警告但不拦)
Step 7 · 用户最终确认 + 发布
展示给用户(强制):
【标题】...(最终版)
【类目】catName (catId=XXXX)
【描述】
(全文)
【价格】XXX 元
【图片】9 张,首图 1:1 ✅
【发货地】XX 市 / 默认
【风控扫描】通过 ✅
是否确认发布?
等待用户明确回复 "发 / 发吧 / 确认 / OK / 是 / 嗯"。含糊的 "看看" / "嗯" 单字不算确认。
确认后:
调 mcp__goofish__item_publish(
title=...,
desc=...,
price=...,
image_urls=[...],
cat_id=...,
addr=...(没有就省略,让服务端用 location_default)
)
反模式(不要做)
❌ 跳过 category_recommend,自己猜 catId
❌ 先发后改(建议用户"先发出去再慢慢改" → 发布后频繁编辑会丢流量池权重)
❌ 省略风控扫描(标题含绝对化词直发 → 100% 降权)
❌ 未确认就发(写操作不可逆,多花 5 秒等用户确认)
❌ 批量发十件不停手(令牌桶 1 件/分钟,连发会触发限流)
批量发布场景
用户说"我有 10 件都要发":
- 先让他确认"是 10 件完全不同的,还是 10 件同款?"
- 同款:合并为 1 件的多 SKU 描述,不是 10 次发布
- 不同款:逐件走完整流程,每件单独确认,不要"一次性确认 10 件"(用户看不过来)
- 告诉用户"受速率限制,大约 12-15 分钟"
发布后
- 返回
item_id 展示给用户
- 提示流量池窗口:"商品已发布,前 24 小时是初始推荐窗口,这段时间内不要改标题/降价改标"
- 记录 item_id(如果用户后续要诊断或下架)
相关 skill
goofish-risk-guard — 发布前扫描(标题/描述/图片)
goofish-reply-buyer — 发布后回买家消息
goofish-shop-diagnosis — 如果发布后流量差