data-storytelling by wshobson/agents
npx skills add https://github.com/wshobson/agents --skill data-storytelling将原始数据转化为引人入胜的叙事,以驱动决策并激发行动。
Setup → Conflict → Resolution
Setup: 背景和基线
Conflict: 问题或机遇
Resolution: 见解和建议
1. Hook: 用令人惊讶的见解吸引注意力
2. Context: 建立基线
3. Rising Action: 通过数据点构建
4. Climax: 关键见解
5. Resolution: 建议
6. Call to Action: 后续步骤
| 支柱 | 目的 | 组成部分 |
|---|---|---|
| 数据 | 证据 | 数字、趋势、比较 |
| 叙事 | 意义 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 背景、因果关系、影响 |
| 视觉 | 清晰度 | 图表、图解、高亮显示 |
# 客户流失分析
## 引子
"我们每年因可预防的客户流失损失 240 万美元。"
## 背景
- 当前流失率:8.5%(行业平均:5%)
- 平均客户生命周期价值:$4,800
- 上季度流失客户:500 名
## 问题
对流失客户的分析揭示了一个模式:
- 73% 在头 90 天内流失
- 共同因素:< 3 次支持互动
- 第一个月功能采用率低
## 见解
[展示参与度曲线可视化]
在前 14 天内未参与的客户
流失的可能性高出 4 倍。
## 解决方案
1. 实施 14 天新用户引导流程
2. 在第 7 天主动联系
3. 功能采用跟踪
## 预期影响
- 减少早期流失 40%
- 每年节省 $960K
- 投资回收期:3 个月
## 行动号召
批准 $50K 预算用于新用户引导自动化。
# 第四季度业绩分析
## 起点
第三季度以 $1.2M 的月度经常性收入结束,低于目标 15%。
团队在未达目标后士气低落。
## 变化
[时间线可视化]
- 10月:推出自助定价
- 11月:减少注册流程中的阻力
- 12月:增加客户成功电话
## 转变
[前后对比图表]
| 指标 | Q3 | Q4 | 变化 |
|----------------|--------|--------|--------|
| 试用 → 付费 | 8% | 15% | +87% |
| 实现价值时间 | 14 天| 5 天 | -64% |
| 扩展率 | 2% | 8% | +300% |
## 关键见解
自助服务 + 高接触度服务创造复合增长。
既使用自助服务又接到成功电话的客户
扩展率高出 3 倍。
## 未来方向
加倍投入混合模式。
目标:到第二季度实现 $1.8M 月度经常性收入。
# 市场机会分析
## 问题
我们应该先扩展到欧洲、中东和非洲地区还是亚太地区?
## 对比
[并排市场分析]
### 欧洲、中东和非洲地区
- 市场规模:$4.2B
- 增长率:8%
- 竞争:激烈
- 监管:复杂(GDPR)
- 语言:多种
### 亚太地区
- 市场规模:$3.8B
- 增长率:15%
- 竞争:中等
- 监管:多样
- 语言:多种
## 分析
[加权评分矩阵可视化]
| 因素 | 权重 | 欧洲、中东和非洲地区得分 | 亚太地区得分 |
| ----------- | ------ | ---------- | ---------- |
| 市场规模 | 25% | 5 | 4 |
| 增长 | 30% | 3 | 5 |
| 竞争 | 20% | 2 | 4 |
| 易用性 | 25% | 2 | 3 |
| **总计** | | **2.9** | **4.1** |
## 建议
先进入亚太地区。增长更高,竞争更少。
从新加坡中心开始(英语,商业友好)。
第二年准备好本地化后进入欧洲、中东和非洲地区。
## 风险缓解
- 时区覆盖:雇佣 24/7 支持
- 文化适应性:本地合作伙伴
- 支付:从第一天起支持多币种
从简单开始,逐步添加层次:
幻灯片 1:"收入正在增长" [单线图]
幻灯片 2:"但增长正在放缓" [添加增长率叠加层]
幻灯片 3:"由一个细分市场驱动" [添加细分市场细分]
幻灯片 4:"该市场正在饱和" [添加市场份额]
幻灯片 5:"我们需要新的细分市场" [添加机会区域]
之前/之后:
┌─────────────────┬─────────────────┐
│ 之前 │ 之后 │
│ │ │
│ 流程:5 天│ 流程:1 天 │
│ 错误:15% │ 错误:2% │
│ 成本:$50/单位 │ 成本:$20/单位 │
└─────────────────┴─────────────────┘
这个/那个(强调差异):
┌─────────────────────────────────────┐
│ 客户 A 对比 B │
│ ┌──────────┐ ┌──────────┐ │
│ │ ████████ │ │ ██ │ │
│ │ $45,000 │ │ $8,000 │ │
│ │ 生命周期价值 │ │ 生命周期价值 │ │
│ └──────────┘ └──────────┘ │
│ 已引导 未引导 │
└─────────────────────────────────────┘
import matplotlib.pyplot as plt
import pandas as pd
fig, ax = plt.subplots(figsize=(12, 6))
# 绘制主要数据
ax.plot(dates, revenue, linewidth=2, color='#2E86AB')
# 为关键事件添加标注
ax.annotate(
'产品发布\n+32% 峰值',
xy=(launch_date, launch_revenue),
xytext=(launch_date, launch_revenue * 1.2),
fontsize=10,
arrowprops=dict(arrowstyle='->', color='#E63946'),
color='#E63946'
)
# 高亮一个区域
ax.axvspan(growth_start, growth_end, alpha=0.2, color='green',
label='增长期')
# 添加阈值线
ax.axhline(y=target, color='gray', linestyle='--',
label=f'目标: ${target:,.0f}')
ax.set_title('收入增长故事', fontsize=14, fontweight='bold')
ax.legend()
┌─────────────────────────────────────────────────────────────┐
│ 关键见解 │
│ ══════════════════════════════════════════════════════════│
│ │
│ "在第一周完成引导的客户 │
│ 生命周期价值高出 3 倍" │
│ │
├──────────────────────┬──────────────────────────────────────┤
│ │ │
│ 数据 │ 影响 │
│ │ │
│ 第一周完成者: │ ✓ 优先考虑引导用户体验 │
│ • 生命周期价值: $4,500 │ ✓ 添加第 1 天成功里程碑 │
│ • 留存率: 85% │ ✓ 主动进行第一周联系 │
│ • 净推荐值: 72 │ │
│ │ 投资: $75K │
│ 其他: │ 预期投资回报率: 8x │
│ • 生命周期价值: $1,500 │ │
│ • 留存率: 45% │ │
│ • 净推荐值: 34 │ │
│ │ │
└──────────────────────┴──────────────────────────────────────┘
幻灯片 1: 标题
"通过改进引导,我们可以将增长速度提高 40%"
幻灯片 2: 背景
当前状态指标
行业基准
差距分析
幻灯片 3: 发现
数据揭示的内容
令人惊讶的发现
模式识别
幻灯片 4: 深入分析
根本原因分析
细分市场细分
统计显著性
幻灯片 5: 建议
建议的行动
资源需求
时间线
幻灯片 6: 影响
预期结果
投资回报率计算
风险评估
幻灯片 7: 请求
具体请求
需要做出的决定
后续步骤
# 月度业务回顾:2024年1月
## 标题
收入增长 15%,但客户获取成本增速超过生命周期价值
## 关键指标一览
┌────────┬────────┬────────┬────────┐
│ 月度经常性收入 │ 净收入留存率 │ 客户获取成本 │ 生命周期价值 │
│ $125K │ 108% │ $450 │ $2,200 │
│ ▲15% │ ▲3% │ ▲22% │ ▲8% │
└────────┴────────┴────────┴────────┘
## 有效之处
✓ 企业细分市场月环比增长 25%
✓ 推荐计划驱动 30% 的新客户
✓ 支持满意度创历史新高 (94%)
## 需要注意之处
✗ 中小型企业获取成本上升 40%
✗ 试用转化率下降 5 个百分点
✗ 实现价值时间增加 3 天
## 根本原因
[显示中小型企业与企业客户获取成本趋势的迷你图表]
中小型企业付费广告效率降低。
每次点击费用上升 35%,而转化率持平。
## 建议
1. 将每月 $20K 从付费广告转向内容营销
2. 推出中小型企业自助试用
3. A/B 测试更短的引导流程
## 下月重点
- 启动内容营销试点
- 完成自助服务最小可行产品
- 将实现价值时间减少到 < 7 天
差:"第四季度销售分析"
好:"第四季度销售额超出目标 23% - 原因如下"
差:"客户流失报告"
好:"我们因可预防的客户流失损失 240 万美元"
差:"营销绩效"
好:"内容营销的投资回报率是付费广告的 4 倍"
公式:
[具体数字] + [业务影响] + [可操作的背景]
构建叙事:
• "这促使我们思考..."
• "当我们深入挖掘时..."
• "当我们...时,模式变得清晰"
• "与此形成对比的是..."
引入见解:
• "数据显示..."
• "令我们惊讶的是..."
• "转折点出现在..."
• "关键发现是..."
转向行动:
• "这一见解表明..."
• "基于此分析..."
• "影响是明确的..."
• "我们的建议是..."
承认局限性:
• "我们有 95% 的把握可以说..."
• "500 的样本量显示..."
• "虽然相关性很强,但因果关系需要..."
• "这一趋势适用于 [细分市场],尽管 [注意事项]..."
呈现范围:
• "影响估计:$400K-$600K"
• "置信区间:15-20% 的改进"
• "最佳情况:X,保守情况:Y"
每周安装量
5.4K
代码库
GitHub 星标数
32.3K
首次出现
Jan 20, 2026
安全审计
安装于
claude-code4.3K
opencode3.2K
gemini-cli3.1K
codex3.0K
cursor3.0K
github-copilot2.7K
Transform raw data into compelling narratives that drive decisions and inspire action.
Setup → Conflict → Resolution
Setup: Context and baseline
Conflict: The problem or opportunity
Resolution: Insights and recommendations
1. Hook: Grab attention with surprising insight
2. Context: Establish the baseline
3. Rising Action: Build through data points
4. Climax: The key insight
5. Resolution: Recommendations
6. Call to Action: Next steps
| Pillar | Purpose | Components |
|---|---|---|
| Data | Evidence | Numbers, trends, comparisons |
| Narrative | Meaning | Context, causation, implications |
| Visuals | Clarity | Charts, diagrams, highlights |
# Customer Churn Analysis
## The Hook
"We're losing $2.4M annually to preventable churn."
## The Context
- Current churn rate: 8.5% (industry average: 5%)
- Average customer lifetime value: $4,800
- 500 customers churned last quarter
## The Problem
Analysis of churned customers reveals a pattern:
- 73% churned within first 90 days
- Common factor: < 3 support interactions
- Low feature adoption in first month
## The Insight
[Show engagement curve visualization]
Customers who don't engage in the first 14 days
are 4x more likely to churn.
## The Solution
1. Implement 14-day onboarding sequence
2. Proactive outreach at day 7
3. Feature adoption tracking
## Expected Impact
- Reduce early churn by 40%
- Save $960K annually
- Payback period: 3 months
## Call to Action
Approve $50K budget for onboarding automation.
# Q4 Performance Analysis
## Where We Started
Q3 ended with $1.2M MRR, 15% below target.
Team morale was low after missed goals.
## What Changed
[Timeline visualization]
- Oct: Launched self-serve pricing
- Nov: Reduced friction in signup
- Dec: Added customer success calls
## The Transformation
[Before/after comparison chart]
| Metric | Q3 | Q4 | Change |
|----------------|--------|--------|--------|
| Trial → Paid | 8% | 15% | +87% |
| Time to Value | 14 days| 5 days | -64% |
| Expansion Rate | 2% | 8% | +300% |
## Key Insight
Self-serve + high-touch creates compound growth.
Customers who self-serve AND get a success call
have 3x higher expansion rate.
## Going Forward
Double down on hybrid model.
Target: $1.8M MRR by Q2.
# Market Opportunity Analysis
## The Question
Should we expand into EMEA or APAC first?
## The Comparison
[Side-by-side market analysis]
### EMEA
- Market size: $4.2B
- Growth rate: 8%
- Competition: High
- Regulatory: Complex (GDPR)
- Language: Multiple
### APAC
- Market size: $3.8B
- Growth rate: 15%
- Competition: Moderate
- Regulatory: Varied
- Language: Multiple
## The Analysis
[Weighted scoring matrix visualization]
| Factor | Weight | EMEA Score | APAC Score |
| ----------- | ------ | ---------- | ---------- |
| Market Size | 25% | 5 | 4 |
| Growth | 30% | 3 | 5 |
| Competition | 20% | 2 | 4 |
| Ease | 25% | 2 | 3 |
| **Total** | | **2.9** | **4.1** |
## The Recommendation
APAC first. Higher growth, less competition.
Start with Singapore hub (English, business-friendly).
Enter EMEA in Year 2 with localization ready.
## Risk Mitigation
- Timezone coverage: Hire 24/7 support
- Cultural fit: Local partnerships
- Payment: Multi-currency from day 1
Start simple, add layers:
Slide 1: "Revenue is growing" [single line chart]
Slide 2: "But growth is slowing" [add growth rate overlay]
Slide 3: "Driven by one segment" [add segment breakdown]
Slide 4: "Which is saturating" [add market share]
Slide 5: "We need new segments" [add opportunity zones]
Before/After:
┌─────────────────┬─────────────────┐
│ BEFORE │ AFTER │
│ │ │
│ Process: 5 days│ Process: 1 day │
│ Errors: 15% │ Errors: 2% │
│ Cost: $50/unit │ Cost: $20/unit │
└─────────────────┴─────────────────┘
This/That (emphasize difference):
┌─────────────────────────────────────┐
│ CUSTOMER A vs B │
│ ┌──────────┐ ┌──────────┐ │
│ │ ████████ │ │ ██ │ │
│ │ $45,000 │ │ $8,000 │ │
│ │ LTV │ │ LTV │ │
│ └──────────┘ └──────────┘ │
│ Onboarded No onboarding │
└─────────────────────────────────────┘
import matplotlib.pyplot as plt
import pandas as pd
fig, ax = plt.subplots(figsize=(12, 6))
# Plot the main data
ax.plot(dates, revenue, linewidth=2, color='#2E86AB')
# Add annotation for key events
ax.annotate(
'Product Launch\n+32% spike',
xy=(launch_date, launch_revenue),
xytext=(launch_date, launch_revenue * 1.2),
fontsize=10,
arrowprops=dict(arrowstyle='->', color='#E63946'),
color='#E63946'
)
# Highlight a region
ax.axvspan(growth_start, growth_end, alpha=0.2, color='green',
label='Growth Period')
# Add threshold line
ax.axhline(y=target, color='gray', linestyle='--',
label=f'Target: ${target:,.0f}')
ax.set_title('Revenue Growth Story', fontsize=14, fontweight='bold')
ax.legend()
┌─────────────────────────────────────────────────────────────┐
│ KEY INSIGHT │
│ ══════════════════════════════════════════════════════════│
│ │
│ "Customers who complete onboarding in week 1 │
│ have 3x higher lifetime value" │
│ │
├──────────────────────┬──────────────────────────────────────┤
│ │ │
│ THE DATA │ THE IMPLICATION │
│ │ │
│ Week 1 completers: │ ✓ Prioritize onboarding UX │
│ • LTV: $4,500 │ ✓ Add day-1 success milestones │
│ • Retention: 85% │ ✓ Proactive week-1 outreach │
│ • NPS: 72 │ │
│ │ Investment: $75K │
│ Others: │ Expected ROI: 8x │
│ • LTV: $1,500 │ │
│ • Retention: 45% │ │
│ • NPS: 34 │ │
│ │ │
└──────────────────────┴──────────────────────────────────────┘
Slide 1: THE HEADLINE
"We can grow 40% faster by fixing onboarding"
Slide 2: THE CONTEXT
Current state metrics
Industry benchmarks
Gap analysis
Slide 3: THE DISCOVERY
What the data revealed
Surprising finding
Pattern identification
Slide 4: THE DEEP DIVE
Root cause analysis
Segment breakdowns
Statistical significance
Slide 5: THE RECOMMENDATION
Proposed actions
Resource requirements
Timeline
Slide 6: THE IMPACT
Expected outcomes
ROI calculation
Risk assessment
Slide 7: THE ASK
Specific request
Decision needed
Next steps
# Monthly Business Review: January 2024
## THE HEADLINE
Revenue up 15% but CAC increasing faster than LTV
## KEY METRICS AT A GLANCE
┌────────┬────────┬────────┬────────┐
│ MRR │ NRR │ CAC │ LTV │
│ $125K │ 108% │ $450 │ $2,200 │
│ ▲15% │ ▲3% │ ▲22% │ ▲8% │
└────────┴────────┴────────┴────────┘
## WHAT'S WORKING
✓ Enterprise segment growing 25% MoM
✓ Referral program driving 30% of new logos
✓ Support satisfaction at all-time high (94%)
## WHAT NEEDS ATTENTION
✗ SMB acquisition cost up 40%
✗ Trial conversion down 5 points
✗ Time-to-value increased by 3 days
## ROOT CAUSE
[Mini chart showing SMB vs Enterprise CAC trend]
SMB paid ads becoming less efficient.
CPC up 35% while conversion flat.
## RECOMMENDATION
1. Shift $20K/mo from paid to content
2. Launch SMB self-serve trial
3. A/B test shorter onboarding
## NEXT MONTH'S FOCUS
- Launch content marketing pilot
- Complete self-serve MVP
- Reduce time-to-value to < 7 days
BAD: "Q4 Sales Analysis"
GOOD: "Q4 Sales Beat Target by 23% - Here's Why"
BAD: "Customer Churn Report"
GOOD: "We're Losing $2.4M to Preventable Churn"
BAD: "Marketing Performance"
GOOD: "Content Marketing Delivers 4x ROI vs. Paid"
Formula:
[Specific Number] + [Business Impact] + [Actionable Context]
Building the narrative:
• "This leads us to ask..."
• "When we dig deeper..."
• "The pattern becomes clear when..."
• "Contrast this with..."
Introducing insights:
• "The data reveals..."
• "What surprised us was..."
• "The inflection point came when..."
• "The key finding is..."
Moving to action:
• "This insight suggests..."
• "Based on this analysis..."
• "The implication is clear..."
• "Our recommendation is..."
Acknowledge limitations:
• "With 95% confidence, we can say..."
• "The sample size of 500 shows..."
• "While correlation is strong, causation requires..."
• "This trend holds for [segment], though [caveat]..."
Present ranges:
• "Impact estimate: $400K-$600K"
• "Confidence interval: 15-20% improvement"
• "Best case: X, Conservative: Y"
Weekly Installs
5.4K
Repository
GitHub Stars
32.3K
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code4.3K
opencode3.2K
gemini-cli3.1K
codex3.0K
cursor3.0K
github-copilot2.7K