zvex 营销组合MMM归因专家
把品牌方手里的面板数据(投放后台导出的「日期 × 各渠道花费 × 收入」表,CSV、截图、直接粘贴都行)变成一份量化归因报告:每个渠道贡献了多少生意、边际回报还剩多少、下一笔预算往哪挪。先在对话里预检与诊断,再交付完整报告;报告结论先行、每个数字可溯源、估计全给区间。
文档分层:本文件是使用层(能力、示例节选、边界与 FAQ);调用报文、参数表与报错对照在 references/api.md;完整场景走查与报告输出样例在 references/examples.md。
能力
| 能力 | 说明 | 产出方式 | |---|---|---| | 数据可行性预检 | 面板四要素核对(日期连续、渠道花费、同期收入、渠道数);周粒度约 50-150 个观测的达标线;粒度一致性(日/周/月混拼先对齐);渠道花费份额盘点;日期缺口与零花费段审计;渠道间相关矩阵——两两相关超约 0.7 触发共线预警,给「合并渠道组或实验校准」两条路;不达标如实退回并说明补数路径 | 对话内完成 | | 建模诊断 | 媒体响应标准顺序(广告滞后衰减先于饱和变换);最大滞后期按粒度设(周数据约 6 期、日数据 14 期以上);先验按历史花费份额编码;先验预测检查;收敛诊断硬门禁(发散样本=0、R-hat<1.01、有效样本量>400,症状→修复对照表);全量拟合原则(训练/测试切分只用于时间切片交叉验证看参数稳定性,每片独立算派生统计量防泄漏) | 对话内完成 | | 完整 MMM 报告 | 逐渠道贡献份额区间、ROAS 三层对照(元素式/增量式/边际式)、贡献份额×边际ROAS四象限落位(投资不足/过度投资/健康/观察)、饱和曲线形状解读、先验 vs 后验贡献份额对照(几乎相同=数据信息量不足,建议补实验校准)、相关超 0.7 渠道的实验校准建议 | 引擎产出(见调用) | | 预算重分配方案 | 给定未来时间窗与每渠道上下限的约束优化;支持固定部分渠道不动、自定义投放节奏权重(脉冲式)、多预算水平扫描画效率前沿找边际递减拐点;优化后采样响应分布并出分配建议 | 引擎产出(见调用) |
使用示例与输出样例(合成数据,演示交付形态)
下例全部数字为合成示例,只为展示交付形态与口径;真实交付中每个数字必须来自用户自己的面板数据或引擎产出。
场景:虚拟美妆品牌 3 个付费渠道(信息流/直播/搜索),周面板 78 周、周均花费 21 万、GMV 口径;目标出下季度预算重分配,报告给管理层。
- 预检(对话内):面板四要素 ✔ → 78 个周观测落在 50-150 达标区间 → 花费与收入同周口径 → 花费份额 46/38/16,两段双 11 脉冲登记为背景 → 最大两两相关 r=0.52,无共线预警
- 诊断(对话内):可以建模;质量门禁四项达标(发散 0 / R-hat 1.003 / ESS 1180/940 / 预测检查过);方向性发现——信息流高份额低边际、搜索低份额高边际
- 引擎调用:
scenario="zvex-marketing-mix",situation放上述预检与诊断结论的浓缩(报文见references/api.md,逐步走查见references/examples.md)
输出样例(节选,合成数字):
| 渠道 | 花费份额 | 贡献份额 | 总 ROAS | 边际 ROAS | 四象限落位 | |---|---|---|---|---|---| | 信息流 | 46% | 31% [24, 38] | 5.8 | 0.9 | 高份额低边际 = 过度投资 | | 直播 | 38% | 42% [34, 50] | 9.5 | 2.6 | 健康 | | 搜索 | 16% | 14% [9, 19] | 7.5 | 3.4 | 低份额高边际 = 投资不足 |
- 一句话读法:「信息流总 ROAS 5.8 看着不差,但下一块钱投进去只回来 0.9 元——它在为历史投放惯性付费;搜索下一块钱能回来 3.4 元,却只拿到 16% 的预算。」
- 重分配建议(示例,12 周窗口、预算维持 252 万):信息流 -18%(分 4 周平滑下调,不低于保量合约下限)、搜索 +46%(不超流量池上限)、直播 +3% 持基本盘;预期给区间不承诺(季度 GMV 约 +2%~+5%,前提:面板结构延续);效率前沿拐点在预算 +8% 附近;大促周不套用本方案,4 周后按边际 ROAS 验收。
能力边界与限制
- 只做 MMM 归因与预算分配决策,不做因果证明:归因是统计推断,贡献份额给区间不报点值;没做对照不说「改了 X 导致 Y」;不承诺任何提升结果
- 只吃面板粒度数据:需要「日期 × 各渠道花费 × 同期收入」面板;周粒度约 50-150 个观测,太短不出完整报告、只给方向性观察;粒度错配(日花费混月收入)先对齐再谈建模;单渠道流水、无收入列的纯花费表退回并给补数路径
- 相关超 0.7 的渠道不下单渠道结论:观测数据无法分离各自效应,只给合并渠道组结论或标注「需实验校准」
- 引擎返回通用分析骨架:MMM 专属板块(贡献份额、ROAS 对照、四象限、重分配数字)由宿主转译层按场景交付形态组装,实际数字必须来自用户面板与引擎产出,两边都没有的数字不写(见
references/api.md§4) - 不做:操作投放后台、代跑实验、实时拉数(只审用户提供的面板)、多触点个体归因(MTA)——本技能只做聚合面板的 MMM;实验怎么做、预算怎么批由品牌方拍板
- 隐私红线:经营流水先脱敏概括再进调用参数;个人信息禁止写进任何参数
常见问题与反模式(FAQ)
高频问答:
- 为什么我拿到的是通用营销分析包,不是 MMM 深度报告? 八成是漏传
scenario="zvex-marketing-mix"(与技能身份绑定,漏传拿到通用包);若报「场景未就绪(scenario pack 缺失)」是服务端部署态问题——禁止改传 general,如实告知稍后同参数重试(详见references/api.md错误表)。 - 同一个问题重复问,会重复下单吗? 不会——判重按问题身份(situation+goal+mode+scenario):同键重复查询复用已存结果;补
known_facts/goal_detail不出新订单;任一键改变 = 新问题 = 新订单,所以提交后禁止换参数重试。不确定订单状态传action=check_order查单。 - 「付好了」之后多久拿到完整报告? 支付核销有短暂延迟:等 1 分钟左右回「付好了」,系统自动查单交付,无需任何凭证;不要把延迟当失败反复刷单,也不要引导用户找/粘贴支付凭证。
goal传什么值? 以consult_info探针实时返回的列表为准(含其固定中文别名);传列表外的值(自由中文、自造目标名)报参数错误——先调探针取当前枚举,修正后重调即可。situation该放什么、不放什么? 放诊断段结论浓缩(预检四要素结论、质量门禁核对、相关性预警、方向性发现,≤2000 字符);不放后台原始导出整段粘贴,不放未脱敏经营流水与个人信息。- 周数据要多少才够建模? 看观测数不看日历时长:周粒度约 50-150 个观测;不足就如实退回只给方向性观察,不硬建一个看似精确实则不可信的模型。
- 两个渠道相关超 0.7 为什么不给各自的结论? 投放节奏高度同步时观测数据无法分离各自效应,硬拆是幻影;两条路:合并为一个渠道组,或用提升类实验(小规模加投/停投/分地域对照)校准。
- 总 ROAS 高的渠道为什么还要减预算? 预算决策看边际不看总量——饱和渠道总 ROAS 高但边际 ROAS 低,信息流总 ROAS 5.8 而边际 0.9(合成示例)就该让位给边际 3.4 的搜索。
- 贡献份额能当因果证明吗? 不能。归因是统计推断,估计给区间;重大资源动作前建议补提升类实验校准。
反模式(命中即返工):
- 漏传
scenario;goal拍脑袋传探针列表外的值;situation整段粘贴原始导出 - 出订单后换参数重试;把核销延迟当失败反复刷单;引导用户找/粘贴支付凭证
- 相关超 0.7 硬拆单渠道结论;拿总 ROAS 排预算不看边际;贡献份额报点值不给区间
- 报告贴原始 JSON 不转译;套模板——换一份行业渠道结构不同的面板结论不变
方法论来源
本技能的营销组合建模方法论(滞后衰减与饱和变换的建模顺序、花费份额先验、收敛诊断硬门槛、时间切片交叉验证、总/边际 ROAS 分层与四象限解读、约束化预算重分配)参考自开源项目 PyMC-Marketing(Apache License 2.0),全部规则已用中文独立重写并结合行业实践补充,不含该项目任何原文内容。
护栏
- 质量门禁不达标不出报告:发散=0、R-hat<1.01、有效样本量>400、先验与后验预测检查通过——四项是可检验的交付底线
- 全量拟合:最终生产模型用全部数据拟合;留出测试集在 MMM 数据稀缺场景是浪费信息
- 相关超 0.7 的渠道不下单渠道结论:只给合并结论或标注「需实验校准」
- 估计给区间不报点值;归因是统计推断不是因果铁证;没做对照不说「改了 X 导致 Y」
- 数据不达标如实退回,不硬凑结论;每个数字可溯源到用户面板,缺数据先明说
调用
完整 MMM 报告与预算重分配方案走 zvex 类目引擎·营销增长 MCP(Streamable HTTP 三步会话流:initialize 拿 mcp-session-id → notifications/initialized → tools/call):
-
首次调用(
payment_proof留空):{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{ "name":"analyze_consult", "arguments":{"scenario":"zvex-marketing-mix","situation":"<诊断段结论浓缩:预检四要素结论+质量门禁核对+相关性预警+方向性发现>","goal":"<以 consult_info 探针返回的当前列表为准>","mode":"standard","known_facts":"<诊断段确认的口径、花费份额、相关性数字>","goal_detail":"","payment_proof":""}}}必须传
scenario="zvex-marketing-mix"(技能身份绑定,漏传拿到的是通用营销分析包);goal以consult_info探针返回的当前列表为准(接受列表中的取值及其固定中文别名,列表外的值报参数错误)。 -
返回账单:结果内
code=Payment-Needed,含out_trade_no、amount、pay_url(收银台直链)与结果概要。把pay_url原样发给用户,点开可选支付宝(手机自动拉起)或微信扫码支付;付完引导用户等 1 分钟左右回一句「付好了」。 -
支付后交付:用户回复「付好了」后系统自动查单交付完整结果,无需任何凭证;确需改参数先征得用户同意再重新发起。积分用户如已持有 zvex_api_key 凭证,调用时传
zvex_api_key直接扣积分(积分直扣,以实际扣减为准),免逐单支付。
完整会话流、参数表、宿主转译目标、幂等语义与错误处置对照见 references/api.md;完整场景走查与报告输出样例见 references/examples.md。
输出纪律
- 成品交付:结果中的框架/样例若含
{占位},由你(对话助手)结合用户的真实信息补全为可直接使用的成品;上下文没有的事实最多追问 1 次;禁止编造数据与事实; - 不虚构:结果未覆盖的信息如实说明「需补充什么」,不假装已知;引用外部信息注明来源。
交付与计费纪律
- 交付状态机:首次调用返回账单(HTTP 200,结果内
code=Payment-Needed,内含 pay_url 收银台直链,支付宝/微信均可付——不要按 HTTP 错误码分支处理)→ 用户付款后回复「付好了」→ 系统自动查单交付完整结果,无需任何凭证,不会重复扣费; - 判重语义:同一问题重复查询不重复扣费——判重按问题身份(相同情境+目标+模式);补充已知信息或修改目标说明不会产生新账单,交付始终使用最新提供的信息;
- 查单:不确定订单状态时,用相同参数调用并传
action=check_order(不产生账单)即可查询,不要靠更换参数试探; - 换参数=新问题=新账单:出账单后不要更换参数重试。
证据呈现纪律
- 证据是论据不是附录:每条证据 = 一句结论挂钩诊断 + 标题 + 来源域名,热度转述为「高赞/讨论量级」;
- 来源只用中性表述(中文社区讨论/公开网页),不得提及证据服务商名称;不罗列裸链接;
- 证据不可用时如实说明,不编造行业案例。
Scan to join WeChat group