B站2026年Q1财报放出了一个信号:总营收74.7亿元,净利润2.02亿元——去年同期还在亏1070万。这不是靠砍成本硬挤出来的利润,而是用户增长、创作者收入、商业变现三条曲线同时向上交叉的结果。
用户侧:日均119分钟意味着什么
日均活跃用户1.15亿,同比增长8%。更值得关注的是日均使用时长119分钟,创历史新高。接近两小时的日均停留,说明内容供给的密度和粘性已经到了一个新阶段——用户不是"刷一下就走",而是把B站当成了持续消费的主阵地。
对做内容推荐、用户留存策略的团队来说,119分钟是一个值得拆解的指标:哪些品类贡献了时长?短视频和中长视频的时长占比如何变化?这些细分数据财报不会给,但可以用自己的业务数据做同类分析。
创作者侧:千粉UP主增长30%才是核心引擎
千粉以上UP主数量同比增长超30%,UP主人均收入同比增长24%。这两个数字放在一起看,逻辑很清晰:更多人跨过了"千粉门槛"→更多人有了变现能力→变现反馈激励更多创作→内容供给增加→用户时长增加→商业收入增加。
这是一个典型的正反馈闭环。对平台型产品来说,"创作者人均收入增长"比"平台总营收增长"更值得盯——前者是生态健康的底层指标,后者只是结果。
用Python搭建一个财报关键指标追踪器
下面这个脚本可以从公开财报数据中提取核心指标,计算同比变化,并生成一张趋势对比图。你可以把每个季度的数据追加进去,观察趋势拐点。
"""
B站财报关键指标追踪器
数据来源:公开财报摘要,手动录入后自动计算同比与趋势
"""
import matplotlib.pyplot as plt
from dataclasses import dataclass
# ── 数据定义 ──────────────────────────────────────────
@dataclass
class QuarterMetrics:
quarter: str # 如 "2025Q1"
revenue: float # 总营收(亿元)
net_profit: float # 净利润(亿元,亏损为负)
dau: float # 日均活跃用户(亿)
avg_minutes: float # 日均使用时长(分钟)
up_income_growth: float # UP主人均收入同比增速(%)
# 录入公开数据(后续季度持续追加)
data = [
QuarterMetrics("2025Q1", 68.0, -0.107, 1.07, 108, 10),
QuarterMetrics("2025Q2", 70.0, 0.5, 1.10, 112, 16),
QuarterMetrics("2025Q3", 72.5, 1.2, 1.12, 115, 20),
QuarterMetrics("2026Q1", 74.7, 2.02, 1.15, 119, 24),
]
# ── 计算同比 ──────────────────────────────────────────
def calc_yoy(current: QuarterMetrics, previous: QuarterMetrics) -> dict:
"""计算关键指标的同比变化"""
return {
"营收同比": (current.revenue - previous.revenue) / previous.revenue * 100,
"净利润变化": current.net_profit - previous.net_profit,
"DAU同比": (current.dau - previous.dau) / previous.dau * 100,
"时长同比": (current.avg_minutes - previous.avg_minutes) / previous.avg_minutes * 100,
}
# 打印2026Q1 vs 2025Q1的同比
yoy = calc_yoy(data[3], data[0])
print("=== 2026Q1 vs 2025Q1 同比 ===")
for k, v in yoy.items():
unit = "%" if "同比" in k else "亿元"
print(f" {k}: {v:.2f}{unit}")
# ── 趋势可视化 ────────────────────────────────────────
quarters = [d.quarter for d in data]
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
fig.suptitle("B站财报关键指标趋势", fontsize=14)
metrics_config = [
("总营收(亿元)", [d.revenue for d in data], axes[0][0]),
("净利润(亿元)", [d.net_profit for d in data], axes[0][1]),
("DAU(亿)", [d.dau for d in data], axes[1][0]),
("日均时长(分钟)", [d.avg_minutes for d in data], axes[1][1]),
]
for title, values, ax in metrics_config:
ax.plot(quarters, values, marker="o", linewidth=2)
ax.set_title(title)
ax.grid(True, alpha=0.3)
# 标注数值
for q, v in zip(quarters, values):
ax.annotate(f"{v:.1f}", (q, v), textcoords="offset points",
xyoffset=(0, 8), ha="center", fontsize=9)
plt.tight_layout()
plt.savefig("bilibili_metrics_trend.png", dpi=150)
print("\n趋势图已保存: bilibili_metrics_trend.png")
运行前需要安装依赖:
pip install matplotlib
python bilibili_tracker.py
输出示例:
=== 2026Q1 vs 2025Q1 同比 ===
营收同比: 9.85%
净利润变化: 2.13亿元
DAU同比: 7.48%
时长同比: 10.19%
趋势图已保存: bilibili_metrics_trend.png
你可以把data列表替换成自己关注的任何平台财报数据,改改字段名就能复用。追加季度数据后,拐点会自然浮现——比如净利润从负转正的那个交叉点。
从数据到决策:几个值得关注的信号
利润转正的可持续性。 2.02亿净利润对74.7亿营收来说,利润率仅2.7%,还很薄。关键看后续季度利润率是否能稳步抬升,而不是靠一次性因素跳了一下又回去。
创作者收入增速(24%)> DAU增速(8%)。 这说明变现效率在提升,不是单纯靠堆用户量撑收入。对做创作者经济、社区产品的人来说,这是一个值得对标的节奏:人均收入增速应该跑在用户增速前面,否则生态会从"创作者驱动"退化为"流量驱动"。
时长119分钟的隐性风险。 用户时长创新高是好事,但也意味着注意力已经接近饱和。下一步的增长引擎可能不在"让人待更久",而在"让人花更多钱"——广告加载率、直播付费率、会员转化率这些商业化效率指标才是下一阶段的胜负手。
实操建议: 如果你正在做社区或内容平台的数据分析,建议把"创作者人均收入增速"和"用户时长增速"做成一张双轴图持续追踪。当两条曲线的差距持续拉大,说明生态在变健康;当差距收窄甚至反转,就要警惕创作者流失的前兆。上面的脚本加两行就能画出这张图,不妨试试。