Adobe、Vecteezy与Dreamstime CSV表头对比:一次上传失败的教训

图库平台CSV表头差异大,脚本化生成可避免上传被拒。
文章讲述一位创作者因CSV表头多出一列"notes",导致40张图片在Adobe Stock上传时被系统秒拒。作者随后逐一梳理Adobe、Vecteezy和Dreamstime三个平台的上传规范:Adobe要求恰好五列、关键词用空格分隔、Category为数字;Vecteezy只需四列但关键词必须用逗号分隔;Dreamstime提供十五列模板,实际只需填写四列。三个平台底层数据相同,差异仅在列数、分隔符和类别格式。作者因此编写Python脚本统一生成元数据,并增加上传台账脚本防止重复上传,用约200行代码替代了每周最容易出错的手工操作。
一次上传失败,让我重新审视CSV表头
一位创作者曾因CSV表头多了一列"notes",导致40张图片在Adobe Stock上传时被系统秒拒。这个经历揭示了一个容易被忽视的事实:图库平台的CSV上传格式远非"差不多就行",每个平台对列数、列名、关键词分隔符都有精确要求。据该创作者在个人博客中的记录,他花了一整晚打开三个浏览器标签页,逐一记录Adobe、Vecteezy和Dreamstime的上传表头规范,最终写了一个Python脚本来自动生成元数据,彻底告别手工维护三份表格的混乱。

Adobe Stock:五列,一列不能多
Adobe Stock的CSV上传是最严格的。表头固定为五列,顺序不可更改,系统会在人工审核之前先做列数校验。正确的表头是:
Filename,Title,Keywords,Category,Releases
几个关键陷阱:列数会被检查,不仅仅是列名。作者因为多加了第六列"notes"而被拒,整个校验在人工看到文件之前就已完成。关键词在一个带引号的单元格内用空格分隔,而不是逗号。如果写成"sunset, beach, ocean",每个素材会被识别成一个包含逗号的长关键词。Category是数字而非名称,留空时Adobe会猜测,但猜测质量一般。对于扁平插画类作品,作者通常落在8到15之间(物体、背景、教育类)。Releases列可以留空,如果画面中没有人物或财产。对于纯AI生成的矢量图和贴纸,该列全部为空。
实用规则:五列、精确列名、关键词空格分隔,完成。这个文件里不需要任何创意发挥。
Category 数字编码是 Adobe Stock 投稿中容易忽略的细节。平台将内容类别映射为固定整数,例如 8 通常对应“图形与背景”、11 对应“抽象”、14 对应“教育”等。不同类别区间覆盖摄影、插画、矢量等媒介,具体映射以 Adobe 官方贡献者文档为准。脚本化生成时,建议为每个素材显式指定类别数字,而非依赖平台猜测,因为空值会触发自动分类,准确率有限。若同一批素材属于同一类别,可在脚本参数中统一传入,避免逐条填写。
Vecteezy:四列,关键词是重头戏
Vecteezy的贡献者CSV更短:
Filename,Title,Keywords,Category
只有四列,没有Releases列,这暗示了其审核重点的差异。两个需要注意的地方:关键词用逗号分隔,与Adobe相反。这是最容易踩的坑——如果直接复用Adobe的CSV只删掉一列,关键词会变成一坨,搜索排名会受影响。作者曾上传20个文件后搜索自己的作品却找不到,才意识到这个问题。标题比在Adobe上更重要,因为Vecteezy的搜索更依赖标题匹配。用文件名当标题在第一遍可行,但会损失被发现的机会。
关键词分隔符的差异源于各平台搜索索引的解析逻辑。Adobe Stock 将带引号单元格内的空格视为关键词边界,而 Vecteezy 和 Dreamstime 则按逗号切分。这意味着同一个关键词短语(如“sunset beach”)在 Adobe 中会被拆成两个词,在逗号分隔的平台中则保持为一个短语。脚本统一生成时,应对不同平台采用不同的连接策略:Adobe 用空格连接单个词,Vecteezy 与 Dreamstime 用逗号连接。若关键词本身包含逗号,需按 CSV 规范用双引号包裹整个单元格,避免解析错位。
Dreamstime:十五列,大部分留空
Dreamstime是另一个极端。其CSV模板有十五列,但对于独立创作者做AI辅助工作来说,大部分列都是空的:
Filename,Image Name,Description,Keywords (comma separated),Category 1,Category 2,
Category 3,Extra Keywords,Is Free,Is Editorially Reviewed,Sex,Age,Model Release,
Property Release,Country
真正需要填的:Description是一句真正的句子,不是关键词列表,Dreamstime会索引它。Is Free和Is Editorially Reviewed是字面的yes/no字段,除非清楚为什么修改,否则不要动。Model Release和Property Release对作者的作品留空,与Adobe一致。三个Category槽位接受类别名称,填一个就够。
十五列听起来吓人,实际上每行只填四列,其余十一列留空——这正是为什么它应该用脚本处理,而不是在电子表格里手动操作。
Model Release 与 Property Release 是图库平台用于确认肖像权与物权授权的字段。当画面中出现可识别的人物时,通常需要上传由模特签署的授权书;出现私人财产(如特定建筑、艺术品)时,则需要财产授权。对于纯 AI 生成、无真实人物或可识别财产的矢量图与贴纸,这两列留空是合规做法。Dreamstime 的模板中这两列独立存在,但独立创作者在无授权文件时不应随意填写 yes,否则可能引发审核争议。脚本化处理时,可将这两列固定输出为空字符串,保持与 Adobe 的 Releases 列逻辑一致。
为什么我放弃了维护三份表格
三个平台表头整理完毕后,问题就简化了。每个平台需要的是同一组底层数据:文件名、标题、关键词、类别。差异只在列数(5、4、15)、关键词分隔符(空格vs逗号)和类别格式(数字vs名称vs两者皆可)。
作者因此写了make_metadata.py,指向一个文件文件夹并指定平台:
python make_metadata.py ./my-assets --platform adobe --out adobe.csv --ext .jpg
python make_metadata.py ./my-assets --platform vecteezy --out vecteezy.csv --ext .jpg
脚本会写出每个平台要求的表头,仅此而已。内部为每个素材维护一条规范记录,渲染成三种格式。关键词对Adobe用空格连接,对Vecteezy和Dreamstime用逗号连接。只使用Python标准库,无需安装任何东西。如果不传标题文件,会对文件名做标题化处理,第一遍够用,正式提交前再替换。
另一个教训来自那次失败之夜:修复CSV后,作者差点重复上传同一批文件,因为上传失败了但记忆没有。重复发布是让贡献者账户被标记的最快方式。所以第二个脚本upload_tracker.py是一个简单的台账,记录已完成的内容,重新运行时只处理待处理列表。两个脚本加起来大约200行,替代了每周最容易出错的一小时。
核心结论:脆弱而非复杂
平台CSV本身不复杂,但很脆弱。Adobe检查列数,Vecteezy要逗号分隔的关键词,Dreamstime要十五列模板但只填四列。任何一项错了,拒绝是即时且无声的。把表头写下来一次,编码一次,再也不要手动编辑上传CSV。
这套系统——元数据生成器、上传台账、Markdown转PDF工具,以及将产品打包为1280x720封面和600x600缩略图的打包器——是作者在1 vCPU、2 GB内存、无GPU的服务器上打包39个产品、856 MB输出时构建的。相关脚本和规则背后的推理收录在AI贴纸工厂手册中。如果你正准备手工输入第四个平台的CSV,这套方法能帮你省下作者失去的那个夜晚。
相关推荐

Workbuddy零基础入门:桌面AI智能体如何落地工作流
Workbuddy桌面AI智能体零基础教程解读:从安装、积分领取到文件管理与自动化工作流搭建,对比CodeX的适用场景与成本差异,帮助职场人完成从AI提问者到AI管理者的思维转变。

OpenAI智能体新栈:计算机操作、决策API与超速工作流
OpenAI Dev Day发布智能体新栈:Computer Use操作速度超越普通人,Decisions API基于Luna实现极低延迟分类,Agents API开放同源计算机操作能力,GPT-6.1 Sol成本仅为Astra七分之一。本文梳理核心更新、实测数据与开发者落地要点。

梁文峰开源推理框架DeepInfo,硬刚美国禁令
DeepSeek在开源模型后再开源推理框架DeepInfo,包含GPU/CPU交叉流水线、小模型预判大模型复核、华为昇腾与英伟达芯片全面适配等技术,直面美国联邦禁令。本文解析其对AI产业落地的意义与开源策略。