经营自己的店铺
给谁看
已经在 网页端卖配方 走过一遍,现在想把上架、发码、补图这些重复动作交给脚本的卖家。
museav shop 是卖家侧的命令行:建商品、建壁纸专题、上传私有原图、发发货码。 成交仍然发生在闲鱼/小红书,CLI 只负责把物料和码算好交给你。
先分清两种身份
| 你要做的 | 用哪把钥匙 |
|---|---|
| 经营自己的店铺 | museav login(个人登录) |
| 查团队产出的参考商品 | 租户 Key(museav products) |
店铺管理只认个人登录。如果你环境里设了 MUSEAV_API_KEY / STUDIO_API_KEY, 它会盖掉登录态,管理类命令会失败 —— 先 unset 掉再跑。
查看公开合集是匿名只读的,不读本机任何凭据:
bash
museav shop collections list --owner <作者UUID>
museav shop collections show <合集UUID> --public三种可卖的东西
商品的 kind 有三种,别混:
| kind | 卖的是什么 | 怎么交付 |
|---|---|---|
credits | 出图额度 | 发码,买家核销后到账 |
wallpaper | 壁纸原图 | 合集里逐张下载 |
bundle | 安装指导 + 自有资产 | 核销后下载一个文本文件 |
商品与发码
bash
museav shop show
museav shop products list
museav shop products create --file credits.json
museav shop products update <商品UUID> --file patch.json
museav shop products archive <商品UUID>
museav shop codes list
museav shop codes issue --product <商品UUID> --channel xianyu \
--external-order XY20261019001 --request-id seller-20261019-001
museav shop codes revoke <发货码>credits.json 长这样:
json
{"title":"100积分创作包","kind":"credits","credits":100,"channel":"xianyu","benefits":["100积分"],"status":"active"}发码动了真钱,两个细节别省
重试必须带同一个 --request-id。 发码时服务端会从你的真实余额里预留积分, 同一请求号重试不会扣两次、也不会出两个码。换新订单才换新请求号。
撤销只对没被领的码有效。 已被买家核销的码不能撤销,积分也不会回来。
发码返回的 code、claim_url、reply_text、product_copy、product_images 是给外部平台的物料,建议整份存成订单 JSON。返回成功只代表码生成了, 闲鱼/小红书上架、成交、把码发给买家,仍然要你手工做。
壁纸专栏
一个 wallpaper 商品是一个专栏,它下面挂的每个合集是一期专题 —— 对应小红书的「专栏 / 说说」。
完整流程走一遍:
bash
# 1. 先建草稿商品
museav shop products create --file wallpaper-draft.json
# 2. 把公开预览图放进个人素材库
museav projects assets add ./preview.png
# 3. 建合集草稿
museav shop collections save --file collection-draft.json
# 4. 逐张上传付费原图(单张 ≤ 32 MiB)
museav shop collections upload <合集UUID> <条目UUID> ./original.png
# 5. 发布合集
museav shop collections save --file collection-published.json
# 6. 商品上架
museav shop products update <商品UUID> --file wallpaper-active.jsonwallpaper-draft.json:
json
{"title":"十月壁纸一期","kind":"wallpaper","credits":0,"status":"draft"}collection-draft.json —— workspace_id 填 null 表示素材来自个人素材库 (自己发壁纸走这条),填项目 UUID 表示来自某个项目:
json
{"title":"十月一期","issue_key":"2026-10-01","description":"自制壁纸原图","access_mode":"product","status":"draft","product_id":"<商品UUID>","workspace_id":null,"cover_asset_id":null,"asset_ids":["<预览素材UUID>"]}发布用同一份规格、补上 id、status 改成 published; 最后 wallpaper-active.json 启售:
json
{"collection_ids":["<已发布合集UUID>"],"status":"active"}save 是全量覆盖,不是打补丁
更新时必须带上完整规格 —— asset_ids、描述、封面,少传一个字段就是把它清空。 少传一个 asset_ids 等于删掉一张已经卖出去的壁纸,服务端会直接拒。
给已发布的专题补图
append 和 save 语义完全不同:它只在末尾追加,已有条目的位置、原图、预览一个都不动。 已购买这一期的买家也能下载新追加的图。
bash
museav shop collections append <合集UUID> ./01.jpg ./02.jpg \
--preview <素材UUID1> --preview <素材UUID2>每个 --preview 按顺序对应一张原图,是这张图在个人素材库里的预览素材 id。
免费合集反而要传原图
access_mode: public 的合集不需要 shop collections upload —— 服务端直接把素材库里的母版当公开可下载原图。所以必须把全尺寸原图传进素材库, 传一张降采样预览等于把糊图发出去。
付费合集才逐张上传私有原图,且公开预览不能和付费原图是同一张。
专题怎么排序
专栏内专题的展示顺序按小红书选题笔记的发布时间(合集 JSON 里的 xhs_note_published_at)排,没填就回落到建档时间。
排序在读取侧做,不动 collection_ids 数组 —— 那个数组是交付清单,顺序对交付没有语义。
价格别写死
价格配在商品的 price_cny 上(可空)。没配时平台不显示任何价格数字, 只说「以小红书商品页公布的价格为准」。
平台替你写一个 ¥1.00 出去,和你官方号的真实出手价对不上就是失真。
CLI 组合包
组合包卖的是安装指导 + 自有模板/资产 + 可选积分,不是软件本体。 CLI 本身开源,谁都能装 —— 它没有积分什么都干不了。所以别宣称这是独占授权。
content 是核销后下载的 UTF-8 正文(≤ 200KB),不是本地路径; 下载后由买家自己阅读安装,不会自动执行。
json
{"title":"自有壁纸工作流入门包","kind":"bundle","credits":0,"bundle_content":{"filename":"README.md","content":"# 安装指导\n运行 npm install -g museav-cli,再用 museav login 登录自己的账户。"},"status":"active"}只放自己有权交付的内容。共享私钥一律不放。
在代码里用
同一套认证,直接调:
ts
import { StudioClient } from 'museav-cli'
const shop = new StudioClient({ baseUrl, token }).shop方法:show / products / create / update / archive / codes / issue / revoke, 以及 collections.list / show / save / upload / listPublic / showPublic。
公开接口只用 Studio base URL 匿名发 GET。
相关
命令行 · 在档 L2「已经出图,要提效」的链路上 —— 第 5 / 6 步