关于 revenuecat-store-state
RevenueCat 产品商店状态管理技能,面向通过 MCP 或 `rc` CLI 配置商店产品的人。它以可审阅的计划和显式确认控制写入,覆盖检查、规划、应用及提交审核流程。
主要功能
- 01读取真实商店状态与警告
- 02创建并审阅状态变更计划
- 03确认后应用商店写入
- 04处理价格、供应情况与本地化
- 05管理计划并跟踪应用结果
适用场景
- 01检查产品的商店价格和可用性
- 02规划订阅价格及促销变更
- 03在应用前审阅生产环境改动
- 04应用后提交 App Store 审核
MCP 相关
说明了 RevenueCat MCP 工具与 `rc` CLI 共用计划和应用模型,并列出相关 MCP 工具及工作流。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ revenuecat/ ai-toolkit --skill revenuecat-store-state安装后在 Claude Code 中输入/revenuecat-store-state确认已加载。
详细介绍
管理产品商店状态
商店状态是价格、可用性、本地化内容和优惠的事实来源。读取会立即返回。写入通过产品商店状态计划进行:创建草稿,计算可供审核的差异,然后应用。在应用计划之前,任何内容都不会写入商店。
MCP 和 rc CLI(请参阅 revenuecat-cli 技能)使用相同的计划/应用模式。优先使用可用的方式。有关准确参数,请参阅 MCP 工具的架构(或运行 rc commands --schemas --json)。
每个项目最多只能有一个活动计划(非终态)。创建新计划前先列出计划;如果创建失败,原因是已有计划正在进行,请获取该计划,说明待处理的内容,并与用户确认是继续还是丢弃。
读取
始终使用 get-product-store-state(CLI:rc products show <product-id> --store-state)。切勿根据 get-product、list-products 或权益数据推断商店价格、可用性或试用期——这些属于 RevenueCat 目录,而非商店状态。展示响应中的 warnings。
如果 store_status.status 为 could_not_check,表示 RevenueCat 无法读取商店:pricing、availability 或 localizations 为空意味着读取失败,而非未配置任何内容。应说明无法从商店读取该产品,不要猜测原因——切勿说该产品没有商店价格。
前提条件
写入商店状态需要将商店凭据连接到 RevenueCat 项目(App Store Connect API 密钥,或拥有 Manage store presence 权限的 Google Play 服务账号),并且 RevenueCat 登录账号需拥有该项目的写入权限。如果写入因凭据或权限错误而失败,请说明缺少什么以及如何解决(在控制面板的应用设置中配置商店凭据),不要重试。
应用前确认
应用操作会写入生产商店,并可能改变实际客户看到和支付的内容。在展示计划中的差异并获得用户明确确认之前,绝不要调用 apply。
计划成功后:
- 用通俗语言总结
summary和每个plan_items[*].diff(逐字段说明变更前 → 变更后)。 - 原样报告所有警告(
severity、field、message),包括warnings和plan_items[*].warnings中的警告。绝不要降低阻塞级别,也不要辩称验证器不适用于该商店(不要说“地区限制有阻塞项,但不适用于 Play——正在应用”)。如果任何plan_items[*].warnings的severity为blocker,绝不要应用计划。修正目标状态、更新计划并重新规划,直到没有项目级阻塞项。 - 分享每个所述计划的控制面板审核 URL——包括规划失败的计划(页面会显示错误)以及阻止新计划创建的现有计划:
https://app.revenuecat.com/projects/{project_id}/product-catalog/product-editor/review-changes?plan_id={plan_id}draft尚无审核页面;应改为说明其内容。 - 等待用户明确同意。逐一确认每个产品的变更,或将其作为一批清晰列出的变更统一确认——绝不要把无关变更合并为一次确认。
- 只有在
actions包含apply时,才调用 apply。
读取无需确认。将产品提交给 Apple 审核属于另一项需要单独确认的写入操作(submit-products-to-store)。
推荐的写入流程(MCP)
- 先检查。 在决定所需变更之前,对现有产品调用
get-product-store-state。 - 创建草稿计划。 调用
create-product-store-state-plan,每个产品对应一个desired_states条目。- 将现有 RevenueCat 产品作为目标,提供
product_id;或传入create_revenuecat_product(app_id、store_identifier、type、display_name和title——如果用户只提供了一个名称,则两个字段都使用该名称)。 - 将
store设为app_store、play_store、rc_billing或test_store,并填写匹配的store_state。 - 在所需状态中填写价格、可用性、本地化内容,以及用户提供的审核截图。不要调用
create-product-prices、upload-product-store-state-screenshot或equalize-subscription-prices。 - App Store 订阅:将要保留的价格传入
territory_prices,并加入common.pricing.equalize_missing_subscription_prices,设置base_territory,以便在应用时填充缺失的 Apple 区域。App Store 一次性产品不要传入该字段。 - App Store 审核截图:除非用户提供了图片,否则省略截图,以便应用时上传空白占位图。
- RC Billing / Test Store:价格应填写在
common.pricing.currency_prices中(仅用于创建;更新现有币种会被拒绝)。这里不支持价格均衡,因此每种币种的价格都必须由用户提供。 - Play Store 订阅:设置
store_state.base_plans[<id>].other_regions_config.usd_price(如果涉及欧元区,也设置eur_price),以便 Google 自动填充未列出的区域;仅对用户要覆盖的区域使用regional_configs[<region>].price。 - 切勿臆造区域或币种价格,也不要使用汇率进行换算。如果用户没有提供某个区域的价格,请询问是否要通过上述商店机制以另一种币种的价格填充。所有价格均使用
amount_micros(1 个单位 = 1,000,000 微单位)。 - 已批准的 App Store 订阅(通过
get-product-store-state检查):Apple 不会立即应用价格或首购优惠变更。对每个要更改的territory_prices[<territory>]条目,以及要新增的任何首购/试用优惠,都设置未来的start_date(次日即可),否则 Apple 会拒绝变更,应用流程也会在该区域停止。对未设价格的区域,继续使用equalize_missing_subscription_prices;它会将基准区域的start_date带入这些区域。告知用户变更生效时间,并在同一轮中创建计划;不要仅因为日期而在规划前征求确认。 - 所需状态是补丁:省略的字段保持不变,映射值为
null会删除该条目,territories: false会移除可用性。
- 将现有 RevenueCat 产品作为目标,提供
- 规划。 调用
plan-product-store-state-plan,然后轮询get-product-store-state-plan,直到状态为planned、planned_and_finished或plan_errored。 - 与用户审核。 遵循应用前确认。如果规划失败,报告
error_message/各项错误和审核 URL;不要应用。 - 应用。 调用
apply-product-store-state-plan。然后轮询get-product-store-state-plan,直到状态为applied或apply_errored。分享进度 URL:https://app.revenuecat.com/projects/{project_id}/product-catalog/product-editor/commit-to-store?plan_id={plan_id}。如果应用预计需要超过约 10 分钟,请停止轮询,告知预计完成时间,并引导用户访问该页面(或稍后再来询问)。报告每个产品的apply_status和任何apply_error_message。应用会在首个失败项处停止,之前已处理的项会保留;重试时只会重新执行未应用的项。如果应用失败是因为商店在规划后发生了变化,请告知用户,并基于最新状态创建新计划。 - 准备就绪后提交审核。 仅适用于 App Store:应用成功后,变更已进入 App Store Connect,但尚未提交给 Apple。可为刚刚应用的产品调用
submit-products-to-store(确认写入)。只提交用户要求提交的产品,或刚刚应用的产品(apply_status: applied,或出现在get-product-store-state中的产品);绝不要提交所有看似准备就绪的产品。报告各产品的结果,包括跳过的产品;如果提交失败,说明原因并停止。Play Store、RC Billing 和 Test Store 跳过此步骤。 要放弃草稿或已规划的计划,请使用discard-product-store-state-plan。要更改草稿,请先使用update-product-store-state-plan,然后重新规划。
注意事项
- App Store 本地化:名称不得超过 30 个字符,描述不得超过 45 个字符。API 会接受更长的值,但 Apple 会在应用时拒绝这些值。
- 无法删除商店产品。要停用某个产品,请将其销售地区设为
false(并将 Play 基础方案移出ACTIVE),然后使用archive-product,以便该产品也不再显示在 RevenueCat 中。
CLI 对应命令
有关安装、身份验证和架构发现,请参阅 revenuecat-cli 技能。对应关系如下:
- 读取:
rc products show <product-id> --store-state - 创建并计算差异:
rc products store plan <app-id> --file <csv|json> - 重新显示已保存的计划:
rc products store show <plan-id> - 应用 / 放弃:
rc products store apply <plan-id>/rc products store discard <plan-id>
CLI 的 apply 会等待操作完成(无需单独轮询)。仍需先显示计划差异并等待确认,然后再执行 apply。使用 rc commands --schemas --json 确认准确的标志。
请勿使用这些 MCP 工具执行写入操作
这些工具可能仍会显示在 MCP 目录中。它们会直接写入单个产品,且不会提供可预览的计划。请优先使用上述计划工具。
set-product-store-stateget-product-store-state-operationcreate-product-pricesupload-product-store-state-screenshotequalize-subscription-prices