asc-metadata-sync
Scannednpx machina-cli add skill rudrankriyam/app-store-connect-cli-skills/asc-metadata-sync --openclawasc metadata sync
Use this skill to keep local metadata in sync with App Store Connect.
Two Types of Localizations
1. Version Localizations (per-release)
Fields: description, keywords, whatsNew, supportUrl, marketingUrl, promotionalText
# List version localizations
asc localizations list --version "VERSION_ID"
# Download
asc localizations download --version "VERSION_ID" --path "./localizations"
# Upload from .strings files
asc localizations upload --version "VERSION_ID" --path "./localizations"
2. App Info Localizations (app-level)
Fields: name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText
# First, find the app info ID
asc app-infos list --app "APP_ID"
# List app info localizations
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID"
# Upload app info localizations
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
Note: If you get "multiple app infos found", you must specify --app-info with the correct ID.
Legacy Metadata Format Workflow
Export current state
asc migrate export --app "APP_ID" --output "./metadata"
Validate local files
# Use --help to discover flags for your metadata directory
asc migrate validate --help
This checks character limits and required fields.
Import updates
# Use --help to discover flags for your metadata directory
asc migrate import --help
Quick Field Updates
Version-specific fields
# What's New
asc app-info set --app "APP_ID" --locale "en-US" --whats-new "Bug fixes and improvements"
# Description
asc app-info set --app "APP_ID" --locale "en-US" --description "Your app description here"
# Keywords
asc app-info set --app "APP_ID" --locale "en-US" --keywords "keyword1,keyword2,keyword3"
# Support URL
asc app-info set --app "APP_ID" --locale "en-US" --support-url "https://support.example.com"
Version metadata
# Copyright
asc versions update --version-id "VERSION_ID" --copyright "2026 Your Company"
# Release type
asc versions update --version-id "VERSION_ID" --release-type AFTER_APPROVAL
TestFlight notes
asc build-localizations create --build "BUILD_ID" --locale "en-US" --whats-new "TestFlight notes here"
.strings File Format
For bulk updates, use .strings files:
// en-US.strings
"description" = "Your app description";
"keywords" = "keyword1,keyword2,keyword3";
"whatsNew" = "What's new in this version";
"supportUrl" = "https://support.example.com";
For app-info type:
// en-US.strings (app-info type)
"privacyPolicyUrl" = "https://example.com/privacy";
"name" = "Your App Name";
"subtitle" = "Your subtitle";
Multi-Language Workflow
- Export all localizations:
asc localizations download --version "VERSION_ID" --path "./localizations"
-
Translate the .strings files (or use translation service)
-
Upload all at once:
asc localizations upload --version "VERSION_ID" --path "./localizations"
- Verify:
asc localizations list --version "VERSION_ID" --output table
Character Limits
| Field | Limit |
|---|---|
| Name | 30 |
| Subtitle | 30 |
| Keywords | 100 (comma-separated) |
| Description | 4000 |
| What's New | 4000 |
| Promotional Text | 170 |
Use asc migrate validate to check limits before upload.
Notes
- Version localizations and app info localizations are different; use the right command and
--typeflag. asc migrate validateenforces character limits before upload.- Use
asc localizations listto confirm available locales and IDs. - Privacy Policy URL is in app info localizations, not version localizations.
Source
git clone https://github.com/rudrankriyam/app-store-connect-cli-skills/blob/main/skills/asc-metadata-sync/SKILL.mdView on GitHub Overview
asc-metadata-sync keeps local App Store metadata in sync with App Store Connect. It handles both version localizations (per-release) and app-info localizations, and supports migrating legacy metadata format during updates or translations.
How This Skill Works
The skill uses the ASC CLI to list, download, and upload localizations for version and app-info. For legacy formats, you export the current state, run validation to check limits and required fields, then import updates via asc migrate.
When to Use It
- When updating per-release metadata (description, keywords, whatsNew, etc.).
- When updating app-info localizations (name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText).
- When migrating from the legacy metadata format to the new structure.
- During a multi-language localization workflow (export all localizations, translate, and re-upload).
- Before uploading, validate character limits and required fields with asc migrate validate.
Quick Start
- Step 1: Identify target IDs with asc app-infos list --app APP_ID or asc localizations list --version VERSION_ID.
- Step 2: Download or edit localizations using asc localizations download --version VERSION_ID --path ./localizations or edit app-info localizations and upload with the appropriate commands.
- Step 3: If migrating legacy metadata, run asc migrate export --app APP_ID --output ./metadata, then asc migrate validate, and asc migrate import --path ./metadata.
Best Practices
- Identify the correct target: version for per-release localizations or app-info for app-level localizations.
- Use the right commands with --version or --app/--type --app-info to avoid mixing localizations.
- Validate character limits and required fields with asc migrate validate before importing.
- Use .strings files for bulk updates and keep translations organized per locale.
- Verify IDs and locales with asc localizations list before making changes.
Example Use Cases
- Export version localizations, translate the files, and upload them for a new release.
- Migrate legacy metadata: export current state, run validation, then import updates.
- Update app-info localization by changing the app name and privacy policy URL for en-US.
- Download all localizations, perform translations offline, then upload in a single batch.
- Run a final verification with asc localizations list to confirm published localizations.