asc-app-create-ui

asc-app-create-ui

热门

通过浏览器自动化在 App Store Connect 中创建新的 App 记录。适用于缺乏公开创建 API,需要 Agent 自动填写“新建 App”表单的场景。

946Star
50Fork
更新于 2026/7/31
SKILL.md
只读
名称
asc-app-create-ui
描述

通过浏览器自动化在 App Store Connect 中创建新的 App 记录。适用于缺乏公开创建 API,需要 Agent 自动填写“新建 App”表单的场景。

asc app create (UI 自动化)

本 Skill 用于通过自动化操作 Web 界面,在 App Store Connect 中创建新的 App。
该自动化为可选功能(opt-in),仅在本地执行,且需要用户保持已登录状态。

前置条件

  • 已安装并可运行浏览器自动化工具(如 Playwright、Cursor 浏览器 MCP 或等效工具)。
  • 用户已登录 App Store Connect(或能够完成登录及双重认证 2FA)。
  • App 对应的 Bundle ID 必须已在 Apple Developer portal 中注册
  • 已准备好所有必需参数:
    • App 名称(不超过 30 个字符)
    • Bundle ID(必须已存在且未被其它 App 使用)
    • SKU
    • 平台(iOS、macOS、tvOS、visionOS)
    • 主要语言
    • 用户访问权限(完全访问权限或限定访问权限)

安全防护规则 (Safety Guardrails)

  • 切勿导出或存储 Cookie。
  • 仅在可见(非 Headless)浏览器会话中操作。
  • 点击“创建”之前暂停并等待最终确认(适用于独立运行的脚本)。
  • 失败时切勿自动重试“创建”操作。

工作流程

1. 预检:注册 Bundle ID 并确认 App 记录不存在

# 若尚未注册,通过公开 API 注册 Bundle ID
asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS

# 确认尚不存在该 App 记录
asc apps list --bundle-id "com.example.app" --output json

2. 打开 App Store Connect

访问 https://appstoreconnect.apple.com/apps 并确认用户处于已登录状态。

3. 打开“新建 App”表单

“新建 App”按钮(蓝色“+”图标)触发的是下拉菜单,而非直接弹窗。

  • 点击“新建 App”按钮打开下拉菜单。
  • 点击下拉菜单内部的“新建 App”菜单项
  • 此时弹出创建弹窗/模态框。

4. 按顺序填写必填字段

平台 (复选框/Checkboxes)

平台选择使用的是复选框(而非单选框)。勾选所需平台的复选框:

  • iOS、macOS、tvOS、visionOS
  • 支持同时选择多个平台。
名称 (文本输入框)
  • 标签:Name
  • 最多 30 个字符。
主要语言 (下拉选择框/Select)
  • 标签:Primary Language
  • 使用 select_option 或等效方法选择对应语言标签(例如 "English (U.S.)")。
Bundle ID (下拉选择框/Select)
  • 标签:Bundle ID
  • 这是一个 <select> 下拉菜单。相关选项会在选择平台后异步加载。
  • 等待下拉菜单加载完毕(初始状态会显示“Loading...”)。
  • 根据同时包含名称与标识符的标签文本匹配进行选择:
    "My App - com.example.app"
SKU (文本输入框)
  • 标签:SKU
用户访问权限 (单选按钮/Radio) -- 必填
  • 此字段为必填项。在选择其中一个选项前,“创建”按钮将一直保持禁用状态。
  • 选项:Limited AccessFull Access
  • 这些属于带有 <span> 覆盖层的自定义单选按钮。
  • 已知问题: 基于无障碍 (Accessibility) 的点击事件可能会被覆盖层的 <span> 拦截。
  • 变通方案: 先对单选框元素调用 scrollIntoView 滚动到视野中,然后直接点击单选框的元素引用 (ref)。这样可以绕过覆盖层拦截。

5. 点击创建

  • 在所有必填字段填写完毕选择了“用户访问权限”之后,“创建”按钮才会变为可点击状态。
  • 点击后,处理过程中按钮文本将变为“Creating”(正在创建)。
  • 等待页面跳转至新 App 的详情页(URL 匹配规则:/apps/<APP_ID>/...)。

6. 通过 API 验证创建结果

asc apps view --id "APP_ID" --output json --pretty
# 或
asc apps list --bundle-id "com.example.app" --output json

7. 转交至创建后的配置步骤

asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc pricing availability create \
  --app "APP_ID" \
  --territory "USA,GBR" \
  --available true \
  --available-in-new-territories true

仅在首次初始化 App 可售性 (availability) 时使用 asc pricing availability create。如果 App 可售性已设置过,后续修改销售地区请切换为 asc pricing availability edit --app "APP_ID" ...

已知 UI 自动化问题

“新建 App”是个下拉菜单,而非直接触发的动作

首次点击会打开包含“新建 App”和“新建 App 组合”的菜单。你必须显式点击菜单项,而不能只点击顶层按钮。

用户访问权限单选按钮带有 span 覆盖层

Apple 的自定义单选按钮使用带有样式的 <span> 元素包裹了 <input type="radio">。直接通过 ref 点击可能会因“点击目标被拦截”而失败。解决方案:

  1. 将单选框元素滚动到视野中 (scrollIntoView)。
  2. 直接点击单选框的 ref(不要使用偏移量或点击 label)。

Bundle ID 下拉菜单为异步加载

选择平台后,Bundle ID 下拉菜单会显示“Loading...”并处于禁用状态。在选择前,请务必等待其加载完成并填入数据。

browser_fill 可能无法触发表单校验

Apple 的 Ember.js 表单使用了自定义变更监听器。browser_fill(原子化设值)可能无法触发校验逻辑。如果在填完所有字段后“创建”按钮仍处于禁用状态:

  • 尝试在至少一个文本框中慢速(逐字符)重新输入内容。
  • 或者先点击输入框、清空内容,然后再慢速输入。

异常处理

  • 若无法定位任何字段或按钮,请立即停止并请求用户人工协助。
  • 截取当前屏幕截图,并汇报最后记录的操作步骤。
  • 发生失败时,切勿自动重试点击“创建”。
  • 失败时,用户应在浏览器中检查是否存在表单校验错误(红框标红、内联错误提示)。

注意事项

  • 本 Skill 是缺乏公开 API 时的变通方案。Apple 官方文档明确说明:“请勿使用此 API 创建新 App,请改为在 App Store Connect 网站上创建新 App。”
  • UI 选择器可能在无通知的情况下发生变更。相比 CSS 选择器,优先推荐使用基于 role/label/text 的选择器。
  • 唯一的人工步骤应当仅为登录。其它所有步骤均可由 Agent 自动化完成。