1. 引言:选品为什么难?
美妆个护行业的选品,长期依赖买手经验、平台榜单和供应商推荐。这种方式在信息量有限时可行,但当 SKU 数量达到数千甚至上万时,人工判断的效率和一致性都会遇到瓶颈。本文介绍如何用 API 数据驱动的方式,从成分、品牌和价格带三个维度建立一套可复用的选品分析框架。
2. 数据来源与 API 选型
选品分析的第一步是获取结构化数据。常见的数据来源包括电商开放平台、美妆成分数据库和品牌官方 API。实际项目中,通常需要把多个数据源合并使用。
| 数据维度 | 推荐数据源 | 典型字段 |
|---|---|---|
| 成分数据 | CosDNA、EWG、美丽修行开放接口 | 成分名称、安全风险等级、致痘性、功效标签 |
| 品牌数据 | 品牌官网 API、电商品牌店铺接口 | 品牌定位、产地、目标人群、品牌故事 |
| 价格数据 | 电商平台商品 API、比价平台 | 售价、历史价格、促销价、价格带分布 |
| 销量数据 | 电商平台销量接口、第三方数据服务 | 月销量、复购率、评价数、好评率 |
在选型时,需要重点关注接口的调用限额、数据更新频率和字段完整性。建议先用小批量数据做字段映射验证,再进入全量拉取阶段。
3. 成分分析:从成分表到安全评分
成分分析的核心目标,是把非结构化的成分列表转化为可量化的安全与功效指标。这里给出一个基于 Python 的示例流程。
import requests
def fetch_ingredients(product_id, api_key):
url = f"https://api.example.com/products/{product_id}/ingredients"
headers = {"Authorization": f"Bearer {api_key}"}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()
return resp.json()["data"]["ingredients"]
def score_ingredients(ingredients, risk_db):
"""根据成分风险数据库计算安全评分"""
total = 0
for item in ingredients:
name = item["name"]
risk = risk_db.get(name, {"level": 1, "acne": 0})
total += risk["level"] + risk["acne"]
return round(total / max(len(ingredients), 1), 2)在实际项目中,成分数据往往存在命名不统一的问题,例如「水」和「Aqua」指向同一物质。建议在入库前建立成分标准化映射表,把不同语言和别名统一到标准成分 ID 上。
4. 品牌分析:定位与人群匹配
品牌维度主要回答两个问题:这个品牌定位在哪个价格带?它面向什么人群?通过品牌 API 获取的品牌标签和商品结构,可以构建品牌画像。
def build_brand_profile(brand_id, api_key):
url = f"https://api.example.com/brands/{brand_id}"
headers = {"Authorization": f"Bearer {api_key}"}
resp = requests.get(url, headers=headers, timeout=10)
data = resp.json()["data"]
return {
"name": data["name"],
"positioning": data.get("positioning", "unknown"),
"price_range": (data.get("min_price"), data.get("max_price")),
"target_audience": data.get("audience", []),
"hero_ingredients": data.get("hero_ingredients", []),
}品牌画像的价值在于交叉验证。例如,一个主打「敏感肌修护」的品牌,其核心单品如果含有高致痘性成分,就说明产品线存在定位冲突,这类品牌需要谨慎引入。
5. 价格带分析:分位数与竞争密度
价格带分析的目标,是找到竞争相对较少、利润空间合理的价格区间。常用的方法是按价格分位数划分价格带,再统计每个价格带内的商品数和销量集中度。
import pandas as pd
def price_band_analysis(df, n_bands=5):
"""按价格分位数划分价格带并统计竞争密度"""
df["band"] = pd.qcut(df["price"], q=n_bands, labels=False)
result = df.groupby("band").agg(
product_count=("product_id", "count"),
avg_price=("price", "mean"),
total_sales=("sales", "sum"),
).reset_index()
result["sales_share"] = result["total_sales"] / result["total_sales"].sum()
return result一个值得关注的信号是「高销量集中度 + 低商品数」的价格带。这类区间通常意味着头部品牌垄断明显,新品牌进入门槛较高;反之,「低集中度 + 高商品数」的区间则更适合差异化切入。
6. 综合选品评分模型
把成分、品牌、价格三个维度的指标合并,可以构建一个综合评分模型,用于对候选商品排序。
def select_product_score(row, weights=None):
"""综合选品评分:成分安全 + 品牌匹配 + 价格竞争力"""
if weights is None:
weights = {"ingredient": 0.4, "brand": 0.3, "price": 0.3}
ingredient_score = row["ingredient_score"] / 5.0
brand_score = row["brand_match_score"] / 10.0
price_score = 1 - abs(row["price"] - row["band_median"]) / row["band_median"]
price_score = max(0, min(1, price_score))
return (
weights["ingredient"] * ingredient_score
+ weights["brand"] * brand_score
+ weights["price"] * price_score
)权重可以根据业务目标调整。如果主打安全卖点,可以调高成分权重;如果追求快速起量,可以调高品牌和价格权重。建议用历史爆品数据回测权重,而不是凭经验拍脑袋。
7. 落地流程与注意事项
整套方案落地时,建议按以下步骤推进:
- 数据验证:先拉取 100 个 SKU 做字段完整性检查,确认成分、价格、品牌字段无大面积缺失。
- 指标口径统一:明确价格取「到手价」还是「标价」,成分评分用哪个数据库版本,避免口径不一致导致结论偏差。
- 定期更新:成分数据库和价格数据都会变化,建议设置每日或每周的定时更新任务。
- 人工复核:模型输出的是候选清单,最终上架决策仍需结合供应链、库存和平台政策做人工判断。
API 驱动的选品不是要替代买手经验,而是把经验转化为可验证的规则,让选品过程更透明、更可复盘。
8. 总结
本文从成分、品牌、价格带三个维度,介绍了如何用 API 数据构建美妆个护选品分析框架。核心思路是:用成分数据库量化安全性,用品牌 API 构建定位画像,用价格分位数识别竞争密度,最后用加权评分模型输出候选排序。这套方法的价值在于把主观经验转化为可重复、可验证的数据流程,帮助团队在大量 SKU 中更快找到值得投入的选品方向。如有任何疑问,欢迎留言探讨!

