#ASO Data Sync Tools
Tools for syncing App Store Optimization (ASO) data between local cache and stores.
#aso-pull
Fetch ASO data from App Store/Google Play and save to local cache.
#Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
app | string | Conditional | - | Registered app slug |
bundleId | string | Conditional | - | App Store bundle ID |
packageName | string | Conditional | - | Google Play package name |
store | "appStore" | "googlePlay" | "both" | No | "both" | Target store |
dryRun | boolean | No | false | If true, only outputs result without saving |
Note: Provide either
app(recommended) orbundleId/packageNamedirectly.
#Usage Examples
// Pull from both stores using registered app
{ "app": "myapp" }
// Pull from App Store only
{ "app": "myapp", "store": "appStore" }
// Pull using direct identifiers
{ "bundleId": "com.example.app", "packageName": "com.example.app" }
// Dry run to preview data
{ "app": "myapp", "dryRun": true }
#What Gets Pulled
App Store:
- App name, subtitle, description
- Keywords, promotional text
- Screenshots (iPhone 6.5", iPhone 6.1", iPad Pro 12.9")
- All supported locales
Google Play:
- Title, short description, full description
- Screenshots (phone, tablet)
- Feature graphic
- All supported languages
#Data Storage
Data is saved to the dataDir specified in your config:
{dataDir}/.aso/pull/{slug}/
βββ app-store/
β βββ data.json
β βββ screenshots/{locale}/
β βββ iphone65-1.png
β βββ iphone65-2.png
β βββ ...
βββ google-play/
βββ data.json
βββ screenshots/{language}/
βββ phone-1.png
βββ phone-2.png
βββ feature-graphic.png
#Response
β
ASO data pulled
Google Play: β
App Store: β
#aso-push
Push ASO data from local cache to App Store/Google Play.
#Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
app | string | Conditional | - | Registered app slug |
bundleId | string | Conditional | - | App Store bundle ID |
packageName | string | Conditional | - | Google Play package name |
store | "appStore" | "googlePlay" | "both" | No | "both" | Target store |
uploadImages | boolean | No | false | Whether to upload images |
dryRun | boolean | No | false | If true, only outputs result without pushing |
#Usage Examples
// Push to both stores
{ "app": "myapp" }
// Push to Google Play only
{ "app": "myapp", "store": "googlePlay" }
// Push with images
{ "app": "myapp", "uploadImages": true }
// Dry run to preview
{ "app": "myapp", "dryRun": true }
#Data Source
Data is read from the push directory:
{dataDir}/.aso/push/{slug}/
βββ app-store/
β βββ data.json
βββ google-play/
βββ data.json
#Response
π€ ASO Push Results:
β
Google Play: Updated 3 locales (en-US, ko, ja)
β
App Store: Updated 3 locales (en-US, ko, ja)
Errors:
π€ ASO Push Results:
β Google Play: Push failed: Permission denied
βοΈ Skipping App Store (not registered for App Store)
#Data Format
#App Store Data (data.json)
{
"defaultLocale": "en-US",
"locales": {
"en-US": {
"name": "My App",
"subtitle": "Your productivity companion",
"description": "Full app description...",
"keywords": "productivity,task,todo",
"promotionalText": "Now with new features!",
"screenshots": {
"iphone65": ["url1", "url2"],
"iphone61": ["url1", "url2"],
"ipadPro129": ["url1"]
}
},
"ko": {
"name": "λ§μ΄ μ±",
"subtitle": "μμ°μ± λμ°λ―Έ",
"description": "μ 체 μ± μ€λͺ
...",
"keywords": "μμ°μ±,μμ
,ν μΌ",
"promotionalText": "μλ‘μ΄ κΈ°λ₯ μΆκ°!",
"screenshots": {
"iphone65": ["url1", "url2"]
}
}
}
}
#Google Play Data (data.json)
{
"defaultLocale": "en-US",
"locales": {
"en-US": {
"title": "My App",
"shortDescription": "Your productivity companion",
"fullDescription": "Full app description...",
"screenshots": {
"phone": ["url1", "url2"],
"tablet": ["url1"]
},
"featureGraphic": "feature-url"
},
"ko": {
"title": "λ§μ΄ μ±",
"shortDescription": "μμ°μ± λμ°λ―Έ",
"fullDescription": "μ 체 μ± μ€λͺ
...",
"screenshots": {
"phone": ["url1", "url2"]
}
}
}
}
#Workflow Example
-
Pull current data:
{ "app": "myapp" } -
Edit data locally in
{dataDir}/.aso/push/{slug}/ -
Preview changes:
{ "app": "myapp", "dryRun": true } -
Push updates:
{ "app": "myapp" }
#See Also
- apps-add - Register apps before using ASO tools
- release-update-notes - Update release notes separately