商品图文件命名规范:撑得住规模的方案
三段式商品图命名法:SKU、视角代码、背景。让目录既能搜也能跑脚本,以及哪些字符会毁掉它。
- product photography
- file naming
- ecommerce
- catalogue management
- workflow
- background removal
- bulk processing

有人来要 TS-4410 的背面图,白色背景那一版。你打开共享盘,看到的是 IMG_4471 copy 2 final.png、IMG_4471 copy 2 final (1).png,还有一个叫 NEW EDITS USE THESE 的文件夹。十分钟过去了,你还在一张张点开缩略图。
命名规范是商品目录运营里最便宜的解法:花一下午达成一致,不用新软件,而且比拍这些照片的人待得更久。下面这套方案,几千个文件也扛得住。
SKU 永远放在最前面
文件名按字母顺序排列,所以第一个字段就是你的文件夹赖以组织的那根轴。把它定成永远不会变的标识符:与商品数据源里一模一样的 SKU。这样同一个商品的所有图片就会聚在一起,无论是谁存的。

日期打头(2026-07-14_shoot_final)是按拍摄日分组,而那恰恰是没人会去搜的那根轴。
三个字段就够了:
TS-4410—— SKU,与数据源逐字一致MAIN—— 镜头拍的是什么white—— 主体背后是什么
拼起来:TS-4410_MAIN_white.png。看到这份列表的人不用打开就知道它是什么,脚本也能按下划线把它切开。
开拍之前先把视角代码定下来
第二个字段只有配上固定、写下来的词表才管用。代码定一次,之后绝不临场发挥:MAIN 是主图,PT01 到 PT08 是按固定顺序排的补充视角,还有 ALT-back、DETAIL-clasp、SCALE。
数字要补零 —— 写 PT01,不是 PT1。Windows 资源管理器和 Finder 会按数值自然排序,但 shell 的列目录、脚本和对象存储的键都按纯文本排序,于是 PT11 会落在 PT1 和 PT2 之间,而不是排在它们后面。
Amazon 自己的图片文件名规则写在 Seller Central 帮助页里,要登录卖家账号才看得到,用的分隔符也未必和这里一样。在批量重命名成千上万个文件之前,先到你的账号里核对当前的语法;而底层这个思路——标识符在前、视角代码在后——在每个销售渠道都成立(Amazon 商品主图要求:纯白背景规则详解)。
给背景命名,而不只是给商品命名
一张照片会变成好几份交付物:平台要的纯白、横幅要的品牌色、演示文稿要的透明、分类页网格要的投影。名字里如果不说清哪张是哪张,你就会发错那一张。

第三个字段用一份简短、封闭的清单:raw 是没动过的相机原始文件,white 是纯白底,brand 是品牌色底,cut 表示透明,shadow 表示带投影,life 表示场景背景。在 remover.bg 里换背景时——纯色、自定义颜色,或者你自己的照片——动手之前就先想好这份输出会拿到哪个后缀,下载完立刻重命名。
扩展名同样携带信息。透明输出必须是 PNG 或 WebP;一个存成 JPEG 的 _cut 文件是 bug,不是一个变体(透明 PNG 怎么做?几秒搞定)。平台用的白底文件通常是 JPEG,网站图片则越来越多用 WebP。
那些会悄悄搞坏事情的字符
- 不要空格。 它在 URL 里会变成
%20,会让不加引号的 shell 脚本出错,还会被上传表单悄悄改写。 - 只用 ASCII。
#和?会终结 URL 的路径部分,&用来分隔查询参数,所以文件名里出现其中任何一个,都可能把链接截断或拆开。带重音符号的字符和其他非 ASCII 字符不在允许的 URI 字符集内,会被百分号编码成一串没法读的东西。圆括号在路径里合法,但仍会破坏 markdown 链接和不加引号的 shell 命令。 - 大小写固定成一种。 Windows 和 macOS 默认不区分大小写,于是
TS-4410和ts-4410会撞在一起;Linux 服务器和对象存储则会留下两个文件。强制统一成一种写法。 - 每一层只用一种分隔符。 字段之间用下划线,字段内部用连字符。
- 不要状态词。
final、FINAL2、new、use-this不出一周就变成谎言。出新版本靠替换文件,不靠改名。
相机原片和抠图分开放
永远不要覆盖源文件。TS-4410_MAIN_raw.jpg 和 TS-4410_MAIN_white.jpg 并排存着,这样品牌色一变,你是从原片重新抠一次,而不是去抢救一张压平过的导出图。
上传上限是 25 MB,而大的相机文件可能超出。先在你自己的图片编辑器里把它缩小——那份缩小后的副本是第三种产物,所以也给它一个名字(TS-4410_MAIN_upload.jpg)。
有了命名,批量处理才成为可能
批量处理走的是 HTTP API,所以每个文件都靠名字寻址。确定的名字给出确定的任务:脚本读 TS-4410_MAIN_raw.jpg,写出 TS-4410_MAIN_cut.png,而且可以安全地重跑——输出路径是输入的纯函数。

把预期的输出文件名和实际落盘的比对一下,缺的那个名字就点出了失败的 SKU。去背景 API:把自动抠图接入你的应用 那篇讲的是请求这一侧。
规则卡
把这张贴到共享盘上:
SKU_VIEW_BACKGROUND.ext,就按这个顺序。- SKU 从数据源里逐字符照抄。
- 视角取自约定好的清单。数字补零。
- 背景取自约定好的清单。扩展名与之匹配。
- 大小写固定一种,只用 ASCII,不要空格,不要日期,不要状态词。
- 原片以
_raw保留,永不覆盖。
这周先手动把最近一百个文件重命名。之后的一切都是白赚的。


