KOL 效果衡量与合同管理
KOL 合作不是"发一条帖子"那么简单——选号、定价、合同、效果追踪、结算,每个环节都可能踩坑。
KOL 合作全流程
graph LR
A[需求定义] --> B[KOL 筛选]
B --> C[报价谈判]
C --> D[合同签署]
D --> E[内容创作]
E --> F[发布上线]
F --> G[效果追踪]
G --> H[结算复盘]
style A fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style G fill:#fff9c4,stroke:#f9a825,stroke-width:2px
style H fill:#c8e6c9,stroke:#43a047,stroke-width:2px
KOL 评估打分系统
from dataclasses import dataclass
from enum import Enum
class KOLTier(Enum):
MEGA = "mega" # 100万+ 粉丝
MACRO = "macro" # 10-100万
MID = "mid" # 1-10万
MICRO = "micro" # 1000-1万
NANO = "nano" # < 1000
@dataclass
class KOLProfile:
name: str
platform: str
followers: int
avg_engagement_rate: float # 互动率 %
avg_views: int
category: str # 美妆/科技/美食...
price_per_post: float
@property
def tier(self) -> KOLTier:
if self.followers >= 1_000_000:
return KOLTier.MEGA
elif self.followers >= 100_000:
return KOLTier.MACRO
elif self.followers >= 10_000:
return KOLTier.MID
elif self.followers >= 1_000:
return KOLTier.MICRO
return KOLTier.NANO
@property
def cpe(self) -> float:
"""Cost Per Engagement 每互动成本"""
engagements = self.avg_views * (self.avg_engagement_rate / 100)
return self.price_per_post / engagements if engagements > 0 else 0
@property
def cpv(self) -> float:
"""Cost Per View 每观看成本"""
return self.price_per_post / self.avg_views if self.avg_views > 0 else 0
class KOLRanker:
"""KOL 综合评分排名"""
WEIGHTS = {
"engagement_rate": 0.30,
"cpe_score": 0.25,
"reach_score": 0.20,
"category_fit": 0.15,
"price_score": 0.10,
}
def score(
self, kol: KOLProfile, target_category: str
) -> dict:
# 互动率评分 (0-10)
er_score = min(10, kol.avg_engagement_rate * 2)
# CPE 评分 (越低越好)
cpe_score = max(0, 10 - kol.cpe * 5) if kol.cpe > 0 else 0
# 粉丝量评分 (对数尺度)
import math
reach_score = min(10, math.log10(max(1, kol.followers)) - 2)
# 类别匹配
category_fit = 10.0 if kol.category == target_category else 3.0
# 价格评分 (越便宜越好, 10万以下满分)
price_score = max(0, 10 - kol.price_per_post / 10000)
scores = {
"engagement_rate": er_score,
"cpe_score": cpe_score,
"reach_score": reach_score,
"category_fit": category_fit,
"price_score": price_score,
}
total = sum(
scores[k] * self.WEIGHTS[k] for k in self.WEIGHTS
)
return {
"kol": kol.name,
"tier": kol.tier.value,
"total_score": round(total, 2),
"detail": {k: round(v, 2) for k, v in scores.items()},
"cpe": f"¥{kol.cpe:.2f}",
}
def rank(
self, kols: list[KOLProfile], target_category: str
) -> list[dict]:
scored = [self.score(k, target_category) for k in kols]
return sorted(scored, key=lambda x: x["total_score"], reverse=True)
KOL 合同核心条款
| 条款 | 要点 | 常见坑 |
|---|---|---|
| 内容数量 | 几条帖子、几个平台 | 未约定 Story/短视频差异 |
| 审核权 | 品牌方可审核修改 | 未约定修改次数上限 |
| 独占期 | 发布后 N 天不接竞品 | 独占期太短,竞品紧随 |
| 数据共享 | 阅读/互动/转化数据 | KOL 不愿分享后台数据 |
| 使用权 | 品牌可二次使用内容 | 未约定使用期限和渠道 |
| 付款条件 | 发布后 N 天付款 | 效果不达标无退款条款 |
| 违约条款 | 延期/删帖的处理 | 无明确赔偿标准 |
KOL 层级投放策略
graph TB
A[KOL 投放金字塔] --> B[Mega 1-2个]
A --> C[Macro 5-10个]
A --> D[Mid 20-50个]
A --> E[Micro 100+个]
B --> B1[品牌背书 + 声量]
C --> C1[品类教育 + 种草]
D --> D1[场景覆盖 + 口碑]
E --> E1[长尾铺量 + 转化]
style B fill:#ffecb3,stroke:#ff8f00,stroke-width:2px
style E fill:#c8e6c9,stroke:#43a047,stroke-width:2px
| KOL 层级 | 粉丝量 | CPE 基准 | 适合目标 | 预算占比 |
|---|---|---|---|---|
| Mega | 100万+ | ¥2-5 | 声量爆发 | 30% |
| Macro | 10-100万 | ¥0.5-2 | 品类教育 | 25% |
| Mid | 1-10万 | ¥0.2-0.8 | 场景种草 | 25% |
| Micro | <1万 | ¥0.05-0.3 | 铺量转化 | 20% |
本章小结
- CPE 比粉丝数更重要——1 万粉的微型 KOL 可能比 100 万粉的性价比更高
- 分层投放——金字塔结构,上层做声量下层做转化
- 合同七大条款——内容量、审核权、独占期、数据、使用权、付款、违约
- 评分排名——综合互动率、CPE、reach、类别匹配、价格五维打分
- 效果归因——UTM 标记 + 专属优惠码 + 落地页追踪
下一章:创意框架与 A/B 测试