做过独立 App 的开发者应该都遇到过一个问题:代码写完了,应用也能正常运行了,最后却卡在了商店截图上。
App Store 和 Google Play 对截图的尺寸、数量和展示形式都有要求。截图本身不难获取,麻烦的是后续处理。
你需要给截图加上功能说明、调整排版、适配不同设备尺寸。有多语言需求的话,还要把相同的设计重新制作几遍。
这是以前我给自己的移动端 IDE NimoteCode 准备商店素材时,就没少在这上面花时间。
用 Figma 可以做,但重复劳动不少;在线截图工具虽然方便,但很多模板和导出功能需要付费。更重要的是,每次功能更新之后,可能还得重新制作一遍。
后来我就琢磨,能不能把这件事变成一个相对固定的工作流?
于是做了 NimoteShot,一个免费开源的 App Store / Google Play 截图生成工具。
GitHub:github.com/mobiledevlo...

我想解决的不是截图,而是截图之后的工作
一开始考虑过直接让 AI 生成完整的商店宣传图。
但实际做下来,这种方案有一个比较明显的问题:生成的画面不一定忠实于原始界面。
尤其是代码编辑器、终端、复杂设置页面这类信息密度比较高的 UI,AI 很容易把文字、图标或者布局处理错。
对于应用商店截图来说,这个问题不能忽略。宣传图可以有设计感,但不能把产品原本不存在的功能展示出来。
所以 NimoteShot 采用了另一种方案:
AI 负责理解截图和生成文案,实际图片交给本地模板渲染。
整个流程分成几个阶段:
- 上传真实的应用截图。
- 使用支持视觉输入的 AI 模型分析界面。
- 根据识别结果生成对应的功能说明和多语言文案。
- 选择模板、配色及目标设备。
- 通过本地渲染器生成最终 PNG,并打包导出。
这样 AI 不需要重新绘制应用界面,原始截图能够保留下来,文字和排版也可以单独调整。
当然,视觉模型仍然可能误读 UI,所以生成的功能描述需要开发者自己确认。
为什么没有直接使用 AI 生图?
主要是可控性。
如果每次修改一行文案,都需要重新生成整张图片,不仅增加模型调用成本,也很难保证同一套截图的视觉一致性。
NimoteShot 把内容和渲染拆开处理。
AI 分析完成后,会保存相关结果和任务配置。开发者可以继续修改标题、顺序、模板和颜色,再通过本地渲染器重新生成,而不需要每次都重新上传截图给模型。
目前项目支持:
- PNG、JPEG、WebP 原始截图输入
- iPhone、iPad、Android 的横竖屏导出目标
- 英文、中文、日文、韩文和西班牙文文案
- 4 种视觉风格和 28 组分类配色
- 可编辑的设计配置与批量导出
- PNG 和 ZIP 输出
这里的多语言处理不仅仅是翻译一个标题。不同语言的文字长度差异很大,实际渲染时还需要考虑字号、换行和排版空间。

所以我更倾向于让内容和模板保持独立,避免把文字直接写死在图片里。
模型可以换,渲染流程不需要跟着换
项目最初就没有打算绑定某一家 AI 服务。
目前支持 DeepSeek、Qwen、GLM、Gemini、Claude、OpenAI 兼容接口等,也提供 Ollama 本地视觉模型和 Codex CLI 工作流。
默认使用 DeepSeek Flash。
模型的主要职责是分析真实截图、提取可用于宣传的功能信息,并生成文案及设计建议。

真正生成图片的是本地渲染器。
这种拆分还有一个好处:当模型效果不符合预期时,可以更换 Provider,而不必调整整套图片生成流程。
另外,并不是所有使用场景都必须调用 AI。如果已经有明确的文案,也可以使用 Manual design 模式直接制作截图。
隐私方面也需要说明清楚:图片渲染和导出在本地完成,但选择云端 AI 模型时,截图会发送给对应的服务商进行分析。如果对数据有严格要求,可以考虑受支持的本地视觉模型方案。

除了 Web UI,还提供了 CLI
NimoteShot 使用 Python 实现,提供本地 Web 界面和 CLI 两种使用方式。
目前支持 Linux、macOS 和 Windows,需要 Python 3.11 或更新版本。
在 Linux 或 macOS 上可以通过以下命令启动:
bash
git clone https://github.com/mobiledevloperlab/nimoteshot.git
cd nimoteshot
./install.sh
安装完成后,会启动本地 Web 服务,默认访问地址是:
arduino
http://127.0.0.1:8765
这个服务只监听本机回环地址,没有设计成直接暴露到公网的服务。
除了可视化界面,也可以通过 CLI 运行。例如:
css
.venv/bin/python scripts/nimoteshot.py generate \
--brand "My App" \
--description "A mobile editor with SSH, Git, and terminal tools" \
--style editorial \
--provider qwen \
--locales zh-CN
这里需要提前配置对应 Provider 的模型访问凭据。
每次生成任务都会保留原始截图、配置、预览和导出结果。任务配置可以再次编辑,使用相同的渲染流程重新生成图片。
这也是我保留 CLI 的原因。
对于个人开发者来说,手动生成几张截图问题不大。但如果一个应用有多个版本、多个语言,后续希望把截图制作接入发布流程,命令行和可复用配置会更有价值。
目前项目已经具备 CLI 和任务配置重渲染能力,但还没有把它包装成一个完整的 CI/CD 商店素材发布系统。
目前还有哪些不足?
项目刚开源,还有不少地方值得继续完善。
首先是模板。
目前提供了几种基础风格和配色组合,但不同类型的应用对宣传图的要求差异很大。工具类、效率类、社交类应用,不应该完全使用相同的排版逻辑。
其次是 AI 对界面的理解能力。
目前的视觉分析可以帮助提取内容,但对于信息密集、功能复杂的截图,仍然需要人工检查文案是否准确。
还有一个值得继续优化的方向是多语言排版。简单的文本替换不难,真正麻烦的是在不同语言下保持整体设计一致。
这些问题我更希望通过真实的应用案例逐步改进,而不是一开始就堆很多模板和配置选项。
最后
NimoteShot 最初只是为了解决我自己发布 NimoteCode 时遇到的问题。
做着做着发现,这其实是很多独立开发者都会重复经历的工作:截图、写文案、排版、适配尺寸、导出,然后下一个版本重新来一遍。
如果能把其中重复的部分自动化,至少可以把更多时间留给产品本身。
目前项目已经在 GitHub 开源,采用 AGPLv3+ 许可证。工具本身可以免费使用,云端模型 API 可能产生独立费用。
项目地址:

如果你也做过 App Store 或 Google Play 截图,欢迎试试~
有实际使用中遇到的问题,可以直接提 Issue 或 PR。
我会继续维护这个项目。