@10xmylife: 感谢 @itshanrw 的 asc-cli 不用打开 App Store Connect 就能完成提交发布了,节省了很多时间

X AI KOLs Following 工具

摘要

asc-cli 是一个命令行工具,可以自动化 App Store Connect 中的任务,如构建、发布、TestFlight 和截图等,直接在终端或 CI 管道中操作,为开发者节省时间。

感谢 @itshanrw 的 asc-cli 不用打开 App Store Connect 就能完成提交发布了,节省了很多时间 https://t.co/RKMjahwIq4
查看原文
查看缓存全文

缓存时间: 2026/05/24 04:15

感谢 @itshanrw 的 asc-cli,不用打开 App Store Connect 就能完成提交发布,节省了大量时间 https://t.co/RKMjahwIq4 — # tddworks/asc-cli 来源: https://github.com/tddworks/asc-cli # asc-cli App Store 指令中心 — 灵感来自《星际争霸》的人类指挥中心。 CI (https://github.com/tddworks/asc-cli/actions/workflows/ci.yml) codecov (https://codecov.io/gh/tddworks/asc-cli) Swift (https://swift.org) 平台 (https://www.apple.com/macos/) 一款用于 App Store Connect 的命令行工具 — 可在终端或 CI 流程中自动完成构建、发布、TestFlight、订阅和截图操作。输出结构化 JSON,让 AI 代理能够驱动完整的发布工作流。 ## 快速开始 bash brew install tddworks/tap/asccli asc auth login \ --key-id YOUR_KEY_ID \ --issuer-id YOUR_ISSUER_ID \ --private-key-path ~/.asc/AuthKey_XXXXXX.p8 \ --name personal # 可选别名; 默认为 "default" asc apps list # 查找你的应用 ID asc init --app-id # 固定该 ID — 后续命令无需再指定 --app-id ### 可选:登录 iris(解锁首次 IAP 提交、网页 UI 对标功能) 公共 ASC API(上文)覆盖了大多数工作流,但无法提交应用的第一个 IAP — Apple 要求 IAP 必须随新 App Store 版本一起提交,而唯一能接受该标志的路径是 iris 私有 API。使用 Apple ID 登录一次后,asc iap list 会自动为每个 IAP 路由正确的命令: bash asc iris auth login --apple-id [email protected] --interactive # Apple ID 密码: •••••••• # 需要双重认证。 # 2FA 验证码: 123456 # → 会话已保存至 ~/.asc/iris/session.json(约 30 天有效) asc iris status # 验证; 显示来源: "srpLogin" 现在 asc iap list --app-id 会为每个 IAP 提供正确的提交能力选项 — addToNextVersion(通过 iris 加入队列)、removeFromNextVersion(出队)、submit(已上架应用的独立审核)。代理读取一个能力项并执行;无需了解 iris 与 SDK 的区别。 使用 asc iris auth logout 清除会话。仅使用 API 密钥的 CI 脚本无需修改 — iris 仅为附加功能。 ## 功能 | 类别 | 可执行操作 | | — | — | | 应用与版本 | 列出应用、创建版本、关联构建、提交至 App Store 审核 | | 构建 | 归档 Xcode 项目、导出 IPA/PKG、上传至 App Store Connect、分发至 TestFlight、更新 Beta 说明 | | 元数据 | 按语言更新“新内容”、描述和关键词 | | 应用信息 | 按语言设置名称、副标题、隐私政策;管理类别和年龄分级 | | 截图 | 创建截图集并上传图片 | | 应用预览 | 按语言和设备尺寸上传视频预览(.mp4.mov.m4v) | | App Shots | AI 驱动的截图生成 — 单模板、图库集、插件提供的主题(颜色、装饰、动画)、Gemini 增强;两步 ThemeDesign 工作流实现批量样式化,无需额外 AI 调用 | | TestFlight | 管理 Beta 群组;添加/移除/导入/导出测试员;提交构建供 Beta 审核;按语言的 Beta 应用描述 + 测试员反馈元数据 | | 变现 | IAP(消耗型、非消耗型、非续订订阅);订阅、入门优惠、促销优惠回归优惠、优惠码(三级)、推广购买;完整生命周期(更新/删除/取消提交)、按地区定价(含 proceedsYear2)、审核截图和 1024×1024 的推广图片 | | 代码签名 | Bundle ID、证书、设备、配置文件 | | 身份验证 | 多账号凭据管理;命名账号、切换活跃账号 | | 项目初始化 | asc init 将应用上下文固定到 .asc/project.json;可从 .xcodeproj 自动检测 | | 用户评论 | 读取用户评论、回复反馈、管理评论回复 | | App Clips | 管理 App Clips、默认体验和按语言的主页卡片内容 | | Game Center | 管理游戏的成就和排行榜 | | 插件 | 在 ~/.asc/plugins/ 安装可执行插件,用于自定义事件处理器 | | 报告 | 销售、订阅、安装和财务报告;多步分析工作流 | | Iris(私有 API) | 基于 Cookie 的身份验证;通过驱动 ASC 网页 UI 的 iris 私有 API 创建应用、列出应用 | | 模拟器 | 列出、启动、关闭本地 iOS 模拟器;通过插件进行流式传输 | | AI 代理 | 带 CAEOAS 能力的 JSON 输出 — 代理无需了解命令树即可导航 | ## 系统要求 - macOS 13+ - App Store Connect API 密钥(在此创建 (https://appstoreconnect.apple.com/access/integrations/api)) - Swift 6.2+ (仅从源码构建时需要) ## 安装 ### Homebrew(推荐) bash brew install tddworks/tap/asccli ### 从源码构建 bash git clone https://github.com/tddworks/asc-cli.git cd asc-cli swift build -c release cp .build/release/asc /usr/local/bin/ ## 身份验证 ### 持久登录(推荐) bash # 单个账号(保存为 "default") asc auth login \ --key-id YOUR_KEY_ID \ --issuer-id YOUR_ISSUER_ID \ --private-key-path ~/.asc/AuthKey_XXXXXX.p8 # 多个账号 asc auth login --key-id K1 --issuer-id I1 --private-key-path work.p8 --name work asc auth login --key-id K2 --issuer-id I2 --private-key-path personal.p8 --name personal asc auth update --vendor-number 88012345 # 保存供应商编号以便生成报告 asc auth list # 列出所有已保存账号 asc auth use work # 切换活跃账号 asc auth check # → 显示活跃账号名称 + 来源: "file" asc auth logout # 移除活跃账号 asc auth logout --name personal # 移除指定账号 凭据保存在 ~/.asc/credentials.json。所有 asc 命令自动使用活跃账号 — 无需为每个会话设置环境变量。账号名称不能包含空格。 ### 环境变量(替代方案) bash export ASC_KEY_ID="YOUR_KEY_ID" export ASC_ISSUER_ID="YOUR_ISSUER_ID" export ASC_PRIVATE_KEY_PATH="~/.asc/AuthKey_XXXXXX.p8" # 或: export ASC_PRIVATE_KEY="" 解析顺序: ~/.asc/credentials.json → 环境变量。 ## 命令参考 ### 身份验证与项目 bash asc auth login --key-id --issuer-id --private-key-path [--name alias] [--vendor-number ] asc auth update [--name alias] --vendor-number asc auth list asc auth use asc auth check asc auth logout [--name alias] asc init # 从 *.xcodeproj 的 bundle ID 自动检测应用 asc init --name "My App" # 按名称搜索 asc init --app-id # 直接固定 ID — 无需 API 调用 ### 应用与版本 bash asc apps list asc versions list --app-id asc versions create --app-id --version --platform ios asc versions set-build --version-id --build-id asc versions check-readiness --version-id asc versions submit --version-id asc version-review-detail get --version-id asc version-review-detail update --version-id --contact-first-name Jane --contact-email [email protected] ### 构建与 TestFlight bash asc builds list [--app-id ] [--platform ] [--version ] asc builds next-number --app-id --version --platform asc builds archive --scheme MyApp [--platform ios] [--export-method app-store] [--upload --app-id --version 1.0.0 --build-number 42] asc builds upload --app-id --file MyApp.ipa --version 1.0.0 --build-number 42 asc builds uploads list --app-id asc builds uploads get --upload-id asc builds uploads delete --upload-id asc builds add-beta-group --build-id --beta-group-id asc builds remove-beta-group --build-id --beta-group-id asc builds update-beta-notes --build-id --locale en-US --notes "What's new" asc builds set-encryption-compliance --build-id --uses-non-exempt-encryption true|false asc testflight groups list [--app-id ] asc testflight testers list --beta-group-id asc testflight testers add --beta-group-id --email [email protected] asc testflight testers remove --beta-group-id --tester-id asc testflight testers import --beta-group-id --file testers.csv asc testflight testers export --beta-group-id asc beta-review submissions list --build-id asc beta-review submissions create --build-id asc beta-review submissions get --submission-id asc beta-review detail get --app-id asc beta-review detail update --detail-id [--contact-first-name ] [--notes ] asc beta-app-localizations list --app-id asc beta-app-localizations get --localization-id asc beta-app-localizations create --app-id --locale en-US [--description ] [--feedback-email ] [--marketing-url ] [--privacy-policy-url ] asc beta-app-localizations update --localization-id [--description ] [--feedback-email ] asc beta-app-localizations delete --localization-id asc review-submissions list --app-id [--state WAITING_FOR_REVIEW,IN_REVIEW,READY_FOR_REVIEW] [--limit 200] asc review-submissions get --submission-id asc review-submissions items list --submission-id [--state REJECTED] ### Xcode Cloud bash asc xcode-cloud products list [--app-id ] asc xcode-cloud workflows list --product-id asc xcode-cloud builds list --workflow-id asc xcode-cloud builds get --build-run-id asc xcode-cloud builds start --workflow-id [--clean] ### 用户评论 bash # 列出应用的所有评论 asc reviews list --app-id # 获取特定评论 asc reviews get --review-id # 回复评论 asc review-responses create --review-id --response-body "感谢您的反馈!" # 获取评论的回复 asc review-responses get --review-id # 删除回复 asc review-responses delete --response-id ### Game Center bash # 获取 Game Center 配置(后续命令需要 detail-id) asc game-center detail get --app-id # 成就 asc game-center achievements list --detail-id asc game-center achievements create --detail-id --reference-name "第一步" --vendor-identifier first_steps --points 10 asc game-center achievements create --detail-id --reference-name --vendor-identifier --points [--show-before-earned] [--repeatable] asc game-center achievements delete --achievement-id # 排行榜 asc game-center leaderboards list --detail-id asc game-center leaderboards create --detail-id --reference-name "历史最高" --vendor-identifier all_time_high --score-sort-type DESC asc game-center leaderboards create --detail-id --reference-name --vendor-identifier --score-sort-type ASC|DESC [--submission-type BEST_SCORE|MOST_RECENT_SCORE] asc game-center leaderboards delete --leaderboard-id ### 性能分析 bash # 应用级别性能指标(启动时间、卡顿率、内存等) asc perf-metrics list --app-id asc perf-metrics list --app-id --metric-type LAUNCH asc perf-metrics list --build-id --metric-type HANG # 诊断特征(卡顿/磁盘写入/启动热点) asc diagnostics list --build-id asc diagnostics list --build-id --diagnostic-type HANGS # 诊断日志(特征的调用栈) asc diagnostic-logs list --signature-id ### 元数据 bash # 版本本地化(新内容、描述、关键词) asc version-localizations list --version-id asc version-localizations create --version-id --locale zh-Hans asc version-localizations update --localization-id --whats-new "错误修复" # 应用信息本地化(名称、副标题、隐私政策) asc app-infos list --app-id asc app-infos update --app-info-id --primary-category GAMES --primary-subcategory-one GAMES_ACTION asc app-categories list [--platform IOS] asc app-info-localizations list --app-info-id asc app-info-localizations create --app-info-id --locale zh-Hans --name "我的应用" asc app-info-localizations update --localization-id --name "我的应用" --subtitle "更高效地做事" asc app-info-localizations delete --localization-id # 年龄分级 asc age-rating get --app-info-id asc age-rating update --declaration-id --violence-realistic NONE --gambling false --kids-age-band NINE_TO_ELEVEN ### 截图与预览 bash # 截图 asc screenshot-sets list --localization-id asc screenshot-sets create --localization-id --display-type APP_IPHONE_67 asc screenshots list --set-id asc screenshots upload --set-id --file ./screen.png # 视频预览 asc app-preview-sets list --localization-id asc app-preview-sets create --localization-id --preview-type IPHONE_67 asc app-previews list --set-id asc app-previews upload --set-id --file ./preview.mp4 [--preview-frame-time-code 00:00:05] ### App Shots(AI 截图生成) 两种模式:图库(所有截图协调风格)和 单模板(一次一个截图)。可选通过插件提供的 AI 主题添加颜色、背景和浮动装饰。 bash # --- 模板(单张截图) --- asc app-shots templates list # 浏览可用模板 asc app-shots templates list --size portrait --output table asc app-shots templates apply --id top-hero \ --screenshot screen.png --headline "更快发布" \ --preview html > preview.html && open preview.html # 在浏览器中预览 asc app-shots templates apply --id top-hero \ --screenshot screen.png --headline "更快发布" \ --preview image --image-output marketing.png # 导出为 PNG # --- 图库模板(多屏套件) --- asc app-shots gallery-templates list --output table asc app-shots gallery-templates get --id neon-pop --preview > gallery.html && open gallery.html # --- 图库模式(一次处理所有截图) --- asc app-shots gallery create \ --app-name "我的应用" \ --screenshots screen-0.png screen-1.png screen-2.png # --- 主题(插件提供、AI 驱动样式) --- asc app-shots themes list # 浏览主题 asc app-shots themes get --id space --pretty # 主题详情 asc app-shots themes apply --theme space --template top-hero \ --screenshot screen.png --headline "更快发布" # AI 样式 HTML # 两步工作流:一次生成 ThemeDesign,多次应用(无需额外 AI 调用) asc app-shots themes design --id luxury > design.json asc app-shots themes apply-design --design design.json \ --template top-hero --screenshot screen-0.png --headline "功能 1" \ --preview html > s0.html asc app-shots themes apply-design --design design.json \ --template top-hero --screenshot screen-1.png --headline "功能 2" \ --preview image --image-output s1.png # --- Gemini AI 增强 --- asc app-shots config --gemini-api-key KEY # 保存一次密钥 asc app-shots generate --file screen.png # 使用 Gemini 增强 asc app-shots generate --file screen.png --device-type APP_IPHONE_67 asc app-shots generate --file screen.png --style-reference ~/ref.png ### 变现 完整的 IAP 和订阅管理 — 生命周期、定价、优惠码、促销/回归优惠、审核截图、推广图片和 App Store 推广位。每个命令在运行 asc web-server 时也可作为 REST 端点。嵌入在 JSON 输出中的能力项是状态感知的 — 它们仅建议下一步合法操作。 bash # 快速了解 — 完整命令表面请参阅链接文档。 asc iap list --app-id asc iap create --app-id --reference-name "金币" --product-id "com.app.gold" --type consumable asc iap submit --iap-id asc subscription-groups create --app-id --reference-name "高级版" asc subscriptions create --group-id --name "月度" --product-id "com.app.monthly" --period ONE_MONTH asc subscriptions prices set --subscription-id --territory USA --price-point-id asc promoted-purchases create --app-id --iap-id --visible --enabled | 领域 | 文档 | |——|——| | 应用内购买与订阅概述 | docs/features/iap-subscriptions.md | | 生命周期(更新/删除/取消提交:IAP、订阅、群组、入门优惠) | iap-subscriptions/lifecycle.md | | IAP 基础地区定价与订阅按地区定价(含 proceedsYear2) | iap-subscriptions/pricing.md | | 优惠码(三级:码 → 自定义 → 一次性 + 兑换 CSV) | iap-subscriptions/offer-codes.md | | 订阅群组本地化(按语言的定制应用名称) | [iap-subscription

相似文章

@10xmylife: 这个工具好

X AI KOLs Following

KIGI CLI 0.1.5版本更新,新增支持5个OAuth提供商和24个基于API的提供商,包括Kimi Coding、ChatGPT、Grok xAI、Claude、GitHub Copilot。这是一个完全开源的支持图工程的CLI工具。

@WWTLitee: CLI-Anything 这个好这个好,懒人DNA又动了 它一边做 CLI-Hub,一边把各种软件往可安装、可调用、可循环执行的 CLI harness 上改。真做成了,很多原本离 agent 很远的软件都会被接回工作流里 仓库现在已经有…

X AI KOLs Timeline

CLI-Anything 是一个开源项目,旨在通过为各种软件生成 CLI 接口,让 AI 代理能够直接调用和操作这些软件。该项目包含 CLI-Hub 用于浏览和安装社区构建的 CLI,目前已获得 39k GitHub stars。