asc-localize-metadata

asc-localize-metadata

熱門

結合 LLM 翻譯與 asc CLI,自動將 App Store 元數據(包含 App 描述、關鍵字、新功能更新、副標題等)翻譯並同步至多種語言。當需要本地化 App 的 App Store 頁面、翻譯 App 描述,或是為 App Store Connect 新增語言版本時,請使用此 Skill。

950星標
50分支
更新於 2026/8/5
SKILL.md
唯讀
名稱
asc-localize-metadata
描述

結合 LLM 翻譯與 asc CLI,自動將 App Store 元數據(包含 App 描述、關鍵字、新功能更新、副標題等)翻譯並同步至多種語言。當需要本地化 App 的 App Store 頁面、翻譯 App 描述,或是為 App Store Connect 新增語言版本時,請使用此 Skill。

asc localize metadata

使用此 Skill 來拉取英文(或任何來源語系)的 App Store 元數據,透過 LLM 進行翻譯,並將翻譯結果自動推送回 App Store Connect — 全流程自動化。

指令探索與輸出規範

  • 務必透過 --help 確認目前使用的 asc 版本支援哪些參數選項(flags):
    • asc localizations --help
    • asc localizations download --help
    • asc localizations upload --help
    • asc apps info edit --help
  • 優先使用明確的完整選項(long flags,如 --app--version--version-id--type--app-info)。
  • 預設輸出格式為 JSON;僅在需要人工核對結果時使用 --output table
  • 優先採用具確定性的 ID 操作。除非使用者明確同意,否則切勿使用 head -1「直接取第一列」。

前置條件

  • 已配置身份驗證(使用 asc auth login 或設定 ASC_* 環境變數)
  • 已知曉 App ID(可執行 asc apps list 查詢)
  • App Store Connect 中至少已有一個語系(通常為 en-US)填寫了元數據

支援的語系

App Store Connect 支援的版本(version)與 App 資訊(app-info)本地化語系如下:

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

兩大類型的元數據

版本本地化(Version Localizations,每次版本更新獨立設定)

欄位:description(描述)、keywords(關鍵字)、whatsNew(新功能)、supportUrl(支援網址)、marketingUrl(行銷網址)、promotionalText(宣傳文字)

App 資訊本地化(App Info Localizations,App 層級,跨版本持續有效)

欄位:name(名稱)、subtitle(副標題)、privacyPolicyUrl(隱私權政策網址)、privacyChoicesUrl(隱私權選擇網址)、privacyPolicyText(隱私權政策內文)

工作流程

步驟 1:取得相關 ID

# 查詢 App 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

# 查詢 App Info ID(用於名稱/副標題等 App 層級欄位)
asc apps info list --app "APP_ID" --output table

注意事項:

  • 版本本地化欄位(description、keywords、whatsNew 等)依各個版本獨立設定。
  • App 資訊欄位(name、subtitle、隱私權網址/文字)屬於 App 層級,需搭配 --type app-info 使用。
  • 若手上只有名稱(App 名稱、版本號字串),且需要精準取得對應 ID,請使用 asc-id-resolver

步驟 2:下載來源語系資料

# 下載版本本地化內容至本地 .strings 檔案
# (description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl, ...)
asc localizations download --version "VERSION_ID" --path "./localizations"

# 下載 App 資訊本地化內容至本地 .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

步驟 3:使用 LLM 進行翻譯

針對每個目標語系翻譯來源內文,請遵循以下原則:

翻譯指南
  • 語氣與尊稱:請務必使用正式、禮貌的用語。若目標語言有尊稱區分,請使用正式的「您」或尊稱形式(例如俄文:«вы»、德文:«Sie»、法文:«vous»、西班牙文:«usted»、荷蘭文:«u»、義大利文:«Lei»、葡萄牙文正式 «você» 等)。App Store 描述屬於專業行銷文案,切勿使用隨意或口語化的表達方式。
  • description:翻譯需自然流暢,並針對當地市場微調語氣。請保留原本的排版格式(換行、列點符號、表情符號等)。字數限制在 4000 字以內。
  • keywords:切勿字面直譯!請研究該語系使用者在 App Store 中實際會搜尋的關鍵字。以逗號分隔,總字數最多 100 字。不可重複,且不需包含 App 名稱(Apple 會自動納入)。
  • whatsNew:翻譯版本更新說明。保持簡明扼要。最多 4000 字。
  • promotionalText:翻譯行銷主打標語。最多 170 字。此欄位無需提交新版本即可隨時更新。
  • subtitle:翻譯或意譯副標標語。最多 30 字 — 上限相當嚴格,可能需要發揮創意重新潤飾。
  • name:通常保留原始 App 名稱。除非使用者明確要求翻譯,否則不需變更。最多 30 字。
LLM 翻譯 Prompt 範本

針對各個目標語系,請使用以下 Prompt 結構:

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}

步驟 4:上傳翻譯結果

方案 A:透過 .strings 檔案(批量上傳)

在對應的目錄中,為每個語系建立一個 .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"

App 資訊本地化範例:

// nl-NL.strings
"subtitle" = "Leer tafels spelenderwijs";

接著上傳 App 資訊本地化檔案:

asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
方案 B:透過單獨指令(精細控制)
# 版本本地化欄位(精細控制)
# 為確保精準度,建議明確指定 Version 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"

針對 App 層級欄位:

# 副標題/名稱(App 資訊本地化)需透過 app-info localizations 進行管理。
# 請使用 app-info 本地化的 .strings + 上傳流程;目前沒有獨立編輯 app-info 本地化的指令。
#
# 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"

步驟 5:驗證成果

# 確認所有語系皆已成功上傳
asc localizations list --version "VERSION_ID" --output table

# 檢查 App 資訊本地化設定
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

上傳前務必確認翻譯後的文字符合字數限制。文字被硬生生截斷會顯得非常不專業。若翻譯超過上限,請精簡文案 — 切勿在句子中途直接裁切。

完整範例:為 Roxy Math 新增 nl-NL 與 ru 語系

# 1) 精準取得各項 ID(請勿自動選取「第一列」)
# 若只有 App 或版本名稱,請使用 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) 下載英文來源資料(或您指定的來源語系)
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,並透過 LLM 翻譯為 nl-NL 與 ru

# 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

Agent 行為規範

  1. 務必先讀取來源語系內容 — 絕不憑記憶或主觀假設進行翻譯。
  2. 先檢查現有的本地化內容 — 除非使用者明確要求更新,否則請勿直接覆蓋現有的翻譯。
  3. 區分「版本本地化」與「App 資訊本地化」 — 版本欄位位於 --version "VERSION_ID" 下;副標題/名稱/隱私權政策等則屬於 --app ... --type app-info
  4. 優先採用精準確定的 ID — 除非使用者明確指示,否則請勿透過 head -1 隨機選擇 ID;建議使用 --output table 進行人工確認或搭配 asc-id-resolver
  5. 在上傳前驗證字數限制。精確計算每個欄位的字數,若超出上限,請重新潤飾為更精簡的版本。
  6. 關鍵字(Keywords)需特別處理 — 切勿字面直譯!請研究適合該語系的搜尋詞彙,站在該語言使用者搜尋 App Store 的角度思考。
  7. 在上傳前先展示翻譯結果供使用者確認 — 提供包含所有「欄位 × 語系」的摘要表格供審核,未經確認切勿直接推送。
  8. 若需翻譯多種語言,建議一次處理一個語系 — 這樣更方便審核並及時發現錯誤。
  9. 若某個語系上傳失敗,請記錄錯誤訊息後繼續處理其他語系,並在最後統一報告所有失敗項目。
  10. 若要更新現有的本地化內容 — 先下載目前版本,顯示變更前後的差異(diff),取得使用者同意後再進行上傳。

注意事項

  • 版本本地化內容會綁定至特定版本。若該版本尚不存在,請先建立版本。
  • promotionalText(宣傳文字)可隨時更新,無需隨新版本一併提交。
  • whatsNew(新功能)僅適用於版本更新,首次上架的 App 不適用。
  • 若手上只有 App 或版本名稱而非 ID,請使用 asc-id-resolver Skill。
  • 如需進行非翻譯類的元數據操作,請使用 asc-metadata-sync Skill。
  • 若要本地化訂閱項目或 App 內購(IAP)的顯示名稱,請改用 asc-subscription-localization Skill。