移动应用市场情报服务

AppKittie 是一个面向 AI 智能体与移动应用开发者的市场情报服务,通过 Agent Skills、MCP 与 REST API 提供应用发现、ASO 关键词、竞品、收入、广告素材、评论和创作者等实时数据,适用于在 Cursor、Claude Code、Manus 等工具中完成应用商店研究与增长分析。

  • by AppKittie
  • Python
  • 混合部署
  • 7 星标
  • 更新于
在 GitHub 查看 AppKittie/aso-mcp-skills

使用说明

AppKittie — mobile app intelligence for AI agents

Full API documentation: www.appkittie.com/docs

Turn Cursor, Claude Code, Manus, or any Agent Skills–compatible assistant into a research partner for the App Store and Google Play: discovery, ASO, competitors, growth, revenue, and ads—backed by live data from the AppKittie API (2M+ mobile apps, estimates, growth windows, and ad signals).


Install the skills

Today’s coding agents load Agent Skills from disk: each skill is a folder with a SKILL.md (and optional files), placed where your tool looks—commonly .cursor/skills/, .claude/skills/, .agents/skills/, or .codex/skills/. You either copy those folders, subscribe to a remote rule (Cursor), or use a CLI that fetches from GitHub (Claude Code).

Claude Code — official installer; downloads this repo and registers the skills:

npx skills add appkittie/mcp

Install only specific skills:

npx skills add appkittie/mcp --skill keyword-research competitor-analysis

If you already cloned the repo: cp -r mcp/skills/* .claude/skills/

Cursor — Settings (⌘⇧J) → Rules → Add Rule → Remote Rule (GitHub) → https://github.com/appkittie/mcp, or copy skills locally:

Where Command
Project cp -r mcp/skills/* .cursor/skills/
User (all projects) cp -r mcp/skills/* ~/.cursor/skills/

Manus — Skills → Create / Import → Import from public GitHub repository → https://github.com/appkittie/mcp.

Manus expects a SKILL.md at the repository root, so this repo includes a root SKILL.md wrapper that routes to the focused workflow docs under skills/.

Any other agent — clone and point skills/ at the path your client documents:

git clone https://github.com/appkittie/mcp.git
cp -r mcp/skills/* .cursor/skills/   # or .claude/skills/, .agents/skills/, .codex/skills/

Install the MCP server

Skills describe how to reason about mobile app store work; MCP exposes live tools (search_apps, keyword endpoints, etc.) against AppKittie. Create an API key at appkittie.com/settings/api-keys (it is only shown once when created).

Claude Code — register the hosted server (HTTP transport + bearer auth):

claude mcp add appkittie --transport http https://mcp.appkittie.com/mcp --header "Authorization: Bearer YOUR_API_KEY"

Substitute your real key for YOUR_API_KEY.

Claude Web / Claude Desktop custom connector — if your connector UI supports request headers, use Authorization: Bearer YOUR_API_KEY. If it only exposes OAuth fields, use the hosted OAuth proxy shim:

Connector URL: https://mcp.appkittie.com/mcp
Auth type: OAuth
Client ID: appkittie-claude
Client Secret: YOUR_API_KEY

The OAuth consent screen is just a Claude-compatible API-key handoff. AppKittie does not require a separate OAuth account flow.

Cursor and other MCP clients — use the same URL and Authorization: Bearer … header in your app’s MCP configuration. Example JSON: Wire up the MCP server below.


UPDATE

MCP server updates and skill updates are separate:

MCP server

If you use the hosted MCP server at https://mcp.appkittie.com, there is nothing to reinstall. AppKittie deploys server updates, and your existing MCP configuration keeps working.

If new tools or prompts do not appear immediately, restart your agent or reconnect the AppKittie MCP server so the client refreshes its tool list.

Skills

If you installed with the skills CLI, update the local skill files:

npx skills update

If you copied the folders manually, pull the latest repo and copy them again:

git pull
cp -r mcp/skills/* .claude/skills/   # or .cursor/skills/, .agents/skills/, .codex/skills/

Cursor remote GitHub rules and Manus GitHub imports are managed by those clients. If an update does not appear, refresh/re-import the GitHub rule or restart the client.


What you get

Piece Role
Skills Opinionated playbooks under skills/—how to ask questions, structure answers, and chain workflows
MCP server Hosted proxy (mcp.appkittie.com) so MCP clients can call AppKittie without wiring HTTP yourself
REST API Direct GET/POST to https://appkittie.com/api/v1 for scripts, backends, or custom tools

Skills compose: e.g. competitor-analysis may point you to keyword-research, then metadata-optimization for execution.


Wire up the MCP server

The worker on Cloudflare forwards requests to AppKittie. Claude Code users can register via claude mcp add above; everyone else (e.g. Cursor) typically pastes config like this:

  1. Create a key: appkittie.com/settings/api-keys (shown once—copy immediately).
  2. Register the server:
{
  "mcpServers": {
    "appkittie": {
      "url": "https://mcp.appkittie.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

MCP tools

Tool Purpose Credits
search_apps Filter App Store and Google Play apps (30+ parameters) 1 × rows returned
list_favorite_apps List the API team's owner's saved apps and folders Free
get_app_detail Metadata, revenue, IAPs, contacts, growth summaries 1 / call
get_app_historicals Raw historical metric series for one app 1 / call
list_store_rankings Current store chart by collection, country, and category 1 × rows returned
get_store_ranking_history Daily chart positions for one app and chart 10 / call
search_ads Search Meta and TikTok ad creatives; compact view by default, view='full' for complete payloads 1 × rows returned
get_ad_detail Full detail for one ad creative 1 / call
list_creators Creator discovery for one app or across a category; filter by platform, country, and followers 1 × rows returned
list_organic_content Search organic creator content globally or filter by app, category, language, reach, views, and app performance 1 × rows returned
get_keyword_difficulty One keyword: popularity, difficulty, traffic, top apps (topAppsLimit, default 10) 10 / call
batch_keyword_difficulty Up to 10 keywords, ranked by opportunity 10 × keyword
get_app_reviews Real-time store reviews for one app 1 × rows returned
get_supported_countries Valid storefront codes Free

App identifiers: every app-scoped tool (get_app_detail, get_app_historicals, search_ads, list_creators, list_organic_content, get_app_reviews) accepts an app slug, AppKittie app ID, numeric App Store ID, Google Play package name, or store URL. Resolution happens automatically — pass whichever identifier you have.

Influencer discovery: list_creators supports category for cross-app discovery, platform / country / minFollowers / maxFollowers filters, and sortBy='followers'. To confirm a creator actually posted about an app, cross-reference their handle against list_organic_content for that app.

MCP prompts

Prompt Use case
discover_niche Walk through profitable niches inside a category
competitor_analysis Structured competitive intel
keyword_research Prioritize and document a keyword set
app_growth_report Gainers, losers, trend read
ad_intelligence Category or niche ad landscape
review_analysis Mine app reviews for sentiment, complaints, and feature requests

Skill catalog

Intelligence & positioning

Skill Link Summary
App discovery app-discovery Slice the catalog by category, money, traction, ratings, ads, and more
Keyword research keyword-research Popularity, difficulty, traffic score, leaders—turn into a ranked plan
Metadata metadata-optimization Title, subtitle, keyword field, description with variants and limits
Competitors competitor-analysis Gaps, revenue contrast, ad teardown, positioning

Growth, money, ads

Skill Link Summary
Growth growth-analysis Fast movers, drivers, emerging patterns
Revenue revenue-analysis Benchmarks, monetization, IAP shape, pricing
Ads ad-intelligence Meta/Google creatives, Apple Search Ads signals, UA angles
Creators creator-discovery Influencer discovery per app or category — follower tiers, platforms, outreach lists

Shared context

Skill Link Summary
Marketing context app-marketing-context One doc: app, audience, rivals, goals—feeds the other skills
Reviews review-analysis Turn app reviews into sentiment, complaints, requests, and product moves

Example prompts & commands

Natural language (after skills are installed):

  • “Surface the highest-earning Health & Fitness apps.”
  • “US keyword set for a meditation app—prioritize by opportunity.”
  • “Competitive read for app id 1234567890.”
  • “Who’s buying Meta ads in productivity lately?”
  • “Find TikTok micro-influencers associated with calorie-tracking apps.”
  • “What’s climbing fastest this week?”
  • “Rewrite title + subtitle for these keywords, three options each.”
  • “Capture my marketing context so follow-ups stay consistent.”
  • “Rough revenue band for education—who owns the top?”

Slash-style entry points in clients that install the focused folders directly: /app-discovery, /keyword-research, /metadata-optimization, /competitor-analysis, /growth-analysis, /ad-intelligence, /creator-discovery, /revenue-analysis, /review-analysis.

In clients that import the GitHub repo as one skill, such as Manus, use /appkittie and describe the workflow you want.


How an agent typically runs

  1. Loads the relevant SKILL.md (templates, guardrails, output shape).
  2. Calls AppKittie—via MCP tools or HTTP—e.g. search_apps with category + sortBy: revenue, or batch_keyword_difficulty for a seed list, then get_keyword_difficulty on shortlist items.
  3. Synthesizes: tables, takeaways, and next actions instead of raw JSON dumps.

REST API quick reference

Base: https://appkittie.com/api/v1
Auth: Authorization: Bearer <key> — same keys as the dashboard.

curl -sS "https://appkittie.com/api/v1/apps?search=fitness&limit=5" \
  -H "Authorization: Bearer YOUR_API_KEY"

Routes & billing

Route Verb Role Credits
/api/v1/apps GET Search / filter apps 1 per app in the payload
/api/v1/apps/:appId GET Full detail for one app 1 per request
/api/v1/apps/:appId/historicals GET Historical metric time series 1 per request
/api/v1/ads GET Search / filter ad creatives (view=compact for trimmed payloads) 1 per ad in the payload
/api/v1/ads/:adId GET Full detail for one ad creative 1 per request
/api/v1/creators GET Creator discovery for one app or a category, with filters and match quality 1 per creator in the payload
/api/v1/organic GET Organic creator videos for one app or a category 1 per item in the payload
/api/v1/keywords/difficulty GET Single keyword (topAppsLimit / includeTopApps=false for compact payloads) 10 per request
/api/v1/keywords/difficulty POST Batch (≤10 keywords) 10 per keyword with data
/api/v1/reviews GET / POST Real-time store reviews (any identifier form) 1 per review in the payload

Payload shape

Success bodies use a top-level data. Lists add cursor pagination:

{
  "data": [{ "title": "Calm", "score": 4.8, "downloads": 85000 }],
  "pagination": { "nextCursor": 50, "totalCount": 12450 }
}

Request the next page with cursor=<nextCursor>. null means end of results.

App-scoped routes accept any identifier form — app_slug/appSlug, appId, appStoreId (numeric App Store ID or Google Play package name), or appStoreUrl — and resolve it server-side.

GET /api/v1/apps filters (AND-combined)

Group Parameters
Text search — title, developer, description
Categories categories, excludedCategories (comma-separated names)
Store source, excludedSource (apple_mobile | google_mobile)
Metrics minDownloads / maxDownloads, minRevenue / maxRevenue, minRating / maxRating, minReviews / maxReviews, lifetime download/revenue min/max
Price priceType (all | free | paid), minPrice, maxPrice
Growth sort sortBy=growth, growthMetric=reviews, growthPeriod (7d, 14d, 30d, 60d, 90d). Growth direction/range filters are temporarily unavailable
Signals hasMetaAds, hasTikTokAds, hasAppleAds, hasCreators, hasEmails, hasWebsite
Content contentRating, languages, developer
Time releasedAfter, updatedAfter (Unix seconds)
Order sortBy (growth, rating, reviews, updated, released, downloads, revenue, trending, newest), sortOrder (asc | desc)

hasTikTokAds=true requires tiktok_ads_total_count > 0; false includes zero, missing, or null counts. App list/detail responses include optional tiktok_ads_total_count when available. Fetch creatives separately with search_ads(adSource="tiktok", appSlug=...); counts can differ from indexed creatives.

adsSource accepts meta (Apple apps with Meta creatives), tiktok (either store with a positive TikTok count), or all (either group). Omit it to include apps without ads. Other filters are AND-combined.

Full parameter matrix: tools/REGISTRY.md.

GET /api/v1/ads filters

Group Parameters
Text search, textSearchFields
Creative adSource (all | meta | tiktok | google (legacy)), mediaType (all | image | video), status (all | active | inactive)
App app_slug/appSlug/appId/appStoreId/appStoreUrl (any identifier form), categories, excludedCategories, developer, app download/revenue min/max
Delivery countries, excludedCountries, surfaces, excludedSurfaces, start/end timestamp bounds
Shape view (full | compact)
Order sortBy (start_date, end_date, app_downloads, app_revenue, app Meta Ads estimated spend/reach fields for 7d, 30d, or 90d, app_released_timestamp, app_updated_timestamp), sortOrder (asc | desc)

adSource=all adds no network filter. Google remains accepted for compatibility but has no current inventory. ad_source identifies the creative network independently of the app store.

GET /api/v1/creators filters

Group Parameters
Scope any app identifier, or category for cross-app discovery
Creator platform (tiktok | instagram | youtube), country, minFollowers / maxFollowers
Order sortBy (relevance | followers), sortOrder (asc | desc)

GET /api/v1/organic supports the same scope parameters plus platform.

cURL samples

High-revenue fitness slice:

curl -sS "https://appkittie.com/api/v1/apps?search=fitness&categories=Health+%26+Fitness&minRevenue=10000&sortBy=revenue&sortOrder=desc&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Batch keywords (US storefront):

curl -sS -X POST "https://appkittie.com/api/v1/keywords/difficulty" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["meditation","sleep tracker","mindfulness","breathing exercises","yoga"],"country":"US","source":"apple_mobile"}'

Credits & headers

  • App list: 1 credit per returned row; if your balance is below limit, the API trims the page.
  • App detail: 1 credit per call.
  • App historicals: 1 credit per call.
  • Ads list: 1 credit per returned ad; if your balance is below limit, the API trims the page.
  • Ad detail: 1 credit per call.
  • Creators list: 1 credit per returned creator.
  • Organic content list: 1 credit per returned item.
  • Keyword (single): 10 credits per call.
  • Keyword (batch): 10 credits per keyword that returns data; duplicates removed before charge.
  • Reviews: 1 credit per returned review.

Every response can include X-Credits-Used and X-Credits-Remaining. Balance also appears on the API Keys page.

Rate limits

Per key, 60s sliding window. Useful headers:

Header Meaning
X-RateLimit-Limit Ceiling for the window
X-RateLimit-Remaining Calls left
X-RateLimit-Reset Unix time when the window rolls

429 includes reset timing—back off or wait.

Errors

JSON body includes error; validation issues add details per field.

HTTP Situation
400 Bad input — inspect details
401 Missing or invalid key
402 Out of credits
404 Unknown app
429 Rate limited
500 Server fault
503 Search backend unavailable

Fields you can expect

  • List rows: Title, icon, developer, category, rating, reviews, review growth, download/revenue estimates (e.g. trailing 30d revenue), release/update timestamps.
  • Detail: Everything above plus description, screenshots, versions, IAP catalog, contact hints, socials, hiring flags, and growth summary fields.
  • Historicals: Raw daily series for reviews, score, downloads, revenue, MAU/DAU, size, and price.
  • Ads: Creative assets, copy, status, dates, surfaces, countries, delivery metadata, advertised app fields, and compact app summaries.
  • Creators / organic content: Creator profiles (follower counts, platform, country) and hosted organic creator videos, per app or per category, each annotated with app_slug/app_title.
  • Keywords: Popularity and difficulty (0–100), competing app count, traffic score (0–100), leaderboard snippets (title, icon, reviews, score, rank).
  • Reviews: Rating, title, body, reviewer nickname, date, country, and pagination offsets.

License

MIT