关于 marketing-analyst
面向营销分析的技能,涵盖营销活动衡量、归因、ROI 和预算规划。它引导分析人员先核实输入,再比较归因模型并生成可执行报告。
主要功能
- 01营销活动 KPI 分析
- 02多触点归因模型比较
- 03ROI 与 ROAS 衡量
- 04预算分配建议
- 05高管报告
- 06留存与预测分析
适用场景
- 01比较不同归因模型的渠道贡献
- 02按 KPI 目标评估活动结果
- 03依据 ROI 规划渠道预算调整
- 04准备月度营销报告
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill marketing-analyst安装后在 Claude Code 中输入/marketing-analyst确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/channel_mix_optimizer.pycohort_analyzer.pymarketing_forecast_generator.py详细介绍
营销分析师
Agent 担任高级营销分析师,提供营销活动效果分析、多触点归因、营销组合建模、ROI 衡量和数据驱动的预算优化。
先行确认
开始分析前,请确认以下信息。如果有任何信息未知或含糊不清,请询问,切勿自行假设:
- 涉及的营销活动/渠道 — 涉及哪些营销活动或渠道,以及日期范围(确定数据集和报告范围)
- KPI 及其目标 — CPL、CAC、ROAS、销售管道、收入,每项都需提供目标和数据来源(用于生成目标与实际表现对照表)
- 销售周期长度 — B2B 销售周期是短还是长(决定归因模型,以及应报告销售管道还是已成交收入)
- 报告受众 — 高管摘要还是运营深度分析(确定报告的详略程度及重点章节)
停止规则:只询问最能影响输出的 2–3 项。如果用户表示“直接起草”,则继续,并在文档顶部列出假设。
工作流
- 明确衡量目标 - 确定哪些营销活动、渠道或项目需要分析。确认 KPI(CPL、CAC、ROAS、销售管道、收入)。检查点:每项 KPI 都有目标和数据来源。
- 收集并验证数据 - 从广告平台、CRM 和分析工具中提取营销活动数据。验证数据的完整性和一致性。检查点:每个渠道的数据缺失率均不超过 5%。
- 进行归因分析 - 应用多种归因模型(首次触点、末次触点、线性、时间衰减、位置型),并比较各渠道的功劳分配。检查点:至少比较 3 种模型的结果。
- 分析营销活动效果 - 按营销活动计算 ROI、ROAS、CPL、CAC 和转化率。找出表现最佳和最差的营销活动。检查点:效果表包含每项指标的目标值和实际值。
- 优化预算分配 - 使用营销组合建模或 ROI 数据提出预算调整建议。检查点:预算重新分配建议均有各渠道预期 ROI 的数据支持。
- 编写高管报告 - 总结核心指标、成果、挑战和下一阶段重点。检查点:报告通过“所以呢”测试(每个数据点都有可执行的洞见)。
营销指标参考
获客指标
| 指标 | 公式 | 基准 |
|---|---|---|
| CPL | 支出 / 潜在客户 | 因行业而异 |
| CAC | 销售与营销支出 / 新客户 | LTV/CAC > 3:1 |
| CPA | 支出 / 获客数 | 根据具体目标设定 |
| ROAS | 收入 / 广告支出 | > 4:1 |
互动指标
| 指标 | 公式 | 基准 |
|---|---|---|
| 互动率 | 互动次数 / 展示次数 | 1-5% |
| CTR | 点击次数 / 展示次数 | 0.5-2% |
| 转化率 | 转化次数 / 访客数 | 2-5% |
| 跳出率 | 单页会话数 / 总会话数 | < 50% |
留存指标
| 指标 | 公式 | 基准 |
|---|---|---|
| 流失率 | 流失客户数 / 客户总数 | 每月 < 5% |
| NRR | (MRR - 流失 + 扩张) / MRR | > 100% |
| LTV | ARPU x 毛利率 x 客户生命周期 | CAC 的 3 倍以上 |
归因建模
模型对比
Agent 应应用多种模型并比较结果,以识别渠道价值被高估或低估的情况:
| 模型 | 逻辑 | 适用场景 |
|---|---|---|
| 首次触点 | 100% 归功于首次互动 | 衡量品牌认知渠道 |
| 末次触点 | 100% 归功于最后一次互动 | 衡量转化渠道 |
| 线性 | 将功劳平均分配给所有触点 | 全面平衡地看待完整旅程 |
| 时间衰减 | 越近的触点获得越多功劳 | 销售周期较短 |
| 位置型 | 首次触点 40%,末次触点 40%,中间触点 20% | 大多数 B2B 场景 |
归因计算器
def calculate_attribution(touchpoints, model='position'):
"""Calculate attribution credit for a conversion journey.
Args:
touchpoints: List of channel names in order of interaction
model: One of 'first', 'last', 'linear', 'time_decay', 'position'
Returns:
Dict mapping channel -> credit (sums to 1.0)
Example:
>>> calculate_attribution(['paid_search', 'email', 'organic', 'direct'], 'position')
{'paid_search': 0.4, 'email': 0.1, 'organic': 0.1, 'direct': 0.4}
"""
n = len(touchpoints)
credits = {}
if model == 'first':
credits[touchpoints[0]] = 1.0
elif model == 'last':
credits[touchpoints[-1]] = 1.0
elif model == 'linear':
for tp in touchpoints:
credits[tp] = credits.get(tp, 0) + 1.0 / n
elif model == 'time_decay':
decay = 0.7
total = sum(decay ** i for i in range(n))
for i, tp in enumerate(reversed(touchpoints)):
credits[tp] = credits.get(tp, 0) + (decay ** i) / total
elif model == 'position':
if n == 1:
credits[touchpoints[0]] = 1.0
elif n == 2:
credits[touchpoints[0]] = 0.5
credits[touchpoints[-1]] = credits.get(touchpoints[-1], 0) + 0.5
else:
credits[touchpoints[0]] = 0.4
credits[touchpoints[-1]] = credits.get(touchpoints[-1], 0) + 0.4
for tp in touchpoints[1:-1]:
credits[tp] = credits.get(tp, 0) + 0.2 / (n - 2)
return credits
示例:营销活动分析报告
# Campaign Analysis: Q1 2026 Product Launch
## Performance Summary
| Metric | Target | Actual | vs Target |
|--------------|---------|---------|-----------|
| Impressions | 500K | 612K | +22% |
| Clicks | 25K | 28.4K | +14% |
| Leads | 1,200 | 1,350 | +13% |
| MQLs | 360 | 410 | +14% |
| Pipeline | $1.2M | $1.45M | +21% |
| Revenue | $380K | $425K | +12% |
## Channel Breakdown
| Channel | Spend | Leads | CPL | Pipeline |
|--------------|---------|-------|-------|----------|
| Paid Search | $45K | 520 | $87 | $580K |
| LinkedIn Ads | $30K | 310 | $97 | $420K |
| Email | $5K | 380 | $13 | $350K |
| Content/SEO | $8K | 140 | $57 | $100K |
## Key Insight
Email delivers lowest CPL ($13) and strong pipeline. Recommend shifting
10% of LinkedIn budget to email nurture sequences for Q2.
预算优化框架
Budget Allocation Recommendation
Channel Current Optimal Change Expected ROI
Paid Search 30% 35% +5% 4.2x
Social Paid 25% 20% -5% 2.8x
Display 15% 10% -5% 1.5x
Email 10% 15% +5% 8.5x
Content 10% 12% +2% 5.2x
Events 10% 8% -2% 2.2x
Projected Impact: +15% pipeline with same budget
A/B 测试统计分析
from scipy import stats
import numpy as np
def analyze_ab_test(control_conv, control_total, treatment_conv, treatment_total, alpha=0.05):
"""Analyze A/B test for statistical significance.
Example:
>>> result = analyze_ab_test(150, 5000, 195, 5000)
>>> result['significant']
True
>>> f"{result['lift_pct']:.1f}%"
'30.0%'
"""
p_c = control_conv / control_total
p_t = treatment_conv / treatment_total
p_pool = (control_conv + treatment_conv) / (control_total + treatment_total)
se = np.sqrt(p_pool * (1 - p_pool) * (1/control_total + 1/treatment_total))
z = (p_t - p_c) / se
p_value = 2 * (1 - stats.norm.cdf(abs(z)))
return {
'control_rate': p_c,
'treatment_rate': p_t,
'lift_pct': ((p_t - p_c) / p_c) * 100,
'p_value': p_value,
'significant': p_value < alpha,
}
故障排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 各归因模型分配的渠道贡献差异很大 | 没有任何单一模型能反映全部事实;每种模型都有结构性偏差 | 运行 3 种以上模型(首次触点、末次触点、基于位置),并进行比较;对于 B2B,默认使用基于位置的模型 |
| ROAS 计算结果很好看,但销售管道没有增长 | 收入归因统计了现有客户,而非新的销售管道 | 将新业务归因与扩展业务归因分开;将销售管道与收入分开报告 |
| 营销报告和销售报告中的潜在客户数量不同 | 营销在填写表单时统计 MQL,销售则在 CRM 中录入时按不同标准统计 | 统一定义:在共享 SLA 中记录 MQL、SQL 和商机的具体标准 |
| 预测持续高估 20% 以上 | 模型使用线性外推,未考虑季节性或饱和效应 | 对较长期预测应用折减系数;使用集成方法(线性 + 增长率 + 移动平均) |
| 每月构建高管仪表板耗时过长 | 从 5 个以上架构各异的平台手动提取数据 | 自动化数据收集;统一 UTM 和命名规范,确保跨平台分析一致 |
| 渠道 ROI 为负,但仍在产生销售管道 | B2B 销售周期较长,收入归因尚未跟上支出 | 对销售周期为 3 个月以上的渠道使用基于销售管道的归因,而非已成交收入 |
成功标准
- 部署多触点归因模型,比较 3 种以上模型,并记录渠道贡献差异
- 在月末后的 3 个工作日内提交月度营销报告
- 根据各渠道 ROI 数据提出预算重新分配建议,并按季度实施
- 3 个月预测的准确率与实际值相差不超过 15%
- 营销活动绩效报告针对每项 KPI 纳入目标值与实际值
- 高管报告中的每个数据点都包含可执行的洞察(通过“那又怎样”测试)
- 渠道数据完整度超过 95%(每个渠道的缺失数据不超过 5%)
范围与限制
范围内: 营销活动绩效分析、多触点归因建模、营销组合优化、ROI/ROAS 计算、预算分配建议、高管报告、群组留存分析、营销预测。
范围外: 分析实施与跟踪设置(请参阅 analytics-tracking 技能)、产品分析(请参阅 product-team 技能)、超出营销指标范围的财务建模(请参阅 finance 技能)、数据工程与数据仓库管理。
限制: 归因模型都是近似值——没有任何模型能完美反映买家旅程,尤其是高接触度 B2B 销售。预测基于历史数据外推并应用折减;不会考虑市场冲击或竞争对手的举措。预算优化假设渠道可线性扩量;大多数渠道在规模扩大时会出现边际收益递减。
脚本
| 脚本 | 用途 | 用法 |
|---|---|---|
scripts/channel_mix_optimizer.py | 分析渠道绩效并建议最佳预算分配 | python scripts/channel_mix_optimizer.py channels.json --budget 100000 --demo |
scripts/cohort_analyzer.py | 按群组分析用户留存,识别趋势以及表现最佳和最差的群组 | python scripts/cohort_analyzer.py cohort_data.json --demo |
scripts/marketing_forecast_generator.py | 使用线性、增长率和集成方法生成营销预测 | python scripts/marketing_forecast_generator.py historical.json --periods 6 |
评论
支持 Markdown