用途
App Store Operator 是一款为 Claude 等 AI 助手设计的 MCP(Model Context Protocol)服务器,将 App Store 竞争情报直接引入 AI 对话。目标用户是独立 iOS 开发者,希望在做出决策的同一对话里获取关键词排名、竞品下载与收入估算,或生成可直接用于 App Store Connect 的应用内活动文案,而不必切换到另一个仪表盘或浏览器标签。项目免费、开源(MIT),定位为 SensorTower、AppTweak、AppFollow 在 iOS 专用竞争研究上的轻量替代方案。
主要能力
服务器暴露四个工具、六个提示词和七个资源,全部为只读,不会写入 App Store Connect、SensorTower 或任何外部位置,仅写入本地缓存文件。
- research_rivals:针对给定关键词查找前 3 名应用,并返回每个竞品的完整指标报告,包括 App Store 与 SensorTower URL、全球及上月下载量与收入、评分与评分数量、发行商、分类、主要市场、发布日期、最后更新、支持语言、应用内购买与广告网络情况。结果缓存 24 小时,再次查询同一关键词与国家不消耗网络请求。
- search_app_store:按关键词即时搜索 App Store,以 Markdown 表格返回排名结果,无需 SensorTower。用于发现哪些应用排名靠前,再配合 get_app_details 获取分析数据。
- get_app_details:针对已知的一个或多个应用 ID 抓取 SensorTower 分析数据,返回全球及上月下载量与收入等。不缓存,每次调用实时抓取,每个应用 ID 约需 10–20 秒。
- prepare_iae:生成 iOS App Store 应用内活动(IAE)文案,输出目标语言的 3 个变体及最终报告。每个变体包含事件名称(≤30 字符)、简短描述(≤50 字符)和长描述(≤120 字符)。
SensorTower 未披露或付费墙后的字段返回 N/A,服务器如实报告数据缺口而不编造。
使用方式
作为 MCP 服务器,可接入 Claude Code、Claude Desktop 或 OpenAI Codex。Claude Code 运行一次安装命令;Claude Desktop 需在 MCP 配置中添加;Codex 将 MCP 服务器存入 ~/.codex/config.toml,也可直接编辑该文件。无需安装步骤,npx 会自动获取并运行包。
服务器通过 stdio 通信,设计为由 MCP 客户端调用。启动时会声明服务器级指令以正确路由工具,并在需要 SensorTower 登录时返回 MCP 工具错误。两个可选环境变量可配置服务器进程。仓库提供基于 Playwright 官方镜像的 Dockerfile,容器无端口暴露,MCP 客户端指向容器标准输入输出;但容器无显示,search_app_store 和 prepare_iae 可用,两个 SensorTower 工具无法打开登录窗口。
使用示例:
- Research rivals for "hairstyle" in the GB App Store
- Search the App Store for "beard style" in France
- Prepare an in-app event for a summer hairstyle campaign in en-gb
首次运行 research_rivals 或 get_app_details 会打开一个可见的 Chromium 窗口,这是有意设计:SensorTower 需要登录,会话保存到 ~/.app-store-operator/profile 并复用,只需登录一次。若工具报告 not_logged_in,在该窗口完成登录后再次运行即可。research_rivals 的结果缓存于 ~/.app-store-operator/cache.json,默认 24 小时,可通过 ASO_CACHE_TTL_HOURS 覆盖。
适用场景
- 独立 iOS 开发者进行关键词排名与竞品分析。
- 估算竞品下载量与收入,了解其市场分布与发行商信息。
- 快速生成 App Store Connect 可用的应用内活动文案。
- 在 AI 助手对话中完成 ASO 研究工作流,而非切换多个浏览器标签。
限制
- 仅支持 iOS,不覆盖 Google Play 或 Android。
- 所有工具均为只读,不修改 App Store Connect 或 SensorTower 中的任何内容。
- research_rivals 固定返回前 3 名结果;需要更广范围时改用 search_app_store(最多 25 个)再配合 get_app_details。
- 抓取本身具有脆弱性:SensorTower 仪表盘为客户端渲染且会无预警更改标记,届时受影响字段返回 N/A,直到选择器更新;单个应用失败不会导致整个调用失败。
- SensorTower 免费层决定可见数据,付费墙后的数值返回 N/A。
- research_rivals 与 get_app_details 需要桌面环境和显示,无法在纯 SSH 或容器内使用;安装包会通过 postinstall 下载 Playwright Chromium 构建(数百 MB),若失败则在首次使用时安装,也可手动运行 npx playwright install chromium。
隐私
App Store Operator 完全在本地运行,无后端、无遥测、无分析,作者不收集、接收或存储任何用户与使用信息。本地仅存储 cache.json(缓存,默认 24 小时过期)和 profile(保存 SensorTower 会话的 Chromium 配置文件)。用户在 SensorTower 自身页面输入凭据,服务器从不读取或存储密码。删除全部数据无需向作者请求。Apple 与 SensorTower 为独立第三方,本项目与二者无关联。