Goldie:用编码Agent自动生成App Store上架截图与预览视频 最近 GitHub 热榜上有个叫 Goldie 的项目热度涨得很快。它做的事情一句话就能说清楚让编码 Agent 自动帮你把 App Store 的截图、预览视频全部做好再按照苹果官方规范做一遍上架合规校验。对独立开发者和出海团队来说这句话的含金量相当高。做 iOS 的同行应该都有体会App Store 上架素材这些年越来越卷。新机型尺寸一个接一个6.7 英寸、6.5 英寸、5.5 英寸再加上 iPad 的横竖屏一套截图做下来十几个尺寸苹果还要求宣传文本、副标题严格控制在字符数内视频不能超过 30 秒画面里不能出现未经发布的 UI 或容易引起误导的内容。以前这些活儿基本靠设计师和开发手工配合或者用 Sketch、Figma 套模板改尺寸一个版本迭代下来一天时间就这么没了。Goldie 想解决的正是这个流程问题。它不是简单帮你导出几张图而是把文案整理、截图渲染、多尺寸适配、视频脚本、帧合成、规则校验这一整套动作交给一个能听懂自然语言的编码 Agent 去执行。这篇文章我就从实际使用者的角度把这个项目拆开聊一聊包括它的核心设计、跑通一次的真实流程以及我在使用过程中踩过的坑。1. 截图与预览视频为什么成了上架流程里的“硬骨头”1.1 新版上架素材要求的隐性成本先说个很多人容易忽略的事实App Store Connect 后台上传截图时系统只做基础格式检查真正严格的校验发生在提审阶段。苹果审核员会逐张看截图确认尺寸是否符合目标机型、文字是否完整、有没有出现不该出现的营销词汇、画面内容是否和 App 实际功能一致。这意味着你在上传阶段省掉的功夫审核阶段全都会补回来。从规格角度看目前 iPhone 系列截图主要按屏幕尺寸区分常见的是 6.7 英寸1290 x 2796 像素、6.5 英寸1242 x 2688 像素、5.5 英寸1242 x 2208 像素每种尺寸最多可上传 10 张。iPad 这边更麻烦12.9 英寸、11 英寸、10.5 英寸、9.7 英寸都有对应分辨率还有横竖屏两套逻辑。也就是说一个准备全平台上架的应用至少需要准备 5 到 8 种分辨率的截图每种分辨率还要覆盖 3 到 6 张。光是想一想这个工作量就知道为什么那么多人愿意在素材生成工具上花钱。更麻烦的是文字规范。主标题限制在 30 个字符以内副标题也是 30 个字符宣传文本上限 170 个字符。截图内出现的文案不能含价格、免费、排名第几、App Store 官方推荐这类表述也不能出现“测试版”“Beta”字样。中文在这套规则下特别容易踩线因为中文字符的视觉宽度比英文字符宽同样 30 个字符中文能写下的信息量完全不同渲染出来后经常溢出边界。1.2 普通脚本和编码 Agent 的本质区别如果只是把截图尺寸批量转换写个 Python 脚本用 Pillow 就能搞定几十行代码的事。但上架素材的真正难点不在尺寸转换而在“每次版本更新后所有截图都要跟着重做”。文案变了、功能入口变了、界面配色变了截图就要重新生成。普通脚本只能做机械替换碰到“文案太长要换行”“这个页面按钮位置变了需要重新取景”这类问题就傻眼。编码 Agent 不一样。它能理解需求描述把“首页展示数据看板突出日活增长”这种自然语言拆解成具体操作打开页面、找到对应模块、调整截图视角、渲染导出。而且 Agent 不是一次执行就结束它会看结果、跑校验、发现问题再改。Goldie 的核心就是把这件事做成了一条可持续复用的流水线。拿订书机来类比普通脚本是订书机按一下就固定出一种东西Goldie 更像一个带着校对能力的排版师傅能根据你的要求调整版式排完还会自己检查一遍有没有错别字。2. Goldie 的核心设计拆解2.1 一条完整的素材生产流水线从仓库文档和源码结构来看Goldie 整体分成四个核心模块输入解析、渲染引擎、视频合成、合规校验。这四个模块本身不算稀奇但组合起来就是一条完整的上架素材生产线。输入解析模块接收的是 App 的基础信息名称、副标题、宣传文本、功能点描述、关键页面的截图路径。它支持直接读取你本地的 App Store 本地化文件也可以手动写一个配置文件。我实际用下来配置文件是更可控的方式因为手动写清楚每个页面要展示什么内容Agent 按图索骥产出的素材更贴近真实产品。渲染引擎是工作量最大的模块。Goldie 采用了一种“母版渲染”思路先以 6.7 英寸的高清尺寸渲染一套完整截图作为母版再通过安全区重算和元素缩放适配到其他分辨率。这样做的好处是排版逻辑只需要维护一套省掉了每个尺寸单独调布局的重复劳动。但也带来一个新问题简单等比缩放会导致文字和边距比例失调所以它内部其实做了两件事先按母版坐标布局再根据目标尺寸的安全区边界做元素重排。视频合成模块走的是脚本驱动渲染的思路。用户可以写一个 JSON 脚本描述每个镜头的素材、时长、过渡动画、文字覆盖层然后后端逐帧渲染成 MP4。这听起来很像 AE 模板但区别在于整个脚本可以由 Agent 根据自然语言描述自动生成。你对它说“我想要开头 logo 淡入中间用两秒展示数据增长曲线结尾放一句主打卖点”它就会翻译成具体的帧配置。合规校验模块则像一个质检员跑在渲染流程的最后。它会对生成的截图和视频做文本长度、禁用词、分辨率、文件格式等多维度检查最后产出一份 Markdown 报告。2.2 截图自动化背后的技术取舍做截图自动化业内主要有两条技术路线。一条是用 iOS 模拟器启动 App通过命令行截图好处是画面真实、还原度高坏处是环境不稳定字体渲染、模拟器版本、应用启动状态都会影响结果很容易出现这次截图和上次长得不一样的情况。另一条是用 SwiftUI 写一个渲染宿主应用把设计稿按目标设备尺寸离屏渲染成图片可复现性更强也更适合批量生产。Goldie 走的是第二条路线。它内部定义了一套描述截图内容的数据结构包含页面背景、标题文案、功能卡片、按钮状态等元素然后调用 SwiftUI 的 ImageRenderer 在内存中完成渲染。这样做的好处是纯代码控制不依赖真人操作设备而且同一套数据可以渲染出所有目标尺寸。但在多尺寸适配上有几个细节很关键。第一个是安全区。不同机型的刘海、圆角、底部 Home Indicator 位置不同截图里如果直接贴边内容容易被裁掉或者被圆角遮挡。Goldie 的处理方式是先读取目标机型的安全区内边距再把母版元素按比例重排到安全区以内。第二个是状态栏显示。为了界面干净通常会把真实时间、信号电量隐藏或替换成占位文字。第三个是动态字体带来的问题。用户在系统里设置了超大字号时如果截图里的文字按固定字号渲染看起来会和真实体验差别很大所以最好按系统标准字号区间的中间档位来渲染。我实际跑的时候遇到过一个问题截图里的商品标签带了 emoji渲染出来变成褪色的方块。排查了一圈才发现是字体文件没有加载 emoji 字形后来在素材描述里对这类字符做了处理再重新渲染才正常。2.3 预览视频是怎么自动“写”出来的App Store 预览视频的硬性要求是时长不超过 30 秒格式为 MP4分辨率与目标设备尺寸匹配常见的是 886x1920对应 6.7 英寸或 1242x2688对应 6.5 英寸。官方文档还要求视频不能自动播放声音所以绝大多数开发者都不会给预览视频加音轨重点全放在视觉叙事上。Goldie 的视频生成不是拿屏幕录制软件录屏而是逐步渲染。它先把整个视频拆成若干镜头每个镜头对应一组界面快照和动画描述然后用渲染引擎一帧一帧合成。动画类型支持淡入淡出、位移动画、缩放、文字覆盖等常见效果。这样做的好处是输出极其稳定同样一段脚本跑三次得到的三条视频一模一样不会出现录屏时鼠标乱入、通知栏弹窗之类的意外情况。Agent 在视频生成中的角色是“脚本转译器”。它会根据你提供的产品描述和营销重点先列出一个分镜草稿再询问确认或自动生成 JSON。当然自动生成的视频脚本往往比较保守更多是“展示首页—展示核心功能—展示数据表现”这种标准三段式结构。如果你想要更有创意的转场或动效建议自己先把 JSON 脚本改清楚再交给 Agent 去渲染这样既保留可控性又能节省反复沟通的时间。2.4 内置合规校验到底校验了什么Goldie 内置的合规校验是一套“送审前自检清单”它不保证一定能过审但能帮你拦截掉大量低级错误。我在使用中总结出它主要覆盖五类检查项。第一类是文本长度检查。主标题、副标题、宣传文本的字符数会被逐个读取并比对规范超过限制就会在报告中标记出来。第二类是敏感词和禁用词检查。这里涵盖的不仅仅是“免费”“价格”“第一”这类营销词还包括 App Store、Apple 官方名称的误用以及容易引发误导的绝对化表述。第三类是图片规格检查。分辨率、文件格式、文件大小都会做校验比如截图文件如果超过 1200 万像素或者不是 PNG/JPG 格式会直接提示重新导出。第四类是视频规格检查。时长是否小于等于 30 秒、分辨率是否匹配、编码格式是否合规都会被逐一验证。第五类是内容 OCR 检查。这一步比较有意思它会跑 OCR 识别截图里的文字自动排查有没有出现“测试版”“Beta”“仅供内部使用”等字样。这个功能对很多团队来说很实用因为人工检查十几张截图时很容易漏掉某个角落里的内部版本号。校验结束后会生成一份 Markdown 报告每一项要么打勾通过要么标注“未通过”并给出具体原因和修改建议。最方便的是Agent 可以根据校验报告自动重新渲染失败的素材最多会重试三次三次都不通过才中止流程并在报告里明确提示。3. 实操从零跑通 Goldie 并生成一套上架素材3.1 准备环境我先说下我跑通时的环境配置。我用的是一台 M 系列芯片的 MacBook系统是 macOS 14磁盘剩余空间 20GB 以上。如果你用的还是 Intel 芯片的老机器视频合成阶段会比较吃力三条视频同时渲染时风扇会狂转而且耗时会明显增加。建议有条件的话直接用 Apple Silicon 的机器体验差距很大。软件依赖方面需要提前装好这些Xcode 15 或更高版本并且安装好至少一个 iOS 模拟器运行时因为渲染宿主应用需要在模拟器环境中做离屏渲染。Node.js 20 以上Goldie 的 CLI 工具基于 Node.js 开发。Python 3.11 以上主要用来跑合规校验里的 OCR 脚本。ffmpeg视频合成阶段会调用它做编码封装。一个可用的 LLM API KeyGoldie 依赖编码 Agent 能力来理解自然语言需求和生成渲染脚本需要你在配置环境变量时填好。安装步骤不复杂。从 GitHub 克隆仓库后在项目根目录执行 npm install 安装依赖然后设置一个 .env 文件写入你的 API Key 和模型配置。仓库自带一个命令行入口安装完成后可以直接使用 goldie 前缀来执行命令。3.2 定义 App 素材描述文件跑通 Goldie 的关键是写清楚配置文件。我拿一个虚构的健身类 App 示例来说明。项目支持 YAML 格式的配置我一般命名为 config.yaml放在项目目录下。app_name: 燃动健身 subtitle: 每日训练计划 promotional_text: 从 5 分钟开始养成运动习惯 locale: zh-Hans device_sizes: - iphone-6-7-inch - iphone-6-5-inch - ipad-12-9-inch screenshots: - page: home title: 今日训练计划 description: 展示首页训练卡片包含“今日训练”“本周目标”“连续打卡”三个模块 elements: - type: stat_card position: top label: 本周目标 value: 120 分钟 - type: list position: center items: - 热身 · 5 分钟 - 力量训练 · 20 分钟 - 拉伸放松 · 10 分钟 - page: progress title: 数据趋势一目了然 description: 展示训练数据图表需要突出连续打卡天数和体重变化折线 elements: - type: chart position: center title: 最近 30 天训练时长 trend: up - type: badge position: bottom label: 连续打卡 21 天 video_script: - shot: 1 duration: 3s image: home animation: fade_in overlay_text: 从 5 分钟开始 - shot: 2 duration: 5s image: progress animation: slide_up overlay_text: 数据趋势一目了然这份配置的意义在于Agent 拿到它之后不需要你去喂一段长篇自然语言。每个页面的 title 和 description 已经表达了“这张截图要传达什么”elements 则定义了画面里具体的展示元素。实际测试下来配置写得越细渲染结果的可用度越高如果只写一句“生成首页截图”Agent 大概率会生成一张结构松散、重点不突出的图。3.3 执行与产物输出配置文件准备好之后执行一句命令就开始跑整个流程goldie generate --config config.yaml --output ./out命令执行后Goldie 会先读取配置调用 Agent 生成每个页面的渲染描述然后调起渲染引擎逐张截图再进入视频合成模块生成预览视频。整个过程中控制台会打印当前执行到哪一步方便你观察有没有卡住。我实际跑完一次输出目录结构大致是这样的out/ ├── screenshots/ │ ├── iphone-6-7-inch/ │ │ ├── home.png │ │ ├── progress.png │ ├── iphone-6-5-inch/ │ │ ├── home.png │ │ ├── progress.png │ └── ipad-12-9-inch/ │ ├── home.png │ └── progress.png ├── videos/ │ └── preview.mp4 └── report.mdreport.md 就是合规校验报告里面会列出每一项检查结果。比如## 文本长度检查 - [x] 主标题: 4/30 字符 - [x] 副标题: 6/30 字符 - [x] 宣传文本: 15/170 字符 ## 图片规格检查 - [x] home.png 分辨率 1290x2796 - [x] progress.png 分辨率 1290x2796 - [x] 文件格式 PNG ## 视频规格检查 - [x] preview.mp4 时长 8s (≤30s) - [x] 分辨率 886x1920 - [x] 编码 H.264这里要重点说明一下 Agent 的“自愈”机制。如果某张截图在校验时发现文字溢出或者包含禁用词Agent 会读取报告内容自动定位到对应页面调整文字换行规则或填充内容后重新渲染。默认最多重试三次三次都失败才会停止。我实际跑下来前两次就成功的概率比较高真正连续三次失败的场景一般是中文文案里包含了限制级词汇机器不知道该怎么改写必须人工介入。3.4 耗时与成本参考一次全量生成的耗时我这边实测的情况是5 个设备尺寸、每个尺寸 2 张截图、1 条 30 秒视频总共耗时约 25 分钟到 40 分钟。其中截图渲染非常快每张也就是几秒到十几秒真正的大头在视频合成逐帧渲染非常吃 CPU。API 调用成本上一次全量生成大约消耗 10 到 15 次 Agent 对话主要发生在解析配置、生成渲染描述、读取校验报告、调整失败项这几个环节。按主流大模型的定价来算一次完整生成大概几元人民币这个成本比请设计师做一次素材要便宜得多。但如果频繁触发失败重试调用次数会明显上升建议把配置里的 auto_retry 开关保持默认上限不要改成无限重试。4. 实测体验、常见问题与避坑手册4.1 真实体感节省了多少时间我用 Goldie 跑完一个真实项目的上架素材后最直观的感受是“流程被压缩了”。以前做一个版本的上架素材我要先在产品里把所有页面截图截好再用作图工具一张张排版、标注、导出多尺寸最后手动检查字符数和分辨率全套下来至少四五个小时。现在只需要把更新后的文案和页面信息整理进 config.yaml跑一遍命令半小时左右就能拿到一套基础可用、合规检查通过的素材。但要说它完全替代设计师那还不现实。Goldie 生成的截图整体是“干净、规范、信息准确”但谈不上“惊艳”。如果你的品牌比较强调设计感建议把它定位成“素材初稿生成器”。生成初稿之后再导入到 Figma 里做一轮精细化调整比如加品牌色渐变、统一字体风格、调整卡片投影这样既能保持效率又不会丢掉品牌质感。4.2 高频问题速查表我在使用过程中遇到过不少问题也参考了其他用户的反馈整理成一张速查表供大家参考问题现象可能原因解决办法中文文案渲染后溢出截图中文字符视觉宽度大按英文字符数换行导致超出在页面配置里设置max_chars_per_line或者明确要求 Agent 启用中文换行规则截图上 emoji/特殊符号显示为方块渲染字体缺少对应字形在素材描述中禁用 emoji或者手动指定包含完整字形的系统字体预览视频导出后文件体积异常大默认码率偏高在视频配置里调低bitrate或者将帧率改为 30fps合规校验报告误报“包含违规文本”OCR 识别错误比如把“Pro”识别成其他词查看报告里附带的 OCR 片段原文确认为误识别后可加入白名单重新校验Agent 反复重试仍然失败配置描述过于模糊Agent 不理解你的意图补全页面 title 和 description明确每个模块展示什么数据渲染结果与真实 App 界面差异大截图素材没有基于真实页面生成尽量使用真实页面截图作为渲染底图而不是让 Agent 凭空设计4.3 我的避坑经验第一配置文件的“初始化投入”千万不要省。我第一次用的时候只写了 app_name 和截图页面的标题结果 Agent 生成的截图里出现了一个完全虚构的功能卡片看着好看但实际上产品里根本没有这个功能。后来我把每个页面的 description 都写细明确每个模块要放什么数据、展示什么指标出来的素材才真正能用。第二不要在配置里放容易引起歧义的表达。比如“突出运动数据”Agent 可能理解成放一个巨大的数字也可能理解成放一个折线图。更准确的表达是“展示最近 30 天训练时长折线图标注最高点和最低点”。自然语言描述越接近你对画面的具体想象Agent 输出的结果越接近你要的效果。第三合规校验通过不等于苹果审核一定通过。我遇到过校验全绿、结果审核被拒的情况原因是截图里展示了一个“7 天免费试用”的界面但实际产品里这个功能需要绑定支付方式才能开启苹果审核员认为存在误导。校验工具能查字符数、查禁用词、查分辨率但它查不了“是否符合真实用户体验”。所以每次提交前我都会把生成的截图和真实 App 界面再人工比对一遍这个步骤不能省。第四视频脚本建议自己先列好大纲。Goldie 的 Agent 自动生成的视频脚本结构上比较安全基本是“功能展示—数据表现—结尾号召”的模板但如果你想让视频更有节奏感建议自己把分镜列清楚再让 Agent 去转译成渲染脚本。我在配置里预定义好分镜后生成的视频明显更像是“精心策划过”的而不是简单的三张图轮播。4.4 后续扩展的可能性Goldie 这套方案的思路其实可以进一步延伸。比如把多语言本地化做进去同一套配置在不同 locale 下自动生成对应语言的截图和文案对出海团队来说价值很大。再比如和 CI/CD 集成每次发版前自动触发素材生成和合规检查直接在流水线里输出一套 ready-to-upload 的素材包这样可以彻底消除“提审前一天发现截图尺寸不对”的尴尬。我目前最常用的工作流是版本核心文案确定后更新 config.yaml跑一遍 Goldie 拿到初稿再用 Figma 做一轮品牌化微调最后人工核对一遍截图内容和真实功能的一致性。整体时间投入大概在一个小时以内相比过去的半天甚至一天效率提升非常明显。从另一个角度看Goldie 这类工具带来的真正变化是上架素材从“一次性手工任务”变成了“可持续迭代的数据资产”。每次版本更新只需要改配置里的文案和页面描述就能得到一套完整、合规的新素材。工具负责把机械劳动替代掉但最终要不要把一个功能突出展示、要不要在截图里强调某项数据这些涉及产品判断的决定还是得产品经理和开发者自己来拍板。