先交代东西:https://disclosetag.com(中文 https://disclosetag.com/zh ) 给亚马逊卖家的:上传前给含 AI 生成人物的商品图写合规标签,并验证这个标签没被中途吃掉。纯浏览器本地处理,文件不上传,无登录无付费墙。
但我想聊的不是这个产品,是做它的过程中撞上的一个问题。
7 月 22 日亚马逊要求:商品图里出现完全由 AI 生成的写实人物,上传前必须把 contains-synthetic-performer 写进图片 XMP 的 dc:subject。背后是纽约州的法,首违 1000 刀,之后每次 5000 刀。
需求是真的,强制是真的,受影响的卖家很多。我开始写代码。
然后我不得不承认一件事:写这个元数据,exiftool 一行命令就完事了。Windows 右键属性能改,macOS 预览也能改,政策出来那几天媒体已经把这个当标准答案在教了。
我的核心功能,是一个零门槛动作。
这个认知很不舒服。它逼你回答一个问题:当你的功能能被一行命令替代的时候,你卖的是什么?
我见过的三种常见答案,我认为有两种是自欺:
顺着第三条往下想,我发现真正值钱的不是「写标签」,是「标签还在不在」。
因为亚马逊是在你上传那一刻去读那个字段的。中间任何一个环节把它吃掉,结果和你从来没打过标一模一样。而所有公开资料——平台公告、合规指南、咨询机构的文章——都停在同一句话上:
「某些系统会在导出时移除嵌入的元数据。」
从来没有一份说过是哪些。
那这就是我能占的位置。我用自己的读写代码当测量仪器,实测了一遍:能脚本化测的 8 个处理步骤里,没有一个能在 JPEG 和 PNG 上同时保住标签。5 个两种格式都丢,3 个 JPEG 活下来、PNG 死了。Pillow 打开再存一次就没了,不用裁剪不用压缩。ffmpeg 重编码没了。Squoosh 默认档没了。
有两条是我自己也没料到的:
dc:subject 里的东西不在了。如果检查逻辑只是粗略问一句「这文件有没有元数据」,它能干干净净通过,而真正要读的字段已经空了。这直接决定了我的检查器必须报三态而不是两态:标签在 / 有元数据但没标签 / 什么都没有。中间那种才是坑。写代码花了不到一天,这张表花的时间比代码长。但它才是这个站唯一有引用价值的东西,也是我认为将来能拿到自然外链的唯一理由。功能会被抄,一行命令就能抄;这张表要抄,得先自己去测一遍——而愿意去测的人本来就不多,这就是差距。
如果结论是「我卖的是可信度」,那问题立刻变成:凭什么信我?
这里我踩了个大坑,值得单独说。
我的项目自带 5 个单元测试,全过,绿油油的。然后我发现:它们用我自己的 writer 写,再用我自己的 reader 读。
也就是说,如果我的写入格式从头到尾就是错的,这套测试会全程一路绿灯。事实上它确实错过——PNG 分支当时写的是 tEXt 块、keyword 用 Subject,而 XMP 存进 PNG 的标准做法是 iTXt 块、keyword 固定 XML:com.adobe.xmp。我的测试证明的是「我和我自己一致」,不是「我是对的」。
定案:加一层交叉验证,用 Pillow(第三方解析器)去读我写出来的文件,检查文件能否打开、像素是否无损、EXIF 是否保留、dc:subject 是否读得出来。这个才是产品核心承诺的唯一证据。
同一条纪律后来救了我至少三次:
我想说的是:在一个功能能被一行命令替代的赛道里,「我的数据是对的」这件事本身就是产品。而它不是靠嘴说的,是靠对照组、第三方交叉验证、锚点词这些具体动作堆出来的。这些动作没有一个能进 feature list,但它们是这个站唯一不能被一行命令复制的部分。
诚实说三个:
商业上还有个更根本的矛盾我没解开:打标会降低消费者信任和购买意愿,所以卖家真正想要的大概率是「少打」而不是「打得快」。一个帮你更高效做一件你其实不想做的事的工具,需求是罚款逼出来的不是欲望拉出来的,能不能付费我没把握。所以止损线先写死了:14 天内没有 20 次真实文件检测就停止扩建;30 天内没有 5 个批量试用或 1 个付费,就转成纯免费获客工具,不做复杂 SaaS。