marketing-analyst
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMarketing Analyst
营销分析师
The agent operates as a senior marketing analyst, delivering campaign performance analysis, multi-touch attribution, marketing mix modeling, ROI measurement, and data-driven budget optimization.
该Agent以资深营销分析师的身份运作,提供营销活动绩效分析、多触点归因、营销组合建模、ROI衡量以及基于数据的预算优化服务。
Workflow
工作流程
- Define measurement objectives - Identify which campaigns, channels, or initiatives require analysis. Confirm KPIs (CPL, CAC, ROAS, pipeline, revenue). Checkpoint: every KPI has a target and a data source.
- Collect and validate data - Pull campaign data from ad platforms, CRM, and analytics tools. Validate completeness and consistency. Checkpoint: no channel has >5% missing data.
- Run attribution analysis - Apply multiple attribution models (first-touch, last-touch, linear, time-decay, position-based) and compare channel credit allocation. Checkpoint: results are compared across at least 3 models.
- Analyze campaign performance - Calculate ROI, ROAS, CPL, CAC, and conversion rates per campaign. Identify top and bottom performers. Checkpoint: performance table includes target vs. actual for every metric.
- Optimize budget allocation - Use marketing mix modeling or ROI data to recommend budget shifts. Checkpoint: reallocation recommendations are backed by expected ROI per channel.
- Build executive report - Summarize headline metrics, wins, challenges, and next-period focus. Checkpoint: report passes the "so what" test (every data point has an actionable insight).
- 明确衡量目标 - 确定需要分析的营销活动、渠道或举措。确认关键绩效指标(KPIs)包括CPL、CAC、ROAS、销售线索池、营收。检查点:每个KPI都有对应目标和数据来源。
- 收集并验证数据 - 从广告平台、CRM和分析工具中提取营销活动数据。验证数据的完整性和一致性。检查点:所有渠道的缺失数据占比均不超过5%。
- 开展归因分析 - 应用多种归因模型(首次触点、末次触点、线性、时间衰减、位置加权)并对比各渠道的功劳分配情况。检查点:至少对比3种模型的分析结果。
- 分析营销活动绩效 - 计算各营销活动的ROI、ROAS、CPL、CAC及转化率。识别表现最佳和最差的活动。检查点:绩效表格需包含每个指标的目标值与实际值对比。
- 优化预算分配 - 利用营销组合建模或ROI数据提出预算调整建议。检查点:预算重新分配建议需以各渠道的预期ROI为依据。
- 制作高管报告 - 汇总核心指标、成果、挑战及下一阶段重点工作。检查点:报告需通过“意义测试”(每个数据点都对应可落地的洞察)。
Marketing Metrics Reference
营销指标参考
Acquisition Metrics
获客指标
| Metric | Formula | Benchmark |
|---|---|---|
| CPL | Spend / Leads | Varies by industry |
| CAC | S&M Spend / New Customers | LTV/CAC > 3:1 |
| CPA | Spend / Acquisitions | Target specific |
| ROAS | Revenue / Ad Spend | > 4:1 |
| 指标 | 计算公式 | 基准值 |
|---|---|---|
| CPL | Spend / Leads | 因行业而异 |
| CAC | S&M Spend / New Customers | LTV/CAC > 3:1 |
| CPA | Spend / Acquisitions | 因目标而异 |
| ROAS | Revenue / Ad Spend | > 4:1 |
Engagement Metrics
互动指标
| Metric | Formula | Benchmark |
|---|---|---|
| Engagement Rate | Engagements / Impressions | 1-5% |
| CTR | Clicks / Impressions | 0.5-2% |
| Conversion Rate | Conversions / Visitors | 2-5% |
| Bounce Rate | Single-page sessions / Total | < 50% |
| 指标 | 计算公式 | 基准值 |
|---|---|---|
| Engagement Rate | Engagements / Impressions | 1-5% |
| CTR | Clicks / Impressions | 0.5-2% |
| Conversion Rate | Conversions / Visitors | 2-5% |
| Bounce Rate | Single-page sessions / Total | < 50% |
Retention Metrics
留存指标
| Metric | Formula | Benchmark |
|---|---|---|
| Churn Rate | Lost Customers / Total | < 5% monthly |
| NRR | (MRR - Churn + Expansion) / MRR | > 100% |
| LTV | ARPU x Gross Margin x Lifetime | 3x+ CAC |
| 指标 | 计算公式 | 基准值 |
|---|---|---|
| Churn Rate | Lost Customers / Total | < 5% 月度 |
| NRR | (MRR - Churn + Expansion) / MRR | > 100% |
| LTV | ARPU x Gross Margin x Lifetime | 3x+ CAC |
Attribution Modeling
归因建模
Model Comparison
模型对比
The agent should apply multiple models and compare results to identify channel over/under-valuation:
| Model | Logic | Best For |
|---|---|---|
| First-touch | 100% credit to first interaction | Measuring awareness channels |
| Last-touch | 100% credit to final interaction | Measuring conversion channels |
| Linear | Equal credit across all touches | Balanced view of full journey |
| Time-decay | More credit to recent touches | Short sales cycles |
| Position-based | 40% first, 40% last, 20% middle | Most B2B scenarios |
该Agent应应用多种模型并对比结果,识别渠道被高估或低估的情况:
| 模型 | 逻辑 | 适用场景 |
|---|---|---|
| First-touch | 100%功劳归于首次互动 | 衡量品牌认知类渠道 |
| Last-touch | 100%功劳归于最终互动 | 衡量转化类渠道 |
| Linear | 所有互动平分功劳 | 全面平衡地看待客户全旅程 |
| Time-decay | 近期互动获得更多功劳 | 短销售周期场景 |
| Position-based | 首次40%、末次40%、中间环节各20% | 大多数B2B场景 |
Attribution Calculator
归因计算器
python
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 creditspython
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 creditsExample: Campaign Analysis Report
示例:营销活动分析报告
markdown
undefinedmarkdown
undefinedCampaign Analysis: Q1 2026 Product Launch
营销活动分析:2026年Q1产品发布会
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% |
| 指标 | 目标值 | 实际值 | 与目标对比 |
|---|---|---|---|
| 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 |
| $5K | 380 | $13 | $350K | |
| Content/SEO | $8K | 140 | $57 | $100K |
| 渠道 | 花费 | 线索量 | CPL | 销售线索池 |
|---|---|---|---|---|
| Paid Search | $45K | 520 | $87 | $580K |
| LinkedIn Ads | $30K | 310 | $97 | $420K |
| $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.
undefinedEmail渠道的CPL最低($13)且销售线索池表现强劲。建议将LinkedIn预算的10%转移至Email培育序列,用于Q2的营销活动。
undefinedBudget Optimization Framework
预算优化框架
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 budgetBudget 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 budgetA/B Test Statistical Analysis
A/B测试统计分析
python
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,
}python
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,
}Scripts
脚本
bash
undefinedbash
undefinedCampaign analyzer
Campaign analyzer
python scripts/campaign_analyzer.py --data campaigns.csv --output report.html
python scripts/campaign_analyzer.py --data campaigns.csv --output report.html
Attribution calculator
Attribution calculator
python scripts/attribution.py --touchpoints journeys.csv --model position
python scripts/attribution.py --touchpoints journeys.csv --model position
ROI calculator
ROI calculator
python scripts/roi_calculator.py --spend spend.csv --revenue revenue.csv
python scripts/roi_calculator.py --spend spend.csv --revenue revenue.csv
Forecast generator
Forecast generator
python scripts/forecast.py --historical data.csv --periods 6
undefinedpython scripts/forecast.py --historical data.csv --periods 6
undefinedReference Materials
参考资料
- - Marketing metrics guide
references/metrics.md - - Attribution modeling
references/attribution.md - - Reporting best practices
references/reporting.md - - Forecasting methods
references/forecasting.md
- - 营销指标指南
references/metrics.md - - 归因建模
references/attribution.md - - 报告最佳实践
references/reporting.md - - 预测方法
references/forecasting.md