SuperAPI AI 工具集

shopify-admin-product-affinity-cross-sell

营销与增长

查看项目

更新于 10-15 09:35

技能介绍

用途

该技能将购物篮分析(market basket analysis)应用于 Shopify 店铺的订单历史,找出顾客自然一起购买的商品对。对每一对共同购买的商品,计算支持度(该组合出现的频率)、置信度(在购买商品 A 的情况下购买 B 的可能性)和提升度(比随机共同出现高出多少倍)。输出结果可作为商品捆绑、"经常一起购买"组件、交叉销售邮件流程和首页推荐的可执行输入。该技能为只读操作,不执行任何数据变更。

主要能力

  • 查询指定日期范围内的多商品订单,构建商品频率图和商品对频率图。
  • 对每个满足最低支持度的商品对计算:支持度 = 商品对出现次数 / 总订单数;置信度 A→B = 商品对出现次数 / 包含 A 的订单数;置信度 B→A = 商品对出现次数 / 包含 B 的订单数;提升度 = 支持度 / (P(A) × P(B))。
  • 按置信度和提升度过滤,按指定指标(lift、confidence 或 support)排序,截取前 top_n 个商品对。
  • 输出 CSV 文件 product_affinity_<YYYY-MM-DD>.csv,包含排名、商品 A/B 的 GID 与名称、共同出现次数、支持度、双向置信度、提升度以及推荐类型(提升度 > 2 为 bundle_candidate,否则为 cross_sell)。
  • 支持 human 和 json 两种输出格式,human 格式输出结果摘要和排名表格,json 格式输出结构化结果。

使用方式

前置条件:已认证的 Shopify CLI 会话(shopify auth login --store <domain>),API 权限范围 read_orders、read_products。

参数:

  • store(字符串,必填):店铺域名,例如 mystore.myshopify.com。
  • format(字符串,可选,默认 human):输出格式,human 或 json。
  • dry_run(布尔,可选,默认 false):预览操作而不执行变更。
  • date_range_start(字符串,必填):起始日期,ISO 8601 格式,例如 2025-01-01。
  • date_range_end(字符串,必填):结束日期,ISO 8601 格式,例如 2025-03-31。
  • min_support(整数,可选,默认 5):商品对必须共同出现的最小订单数。
  • min_confidence(浮点数,可选,默认 0.1):最小 P(B|A) 阈值(0–1)。
  • min_lift(浮点数,可选,默认 1.0):仅包含提升度大于该值的商品对(大于 1 表示非随机)。
  • top_n(整数,可选,默认 20):排名输出中显示的商品对数量。
  • sort_by(字符串,可选,默认 lift):排名指标,lift、confidence 或 support。
  • exclude_tags(字符串,可选):以逗号分隔的要排除的商品标签,例如 gift-wrap,donation。

工作流程:首先通过 GraphQL 查询订单(first: 250,按日期范围过滤,分页游标),选择 lineItems 中的 product { id, title } 和 quantity,跳过只有单个行项目的订单;分页直到 hasNextPage: false,构建商品频率图和商品对频率图。然后在内存中分析:对每个包含至少 2 个不同商品的订单,枚举所有唯一无序对并递增计数器;对满足 min_support 的每个商品对计算指标;按 min_confidence 和 min_lift 过滤,按 sort_by 排序,截取 top_n。

适用场景

  • 构建商品捆绑或批量折扣:提升度 > 2 的商品对是强捆绑信号。
  • 配置"经常一起购买"组件:置信度 A→B > 30% 表示十位购买 A 的顾客中有三位也购买 B,适合作为可靠推荐。
  • 交叉销售邮件流程和购物车追加销售:cross_sell 类型的商品对更适合购物车追加销售和购后邮件推荐。
  • 首页推荐。

限制

  • 需要已认证的 Shopify CLI 会话和 read_orders、read_products 权限。
  • 建议使用至少 90 天的订单历史,短时间窗口会因概率分母过小而产生噪声较大的提升度分数。
  • 对于每单行项目数量非常大的店铺,商品对枚举循环会跳过包含超过 20 个不同商品的订单,以限制 O(n²) 增长。
  • 若行项目上的 product 为 null(购买后商品被删除),跳过该商品对分析,但订单仍计入总数。
  • 若没有满足阈值的商品对,可降低 min_support 至 2、min_confidence 至 0.05,或扩大日期范围。
  • 遇到 THROTTLED 错误时等待 2 秒,最多重试 3 次;若持续出现则缩小日期范围。
  • 建议每季度重新运行,因为季节性商品会进入和退出热门商品对列表。
  • 使用 exclude_tags 过滤配件和附加项(如礼品包装或捐赠 SKU),避免它们虚增支持度分数。