直播复盘生成引擎·专业版
能力
确定性引擎:输入直播数据,自动输出四环节漏斗判定、问题清单、优化动作与下场待办。
引擎源码(可直接运行)
# -*- coding: utf-8 -*-
"""直播复盘生成引擎 livestream_review.py
输入:场观、平均停留秒数、互动数、转粉数、成交金额、成交件数、开播时长分钟
输出:漏斗定位(曝光承接/停留/互动/转化)、各环节判断、优化动作、下次直播待办
商品类引擎,阈值按通用经验区间,禁止编造数据,诊断须基于输入。
"""
from typing import Any, Dict, List, Union
def _validate_number(v: Any, name: str, lo: float, hi: Union[float, None] = None) -> float:
if isinstance(v, bool) or not isinstance(v, (int, float)):
raise ValueError(f"{name}必须为数字,收到 {type(v).__name__}")
f = float(v)
if f < lo:
raise ValueError(f"{name}不能小于{lo},收到 {f}")
if hi is not None and f > hi:
raise ValueError(f"{name}不能大于{hi},收到 {f}")
return f
def _rate(a: float, b: float) -> float:
return a / b if b > 0 else 0.0
def review(
views: Union[int, float],
avg_stay_sec: Union[int, float],
interactions: Union[int, float],
new_followers: Union[int, float],
sales_amount: Union[int, float],
sales_units: Union[int, float],
duration_min: Union[int, float],
prev_views: Union[int, float] = 0,
) -> Dict[str, Any]:
"""生成直播复盘诊断。
判定规则(确定性阈值):
- 停留:平均停留≥90秒为优,45-90秒为一般,<45秒为流失风险
- 互动率:互动/场观 ≥5% 为优,1%-5% 为一般,<1% 为弱
- 转粉率:转粉/场观 ≥3% 为优,1%-3% 为一般,<1% 为弱
- 转化:销售额>0 记成交;客单价=销售额/件数
- 场观环比:相对 prev_views 判断涨跌
"""
views = _validate_number(views, "views", 1)
avg_stay_sec = _validate_number(avg_stay_sec, "avg_stay_sec", 0)
interactions = _validate_number(interactions, "interactions", 0)
new_followers = _validate_number(new_followers, "new_followers", 0)
sales_amount = _validate_number(sales_amount, "sales_amount", 0)
sales_units = _validate_number(sales_units, "sales_units", 0)
duration_min = _validate_number(duration_min, "duration_min", 1)
prev_views = _validate_number(prev_views, "prev_views", 0)
interact_rate = _rate(interactions, views)
follow_rate = _rate(new_followers, views)
avg_unit = _rate(sales_amount, sales_units) if sales_units > 0 else 0.0
view_change = _rate(views - prev_views, prev_views) if prev_views > 0 else None
issues = []
actions = []
if avg_stay_sec < 45:
issues.append("停留流失风险")
actions.append("前5分钟上福利钩子/利益点,压缩开场铺垫,30秒内给出停留理由")
elif avg_stay_sec < 90:
issues.append("停留一般")
actions.append("中段增加互动抽奖与节奏切换,按10-15分钟一个钩子循环")
else:
actions.append("停留数据健康,保持当前开场节奏")
if interact_rate < 0.01:
issues.append("互动弱")
actions.append("增加口播提问、评论区点菜、限时扣1/扣暗号动作")
elif interact_rate < 0.05:
issues.append("互动一般")
actions.append("设置互动奖励(整点抽/扣1进群),引导弹幕关键词")
else:
actions.append("互动健康,沉淀话术模板复用")
if follow_rate < 0.01:
issues.append("转粉弱")
actions.append("强化关注利益点(关注送资料/下次开播提醒),下播前集中引导一次")
elif follow_rate < 0.03:
issues.append("转粉一般")
actions.append("每半小时做一次关注引导,配合关注弹窗与口令")
else:
actions.append("转粉健康")
if sales_units > 0:
actions.append(f"本场成交{sales_units}件、客单价{round(avg_unit,2)}元,复盘高转化款的话术与展示顺序,下场上架顺序前移")
else:
issues.append("零成交")
actions.append("检查选品与价格锚点:本场是否缺引流款/主推款结构,下播后做商品点击率复盘")
if view_change is not None:
if view_change > 0.05:
actions.append(f"场观环比+{view_change*100:.0f}%,验证本场引流动作(预告/短视频/付费),下周复刻")
elif view_change < -0.05:
actions.append(f"场观环比下滑{abs(view_change)*100:.0f}%,复盘引流入口:预告频次、短视频挂载、开播时间是否被平台流量低谷期影响")
return {
"funnel": {
"stay": {"level": "优" if avg_stay_sec >= 90 else ("一般" if avg_stay_sec >= 45 else "流失风险"), "value_sec": avg_stay_sec},
"interaction": {"level": "优" if interact_rate >= 0.05 else ("一般" if interact_rate >= 0.01 else "弱"), "rate": round(interact_rate, 4)},
"follow": {"level": "优" if follow_rate >= 0.03 else ("一般" if follow_rate >= 0.01 else "弱"), "rate": round(follow_rate, 4)},
"sales": {"units": sales_units, "amount": sales_amount, "avg_unit": round(avg_unit, 2)},
},
"issues": issues,
"actions": actions,
"next_todo": [
"1. 按上方动作项逐条落到下场直播脚本,明确到分钟",
"2. 下播后导出商品点击/转化明细,核对主推款表现",
"3. 固定记录每场数据,建立本账号基线后再按周对比",
],
"boundary": "阈值为通用经验区间,不同品类/账号阶段差异大,累计5场以上后须按自身基线校准。",
}
输入输出
- 输入:场观、平均停留秒、互动数、转粉数、成交金额、成交件数、时长分钟、上场场观(可选)
- 输出:四环节漏斗判定(等级+数值)、问题清单、优化动作清单、下场三条待办
断言实测(发布前本地实跑,20/20 通过)
- 3 业务正例:健康场次(停留90秒/互动8%/转粉4%/客单价200全优);问题场次(停留30秒/互动0.4%/零成交→流失+弱+选品动作);一般场次(停留60秒/互动3%/场观环比-17%→下滑提示)
- 边界:场观=1不报错;件数=0不除零客单价=0;互动率5%恰好为优、1%恰好为一般
- 4 类非法入参拦截:场观0、场观非数字、时长0、停留-1