← 博客
阅读约 4 分钟

商品图文件命名规范:撑得住规模的方案

三段式商品图命名法: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。这样同一个商品的所有图片就会聚在一起,无论是谁存的。

浅色水洗牛仔裤叠放在白色台面上,吊牌上印着条形码、商品编码和尺码 30。

日期打头(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,而且可以安全地重跑——输出路径是输入的纯函数。

深色显示器上是带语法高亮的 Python 代码,左侧有行号,其中一段循环遍历列表并逐项打印。

把预期的输出文件名和实际落盘的比对一下,缺的那个名字就点出了失败的 SKU。去背景 API:把自动抠图接入你的应用 那篇讲的是请求这一侧。

规则卡

把这张贴到共享盘上:

  1. SKU_VIEW_BACKGROUND.ext,就按这个顺序。
  2. SKU 从数据源里逐字符照抄。
  3. 视角取自约定好的清单。数字补零。
  4. 背景取自约定好的清单。扩展名与之匹配。
  5. 大小写固定一种,只用 ASCII,不要空格,不要日期,不要状态词。
  6. 原片以 _raw 保留,永不覆盖。

这周先手动把最近一百个文件重命名。之后的一切都是白赚的。

继续阅读