关于 monetization
面向 SaaS 和数字产品团队的变现技能,涵盖 Stripe 计费实现、定价与客户流失管理,并提供实践示例、营收指标及留存方案。
主要功能
- 01Stripe 订阅与结账示例
- 02定价策略与套餐设计
- 03流失信号与挽留流程
- 04单位经济效益与营收指标
- 05变现任务快捷命令
适用场景
- 01配置订阅、结账和支付 Webhook
- 02评估 SaaS 定价与套餐结构
- 03识别流失风险并规划挽留沟通
- 04计算 LTV/CAC 并监测营收
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill monetization安装后在 Claude Code 中输入/monetization确认已加载。
详细介绍
变现 - 从产品到收入
概述
数字产品变现的策略与实施 - Stripe、订阅、定价实验、免费增值、升级流程、流失预防、收入优化以及 SaaS 商业模式。在以下情况启用:集成 Stripe、创建订阅计划、定价策略、升级/降级、支付 webhook、免费试用、流失、LTV/CAC、单位经济模型、商业模式。
何时使用此技能
- 当你需要此领域的专业协助时
何时不要使用此技能
- 任务与变现无关
- 更简单、更具体的工具可以处理该请求
- 用户需要通用协助,无需领域专业知识
工作原理
价格是你付出的,价值是你得到的。- 沃伦·巴菲特 完美的变现能够获取与所交付价值成比例的价值。
黄金法则
用户在以下情况下付费:
- 产品解决了真实问题(需求)
- 解决方案优于替代方案(差异化)
- 价格被感知为公平(价值感知)
- 收费时机自然(时机)
经典错误
- 在展示价值之前收费(扼杀激活)
- 价格太低(暗示低质量)
- 计划太多(选择瘫痪)
- 无需信用卡的试用(低转化率)
- 隐形流失(没有即将取消的警报)
初始设置
pip install stripe
## Ou
npm install stripe
## Config.Py
import stripe
import os
stripe.api_key = os.environ["STRIPE_SECRET_KEY"]
STRIPE_WEBHOOK_SECRET = os.environ["STRIPE_WEBHOOK_SECRET"]
PLANS = {
"free": None,
"pro": os.environ["STRIPE_PRICE_PRO"],
"business": os.environ["STRIPE_PRICE_BIZ"],
}
创建 Customer 和 Subscription
def create_customer(email: str, name: str, user_id: str) -> str:
customer = stripe.Customer.create(
email=email,
name=name,
metadata={"user_id": user_id}
)
return customer.id
def create_subscription(customer_id: str, price_id: str, trial_days: int = 14):
subscription = stripe.Subscription.create(
customer=customer_id,
items=[{"price": price_id}],
trial_period_days=trial_days,
payment_behavior="default_incomplete",
expand=["latest_invoice.payment_intent"],
)
return {
"subscription_id": subscription.id,
"client_secret": subscription.latest_invoice.payment_intent.client_secret,
"status": subscription.status
}
Checkout Session(推荐用于转化)
def create_checkout_session(
customer_id: str,
price_id: str,
success_url: str,
cancel_url: str,
trial_days: int = 14
) -> str:
session = stripe.checkout.Session.create(
customer=customer_id,
mode="subscription",
line_items=[{"price": price_id, "quantity": 1}],
subscription_data={"trial_period_days": trial_days},
success_url=success_url + "?session_id={CHECKOUT_SESSION_ID}",
cancel_url=cancel_url,
allow_promotion_codes=True,
)
return session.url
Customer Portal(自助服务)
def create_portal_session(customer_id: str, return_url: str) -> str:
session = stripe.billing_portal.Session.create(
customer=customer_id,
return_url=return_url,
)
return session.url
Webhook - 处理事件
from fastapi import Request, HTTPException
import stripe
async def stripe_webhook(request: Request):
payload = await request.body()
sig_header = request.headers.get("stripe-signature")
try:
event = stripe.Webhook.construct_event(
payload, sig_header, STRIPE_WEBHOOK_SECRET
)
except ValueError:
raise HTTPException(status_code=400, detail="Invalid payload")
except stripe.error.SignatureVerificationError:
raise HTTPException(status_code=400, detail="Invalid signature")
handlers = {
"customer.subscription.created": handle_subscription_created,
"customer.subscription.updated": handle_subscription_updated,
"customer.subscription.deleted": handle_subscription_deleted,
"invoice.payment_succeeded": handle_payment_succeeded,
"invoice.payment_failed": handle_payment_failed,
"customer.subscription.trial_will_end": handle_trial_ending,
}
handler = handlers.get(event["type"])
if handler:
await handler(event["data"]["object"])
return {"status": "ok"}
验证 Subscription 状态
def get_subscription_status(customer_id: str) -> dict:
subscriptions = stripe.Subscription.list(
customer=customer_id,
status="all",
limit=1
)
if not subscriptions.data:
return {"tier": "free", "status": "none"}
sub = subscriptions.data[0]
return {
"tier": get_tier_from_price(sub.items.data[0].price.id),
"status": sub.status,
"trial_end": sub.trial_end,
"current_period_end": sub.current_period_end,
"cancel_at_period_end": sub.cancel_at_period_end,
}
SaaS 定价框架
方法 1:基于价值的定价(推荐)
1. Calcule o valor economico entregue ao usuario
Ex: produto economiza 2h/semana = R$ 200/mes de valor
2. Capture 10-30% do valor criado
Ex: R$ 29/mes = 14% do valor
3. Valide com pesquisa de willingness-to-pay
4. Teste 3 price points (A/B test)
方法 2:竞争锚定
Referencia: ChatGPT Plus = $20/mes (R$ 100)
Anchor: Notion = R$ 32/mes
Posicao: Pro = R$ 29/mes (mais barato que ChatGPT, similar ao Notion)
Mensagem: Tudo que o ChatGPT faz, por voz no Alexa
定价心理学
R$ 29/mes (nao R$ 30 - efeito do digito esquerdo)
Plano anual com desconto claro: R$ 249/ano (economize R$ 99)
Destaque no plano que voce quer vender (visual hierarchy)
Ancoragem: mostra o plano caro primeiro
Trial sem cartao para ativacao, com cartao para retencao
Badge Mais popular no plano middle
计划结构(3 是正确的数字)
| Feature | Free | Pro | Business |
|---|---|---|---|
| 价格 | 免费 | R$ 29/月 | R$ 99/月 |
| 每月对话数 | 50 | 无限 | 无限 |
| 记忆 | 7 天 | 1 年 | 永久 |
| 专家看板 | 否 | 是 | 是 |
| 多用户 | 否 | 否 | 最多 10 |
| API 访问 | 否 | 否 | 是 |
| 支持 | 否 | 邮件 | 优先 |
即将流失的信号
CHURN_SIGNALS = {
"high_risk": [
"nao logou nos ultimos 14 dias",
"uso caiu >70% em 2 semanas",
"abriu cancelamento mas nao concluiu",
"ticket de suporte aberto sem resolucao",
],
"medium_risk": [
"nao logou em 7 dias",
"uso caiu >40%",
"nao completou onboarding",
"nunca usou feature core",
]
}
反流失序列
Dia 0: Usuario nao usa por 7 dias
-> Email: Sentimos sua falta. O que aconteceu?
Dia 3: Sem resposta
-> Push/Email: case study de usuario similar com sucesso
Dia 7: Nao voltou
-> Email: oferta especial (20% off por 3 meses)
Dia 14: Trial expirando
-> In-app modal + email urgente: Sua conta vai dormir em 3 dias
Dia 30: Cancelou
-> Offboarding email: Lamentamos ver voce ir.
-> 3 meses depois: reativacao com novidades
退出调查(必填)
CANCELLATION_REASONS = [
"Muito caro",
"Nao uso o suficiente",
"Falta funcionalidade X",
"Encontrei alternativa melhor",
"Problemas tecnicos",
"Outro"
]
## Falta Feature -> Roadmap + Notificacao Quando Lancar
核心计算
def calculate_unit_economics(
mrr: float,
customers: int,
new_customers: int,
churned: int,
cac_total: float,
):
arpu = mrr / customers
churn_rate = churned / customers
ltv = arpu / churn_rate
cac = cac_total / new_customers
ltv_cac = ltv / cac
months_to_recover_cac = cac / arpu
return {
"ARPU": f"R$ {arpu:.2f}",
"Churn Rate": f"{churn_rate*100:.1f}%",
"LTV": f"R$ {ltv:.0f}",
"CAC": f"R$ {cac:.0f}",
"LTV/CAC": f"{ltv_cac:.1f}x",
"Payback": f"{months_to_recover_cac:.1f} meses",
"Status": "Saudavel" if ltv_cac > 3 else "Otimizar"
}
巴西 SaaS B2C 基准
| 指标 | 差 | 一般 | 好 | 优秀 |
|---|---|---|---|---|
| 月度流失率 | >7% | 5-7% | 2-5% | <2% |
| LTV/CAC | <1x | 1-3x | 3-5x | >5x |
| 回收期 | >18m | 12-18m | 6-12m | <6m |
| 试用->付费转化率 | <3% | 3-8% | 8-15% | >15% |
| 月环比增长 | <5% | 5-10% | 10-20% | >20% |
收入仪表盘(每日指标)
MRR atual: R$ XX.XXX
New MRR (novos assinantes): +R$ X.XXX
Expansion MRR (upgrades): +R$ XXX
Contraction MRR (downgrades): -R$ XXX
Churned MRR (cancelamentos): -R$ XXX
Net New MRR: +/- R$ XXX
ARR (Annualized): R$ XX.XXX x 12
Churn Rate: X.X%
Net Revenue Retention: XXX% (meta: >100%)
使用 Stripe 实现收入自动化
async def check_usage_and_upsell(user_id: str, usage: dict):
if usage["conversations_this_month"] >= 45:
await send_upgrade_prompt(
user_id=user_id,
message="Voce esta usando 90% do seu limite. Faca upgrade para Pro.",
cta_url=f"/upgrade?utm=usage-limit"
)
7. 快速命令
| 命令 | 操作 |
|---|---|
| /stripe-setup | 从零配置 Stripe |
| /pricing-analysis | 分析当前定价策略 |
| /churn-playbook | 个性化的反流失序列 |
| /unit-economics | 计算 LTV/CAC 和财务健康状况 |
| /upgrade-flow | 升级流程设计 |
| /revenue-dashboard | 收入仪表盘模板 |
| /trial-optimization | 优化试用转化率 |
最佳实践
- 提供关于你的项目和需求的清晰、具体的上下文
- 在将建议应用于生产代码之前,先审查所有建议
- 与其他互补技能结合使用,以获得全面分析
常见陷阱
- 将此技能用于其专业领域之外的任务
- 在不了解自身具体上下文的情况下直接应用建议
- 未提供足够的项目上下文,导致分析不准确
相关技能
analytics-product- 用于增强分析的互补技能growth-engine- 用于增强分析的互补技能product-design- 用于增强分析的互补技能product-inventor- 用于增强分析的互补技能
限制
- 仅当任务与上述范围明确匹配时,才使用此技能。
- 不要将输出视为特定环境验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并寻求澄清。
评论
支持 Markdown