asc-aso-audit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

asc 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
    asc migrate export
    or
    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

开始前准备

  1. Read
    references/aso_rules.md
    to understand the rules each check enforces.
  2. Identify the latest version directory under
    metadata/version/
    (highest semantic version number). Use this for all version-level fields.
  3. The primary locale is
    en-US
    unless the user specifies otherwise.
  1. 阅读
    references/aso_rules.md
    ,了解每项检查所遵循的规则。
  2. 找到
    metadata/version/
    下的最新版本目录(语义化版本号最高的目录),所有版本级字段均使用该目录下的内容。
  3. 除非用户另行指定,否则主区域设置
    en-US

Metadata File Paths

元数据文件路径

  • App-info fields (
    subtitle
    ):
    metadata/app-info/{locale}.json
  • Version fields (
    keywords
    ,
    description
    ,
    whatsNew
    ):
    metadata/version/{latest-version}/{locale}.json
  • App name: May not be present in exported metadata. If
    name
    is missing from the app-info JSON, fetch it via
    asc app-infos list
    or ask the user. Do not flag it as a missing-field error.
  • 应用信息字段
    subtitle
    ):
    metadata/app-info/{locale}.json
  • 版本字段
    keywords
    description
    whatsNew
    ):
    metadata/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
subtitle
field (and
name
if available). Flag any token that also appears in the
keywords
field — it is already indexed and wastes keyword budget.
Severity: ⚠️ Warning
Example:  "quran" appears in subtitle AND keywords — remove from keywords to free 6 characters
How to check:
  1. Read
    metadata/app-info/{locale}.json
    for
    subtitle
    (and
    name
    if present)
  2. Read
    metadata/version/{latest-version}/{locale}.json
    for
    keywords
  3. 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.
  4. Split keywords by comma, trim whitespace, lowercase
  5. Report intersection (including fuzzy matches from prefix stripping)
subtitle
字段(若有
name
则包含该字段)进行分词。标记同时出现在
keywords
字段中的任何词元——该词元已被索引,会浪费关键词配额。
严重程度:⚠️ 警告
示例:"quran"同时出现在副标题和关键词中——从关键词中移除可节省6个字符
检查方式:
  1. 读取
    metadata/app-info/{locale}.json
    中的
    subtitle
    (若存在则包含
    name
  2. 读取
    metadata/version/{latest-version}/{locale}.json
    中的
    keywords
  3. 对副标题(+名称)进行分词:
    • 拉丁语/西里尔语系:按空格拆分,去除首尾标点,转为小写
    • 中文/日文/韩文:按
      ,
      拆分,或逐个遍历字符——每个字符或字符组为一个词元。空格分词不适用于CJK语言。
    • 阿拉伯语:按空格拆分,同时生成去除前缀的变体(移除ال前缀),因为苹果可能会对定冠词进行标准化处理。例如,副标题中的"القرآن"应标记关键词中的"القرآن"和"قرآن"。
  4. 按逗号拆分关键词,去除空格,转为小写
  5. 报告交集(包括前缀去除后的模糊匹配)

2. Underutilized Fields

2. 字段利用率不足

Flag fields using less than their recommended minimum:
FieldMinimumLimitRationale
Keywords90 chars10090%+ usage maximizes indexing
Subtitle20 chars3065%+ 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:
subtitle
,
keywords
,
description
,
whatsNew
.
Note:
name
may not be in the export — only flag it if the app-info JSON explicitly contains a
name
key with an empty value.
Severity: ❌ Error
Example:  subtitle is empty for locale en-US
标记为空或缺失的必填字段:
subtitle
keywords
description
whatsNew
注意:导出内容中可能没有
name
——仅当应用信息JSON中明确包含
name
键且值为空时,才标记该字段。
严重程度:❌ 错误
示例:区域设置en-US的副标题为空

4. Bad Keyword Separators

4. 关键词分隔符错误

Check the
keywords
field for formatting issues:
  • 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
keywords
fields across all available locales. Flag locales where keywords are identical to the primary locale (
en-US
by default) — this usually means they were not localized.
Severity: ⚠️ Warning
Example:  ar keywords identical to en-US — likely not localized for Arabic market
How to check:
  1. Load keywords for all locales
  2. Compare each non-primary locale against the primary
  3. Flag exact matches (case-insensitive)
比较所有可用区域设置的
keywords
字段。标记与主区域设置(默认
en-US
)关键词完全相同的区域设置——这通常意味着未进行本地化。
严重程度:⚠️ 警告
示例:ar区域设置的关键词与en-US完全相同——可能未针对阿拉伯语市场本地化
检查方式:
  1. 加载所有区域设置的关键词
  2. 将每个非主区域设置与主区域设置进行比较
  3. 标记完全匹配的项(不区分大小写)

6. Description Keyword Coverage

6. 描述关键词覆盖情况

Check whether keywords appear naturally in the
description
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.
Severity: 💡 Info
Example:  3 of 16 keywords not found in description: namaz, tarteel, adhan
How to check:
  1. Load
    keywords
    and
    description
    for each locale
  2. For each keyword, check if it appears as a substring in the description (case-insensitive)
  3. Account for inflected forms: Arabic root matches, verb conjugations (e.g., "memorizar" ≈ "memorices"), and case declensions (e.g., Russian "сура" ≈ "суры")
  4. Report missing keywords per locale — recommend weaving them naturally into existing sentences
  5. 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
检查方式:
  1. 加载每个区域设置的
    keywords
    description
  2. 对每个关键词,检查其是否作为子字符串出现在描述中(不区分大小写)
  3. 考虑词形变化:阿拉伯语词根匹配、动词变位(如"memorizar"≈"memorices")、变格(如俄语"сура"≈"суры")
  4. 报告各区域设置中缺失的关键词——建议将其自然融入现有句子
  5. 无需标记:非拉丁语描述中的拉丁语关键词(如西里尔语文本中的"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

步骤

  1. Get current keywords: Call
    get_app_keywords
    with the app ID to retrieve tracked keywords and their current rankings.
  2. Ensure multi-store tracking: For each locale with a corresponding App Store territory (e.g.,
    ar-SA
    → Saudi Arabia,
    fr-FR
    → France,
    tr
    → Turkey), use
    add_keywords
    to add keyword tracking in that store. Without this,
    search_rankings
    returns empty for non-US stores.
  3. Extract competitor keywords: Call
    extract_competitors_keywords
    with 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.
  4. Get suggestions: Call
    get_keyword_suggestions
    with the app ID for additional recommendations based on category analysis.
  5. Check current rankings: Call
    search_rankings
    to see where the app currently ranks for tracked keywords in each store.
  6. Diff against metadata: Compare suggested and competitor keywords against the tokens present in
    subtitle
    ,
    name
    (if available), and
    keywords
    fields from the local metadata.
  7. Surface gaps: Report all gaps ranked by popularity score (highest first). Include the source (competitor analysis vs. suggestion).
  1. 获取当前关键词:调用
    get_app_keywords
    并传入应用ID,获取已跟踪的关键词及其当前排名。
  2. 确保多商店跟踪:对于每个对应App Store地区的区域设置(如
    ar-SA
    →沙特阿拉伯,
    fr-FR
    →法国,
    tr
    →土耳其),使用
    add_keywords
    在该商店中添加关键词跟踪。若未执行此操作,非美国商店的
    search_rankings
    将返回空值。
  3. 提取竞品关键词:调用
    extract_competitors_keywords
    并传入3-5个头部竞品应用ID,找出关键词缺口。这是Astro最有价值的工具——它能揭示竞品排名但我方未布局的关键词。尽可能针对每个商店运行此操作。
  4. 获取建议关键词:调用
    get_keyword_suggestions
    并传入应用ID,基于品类分析获取额外推荐。
  5. 检查当前排名:调用
    search_rankings
    查看应用在各商店中已跟踪关键词的当前排名。
  6. 与元数据对比:将推荐关键词和竞品关键词与本地元数据中
    subtitle
    name
    (若有)和
    keywords
    字段中的词元进行对比。
  7. 展示缺口:按热度得分从高到低报告所有缺口,同时标注来源(竞品分析或系统推荐)。

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
    mcp__astro__add_app
    for gap analysis"
  • Store not tracked for a locale → add tracking with
    add_keywords
    before querying
  • 未连接Astro MCP → 跳过并提示:"连接Astro MCP以进行关键词缺口分析"
  • 应用未在Astro中被跟踪 → 跳过并提示:"使用
    mcp__astro__add_app
    将应用添加到Astro以进行缺口分析"
  • 区域设置对应的商店未被跟踪 → 在查询前使用
    add_keywords
    添加跟踪

Output Format

输出格式

Present results as a single audit report. The report covers only the latest version directory.
undefined
将结果整理为一份审核报告,报告仅覆盖最新版本目录。
undefined

ASO Audit Report

ASO审核报告

App: [name] | Primary Locale: [locale] Metadata source: [path including version number]
应用: [名称] | 主区域设置: [区域设置] 元数据来源: [包含版本号的路径]

Field Utilization

字段利用率

FieldValueLengthLimitUsage
Name...X30X%
Subtitle...X30X%
Keywords...X100X%
Promotional Text...X170X%
Description(first 50 chars)...X4000X%
字段内容长度上限使用率
名称...X30X%
副标题...X30X%
关键词...X100X%
推广文本...X170X%
描述(前50个字符)...X4000X%

Offline Checks

离线检查结果

#CheckSeverityFieldLocaleDetail
1Keyword waste⚠️keywordsen-US"quran" duplicated in subtitle
Summary: X errors, Y warnings across Z locales
序号检查项严重程度字段区域设置详情
1关键词浪费⚠️keywordsen-US"quran"在副标题中重复出现
摘要: 共X个错误,Y个警告,涉及Z个区域设置

Keyword Gap Analysis (Astro MCP)

关键词缺口分析(Astro MCP)

KeywordPopularityIn Metadata?Suggested Action
quran recitation72Add to keywords
关键词热度是否在元数据中?建议操作
quran recitation72添加到关键词

Recommendations

推荐方案

  1. [Highest priority action — errors first]
  2. [Next priority — keyword waste]
  3. [Utilization improvements]
  4. [Keyword gap opportunities]
undefined
  1. [最高优先级操作——优先处理错误]
  2. [次优先级——解决关键词浪费问题]
  3. [提升字段利用率]
  4. [抓住关键词缺口机会]
undefined

Notes

注意事项

  • 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
    asc migrate export
    or
    asc localizations download
    to ensure metadata is current.
  • 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
    之后运行此工具,以确保元数据是最新的。
  • 修改后,重新运行审核以验证修复效果。
  • 字段利用率表格包含推广文本仅为完整起见,并无检查项验证其内容(苹果不会对其进行索引)。 ",