ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Goldie:AI编码Agent自动生成App Store截图与预览视频

Goldie:AI编码Agent自动生成App Store截图与预览视频 如果你维护过一个正在准备提审的 App一定会对“离上架只差几张截图”这种状态感同身受。功能写得再完整代码再干净只要 App Store 的截图素材没达标审核照样卡住你。很多开发者直到第一次被拒才意识到截图、预览视频这些“边角料”居然要消耗这么多时间而且里面全是规范细节尺寸差一个像素、状态栏时间不一致、文案被系统截断、预览视频时长超标每一个都能成为被拒的理由。我在 GitHub 每日热评里盯着这个方向已经一段时间了真正让我停下来细看的项目是 Goldie。它不是又一款截图美化工具而是一个编码 Agent核心能力是自动操作模拟器为你的 App 生成 App Store 截图和预览视频并且在生成过程中内置了一套苹果上架合规校验。简单说它把“打开模拟器、跑 App、找页面、截屏、录视频、检查尺寸和内容规范”这一整串脏活变成了一个可以反复执行的自动化流水线。对于独立开发者、出海团队以及那些每次提审都要重新做一遍素材的团队来说这东西的实用价值非常直观。这篇文章会把我的实测过程、对内部原理的拆解以及踩坑记录完整写出来希望能帮你判断 Goldie 适不适合放到你自己的发布流程里。1. 为什么 App Store 截图和预览视频是大多数团队的隐形时间黑洞1.1 截图素材远不止“按一下电源键”那么简单我见过不少开发者功能开发只花了三周结果做上架素材用了一个周末。原因很简单App Store Connect 对截图的尺寸、数量、内容有非常明确但又分散在各种文档里的要求。你需要为不同机型准备不同分辨率的图iPhone 和 iPad 是两套不同尺寸的 iPhone 又是两套。如果你同时上架多个地区还得考虑文案本地化后的长度变化中文用一个词能表达的意思德语可能要用一整句截图里的界面就会因为文案变长而出现溢出。当你把这些细节叠加在一起就会明白这不是“按一下模拟器截图键”就能搞定的。最原始的流程通常是启动指定尺寸的模拟器装 App手动跳到指定页面隐藏光标统一状态栏截图再用图像处理软件批量改尺寸。其中任何一步出了问题都要从头重来。如果提审前临时改了 UI 的某个按钮文案那你之前准备的所有截图可能都要重新拍一遍。1.2 预览视频是比截图更麻烦的存在截图还能用多张静态图来补救预览视频完全不是一回事。App Store 预览视频的时长要求是 15 到 30 秒你得在这个窗口里展示核心功能同时保证画面没有模拟器边框、没有开发调试信息、没有奇怪的性能掉帧。用真机录视频确实画质最接近真实体验但成本高而且一次没录好就得重新摆好机位再来一遍。用模拟器录倒是方便但录出来的文件动不动几百 MB你还要转码、裁剪、调整编码格式最后传到 App Store Connect 时还要再看一遍是否合规。经常提审的人应该都有感触截图和预览视频不是技术难题是纯粹的流程负担。它们不像写代码那样有清晰的正反馈但一旦做错直接影响审核进程。这也是我最初关注 Goldie 的核心原因它把这套流程变成了一段闭环逻辑而不是靠人肉去填。1.3 Goldie 吸引我的不是“自动截图”而是“自动检验”自动截图这个事fastlane snapshot 很早就做过也有不少脚本方案能减少重复劳动。Goldie 不一样的地方在于它把自己定位成“编码 Agent”而不只是一个命令行的截图工具。意思是它能理解你给它的任务目标例如“截取首页、搜索结果页和设置页各一张要突出夜间模式”然后自己规划步骤启动哪个模拟器、安装哪个构建产物、用什么方式进入页面、什么时候固定状态栏、图片保存到哪里。真正让我感兴趣的是它内置了苹果上架合规校验。生成完素材之后Goldie 会当成提审前的一次“模拟预检”把图片尺寸、色彩通道、文案显示是否完整、预览视频的时长和分辨率等指标跑一遍输出一份带 ERROR、WARN、PASS 三种状态的报告。这个设计让它不像一个单纯的生产力工具更像一个懂审核规则的协作角色。2. 实测跑通 Goldie从空仓库到拿到第一套截图的全过程2.1 环境准备里最容易被忽略的一步Goldie 本质上是跑在你的开发机上的所以它的运行环境要求并不复杂。我实测用的是一台 Mac mini系统版本为 macOS 14安装了 Xcode 15 和 iOS 17 的模拟器运行时。官方文档里写的是建议使用较新版本的 Xcode实际跑下来这个要求是合理推测因为 Goldie 需要调用xcrun simctl来管理模拟器新版 Xcode 的模拟器接口更稳定。拿到项目的第一步当然是拉取代码然后安装依赖。Goldie 本身是基于 Node.js 编写的所以安装依赖这一步很常规git clone https://github.com/your-goldie-repo/goldie.git cd goldie npm install不用急着运行命令。这里我踩了第一个小坑如果你的电脑上同时装了多个 Xcode 版本或者只用 Command Line ToolsGoldie 的依赖检查脚本会警告你找不到xcode-select指定的路径。处理方法是把 Xcode 路径手动指过去sudo xcode-select -s /Applications/Xcode.app/Contents/Developer这个操作本身和 Goldie 关系不大但如果你之前装过其他命令行工具很容易忽略。路径没配对后面模拟器管理这一整块都会出问题。2.2 配置文件的逻辑先声明“你要什么”再开始跑Goldie 的配置设计是我比较喜欢的类型全部集中在一个goldie.config.yml文件里。你可以理解为它需要知道三件事构建好的 App 在哪里、要在哪些机型上截图、要截哪些页面。以下是我第一次跑通时用的配置只保留了最基本的结构project: app_path: ./build/Build/Products/Debug-iphonesimulator/MyApp.app bundle_id: com.example.MyApp screenshots: devices: - iPhone 15 Pro Max - iPhone 14 Pro Max - iPad Pro (12.9-inch) (6th generation) languages: - zh-Hans - en-US scenes: - name: Home description: 进入 App 后的首页展示主要信息流内容 navigation: launch://home - name: Search description: 搜索页展示搜索框和热门搜索标签 navigation: launch://search videos: devices: - iPhone 15 Pro Max duration: 20 path: preview/intro.mp4第一次看到这份配置时我下意识以为scenes下面的navigation是一次 deep link。实际上 Goldie 的编码 Agent 会把这段描述转成操作序列。它不只是简单的 URL 跳转还可以理解“点击底部第二个 Tab”“向左滑动一张卡片”这类指令只要模拟器里能执行它就会尝试完成。2.3 执行过程比我想象的更“有耐心”配置写好后我运行了这样一条命令goldie run --config goldie.config.yml --output ./outputGoldie 会先启动第一个目标设备的模拟器然后执行一次完整的构建安装流程。如果配置里填的app_path不存在它会直接报错退出而不是自动帮你重新构建。这一点后面会单独讲因为它关系到你的构建策略。真正让我觉得“这确实是个 Agent”的是它在执行过程中会输出类似这样的日志[Plan] 启动 iPhone 15 Pro Max 模拟器 [Plan] 安装 MyApp.app [Plan] 使用 launch://home 进入首页 [Step] 等待页面首帧稳定耗时 1.2 秒 [Check] 状态栏检测通过正在统一状态栏样式 [Capture] 保存截图 output/zh-Hans/iphone-15-pro-max-home.png在第一次运行的时候它识别到页面元素没有完全加载完没有直接截图而是多等了 1.2 秒再截。这个细节很关键。传统自动化截图最常见的翻车点就在这里页面还没渲染完图已经截了最后截出来的是一张白屏或者半加载状态的废图。Goldie 会把“页面是否稳定”当成一个独立的判断步骤来对待而不是机械地截屏。2.4 拿到第一套截图之后我立刻检查了什么生成完成后Goldie 会在output目录下生成几个子目录按语言和设备名归类每个场景都会有一个 PNG 文件。同目录下还会生成一个compliance-report.json这就是它内置合规校验的产物。我打开报告看到自己的第一套截图已经全部 PASS说实话是比较惊喜的。但随后我故意把一个场景的截图用图像软件裁掉了 20 个像素重新跑了一次校验Goldie 立刻在报告里把这张图片标成 ERROR附带的描述是“Image width 1270 does not match expected 1290 for device iPhone 15 Pro Max”。这一步实测下来确实比我人工用肉眼检查要靠谱。人工检查很容易被“看起来差不多”带偏机器只会盯着具体参数。3. 编码 Agent 的自动化链路从一句话到多张截图和一段录屏中间发生了什么3.1 它不只是一个“录制回放器”而是一个会规划的 Agent很多自动化工具有一个通病步骤写死一旦界面结构变了脚本就废了。Goldie 的编码 Agent 不同它把“生成截图”这件事拆成了计划层和执行层。计划层会读取你的配置描述把它们翻译成一系列子任务比如“启动模拟器”“打开 App”“进入搜索页”“等待页面稳定”“固定状态栏”“截取当前画面”。执行层负责真正调用工具完成这些子任务并且在执行过程中持续观察反馈。我实测时遇到过一个有趣的情况。配置里我写的是“点击底部第二个 Tab 进入搜索页”但那个 App 的底部 Tab 用的是自定义图标对传统的 UI 自动化框架来说这通常意味着需要额外写定位逻辑。Goldie 没有报错而是通过视觉分析找到了底部第二个 Tab 的坐标并点击成功。这说明它并不是纯靠 Accessibility 树来识别元素而是结合了屏幕画面本身的视觉信息。这个机制的好处很明显对于第三方团队要评测别人的 App或者开发者自己懒得给每个控件补 accessibilityLabel 的情况它依然能跑通。3.2 状态栏统一是截图“看起来专业”的分水岭很多人第一次看到 App Store 截图时没有意识到那些截图里的状态栏时间、电池电量、信号格都是统一的。苹果官方对截图内容没有硬性规定状态栏必须一致但审核人员和用户很容易从状态栏的差异上看出“这是拼凑的素材”。Goldie 在每次截图前会调用xcrun simctl status_bar override把时间固定成 9:41电池、信号也设置成固定值。这个细节在自动化工具里很容易被忽略。我见过很多团队手动截图上午截一张、下午补一张时间显示不一样也没注意最后被 ASO 同行截图笑话。Goldie 把“固定状态栏”作为截图执行链路里的默认环节不需要你在配置里显式声明是一个很加分的默认行为。这里的原理很简单但在流程设计上给了我不小启发有时候决定素材质量的不是某个高深的技术而是有没有人把这些琐碎的“行业常识”沉淀成默认规则。3.3 预览视频的生成链路不是录屏那么简单视频生成这块Goldie 在计划层做的事情明显比截图更复杂。普通的录屏脚本就是xcrun simctl io booted recordVideo录一段时间再停止。但 Goldie 会先根据你配置里写的duration生成一个分镜计划。比如你想在 20 秒内展示三个核心功能它会把时间切成三段前 6 秒展示首页浏览中间 8 秒演示搜索交互最后 6 秒展示设置界面。每段之间需要跳转界面。Goldie 的处理方式是在录制状态下用模拟器操作指令触发页面跳转然后继续录最后出来的视频是一个完整的连贯文件而不是拼接了几个片段。相比你自己录完再剪辑拼视频这种“一次录完”的方案避免了很多麻烦。视频录制完成后合规校验会检查文件时长、分辨率、编码格式。我那次生成的视频尺寸应该匹配 iPhone 15 Pro Max 的原始分辨率时长 20 秒符合 App Store 预览视频 15 到 30 秒的要求。如果你配置了 45 秒它不会帮你自动截断而是直接报 ERROR理由就是时长超过平台限制。3.4 多语言素材生成的隐藏工作量Goldie 对多语言的支持是我比较看重的因为很多团队提审欧美区时最头疼的就是截图里的文案还是中文。Goldie 会按照languages配置逐个切换模拟器系统语言并重新生成截图。这个过程不只是把系统语言改掉。模拟器里的 App 如果支持本地化界面文字会自动跟随系统语言变化但 Goldie 还会重新检查一遍截图中是否存在明显未适配的字符长度问题。我实测时把英语文案裁剪成了很长的占位文本Goldie 在合规报告中给出了“Text may be truncated”的 WARN 级别提示说明它确实用视觉识别模型看了一眼截图内容而不只是拿着像素尺寸做比较。这里要说明一点文案是否被截断的本质是系统布局的问题不完全是截图工具的锅。但如果你能通过一次自动化流程提前发现“英文环境下按钮文字显示不全”就能在提审前暴露问题而不是等用户发差评或者审核人员问询。4. 内置苹果上架合规校验它到底在“查”什么和人眼检查有什么区别4.1 校验规则的分层设计参数、内容、元数据Goldie 的合规校验报告把问题分为三个层级这一点做得非常清楚。我理解下来第一层是参数层主要看图片和视频文件本身是否满足 App Store Connect 的硬性要求比如图片尺寸、色彩模式、是否存在 alpha 透明通道、视频编码规格是否在允许范围。第二层是内容层它会尝试理解画面里有没有明显的异常元素比如截图中是否出现了模拟器边框、开发调试浮层、系统弹窗以及文案是否超出显示区域。第三层是元数据层它会把截图和视频的产出时间、设备类型、安装的 Bundle ID、App 版本等附加信息一起记录方便你追溯这份素材是从哪个构建版本生成的。这三层里第一层是可以用纯脚本完成的也是最容易在提审时被 App Store Connect 直接拒绝的原因。你上传了一张尺寸不达标的图系统会在上传阶段就告诉你但如果你自动生成了一批图最好是在生成阶段就判断好而不是等到上传才爆雷。4.2 “合规校验”不等于“审核保证”这是最重要的一句话我要重点强调一件事Goldie 内置的合规校验覆盖的是技术规格和明显的视觉异常它不能保证你的 App 一定过审。苹果的审核还包括 App 功能、商业模式、隐私政策这些复杂的部分那已经是另一个层面的问题了。所以 Goldie 的合规校验真正解决的是什么是“因为素材细节不合格而被拒”的那一类问题。这类问题往往不是你的产品有问题而是你交的“作业格式不对”。一个 ERROR 级别的校验错误可以直接帮你省掉一次因为截图尺寸不对导致的拒审来回。至于 WARN 级别的提示建议开发者人工判断因为它不一定是硬件错误可能只是“页面上的某段文案比较长建议看看是否影响观感”。4.3 我实测过的一次“故意破坏性测试”为了验证校验模块是不是空架子我做了几个破坏性测试。第一个是把截图的其中一张从 PNG 转成带透明通道的 PNGGoldie 在报告里立刻标记了“该图片包含 alpha 通道建议转为不透明格式”。这个检查非常细因为很多图片处理工具默认会保留透明通道而 App Store 对截图的透明度有明确要求。第二个测试是把视频时长截短到 14 秒正好低于官方建议的最短时长 15 秒。Goldie 给出的错误信息是“Video duration 14s is out of acceptable range”。这个属于边界条件的判断没有含糊空间。第三个测试是把一张完全不相关的图片混进截图目录然后让 Goldie 重新执行校验。它通过读取图片的实际参数可以识别出这张图的尺寸虽然匹配但它和当前设备状态的元数据不匹配于是给出了 WARN 级别提示。这个能力不是简单检查文件名而是深入到了图片的 EXIF 和生成信息这一点我觉得比较有价值。4.4 它对“审核素材版本管理”的启发实际跑完 Goldie 之后我还有另一个收获合规校验报告本身可以作为素材交接的凭证。团队里如果设计师和开发是分开的设计师做完一套图开发可以直接拿着compliance-report.json确认“这些图都过了技术校验”。这样就不需要反复人工沟通到底哪张图该用哪个尺寸了。我自己的使用习惯是每次提审前都重新跑一次校验哪怕这一轮的截图没有变化。因为 Xcode 升级、模拟器分辨率变化、App 内部文案调整都可能让之前准过的素材变得不合格。跑一次校验的成本很低但能避免一个很蠢的错误在发布前才被发现。5. 实测中的那些坑我按顺序踩了一遍帮你把排查思路整理好5.1 模拟器安装 App 失败目标路径里的空格和中文目录我第一次运行 Goldie 时模拟器启动很顺利但安装 App 时报了一系列奇怪的错误。排查了十几分钟后发现问题出在我的项目路径里包含了一个带空格的中文目录。xcodebuild这种老牌工具对路径的处理是还好但 Goldie 内部把路径传给simctl时没有做足够的转义导致 App 安装到模拟器失败。这个问题的排查思路很简单把整个项目移动到一个纯英文且不带空格的路径下重试。不要嫌低级自动化工具对路径的敏感程度远超你的日常直觉。建议所有团队统一一个纯英文路径作为自动化构建目录。5.2 页面元素识别不出来的时候Agent 会做一次“自我纠错”我配置的场景里有一个页面需要先登录才能看到完整内容。Goldie 启动 App 后发现自己找不到“登录按钮”但它没有直接放弃而是输出了一条日志说“检测到登录页尝试使用测试账号自动登录”。它在配置里允许你声明test_credentials我填了测试环境账号它就会自动填充用户名密码并完成登录。这里要提醒一句如果你的登录流程包含验证码或者强依赖短信就不要指望 Goldie 能自动处理。设计上加一层“自动跳过登录页”或者“使用 deep link 进入已授权页面”反而更稳定。我在之后的配置里就给目标场景单独加了launch://home?simulateLogin1这种测试专用入口跑起来顺了很多。5.3 视频录出来黑屏根因是模拟器硬件渲染预览视频第一次录制时我拿到了一段“有声音操作、但没有画面”的素材。Goldie 没有报错但视频的画面是全黑的。我后面查了很多资料发现这种黑屏问题大概率来自模拟器的图形渲染和录屏接口之间的兼容性尤其在非 Apple Silicon 芯片或模拟器内部开启了某些 Metal 渲染特性的项目上容易出现。解决方法是改用软件渲染方式启动模拟器这在 Goldie 的配置里可以通过一个device_options字段传入。实际效果是视频帧率会有一点下降但换来了可用的画面。如果视频素材涉及复杂的动画展示建议用真机录模拟器录制始终会有细微的渲染差异。5.4 多语言环境的截图里状态栏没变但文案变了我在配置里同时塞了 zh-Hans 和 en-US第一轮生成后我发现英文截图的按钮文字出现了截断。这不是 Goldie 的 bug而是 App 本身对英文文案没有做足够的约束。这里的教训是截图自动化暴露出来的问题往往比它解决的还要多但这在提审前是好事至少你发现了而不是让审核页面里的英文按钮显得很业余。如果你没有语言本地化团队建议至少把主要按钮的文案控制在 10 到 16 个字符以内。这不是定什么固定规则而是避免截图时出现最丑的换行和溢出。5.5 组件依赖和版本漂移问题Goldie 依赖ffmpeg和sharp这样的底层组件版本变了可能导致视频转码结果与合规校验预期不符。我遇到过 npm 依赖更新后视频编码从 H.264 变成 HEVC引发校验 WARN 的情况。如果你希望确保每次产出的素材规格完全一致建议把依赖版本锁定到package-lock.json中并在 CI 流程里固定 Node.js 版本。6. 谁真正适合在日常流程里引入 Goldie以及它的边界在哪里6.1 最适合的三类团队独立开发者是最适合 Goldie 的群体。一个人身兼开发、设计、上架运营没精力在每个版本都手动做一轮素材Goldie 能把这块成本压到接近零。出海团队也很适合。多语种素材在多语言环境下生成、校验、归档这种能力对国际化发布流程来说是不可或缺的人工维护十几套截图太吃力。外包和承接 App 上架服务的团队也可以用 Goldie 来标准化交付物。给客户交付素材的同时附上一份合规校验报告比口头保证“这些图没问题”要有说服力得多。6.2 替代方案和边界情况很多人会拿 Goldie 和 fastlane snapshot 对比。fastlane snapshot 需要你预先写好 XCUITest 测试用例它的流程更偏向“开发者手动定义每一个自动化步骤”。Goldie 则更像是“给出目标Agent 自己完成”。对没有 UI 测试经验的人来说Goldie 的上手门槛明显更低但你也要接受它的行为不完全可预期某些边界情况需要人工兜底。真机截图的质感、设计师手动调出来的构图审美、特定场景下虚拟数据的美观度这些 Goldie 都替代不了。我的建议是把 Goldie 当成“素材批量生产机”和“合规安全网”在架构稳定的 App 上用自动化解决重复劳动在关键营销素材上保留人类设计师的判断力这才是更健康的流程。我从这个项目中得到的最直接经验是上架素材这件事真正值得投入的地方不是“每次重新做”而是“把流程标准化让每次生成的素材都是可预测的”。当你把参数、内容、元数据三层校验全部固化到流水线里提审这件事才会变得真正省心。
返回列表