asc-aso-audit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseasc ASO audit
asc ASO 审核
Run a two-phase ASO audit: offline checks against local metadata files, then keyword gap analysis via Astro MCP.
执行两阶段ASO审核:针对本地元数据文件的离线检查,以及通过Astro MCP进行的关键词缺口分析。
Preconditions
前置条件
- Metadata pulled locally via or
asc migrate export.asc localizations download - For Astro gap analysis: app tracked in Astro MCP (optional — offline checks run without it).
- 已通过或
asc migrate export将元数据拉取到本地。asc localizations download - 若要进行Astro缺口分析:需在Astro MCP中跟踪该应用(可选——无此条件时仍可运行离线检查)。
Before You Start
开始前准备
- Read to understand the rules each check enforces.
references/aso_rules.md - Identify the latest version directory under (highest semantic version number). Use this for all version-level fields.
metadata/version/ - The primary locale is unless the user specifies otherwise.
en-US
- 阅读,了解每项检查所遵循的规则。
references/aso_rules.md - 找到下的最新版本目录(语义化版本号最高的目录),所有版本级字段均使用该目录下的内容。
metadata/version/ - 除非用户另行指定,否则主区域设置为。
en-US
Metadata File Paths
元数据文件路径
- App-info fields ():
subtitlemetadata/app-info/{locale}.json - Version fields (,
keywords,description):whatsNewmetadata/version/{latest-version}/{locale}.json - App name: May not be present in exported metadata. If is missing from the app-info JSON, fetch it via
nameor ask the user. Do not flag it as a missing-field error.asc app-infos list
- 应用信息字段():
subtitlemetadata/app-info/{locale}.json - 版本字段(、
keywords、description):whatsNewmetadata/version/{latest-version}/{locale}.json - 应用名称:导出的元数据中可能不包含该字段。若应用信息JSON中缺少键,可通过
name获取或询问用户,不要将其标记为字段缺失错误。asc app-infos list
Phase 1: Offline Checks
第一阶段:离线检查
Run these 5 checks against the local metadata directory. No network calls required.
针对本地元数据目录运行以下5项检查,无需网络调用。
1. Keyword Waste
1. 关键词浪费
Tokenize the field (and if available). Flag any token that also appears in the field — it is already indexed and wastes keyword budget.
subtitlenamekeywordsSeverity: ⚠️ Warning
Example: "quran" appears in subtitle AND keywords — remove from keywords to free 6 charactersHow to check:
- Read for
metadata/app-info/{locale}.json(andsubtitleif present)name - Read for
metadata/version/{latest-version}/{locale}.jsonkeywords - Tokenize subtitle (+ name):
- Latin/Cyrillic scripts: split by whitespace, strip leading/trailing punctuation, lowercase
- Chinese/Japanese/Korean: split by
、,or iterate characters — each character or character-group is a token. Whitespace tokenization does not work for CJK., - Arabic: split by whitespace, then also generate prefix-stripped variants (remove ال prefix) since Apple likely normalizes definite articles. For example, "القرآن" in subtitle should flag both "القرآن" and "قرآن" in keywords.
- Split keywords by comma, trim whitespace, lowercase
- Report intersection (including fuzzy matches from prefix stripping)
对字段(若有则包含该字段)进行分词。标记同时出现在字段中的任何词元——该词元已被索引,会浪费关键词配额。
subtitlenamekeywords严重程度:⚠️ 警告
示例:"quran"同时出现在副标题和关键词中——从关键词中移除可节省6个字符检查方式:
- 读取中的
metadata/app-info/{locale}.json(若存在则包含subtitle)name - 读取中的
metadata/version/{latest-version}/{locale}.jsonkeywords - 对副标题(+名称)进行分词:
- 拉丁语/西里尔语系:按空格拆分,去除首尾标点,转为小写
- 中文/日文/韩文:按
、,拆分,或逐个遍历字符——每个字符或字符组为一个词元。空格分词不适用于CJK语言。, - 阿拉伯语:按空格拆分,同时生成去除前缀的变体(移除ال前缀),因为苹果可能会对定冠词进行标准化处理。例如,副标题中的"القرآن"应标记关键词中的"القرآن"和"قرآن"。
- 按逗号拆分关键词,去除空格,转为小写
- 报告交集(包括前缀去除后的模糊匹配)
2. Underutilized Fields
2. 字段利用率不足
Flag fields using less than their recommended minimum:
| Field | Minimum | Limit | Rationale |
|---|---|---|---|
| Keywords | 90 chars | 100 | 90%+ usage maximizes indexing |
| Subtitle | 20 chars | 30 | 65%+ usage recommended |
Severity: ⚠️ Warning
Example: keywords is 62/100 characters (62%) — 38 characters of indexing opportunity unused标记使用量低于建议最小值的字段:
| 字段 | 最小值 | 上限 | 理由 |
|---|---|---|---|
| 关键词 | 90字符 | 100 | 使用率达90%+可最大化索引效果 |
| 副标题 | 20字符 | 30 | 建议使用率达65%+ |
严重程度:⚠️ 警告
示例:关键词使用了62/100字符(62%)——有38个字符的索引机会未被利用3. Missing Fields
3. 字段缺失
Flag empty or missing required fields: , , , .
subtitlekeywordsdescriptionwhatsNewNote: may not be in the export — only flag it if the app-info JSON explicitly contains a key with an empty value.
namenameSeverity: ❌ Error
Example: subtitle is empty for locale en-US标记为空或缺失的必填字段:、、、。
subtitlekeywordsdescriptionwhatsNew注意:导出内容中可能没有——仅当应用信息JSON中明确包含键且值为空时,才标记该字段。
namename严重程度:❌ 错误
示例:区域设置en-US的副标题为空4. Bad Keyword Separators
4. 关键词分隔符错误
Check the field for formatting issues:
keywords- Spaces after commas ()
quran, recitation - Semicolons instead of commas ()
quran;recitation - Pipes instead of commas ()
quran|recitation
Severity: ❌ Error
Example: keywords contain spaces after commas — wastes 3 characters检查字段的格式问题:
keywords- 逗号后带空格(如)
quran, recitation - 使用分号代替逗号(如)
quran;recitation - 使用竖线代替逗号(如)
quran|recitation
严重程度:❌ 错误
示例:关键词中逗号后带空格——浪费3个字符5. Cross-Locale Keyword Gaps
5. 跨区域设置关键词缺口
Compare fields across all available locales. Flag locales where keywords are identical to the primary locale ( by default) — this usually means they were not localized.
keywordsen-USSeverity: ⚠️ Warning
Example: ar keywords identical to en-US — likely not localized for Arabic marketHow to check:
- Load keywords for all locales
- Compare each non-primary locale against the primary
- Flag exact matches (case-insensitive)
比较所有可用区域设置的字段。标记与主区域设置(默认)关键词完全相同的区域设置——这通常意味着未进行本地化。
keywordsen-US严重程度:⚠️ 警告
示例:ar区域设置的关键词与en-US完全相同——可能未针对阿拉伯语市场本地化检查方式:
- 加载所有区域设置的关键词
- 将每个非主区域设置与主区域设置进行比较
- 标记完全匹配的项(不区分大小写)
6. Description Keyword Coverage
6. 描述关键词覆盖情况
Check whether keywords appear naturally in the field. While Apple does not index descriptions for search, users who see their search terms reflected in the description are more likely to download — this improves conversion rate, which indirectly boosts rankings.
descriptionSeverity: 💡 Info
Example: 3 of 16 keywords not found in description: namaz, tarteel, adhanHow to check:
- Load and
keywordsfor each localedescription - For each keyword, check if it appears as a substring in the description (case-insensitive)
- Account for inflected forms: Arabic root matches, verb conjugations (e.g., "memorizar" ≈ "memorices"), and case declensions (e.g., Russian "сура" ≈ "суры")
- Report missing keywords per locale — recommend weaving them naturally into existing sentences
- Do NOT flag: Latin-script keywords in non-Latin descriptions (e.g., "quran" in Cyrillic text) — these target separate search paths
检查关键词是否自然出现在字段中。虽然苹果不会将描述用于搜索索引,但用户看到搜索词出现在描述中时,下载意愿会更高——这会提升转化率,进而间接提高排名。
description严重程度:💡 信息
示例:16个关键词中有3个未在描述中找到:namaz, tarteel, adhan检查方式:
- 加载每个区域设置的和
keywordsdescription - 对每个关键词,检查其是否作为子字符串出现在描述中(不区分大小写)
- 考虑词形变化:阿拉伯语词根匹配、动词变位(如"memorizar"≈"memorices")、变格(如俄语"сура"≈"суры")
- 报告各区域设置中缺失的关键词——建议将其自然融入现有句子
- 无需标记:非拉丁语描述中的拉丁语关键词(如西里尔语文本中的"quran")——这些针对的是不同的搜索路径
Phase 2: Astro MCP Keyword Gap Analysis
第二阶段:Astro MCP关键词缺口分析
If Astro MCP is available and the app is tracked, run keyword gap analysis. Run this per store/locale, not just for the US store — keyword popularity varies dramatically across markets.
若已连接Astro MCP且应用已被跟踪,则运行关键词缺口分析。需针对每个商店/区域设置运行,而非仅针对美国商店——不同市场的关键词热度差异极大。
Steps
步骤
-
Get current keywords: Callwith the app ID to retrieve tracked keywords and their current rankings.
get_app_keywords -
Ensure multi-store tracking: For each locale with a corresponding App Store territory (e.g.,→ Saudi Arabia,
ar-SA→ France,fr-FR→ Turkey), usetrto add keyword tracking in that store. Without this,add_keywordsreturns empty for non-US stores.search_rankings -
Extract competitor keywords: Callwith 3-5 top competitor app IDs to find keyword gaps. This is the highest-value Astro tool — it reveals keywords competitors rank for that you don't. Run this per store when possible.
extract_competitors_keywords -
Get suggestions: Callwith the app ID for additional recommendations based on category analysis.
get_keyword_suggestions -
Check current rankings: Callto see where the app currently ranks for tracked keywords in each store.
search_rankings -
Diff against metadata: Compare suggested and competitor keywords against the tokens present in,
subtitle(if available), andnamefields from the local metadata.keywords -
Surface gaps: Report all gaps ranked by popularity score (highest first). Include the source (competitor analysis vs. suggestion).
-
获取当前关键词:调用并传入应用ID,获取已跟踪的关键词及其当前排名。
get_app_keywords -
确保多商店跟踪:对于每个对应App Store地区的区域设置(如→沙特阿拉伯,
ar-SA→法国,fr-FR→土耳其),使用tr在该商店中添加关键词跟踪。若未执行此操作,非美国商店的add_keywords将返回空值。search_rankings -
提取竞品关键词:调用并传入3-5个头部竞品应用ID,找出关键词缺口。这是Astro最有价值的工具——它能揭示竞品排名但我方未布局的关键词。尽可能针对每个商店运行此操作。
extract_competitors_keywords -
获取建议关键词:调用并传入应用ID,基于品类分析获取额外推荐。
get_keyword_suggestions -
检查当前排名:调用查看应用在各商店中已跟踪关键词的当前排名。
search_rankings -
与元数据对比:将推荐关键词和竞品关键词与本地元数据中、
subtitle(若有)和name字段中的词元进行对比。keywords -
展示缺口:按热度得分从高到低报告所有缺口,同时标注来源(竞品分析或系统推荐)。
Cross-Field Combo Strategy
跨字段组合策略
When recommending keyword additions, consider how single words combine across indexed fields (title + subtitle + keywords). For example:
- Adding "namaz" to keywords when "vakti" is already present enables matching the search "namaz vakti" (66 popularity)
- Adding "holy" to keywords when "Quran" is in the subtitle enables matching "holy quran" (58 popularity)
Flag high-value combos in recommendations.
推荐添加关键词时,需考虑单个词在已索引字段(标题+副标题+关键词)中的组合效果。例如:
- 当"vakti"已存在时,在关键词中添加"namaz"可匹配搜索词"namaz vakti"(热度72)
- 当副标题中已有"Quran"时,在关键词中添加"holy"可匹配搜索词"holy quran"(热度58)
在推荐中标记高价值的组合。
Skip Conditions
跳过条件
- Astro MCP not connected → skip with note: "Connect Astro MCP for keyword gap analysis"
- App not tracked in Astro → skip with note: "Add app to Astro with for gap analysis"
mcp__astro__add_app - Store not tracked for a locale → add tracking with before querying
add_keywords
- 未连接Astro MCP → 跳过并提示:"连接Astro MCP以进行关键词缺口分析"
- 应用未在Astro中被跟踪 → 跳过并提示:"使用将应用添加到Astro以进行缺口分析"
mcp__astro__add_app - 区域设置对应的商店未被跟踪 → 在查询前使用添加跟踪
add_keywords
Output Format
输出格式
Present results as a single audit report. The report covers only the latest version directory.
undefined将结果整理为一份审核报告,报告仅覆盖最新版本目录。
undefinedASO Audit Report
ASO审核报告
App: [name] | Primary Locale: [locale]
Metadata source: [path including version number]
应用: [名称] | 主区域设置: [区域设置]
元数据来源: [包含版本号的路径]
Field Utilization
字段利用率
| Field | Value | Length | Limit | Usage |
|---|---|---|---|---|
| Name | ... | X | 30 | X% |
| Subtitle | ... | X | 30 | X% |
| Keywords | ... | X | 100 | X% |
| Promotional Text | ... | X | 170 | X% |
| Description | (first 50 chars)... | X | 4000 | X% |
| 字段 | 内容 | 长度 | 上限 | 使用率 |
|---|---|---|---|---|
| 名称 | ... | X | 30 | X% |
| 副标题 | ... | X | 30 | X% |
| 关键词 | ... | X | 100 | X% |
| 推广文本 | ... | X | 170 | X% |
| 描述 | (前50个字符)... | X | 4000 | X% |
Offline Checks
离线检查结果
| # | Check | Severity | Field | Locale | Detail |
|---|---|---|---|---|---|
| 1 | Keyword waste | ⚠️ | keywords | en-US | "quran" duplicated in subtitle |
Summary: X errors, Y warnings across Z locales
| 序号 | 检查项 | 严重程度 | 字段 | 区域设置 | 详情 |
|---|---|---|---|---|---|
| 1 | 关键词浪费 | ⚠️ | keywords | en-US | "quran"在副标题中重复出现 |
摘要: 共X个错误,Y个警告,涉及Z个区域设置
Keyword Gap Analysis (Astro MCP)
关键词缺口分析(Astro MCP)
| Keyword | Popularity | In Metadata? | Suggested Action |
|---|---|---|---|
| quran recitation | 72 | ❌ | Add to keywords |
| 关键词 | 热度 | 是否在元数据中? | 建议操作 |
|---|---|---|---|
| quran recitation | 72 | ❌ | 添加到关键词 |
Recommendations
推荐方案
- [Highest priority action — errors first]
- [Next priority — keyword waste]
- [Utilization improvements]
- [Keyword gap opportunities]
undefined- [最高优先级操作——优先处理错误]
- [次优先级——解决关键词浪费问题]
- [提升字段利用率]
- [抓住关键词缺口机会]
undefinedNotes
注意事项
- Offline checks work without any network access — they read local files only.
- Astro gap analysis is additive — the audit is useful even without it.
- Run this skill after or
asc migrate exportto ensure metadata is current.asc localizations download - After making changes, re-run the audit to verify fixes.
- The Field Utilization table includes promotional text for completeness, but no check validates its content (it is not indexed by Apple).
- 离线检查无需任何网络访问——仅读取本地文件。
- Astro缺口分析是附加功能——即使没有该功能,审核仍然有价值。
- 需在或
asc migrate export之后运行此工具,以确保元数据是最新的。asc localizations download - 修改后,重新运行审核以验证修复效果。
- 字段利用率表格包含推广文本仅为完整起见,并无检查项验证其内容(苹果不会对其进行索引)。 ",