SuperAPI AI 工具集

shopify-admin-bulk-price-adjustment

营销与增长

查看项目

更新于 10-15 09:34

技能介绍

用途

该技能对 Shopify 某个集合或标签下的所有商品变体,在单个自动化流程中应用百分比或固定金额的价格调整,无需在后台手动逐个操作商品、导出 CSV、编辑再重新导入。适用场景包括:全店或集合级促销、促销结束后恢复价格、传导供应商成本上涨,或统一某类商品的定价。

主要能力

  • 按集合(collection_id)或标签(tag)筛选目标商品,二者必选其一。
  • 支持两种调价方式:百分比(percent)或固定金额(fixed)。调整值为正表示涨价,为负表示降价;例如 percent 下 -10 表示打九折。
  • 支持最低价(min_price,默认 0)和最高价(max_price,可选)约束,确保变体价格不被设置到区间之外。
  • 自动分页:集合商品超过 250 个时自动翻页,CSV 会包含全部变体。
  • 支持 dry_run 预览模式,仅生成变更清单而不执行实际修改。
  • 输出 CSV 文件 price_changes_<YYYY-MM-DD>.csv,列为 product_id、variant_id、sku、title、old_price、new_price。
  • 支持 human 与 json 两种输出格式,并在各阶段输出会话跟踪信息。

使用方式

前置条件:

  • 已认证的 Shopify CLI 会话:shopify auth login --store <domain>
  • API 权限范围:read_products、write_products

参数:

  • store(字符串,必填):店铺域名,例如 mystore.myshopify.com
  • format(字符串,可选,默认 human):输出格式,human 或 json
  • dry_run(布尔,可选,默认 false):预览操作而不执行变更
  • collection_id(字符串,可选*):目标集合的 GID,例如 gid://shopify/Collection/123
  • tag(字符串,可选*):用于筛选的商品标签(collection_id 的替代项)
  • adjustment_type(字符串,必填):percent 或 fixed
  • adjustment_value(浮点数,必填):调整量。正数为涨价,负数为降价。percent 下 -10 表示 10% 折扣
  • min_price(浮点数,可选,默认 0):价格下限,任何变体不会被设置到低于此值
  • max_price(浮点数,可选):价格上限,任何变体不会被设置到高于此值

*collection_id 与 tag 必须提供其中一个。

工作流程:

  1. products 查询:输入 first: 250、query: "collection_id:'<id>'" 或 query: "tag:'<tag>'"、分页游标;输出包含全部变体 ID、当前价格、SKU 的商品列表,翻页直到 hasNextPage: false。
  2. productVariantsBulkUpdate 变更:对每个商品传入 productId 与 {id, price} 数组(已按 min_price/max_price 约束计算新价格);输出每个变体的更新价格与 userErrors 数组,收集所有批次中的错误。

GraphQL 操作(已针对 api_version 2025-01 验证):

# products:query
query ProductsForPriceAdjustment($first: Int!, $after: String, $query: String) {
  products(first: $first, after: $after, query: $query) {
    edges {
      node {
        id
        title
        tags
        variants(first: 100) {
          edges {
            node {
              id
              title
              price
              compareAtPrice
              sku
            }
          }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

# productVariantsBulkUpdate:mutation
mutation ProductVariantsBulkUpdate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
  productVariantsBulkUpdate(productId: $productId, variants: $variants) {
    productVariants {
      id
      price
      compareAtPrice
    }
    userErrors {
      field
      message
    }
  }
}

适用场景

  • 运行全店或集合级促销。
  • 促销结束后恢复价格。
  • 传导供应商成本上涨。
  • 统一某类商品的定价。

限制与安全注意事项

  • 第 2 步会执行 productVariantsBulkUpdate 变更,立即修改线上价格。价格变更无法通过 API 批量撤销,每个变体必须单独恢复。
  • 务必先以 dry_run: true 运行,审阅完整变更集后再提交;提交前核对 dry_run 输出的 CSV 是否符合预期。
  • 建议将 min_price 设为成本下限,防止百分比折扣时变体价格低于成本。
  • 提交后、公布促销前,应在 Shopify 后台抽查部分价格;userErrors 会被记录但不会中止执行。

错误处理:

  • 未提供 collection_id 或 tag:两者均为空,需提供其中之一。
  • 变更响应中出现 userErrors:价格无效或变体未找到,按变体记录错误,继续处理其余变体,并在结果中报告。
  • 集合中未找到商品:collection_id 错误或集合为空,需在 Shopify 后台核对集合 GID。
  • 速率限制(429):短时间内变更过多,减小批次大小并以指数退避重试。