
做 App 上架这件事最磨人的往往不是写代码而是临门一脚的素材准备App Store 截图一套就是好几张预览视频还得按不同尺寸反复导出稍微不留神尺寸不对或者文案里有敏感词就被苹果打回来重做。我最近在 GitHub 上看到一个叫 Goldie 的项目主打的正是用编码 Agent 自动化生成 App Store 截图与预览视频还内置了苹果上架合规校验看完 README 就直接装来试了。这篇文章就是我的深度评测记录从原理、实操到踩坑尽量讲清楚它到底能帮你省多少事。先交代一下我的背景日常做 iOS 应用开发和分发手上管着三个产品线上版本App Store 和 Google Play 都会发所以对上架素材这套流程算是又爱又恨。爱的是流程本身已经非常标准化恨的是标准化带来的重复劳动一点不比写代码轻松。Goldie 这种工具恰好戳中这个核心痛点所以我评测的侧重点也主要落在自动化程度高不高、生成质量靠不靠谱、合规校验有没有用以及最关键的——它能不能真正融入我现有的发布流程。1. 项目概述Goldie 是干什么的1.1 一句话理解 Goldie在展开之前我先把 Goldie 的定位说清楚。Goldie 本质上是一个专门面向应用商店上架场景的编码 Agent。它把你以前需要手动完成的一系列工序——导出设备截图、套用模板、替换文案、拼出各种尺寸、剪辑预览视频、核对苹果审核规则——全部交给一个带规划能力的 Agent 去执行。你只需要给它一份产品描述和一个 App 的启动参数或深链它就能自己决定用什么工具、按什么顺序、跑出什么结果。这个思路和现在市面上流行的编码 Agent 很像不是给你一个固定脚本而是让你用自然语言或配置文件描述目标Agent 拆解任务调用本地或云端的工具链去完成。Goldie 的特别之处在于它的工具链是围绕 App Store 素材场景定制的所以上手路径非常短不需要你去拼装一堆零散的库。换个角度理解这就好比别人给你的是一个装好所有常用软件的电脑而不是一堆需要你自己安装的零件差别还是很明显的。为什么选择 Agent 而不是传统脚本这是我看完项目后第一个想通的问题。纯脚本方案在“一切按预期”的环境里没问题但上架素材的场景其实充满了变数模拟器版本可能不同、App 首页加载时长不固定、某种语言下文案会变长、某张截图里出现系统弹窗……这些异常如果都要用脚本分支去覆盖脚本会变得非常臃肿。Agent 的优势在于它能根据日志和中间结果动态调整相当于把“流程控制”的灵活度还给了机器但规则和目标仍然由你掌控。1.2 三个最让我惊喜的设计第一个惊喜是“端到端”而不是“半自动”。很多工具只能帮你把截图从模拟器里导出来后续套壳、排版、导出视频还得自己来。Goldie 的流程是一气呵成的配置里写清楚产物要求之后Agent 会自动规划一个完整 pipeline中间我只需要看一眼日志确认方向没错。我实际测下来从配置到拿到一套完整的 App Store 素材中间基本不需要人工介入这是它和那些“一次只解决一个小问题”的命令行工具最大的区别。第二个惊喜是合规校验不是一句口号而是真正可执行的规则集。它会把苹果的审核规则转成一组检查项跑完素材生成后自动对照比如截图数量够不够、尺寸对不对、有没有使用苹果保留的商标词、文案里有没有明显的违规表述。这一块对发布环节帮助很大能省下不少“被审核拒绝后返工”的时间。更让我觉得靠谱的是它允许你追加自己的规则也就意味着团队可以把过往踩过的坑都沉淀成配置而不是每次靠人肉记忆。第三个惊喜是产物结构特别规范。生成的素材会按语言、设备型号、用途分类存放文件名和 App Store Connect 的字段能对上这样你用 Fastlane 或者手动画面上传都很顺不用再重新整理一遍目录结构。说白了它产出的不是一堆散落的 png 文件而是一套可以直接进交付管线的材料包。对我这种同时维护多个产品的人来说这种“规整感”本身就值回安装成本了。1.3 什么样的人最适合用我评测下来觉得有三类人最值得关注。第一类是独立开发者一个人管开发、测试、推广能省一点是一点Goldie 可以帮你把上架素材从“半天工作量”压缩到“一杯咖啡的时间”。第二类是小团队产品多、版本迭代快每次发版都要同步刷新商店素材用配置加 Agent 的方式可以保持多语言多尺寸的一致性不会出现“英文截图更新了中文截图还是旧文案”的情况。第三类是做海外渠道投放或 ASO 外包的朋友经常需要批量产出不同文案、不同风格的商店视觉图Goldie 的可配置性在这个场景下很吃香。2. 核心功能拆解从原始素材到上架产物2.1 编码 Agent 的完整工作流我跑了几次之后可以把 Goldie 的实际工作流概括成五个阶段这样你想二次开发或者排查问题的时候能对上号。第一阶段是“目标解析”Agent 读取产品配置文件后会先提取出 app 名称、副标题、关键字、截图语言列表、目标设备、评分期望这些信息。如果你没写全它还允许你用自然语言补充说明比如配置里漏了 iPad 尺寸你可以在参数里补一句“顺便生成 iPad 版”它也能理解。第二阶段是“设备环境准备”。它会启动或连接模拟器根据目标机型列表依次创建不同尺寸的运行环境。这一步我最开始以为只是简单调用 simctl后来翻日志才发现它还会处理系统语言设置、模拟器深色模式、内容缩放等参数确保截图看起来像真实用户场景。对于商店素材来说这一步其实很关键因为苹果要求截图必须使用真实 UI在里面跑出来的画面如果还带着默认的浅色主题或者系统英文后面返工成本就高了。第三阶段是“截图与资产生成”。Agent 在模拟器里按预定义路径导航截取关键页面然后调用模板引擎把文字、遮罩、广告图合成到截图上。这里它支持常规的 6.7 英寸、6.5 英寸、5.5 英寸、12.9 英寸 iPad 等主推尺寸也能自定义特殊比例。第四阶段是“视频编排与合成”。如果你开了预览视频功能它会先截取一段屏幕录屏再把录屏文件按 App Store 要求的分辨率、时长、编码格式做合成必要时自动补帧或裁剪。第五阶段是“合规校验与报告输出”。所有产物生成完之后Agent 会跑合规检查输出一份报告里面有每项规则的通过情况、涉及文件路径、问题等级。我拿一套手动制作的素材和它生成的素材同时跑结果差距不大而且它还能抓到一些我手工制作时容易忽略的细节比如某张截图上还残留着模拟器的默认状态栏时间。这种细节以前都是靠审核提醒才发现现在在发布前就被拦住了。2.2 截图生成的关键细节截图生成是整个流程里最出效果的部分也最考验细节。Goldie 在截图环节有几点做得比较到位。第一点是它知道苹果要求截图必须使用应用的真实 UI不能是拼接的网页图或设计稿所以它倾向于直接在模拟器里跑真机 UI套的只是外框、背景和文案。我在生成的图里放大看了半天没有发现明显的渲染失真边缘、圆角、阴影都处理得比较自然。第二点是多语言处理。它允许为每种语言单独配置截图文案并且会在模拟器里切换系统语言后再截。这个细节很多人容易忽略如果你在中文系统里截一套图然后手动替换文案最终效果跟真实其他语言环境跑出来还是有差别的尤其是日期、数字、字体这些跟着系统偏好走的内容。我拿英文版截图对比过Goldie 切到英文模拟器之后App 内部的 tab 文字、系统弹窗按钮都会变成英文整体看下来一致性非常高。第三点是模板系统。模板本质上是一个带占位符的图层描述可以用 JSON 或 YAML 写。你可以在不同角落放上 app 名称、标语、评分、按钮等元素。模板里还支持条件渲染比如“只有评分超过 4.5 才显示评分章”这样就比较灵活。不过也有需要注意的地方。截图生成对模拟器的启动速度、网络请求都很敏感如果模拟器里 App 的启动页加载特别慢Agent 去截第一屏时可能拿到的还是启动页我建议在配置里把“首屏等待时间”调大一点或者让 App 在测试模式下直接落到内容页。2.3 预览视频的参数选择预览视频在 App Store 里的展示权重越来越高很多人缺这块所以 Goldie 把它做成可选但默认开启的功能。我的理解是它内部主要依赖模拟器录屏加 FFmpeg 后处理。参数这一块我实测下来默认配置是能直接过审的分辨率 1080x1920 竖屏用于大屏 iPhone888x1920 用于 5.5 英寸老机型1920x1080 横屏用于 iPad帧率 30fps编码 H.264音频 AAC封装 M4V。时长方面苹果要求最长不超过 30 秒Goldie 默认控制在 15 到 25 秒之间除非你手动把演示流程拉长。这里我踩过一个坑预览视频里不能包含非 App 本身的内容而且首次启动的加载过程最好别录进去否则审核那边容易出现“视频中出现无关内容”的质疑。Goldie 在“开始录屏的时机”上有一个延迟参数推荐设成 3 秒也就是等启动页完全消失后再开始录效果会好很多。另外视频里如果录到系统的定位授权弹窗、通知授权弹窗也属于高风险内容我后来在测试环境里把这些弹窗都关掉才重新跑。音频这块也值得说一句。如果你的 App 本身没有背景音乐默认生成的视频是没音轨的但许多编辑器在合成时会自动加一条空音轨导致文件变大、编码时间变长。Goldie 配置里有一个audio: none的选项可以彻底去掉音轨我建议商店视频如果没有品牌音乐就选这个省体积也省时间。2.4 苹果合规校验到底校验什么很多人听到“合规校验”第一反应是担心误报。Goldie 的思路比较务实它把公开的 App Store 审核指南和素材规格转成可核查的规则集然后对产物逐项检查。我整理一下它实际会校验的重点检查项覆盖内容失败等级截图尺寸与机型是否匹配 6.7/6.5/5.5/12.9 等主流尺寸错误截图数量每种语言是否至少 1 张推荐 3 张以上错误文字与商标是否误用苹果品牌词、系统保留词汇警告隐私与敏感词文案中是否出现成人、暴力、歧视等违规词错误元数据一致性关键词、副标题是否与产品元数据一致警告媒体文件格式预览视频编码、帧率、后缀是否为 M4V错误这个表格里的规则并不是拍脑袋定的我对照了一部分官方文档主流项目基本都对得上。另外 Goldie 允许你用自己的规则文件覆盖默认规则所以如果你遇到某个项目特批的文案要求也可以加进去。这个“可扩展规则”的设计我很喜欢等于把合规经验沉淀到了配置文件里团队换人也不会丢。3. 实操记录跑通一次完整生成3.1 环境准备与快速安装这一节我直接从零开始记录我本机跑通的过程。我的环境是 macOS 14、Xcode 15 以上、Python 3.11这些是基础条件特别是 Xcode 里要装好 iOS 模拟器运行时因为后面所有截图和录屏都依赖模拟器。安装方式我推荐走源码安装方便看日志和改配置。大致流程先把项目 clone 到本地创建 Python 虚拟环境然后安装依赖主要涉及大模型 SDK、Pillow、PyYAML以及 FFmpeg 相关绑定。接下来检查 FFmpeg 是否可用Goldie 合成视频时会直接调用命令行。最后配置模型 API Key因为 Agent 核心需要调用大模型接口来规划任务。这里有一个容易忽略的点Agent 的模型配置会直接影响生成质量和稳定性。我试过用轻量模型跑速度和成本是下来了但在“目标解析”阶段偶尔会把语言列表搞错导致后面截图全部用默认语言生成。所以如果项目比较正式建议用当前主流的强推理模型配置一次后面就稳了。3.2 写一份产品配置Goldie 的核心配置是一个 YAML 文件。我按我自己的一个健身课程 App 来演示结构大致如下app: name: FitCamp subtitle: 7 天定制训练计划 keywords: fitness, workout, training languages: [en, zh-Hans] devices: - iphone-6-7 - iphone-6-5 - ipad-12-9 screenshots: count_per_language: 3 template: ./templates/fitcamp.yaml wait_for_first_screen: 3 video: enabled: true duration: 20 delay_before_record: 3 orientation: portrait rules: - ./rules/extra.yaml output: ./release_assets这里我解释几个关键字段。languages决定模拟器会切换哪些系统语言devices决定生成哪些尺寸screenshots.count_per_language是每个语言要截几张。wait_for_first_screen是最开始提到的启动等待时间我设成 3 秒后几乎没有再截到启动页。template指向截图模板模板里定义了布局、背景、文案位置。rules字段是可选的用来加载自定义合规规则。比如我们产品在某个渠道需要强调“课程包含营养指导”但这个说法容易触发医疗保健相关的审核风险我就自定义了一条规则在文案里检测到“指导”这类词时输出警告提醒运营确认措辞是否合适。配置写好之后后续所有产品只需要改这个文件即可模板和规则是可以复用的。3.3 执行生成命令与观察日志配置写好后执行命令很简单核心就一条goldie run --config fitcamp.yaml --output ./release_assets不过第一次跑的时候别急着看结果我建议观察一下日志里的任务列表。Goldie 会通过 Agent 输出类似“我需要先准备模拟器环境再启动 App然后进入设置界面截图”这样的计划。看到这个计划后你就能知道它有没有理解你的意图。如果计划里少了某个设备尺寸大概率是配置里devices写错了直接终止命令改配置更省事。整个流程的时间取决于截图数量和视频长度。我实测 2 种语言、每语言 3 张截图、1 条 20 秒预览视频大概花了 6 分多钟其中大头是模拟器启动和 App 页面加载。期间不需要人工干预跑完后会在输出目录看到类似下面的结构release_assets/ en/ iphone-6-7/1.png iphone-6-7/2.png ... preview.m4v zh-Hans/ iphone-6-7/1.png ... preview.m4v report.json注意preview.m4v是按语言生成的所以默认会在每种语言的目录下都放一份。如果你只想生成一次视频可以在配置里把video.languages限定为一种或者像我一样把多语言视频需求统一收集到一个配置里批量生成。3.4 解析合规校验报告跑完之后打开report.json这是我最关心的部分因为上架素材好不好看是一回事能不能过审是另一回事。报告内容大致长这样{ summary: { total_checks: 23, errors: 1, warnings: 2 }, details: [ { rule: screenshot_contains_status_bar, level: error, file: release_assets/en/iphone-6-7/1.png, message: 图片左上角检测到模拟器默认时间建议隐藏或替换为真实时间 } ] }我第一次跑就踩到了一个典型问题模拟器状态栏时间还是默认的 9:41而且电池显示 100%这种图放到商店素材里确实不太专业。Goldie 能识别出这种细节我挺意外。解决方式也很简单在模拟器设置里把状态栏时间改成实际时间或者用配置里的状态栏覆盖功能让它统一渲染成你指定的时间和运营商文案。warnings部分通常不影响过审但值得人工过一眼。比如它提示某张截图里出现了“New”标签而你的 App 其实上线一年了这种文案会误导用户改了更好。从报告里还能看到每条规则命中的文件路径所以定位问题很快不会让你在一堆素材里翻找。4. 常见问题与排查技巧4.1 截图尺寸和机型对不上这是我在评论区看到问得最多的问题。如果你配了devices: [iphone-6-7]但生成出来的分辨率不是预期的 1284x2778大概率是模拟器运行时版本太老或者你指定的设备名称跟本机安装的运行时不一致。解决办法是先用goldie list-devices看一下当前可用的模拟器名称再回头填到配置里。另一个原因是 Xcode 的模拟器存在缓存Agent 创建完设备后没杀掉旧实例导致分辨率沿用上一次的这时清掉~/Library/Developer/CoreSimulator/Devices下的缓存目录再跑一次就行。注意清缓存目录之前最好先退出所有模拟器否则 CoreSimulator 会自动重建可能导致清理失败。4.2 文案渲染和设计稿不一致很多人在模板里把文案写得很长结果截图出来被裁掉了。这其实是模板引擎的字号自适应逻辑不够聪明导致的。我的经验是核心卖点文案控制在 12 到 16 个字符中文以内标题最多两行如果确实需要长文案把模板里对应文本块的min_font_size调小或者开启自动换行。不要指望 Agent 能理解你的品牌排版意图它更擅长的是“按规则执行”所以设计上的约束最好在模板里写死相当于把视觉规范嵌入流程。4.3 预览视频总是转码失败转码失败集中在两个原因一是本机 FFmpeg 版本太旧不支持h264_videotoolbox硬件编码换成libx264软编就行就是慢一点二是录屏文件本身太短或分辨率不是偶数导致 FFmpeg 报错。我推荐直接安装最新版 FFmpeg并且在配置里强制video.fps: 30和video.codec: h264这样踩坑概率小很多。如果你看到的报错信息里带着No such filter那基本就是 FFmpeg 版本问题升级即可。4.4 合规校验误报比较多怎么办误报一般出在自定义模板上。比如你模板里放了一个自己的品牌 logoGoldie 的商标检测规则可能把它识别成“疑似商标”输出 warning。这种情况不必慌张把规则等级在自定义规则文件里改成 info 或 ignore 就行。我个人建议不要上来就关掉整条规则否则后面真出现问题就漏了。如果要调整规则可以在配置里加一个覆盖规则文件内容格式大概是- rule: brand_logo_in_screenshot level: ignore paths: - release_assets/zh-Hans/**这样只对中文目录生效其他语言仍然保留默认检查灵活性就出来了。4.5 生成效率低、跑得慢如果你和我一样同时管多个产品效率就是大问题。Goldie 有一个缓存机制同一个模拟器实例和相同的页面路径会复用所以第一次跑慢第二次会快很多。我建议把不常用的语言和尺寸挪到一个单独的配置里只在需要的时候生成平时保持最小产物集。另外Agent 规划阶段的大模型调用是主要成本之一如果只是改了一句文案可以只重跑截图那一步而不是整个流程。Goldie 支持按任务过滤大概是这样goldie run --config fitcamp.yaml --only screenshots这样就能跳过视频生成和重复的设备准备把改文案后的出图时间压缩到两分钟内。如果连模拟器状态都想保留可以再加--keep-simulator参数避免反复冷启动模拟器。5. 综合评估与我的使用体会5.1 值得关注的点从我的实际使用来看Goldie 最值得关注的点是“把上架素材这件事从手工活变成了配置活”。一旦模板、文案、规则沉淀成配置团队新增一个产品或者新发一个版本成本几乎为零。而且它输出的产物结构清晰跟 Fastlane 的deliver能无缝衔接我现在的流程基本是 Goldie 生成素材Fastlane 上传整个发布管道很顺。社区方面最近 GitHub 上围绕这个项目的讨论热度不低主要集中在合规规则的可扩展性上。不少人反馈把它当作一个“素材生成基础设施”来用而不是一次性脚本价值会大很多。我也认同这个观点因为上架素材的痛点从来不是“生成一次”而是“每次发版都要改”。5.2 存在的短板短板也要说清楚。首先它依赖大模型 API生成过程中有一次意外的网络超时直接导致任务中断后来我设置了重试参数才稳定。如果你的网络环境不稳定建议把超时时间调大并在关键步骤加断点续跑。其次模板系统的自定义能力有限遇到特别复杂的视觉设计比如多图层叠加、阴影特效、动态背景还是要用设计工具手调Goldie 更适合处理规范化程度高的元素。最后所有操作都必须在 macOS 上跑因为核心依赖 Xcode 模拟器Linux 和 Windows 用户基本无缘。不过话说回来这本就是面向 iOS 生态的工具平台限制可以理解。另外对完全没有命令行经验的纯运营同学来说上手门槛还是有的但我觉得只要有人把配置文件模板化这个门槛可以降到很低。5.3 我的最终建议最后分享一个个人小经验。我最早是用它来偷懒的但用顺之后发现最大的价值其实是“规整”。以前我手工做素材每次都会有些小差异不是状态栏没改就是某张图漏了副标题。Goldie 把规则的执行变得可重复这比单纯省时间更让我安心。如果你也天天跟 App Store 素材较劲我建议 clone 下来看看哪怕只是学习一下它处理审核规则的方式也能少走不少弯路。