asc-aso-audit by rudrankriyam/app-store-connect-cli-skills
npx skills add https://github.com/rudrankriyam/app-store-connect-cli-skills --skill asc-aso-audit运行两阶段 ASO 审核:首先对本地元数据文件进行离线检查,然后通过 Astro MCP 进行关键词差距分析。
asc metadata pull --app "APP_ID" --version "1.2.3" --dir "./metadata" 拉取到本地规范文件中。asc migrate export 或 asc localizations download,请在运行此技能前将其规范化为 ./metadata 布局。references/aso_rules.md 以了解每个检查所执行的规则。metadata/version/ 下的最新版本目录(最高的语义版本号)。所有版本级别的字段都使用此目录。en-US,除非用户另行指定。广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
subtitle): metadata/app-info/{locale}.jsonkeywords, description, whatsNew): metadata/version/{latest-version}/{locale}.jsonname 字段,请通过 asc apps info list 获取或询问用户。不要将其标记为缺失字段错误。针对本地元数据目录运行以下 5 项检查。无需网络调用。
对 subtitle 字段(以及 name 字段,如果可用)进行分词。标记任何同时出现在 keywords 字段中的词元——它已被索引,浪费了关键词预算。
Severity: ⚠️ Warning
Example: "quran" appears in subtitle AND keywords — remove from keywords to free 6 characters
检查方法:
metadata/app-info/{locale}.json 读取 subtitle(以及 name,如果存在)metadata/version/{latest-version}/{locale}.json 读取 keywords、 , , 分割或遍历字符——每个字符或字符组是一个词元。空白字符分词不适用于 CJK。标记使用量低于推荐最小值的字段:
| 字段 | 最小值 | 限制 | 依据 |
|---|---|---|---|
| Keywords | 90 字符 | 100 | 90%+ 使用率可最大化索引 |
| Subtitle | 20 字符 | 30 | 推荐 65%+ 使用率 |
Severity: ⚠️ Warning
Example: keywords is 62/100 characters (62%) — 38 characters of indexing opportunity unused
标记为空或缺失的必填字段:subtitle、keywords、description、whatsNew。
注意:name 可能不在导出文件中——仅当应用信息 JSON 明确包含一个值为空的 name 键时才标记它。
Severity: ❌ Error
Example: subtitle is empty for locale en-US
检查 keywords 字段的格式问题:
逗号后有空格 (quran, recitation)
使用分号而非逗号 (quran;recitation)
使用竖线而非逗号 (quran|recitation)
Severity: ❌ Error Example: keywords contain spaces after commas — wastes 3 characters
比较所有可用语言环境的 keywords 字段。标记关键词与主要语言环境(默认为 en-US)完全相同的语言环境——这通常意味着它们未被本地化。
Severity: ⚠️ Warning
Example: ar keywords identical to en-US — likely not localized for Arabic market
检查方法:
检查关键词是否自然出现在 description 字段中。虽然 Apple 不 为搜索索引描述,但看到其搜索词反映在描述中的用户更有可能下载——这提高了转化率,从而间接提升了排名。
Severity: 💡 Info
Example: 3 of 16 keywords not found in description: namaz, tarteel, adhan
检查方法:
keywords 和 description如果 Astro MCP 可用且应用已被跟踪,则运行关键词差距分析。按商店/语言环境运行此分析,而不仅仅是美国商店——不同市场的关键词流行度差异巨大。
获取当前关键词:调用 get_app_keywords 并传入应用 ID,以检索跟踪的关键词及其当前排名。
确保多商店跟踪:对于每个有对应 App Store 地区的语言环境(例如,ar-SA → 沙特阿拉伯,fr-FR → 法国,tr → 土耳其),使用 add_keywords 添加该商店的关键词跟踪。没有这一步,search_rankings 对于非美国商店将返回空结果。
提取竞争对手关键词:调用 extract_competitors_keywords 并传入 3-5 个顶级竞争对手的应用 ID,以发现关键词差距。这是价值最高的 Astro 工具——它能揭示竞争对手排名而你未排名的关键词。尽可能按商店运行此分析。
获取建议:调用 get_keyword_suggestions 并传入应用 ID,以获取基于类别分析的额外推荐。
检查当前排名:调用 search_rankings 以查看应用当前在每个商店中针对跟踪关键词的排名情况。
与元数据对比:将建议的和竞争对手的关键词与本地元数据中 subtitle、name(如果可用)和 keywords 字段中的词元进行比较。
呈现差距:报告所有差距,按流行度分数排序(最高者优先)。包括来源(竞争对手分析 vs. 建议)。
当推荐添加关键词时,考虑单个单词如何在索引字段(标题 + 副标题 + 关键词)中组合。例如:
在推荐中标记高价值的组合。
mcp__astro__add_app for gap analysis"add_keywords 添加跟踪将结果呈现为一份审核报告。该报告仅涵盖最新版本目录。
### ASO 审核报告
**应用:** [name] | **主要语言环境:** [locale]
**元数据来源:** [path including version number]
#### 字段利用率
| 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% |
#### 离线检查
| # | Check | Severity | Field | Locale | Detail |
|---|-------|----------|-------|--------|--------|
| 1 | Keyword waste | ⚠️ | keywords | en-US | "quran" duplicated in subtitle |
**Summary:** X errors, Y warnings across Z locales
#### 关键词差距分析 (Astro MCP)
| Keyword | Popularity | In Metadata? | Suggested Action |
|---------|-----------|--------------|-----------------|
| quran recitation | 72 | ❌ | Add to keywords |
#### 建议
1. [最高优先级操作 — 错误优先]
2. [下一优先级 — 关键词浪费]
3. [利用率改进]
4. [关键词差距机会]
asc metadata pull 之后运行此技能,以确保规范元数据文件是最新的。asc metadata keywords diff --app "APP_ID" --version "1.2.3" --dir "./metadata"asc metadata keywords apply --app "APP_ID" --version "1.2.3" --dir "./metadata" --confirmasc metadata keywords sync --app "APP_ID" --version "1.2.3" --dir "./metadata" --input "./keywords.csv" 当导入外部关键词研究时Weekly Installs
272
Repository
GitHub Stars
588
First Seen
11 days ago
Security Audits
Installed on
kimi-cli265
gemini-cli265
github-copilot265
amp265
cline265
codex265
Run a two-phase ASO audit: offline checks against local metadata files, then keyword gap analysis via Astro MCP.
asc metadata pull --app "APP_ID" --version "1.2.3" --dir "./metadata".asc migrate export or asc localizations download, normalize it into the canonical ./metadata layout before running this skill.references/aso_rules.md to understand the rules each check enforces.metadata/version/ (highest semantic version number). Use this for all version-level fields.en-US unless the user specifies otherwise.subtitle): metadata/app-info/{locale}.jsonkeywords, description, whatsNew): metadata/version/{latest-version}/{locale}.jsonname is missing from the app-info JSON, fetch it via asc apps info list or ask the user. Do not flag it as a missing-field error.Run these 5 checks against the local metadata directory. No network calls required.
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:
metadata/app-info/{locale}.json for subtitle (and name if present)metadata/version/{latest-version}/{locale}.json for keywords、 , , or iterate characters — each character or character-group is a token. Whitespace tokenization does not work for CJK.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
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
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
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:
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:
keywords and description for each localeIf 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.
Get current keywords : Call get_app_keywords with the app ID to retrieve tracked keywords and their current rankings.
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.
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.
Get suggestions : Call with the app ID for additional recommendations based on category analysis.
When recommending keyword additions, consider how single words combine across indexed fields (title + subtitle + keywords). For example:
Flag high-value combos in recommendations.
mcp__astro__add_app for gap analysis"add_keywords before queryingPresent results as a single audit report. The report covers only the latest version directory.
### ASO Audit Report
**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% |
#### 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
#### Keyword Gap Analysis (Astro MCP)
| Keyword | Popularity | In Metadata? | Suggested Action |
|---------|-----------|--------------|-----------------|
| quran recitation | 72 | ❌ | Add to keywords |
#### Recommendations
1. [Highest priority action — errors first]
2. [Next priority — keyword waste]
3. [Utilization improvements]
4. [Keyword gap opportunities]
asc metadata pull to ensure canonical metadata files are current.asc metadata keywords diff --app "APP_ID" --version "1.2.3" --dir "./metadata"asc metadata keywords apply --app "APP_ID" --version "1.2.3" --dir "./metadata" --confirmasc metadata keywords sync --app "APP_ID" --version "1.2.3" --dir "./metadata" --input "./keywords.csv" when importing external keyword researchWeekly Installs
272
Repository
GitHub Stars
588
First Seen
11 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
kimi-cli265
gemini-cli265
github-copilot265
amp265
cline265
codex265
程序化SEO实战指南:大规模创建优质页面,避免内容单薄惩罚
34,000 周安装
长上下文Transformer技术指南:RoPE、ALiBi、YaRN实现与扩展模型上下文窗口
268 周安装
Flutter开发指南:构建高性能跨平台移动应用,掌握Dart与组件化开发
268 周安装
产品指标追踪指南:定义北极星指标、L1健康指标与OKR目标设定框架
268 周安装
价值实现框架:产品价值发现与用户采用分析指南 | 产品管理方法论
268 周安装
Sentry Skills技能创建工具 - 兼容skill-creator,使用skill-writer标准工作流
268 周安装
Salesforce 数据操作专家指南:sf-data 技能详解与最佳实践
268 周安装
get_keyword_suggestionsCheck current rankings : Call search_rankings to see where the app currently ranks for tracked keywords in each store.
Diff against metadata : Compare suggested and competitor keywords against the tokens present in subtitle, name (if available), and keywords fields from the local metadata.
Surface gaps : Report all gaps ranked by popularity score (highest first). Include the source (competitor analysis vs. suggestion).