>- 计算内容营销 ROI:根据投放数据算出 CTR/CPC/CPM/ROAS 等指标,对比行业基准,支持单活动分析与多活动横向比较。 当用户说"算ROI""投放效果""CTR/CPC/CPM/ROAS""投产比""广告效果""投放数据分析""活动ROI"时使用。
npx skills add https://github.com/ZJU-REAL/Easel --skill roi-calculator
> 根据用户提供的投放数据,计算标准营销效果指标,对比行业基准,输出结构化分析报告。
用户提供以下字段的任意子集(缺失字段跳过其依赖指标):
| 字段 | 代号 | 单位 | 必要性 |
|------|------|------|--------|
| 投放费用 | ad_spend | CNY | 核心(为 0 或缺失时切换有机模式) |
| 曝光量 | impressions | 次 | 可选 |
| 点击量 | clicks | 次 | 可选 |
| 互动量 | engagements | 次(赞+评+转) | 可选 |
| 转化数 | conversions | 次 | 可选 |
| 客单价 | avg_order_value | CNY | 可选 |
| 内容制作成本 | production_cost | CNY | 可选,默认不计 |
两种模式:
以下指标仅在分母数据存在且非零时计算,否则标注"数据不足,已跳过":
| 指标 | 公式 | 依赖字段 |
|------|------|----------|
| CTR(点击率) | clicks / impressions | impressions, clicks |
| CPC(单次点击成本) | ad_spend / clicks | ad_spend, clicks |
| CPM(千次曝光成本) | (ad_spend / impressions) * 1000 | ad_spend, impressions |
| CPE(单次互动成本) | ad_spend / engagements | ad_spend, engagements |
| 转化率 | conversions / clicks | conversions, clicks |
| CPA(单次转化成本) | ad_spend / conversions | ad_spend, conversions |
| 营收 | conversions * avg_order_value | conversions, avg_order_value |
| ROAS(广告支出回报率) | revenue / ad_spend | revenue, ad_spend |
| 总成本 | ad_spend + production_cost | ad_spend(production_cost 缺失按 0) |
| 利润 | revenue - total_cost | revenue, total_cost |
| ROI | (revenue - total_cost) / total_cost | revenue, total_cost |
Mode A — 单活动分析:
## 投放效果报告
### 基础数据
(用户提供的原始字段)
### 计算指标
| 指标 | 值 | 公式 | 基准对比 |
|------|----|------|----------|
| CTR | x% | clicks/impressions | ▲ 高于行业均值 |
| ... | | | |
### 基准对比图例
▲ 高于行业均值(表现良好)
▼ 低于行业均值(需关注)
≈ 接近行业均值(正常水平)
⚠ 显著偏离(超出基准 2 倍或低于 50%)
### 诊断
- 表现突出:(列出高于基准的指标及优势分析)
- 待优化:(列出低于基准的指标及具体改进方向)
- 综合评价:(一句话总结本次投放效果)
Mode B — 多活动对比:
## 多活动横向对比(按 ROI 降序)
| 活动 | 花费 | 营收 | ROI | ROAS | CTR | CPC | 综合评价 |
|------|------|------|-----|------|-----|-----|----------|
| ... | | | | | | | |
### 最优/最差活动分析
(对比 ROI 最高与最低活动的关键指标差异,找出差距来源)
### 预算分配建议
(基于各活动效率,建议预算向高 ROI 活动倾斜的比例)
### 优化建议
(针对低效活动的具体改进方向)
> 确定性计算交给脚本,LLM 只做解读。 上表各项指标(含营收/利润派生,有机模式另算互动率)、
> 有机模式切换、字段校验、Mode B 按 ROI 降序排序,全部由
> scripts/calc.py 完成(复用 skills/shared/scripts/social_stats.py
> 的 safe_div,除零/缺字段一律返回 null,不心算、不猜数)。
python3 skills/openclaw/roi-calculator/scripts/calc.py single --name "活动名" \
--ad-spend 5000 --impressions 100000 --clicks 3000 \
--engagements 8000 --conversions 150 --avg-order-value 200 \
--production-cost 1000
python3 skills/openclaw/roi-calculator/scripts/calc.py multi --file campaigns.json
脚本自动:11 指标逐项计算(分母为 0/缺失返回 null 并视为"数据不足")、
营收→ROAS/利润/ROI 派生、ad_spend 为 0/缺失时切有机模式(跳过成本类指标)、
字段校验(负值 / 曝光<点击 / 转化>点击 写入 warnings)、Mode B 按 roi_pct 降序排序并标 roi_rank。
platforms.md 确定主平台,选对应平台基准warnings当 ad_spend 为 0 或缺失时,自动切换:
有 Profile 时:
platforms.md 获取主投放平台,选用平台专属基准区间audience.md 了解受众特征,为转化率判断提供上下文无 Profile 时:
基准数据来源(定期更新 references/benchmarks.md):
迭代方向:
基准数据维护规则:
Take zju-real/roi-calculator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.