返回 Skill 列表
extension
分类: 营销与增长无需 API Key

astro-aso

查询本地Astro Mac应用程序数据库以获取ASO见解。当用户询问关键词排名、历史排名数据、趋势分析、竞争对手关键词、应用评分、关键词机会或ASO健康指标时使用。

person作者: jakexiaohubgithub

Astro ASO Skill

Query your local Astro Mac app database for App Store Optimization insights.

When to Use

Invoke this skill when the user asks about:

  • Keyword rankings and tracking
  • Historical ranking data and trends
  • Competitor analysis for keywords
  • App ratings and reviews data
  • Keyword opportunities and recommendations
  • ASO health analysis
  • Ranking predictions and anomalies

Prerequisites

  • Astro Mac app installed: https://astro.app
  • App must have data (tracked apps/keywords)

Usage

Run commands via the bundled script:

node .claude/skills/astro-aso/scripts/astro-query.mjs <command> '<json-params>'

Available Commands

list_apps

List all tracked apps in Astro.

node .claude/skills/astro-aso/scripts/astro-query.mjs list_apps '{}'

search_rankings

Search keyword rankings for apps.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------------- | | keyword | string | YES | Keyword to search | | store | string | no | Filter by store (ios/mac) | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID |

node .claude/skills/astro-aso/scripts/astro-query.mjs search_rankings '{"keyword": "photo editor"}'

historical_rankings

Get historical ranking data for a keyword.

| Param | Type | Required | Description | | -------- | ------ | -------- | ----------------------------- | | keyword | string | YES | Keyword to track | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID | | daysBack | number | no | Days of history (default: 30) | | store | string | no | Filter by store |

node .claude/skills/astro-aso/scripts/astro-query.mjs historical_rankings '{"keyword": "photo editor", "daysBack": 90}'

app_keywords

Get all tracked keywords for an app.

| Param | Type | Required | Description | | ------- | ------ | -------- | ----------------- | | appName | string | no* | App name to query | | appId | string | no* | App ID to query | | store | string | no | Filter by store |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs app_keywords '{"appName": "My App"}'

keyword_trends

Analyze keyword ranking trends over time.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------------------------ | | keyword | string | YES | Keyword to analyze | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID | | period | string | no | week/month/year/all (default: month) | | store | string | no | Filter by store |

node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_trends '{"keyword": "photo editor", "period": "month"}'

compare_rankings

Compare rankings between two dates.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------------ | | keyword | string | YES | Keyword to compare | | date1 | string | YES | First date (ISO format) | | date2 | string | YES | Second date (ISO format) | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID | | store | string | no | Filter by store |

node .claude/skills/astro-aso/scripts/astro-query.mjs compare_rankings '{"keyword": "photo editor", "date1": "2024-01-01", "date2": "2024-02-01"}'

app_ratings

Get app ratings and review data.

| Param | Type | Required | Description | | -------- | ------ | -------- | ----------------------------- | | appName | string | no* | App name to query | | appId | string | no* | App ID to query | | store | string | no | Filter by store | | daysBack | number | no | Days of history (default: 30) |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs app_ratings '{"appName": "My App", "daysBack": 60}'

keyword_competitors

Find competing apps ranking for a keyword.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------------- | | keyword | string | YES | Keyword to analyze | | store | string | no | Filter by store | | limit | number | no | Max results (default: 10) |

node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_competitors '{"keyword": "photo editor", "limit": 20}'

keyword_recommendations

Get recommended keywords based on existing ones.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------------- | | keyword | string | YES | Base keyword | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID | | store | string | no | Filter by store | | limit | number | no | Max results (default: 10) |

node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_recommendations '{"keyword": "photo"}'

competitive_landscape

Analyze competitive position for an app.

| Param | Type | Required | Description | | ------- | ------ | -------- | ----------------------------- | | appName | string | no* | App name to analyze | | appId | string | no* | App ID to analyze | | store | string | no | Filter by store | | limit | number | no | Max competitors (default: 10) |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs competitive_landscape '{"appName": "My App"}'

keyword_opportunities

Find keyword opportunities (low difficulty, high popularity).

| Param | Type | Required | Description | | ------------- | ------ | -------- | -------------------- | | appName | string | no* | App name to analyze | | appId | string | no* | App ID to analyze | | store | string | no | Filter by store | | minPopularity | number | no | Min popularity score | | maxDifficulty | number | no | Max difficulty score |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_opportunities '{"appName": "My App", "maxDifficulty": 30}'

ranking_anomalies

Detect sudden ranking changes and anomalies.

| Param | Type | Required | Description | | --------- | ------ | -------- | ------------------------------ | | appName | string | no* | App name to analyze | | appId | string | no* | App ID to analyze | | daysBack | number | no | Days to analyze (default: 7) | | threshold | number | no | Change threshold (default: 10) | | store | string | no | Filter by store |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs ranking_anomalies '{"appName": "My App", "threshold": 15}'

ranking_predictions

Predict future rankings based on trends.

| Param | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------- | | keyword | string | YES | Keyword to predict | | appName | string | no | Filter by app name | | appId | string | no | Filter by app ID | | store | string | no | Filter by store | | daysForward | number | no | Days to predict (default: 7) |

node .claude/skills/astro-aso/scripts/astro-query.mjs ranking_predictions '{"keyword": "photo editor", "daysForward": 14}'

low_competition_keywords

Find keywords with low competition.

| Param | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------- | | store | string | no | Filter by store | | maxDifficulty | number | no | Max difficulty (default: 30) | | minPopularity | number | no | Min popularity (default: 20) | | limit | number | no | Max results (default: 20) |

node .claude/skills/astro-aso/scripts/astro-query.mjs low_competition_keywords '{"maxDifficulty": 25, "minPopularity": 30}'

analyze_aso_health

Get overall ASO health analysis for an app.

| Param | Type | Required | Description | | ------- | ------ | -------- | ------------------- | | appName | string | no* | App name to analyze | | appId | string | no* | App ID to analyze | | store | string | no | Filter by store |

*One of appName or appId required

node .claude/skills/astro-aso/scripts/astro-query.mjs analyze_aso_health '{"appName": "My App"}'

Output Format

All commands return JSON with either:

  • { "success": true, "data": ... } on success
  • { "success": false, "error": "..." } on failure

Example Workflow

  1. List all tracked apps:

    node .claude/skills/astro-aso/scripts/astro-query.mjs list_apps '{}'
    
  2. Get keywords for a specific app:

    node .claude/skills/astro-aso/scripts/astro-query.mjs app_keywords '{"appName": "My App"}'
    
  3. Analyze keyword trends:

    node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_trends '{"keyword": "productivity", "period": "month"}'
    
  4. Find opportunities:

    node .claude/skills/astro-aso/scripts/astro-query.mjs keyword_opportunities '{"appName": "My App", "maxDifficulty": 40}'