asc-localize-metadata by rudrankriyam/app-store-connect-cli-skills
npx skills add https://github.com/rudrankriyam/app-store-connect-cli-skills --skill asc-localize-metadata使用此技能可提取英文(或任何源语言)的 App Store 元数据,通过 LLM 进行翻译,并将翻译结果推送回 App Store Connect——全程自动化。
--help 确认特定 asc 版本的标志:
asc localizations --helpasc localizations download --helpasc localizations upload --helpasc apps info edit --help--app、--version、、、)。广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
--version-id--type--app-info--output table。head -1“选择第一行”。asc auth login 或 ASC_* 环境变量)asc apps list 查找)用于版本和应用信息本地化的 App Store Connect 语言环境:
ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US,
es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it,
ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk,
sv, th, tr, uk, vi, zh-Hans, zh-Hant
字段:description、keywords、whatsNew、supportUrl、marketingUrl、promotionalText
字段:name、subtitle、privacyPolicyUrl、privacyChoicesUrl、privacyPolicyText
# 查找应用 ID
asc apps list --output table
# 查找最新版本 ID
asc versions list --app "APP_ID" --state READY_FOR_DISTRIBUTION --output table
# 或者查找可编辑版本:
asc versions list --app "APP_ID" --state PREPARE_FOR_SUBMISSION --output table
# 查找应用信息 ID(用于名称/副标题等应用级别字段)
asc apps info list --app "APP_ID" --output table
注意事项:
--type app-info。asc-id-resolver。# 将版本本地化下载到本地 .strings 文件
# (description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl, ...)
asc localizations download --version "VERSION_ID" --path "./localizations"
# 将应用信息本地化下载到本地 .strings 文件
# (name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText, ...)
asc localizations download --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
这将创建类似 ./localizations/en-US.strings 和 ./app-info-localizations/en-US.strings 的文件。如果无法下载,请单独读取字段:
# 列出版本本地化以查看现有语言环境及其内容
asc localizations list --version "VERSION_ID" --output table
针对每个目标语言环境,翻译源文本。遵循以下规则:
对于每个目标语言环境,使用以下方法:
Translate the following App Store metadata from {source_locale} to {target_locale}.
Rules:
- description: Natural, fluent translation. Preserve formatting (line breaks, bullets, emoji). Max 4000 chars.
- keywords: Do NOT literally translate. Choose keywords native speakers would search for in the App Store. Comma-separated, max 100 chars total. Do not include the app name.
- whatsNew: Translate release notes naturally. Max 4000 chars.
- promotionalText: Translate marketing tagline. Max 170 chars.
- subtitle: Adapt tagline creatively to fit 30 chars max.
- name: Keep the original app name unless explicitly requested to translate it. Max 30 chars.
- Use formal, polite language and formal "you" forms (Russian: вы, German: Sie, French: vous, Spanish: usted, Dutch: u, etc.). App Store copy is professional marketing — never use informal register.
- Respect cultural context. A playful tone in English may need adjustment for formal markets (e.g., ja, de-DE).
Source ({source_locale}):
description: """
{description}
"""
keywords: {keywords}
whatsNew: """
{whatsNew}
"""
promotionalText: {promotionalText}
name: {name}
subtitle: {subtitle}
在相应目录中为每个语言环境创建一个 .strings 文件。
版本本地化示例:
// nl-NL.strings
"description" = "Je app-beschrijving hier";
"keywords" = "wiskunde,kinderen,tafels,leren";
"whatsNew" = "Bugfixes en verbeteringen";
"promotionalText" = "Leer de tafels van vermenigvuldiging!";
然后上传版本本地化:
asc localizations upload --version "VERSION_ID" --path "./localizations"
应用信息本地化示例:
// nl-NL.strings
"subtitle" = "Leer tafels spelenderwijs";
然后上传应用信息本地化:
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
# 版本本地化字段(精细控制)。
# 为了确定性,优先传递明确的版本 ID。
asc apps info edit --app "APP_ID" --version-id "VERSION_ID" --locale "nl-NL" \
--description "Je beschrijving..." \
--keywords "wiskunde,kinderen,tafels" \
--whats-new "Bugfixes en verbeteringen"
对于应用级别字段:
# 副标题/名称(应用信息本地化)通过应用信息本地化管理。
# 使用应用信息本地化 .strings 文件 + 上传流程(没有 `asc app-infos localizations ...` 命令)。
#
# 1) 编辑:./app-info-localizations/nl-NL.strings
# "subtitle" = "Leer tafels spelenderwijs";
#
# 2) 上传:
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
# 检查所有语言环境是否都存在
asc localizations list --version "VERSION_ID" --output table
# 检查应用信息本地化
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --output table
| 字段 | 限制 |
|---|---|
| Name | 30 |
| Subtitle | 30 |
| Keywords | 100(逗号分隔) |
| Description | 4000 |
| What's New | 4000 |
| Promotional Text | 170 |
始终验证翻译后的文本在上传前符合限制。截断的文本看起来不专业。如果翻译超出限制,请缩短它——不要截断句子中间。
# 1) 确定性解析 ID(不要自动选择“第一”行)
# 如果只有名称,请使用 asc-id-resolver 技能。
asc apps list --output table
APP_ID="APP_ID_HERE"
asc versions list --app "$APP_ID" --state PREPARE_FOR_SUBMISSION --output table
VERSION_ID="VERSION_ID_HERE"
asc apps info list --app "$APP_ID" --output table
APP_INFO_ID="APP_INFO_ID_HERE"
# 2) 下载英文源(或你选择的源语言环境)
asc localizations download --version "$VERSION_ID" --path "./localizations"
asc localizations download --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"
# 3) 读取 en-US.strings,翻译为 nl-NL 和 ru(LLM 步骤)
# 4) 将 nl-NL.strings 和 ru.strings 写入:
# - ./localizations/ (版本本地化字段)
# - ./app-info-localizations/ (副标题/名称/隐私字段)
# 5) 全部上传
asc localizations upload --version "$VERSION_ID" --path "./localizations"
asc localizations upload --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"
# 6) 验证
asc localizations list --version "$VERSION_ID" --output table
asc localizations list --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --output table
--version "VERSION_ID" 下;副标题/名称/隐私字段位于 --app ... --type app-info 下。head -1 选择 ID;使用 --output table 进行选择或使用 asc-id-resolver。promotionalText 可以随时更新,无需提交新版本。whatsNew 仅与更新相关,不适用于第一个版本。asc-id-resolver 技能。asc-metadata-sync 技能。asc-subscription-localization 技能。每周安装量
931
仓库
GitHub 星标
598
首次出现
2026年2月19日
安全审计
安装于
codex913
opencode906
gemini-cli905
github-copilot897
kimi-cli891
amp891
Use this skill to pull English (or any source locale) App Store metadata, translate it with LLM, and push translations back to App Store Connect — all automated.
--help for the exact asc version:
asc localizations --helpasc localizations download --helpasc localizations upload --helpasc apps info edit --help--app, --version, --version-id, --type, --app-info).--output table only for human verification steps.head -1 unless the user explicitly agrees.asc auth login or ASC_* env vars)asc apps list to find it)App Store Connect locales for version and app-info localizations:
ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US,
es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it,
ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk,
sv, th, tr, uk, vi, zh-Hans, zh-Hant
Fields: description, keywords, whatsNew, supportUrl, marketingUrl, promotionalText
Fields: name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText
# Find app ID
asc apps list --output table
# Find latest version ID
asc versions list --app "APP_ID" --state READY_FOR_DISTRIBUTION --output table
# or for editable version:
asc versions list --app "APP_ID" --state PREPARE_FOR_SUBMISSION --output table
# Find app info ID (for app-level fields like name/subtitle)
asc apps info list --app "APP_ID" --output table
Notes:
--type app-info.asc-id-resolver.# Download version localizations to local .strings files
# (description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl, ...)
asc localizations download --version "VERSION_ID" --path "./localizations"
# Download app-info localizations to local .strings files
# (name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText, ...)
asc localizations download --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
This creates files like ./localizations/en-US.strings and ./app-info-localizations/en-US.strings. If download is unavailable, read fields individually:
# List version localizations to see existing locales and their content
asc localizations list --version "VERSION_ID" --output table
For each target locale, translate the source text. Follow these rules:
For each target locale, use this approach:
Translate the following App Store metadata from {source_locale} to {target_locale}.
Rules:
- description: Natural, fluent translation. Preserve formatting (line breaks, bullets, emoji). Max 4000 chars.
- keywords: Do NOT literally translate. Choose keywords native speakers would search for in the App Store. Comma-separated, max 100 chars total. Do not include the app name.
- whatsNew: Translate release notes naturally. Max 4000 chars.
- promotionalText: Translate marketing tagline. Max 170 chars.
- subtitle: Adapt tagline creatively to fit 30 chars max.
- name: Keep the original app name unless explicitly requested to translate it. Max 30 chars.
- Use formal, polite language and formal "you" forms (Russian: вы, German: Sie, French: vous, Spanish: usted, Dutch: u, etc.). App Store copy is professional marketing — never use informal register.
- Respect cultural context. A playful tone in English may need adjustment for formal markets (e.g., ja, de-DE).
Source ({source_locale}):
description: """
{description}
"""
keywords: {keywords}
whatsNew: """
{whatsNew}
"""
promotionalText: {promotionalText}
name: {name}
subtitle: {subtitle}
Create a .strings file per locale in the appropriate directory.
Version localization example:
// nl-NL.strings
"description" = "Je app-beschrijving hier";
"keywords" = "wiskunde,kinderen,tafels,leren";
"whatsNew" = "Bugfixes en verbeteringen";
"promotionalText" = "Leer de tafels van vermenigvuldiging!";
Then upload version localizations:
asc localizations upload --version "VERSION_ID" --path "./localizations"
App-info localization example:
// nl-NL.strings
"subtitle" = "Leer tafels spelenderwijs";
Then upload app-info localizations:
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
# Version localization fields (fine control).
# Prefer passing the explicit version ID for determinism.
asc apps info edit --app "APP_ID" --version-id "VERSION_ID" --locale "nl-NL" \
--description "Je beschrijving..." \
--keywords "wiskunde,kinderen,tafels" \
--whats-new "Bugfixes en verbeteringen"
For app-level fields:
# Subtitle/name (app-info localization) is managed via app-info localizations.
# Use the app-info localization .strings + upload flow (there is no `asc app-infos localizations ...` command).
#
# 1) Edit: ./app-info-localizations/nl-NL.strings
# "subtitle" = "Leer tafels spelenderwijs";
#
# 2) Upload:
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
# Check all locales are present
asc localizations list --version "VERSION_ID" --output table
# Check app info localizations
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --output table
| Field | Limit |
|---|---|
| Name | 30 |
| Subtitle | 30 |
| Keywords | 100 (comma-separated) |
| Description | 4000 |
| What's New | 4000 |
| Promotional Text | 170 |
Always validate translated text fits within limits before uploading. Truncated text looks unprofessional. If translation exceeds the limit, shorten it — do not truncate mid-sentence.
# 1) Resolve IDs deterministically (do not auto-pick the "first" row)
# If you only have names, use asc-id-resolver skill.
asc apps list --output table
APP_ID="APP_ID_HERE"
asc versions list --app "$APP_ID" --state PREPARE_FOR_SUBMISSION --output table
VERSION_ID="VERSION_ID_HERE"
asc apps info list --app "$APP_ID" --output table
APP_INFO_ID="APP_INFO_ID_HERE"
# 2) Download English source (or your chosen source locale)
asc localizations download --version "$VERSION_ID" --path "./localizations"
asc localizations download --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"
# 3) Read en-US.strings, translate to nl-NL and ru (LLM step)
# 4) Write nl-NL.strings and ru.strings to:
# - ./localizations/ (version localization fields)
# - ./app-info-localizations/ (subtitle/name/privacy fields)
# 5) Upload all
asc localizations upload --version "$VERSION_ID" --path "./localizations"
asc localizations upload --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"
# 6) Verify
asc localizations list --version "$VERSION_ID" --output table
asc localizations list --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --output table
--version "VERSION_ID"; subtitle/name/privacy live under --app ... --type app-info.head -1 unless explicitly requested; use --output table for selection or asc-id-resolver.promotionalText can be updated anytime without a new version submission.whatsNew is only relevant for updates, not the first version.asc-id-resolver skill if you only have app/version names instead of IDs.asc-metadata-sync skill for non-translation metadata operations.asc-subscription-localization skill instead.Weekly Installs
931
Repository
GitHub Stars
598
First Seen
Feb 19, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex913
opencode906
gemini-cli905
github-copilot897
kimi-cli891
amp891
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
102,200 周安装
Gemini Interactions API 指南:统一接口、智能体交互与服务器端状态管理
833 周安装
Apollo MCP 服务器:让AI代理通过GraphQL API交互的完整指南
834 周安装
智能体记忆系统构建指南:分块策略、向量存储与检索优化
835 周安装
Scrapling官方网络爬虫框架 - 自适应解析、绕过Cloudflare、Python爬虫库
836 周安装
抽奖赢家选取器 - 随机选择工具,支持CSV、Excel、Google Sheets,公平透明
838 周安装
Medusa 前端开发指南:使用 SDK、React Query 构建电商商店
839 周安装