SaaS 发布说明模板:让用户看懂变化
一份发布说明引发的支持工单
上个月我负责一个报表模块的迭代。做了三周,改了七个接口,优化了两个查询,修了若干 UI 细节。上线当天我写了一份发布说明,照搬了 Jira 里的任务标题:「优化报表查询缓存」、「调整筛选器组件状态管理」、「重构导出模块」。
第二天,客户支持团队找过来:「用户说看不懂更新了什么,问我们是不是改了报表字段。」
这份说明写了和没写一样。我面向的是内部开发者的思维,不是使用者的思维。用户不关心缓存、状态管理、重构。他们只关心:「打开报表是不是更快了?」「我能不能直接导出 PDF?」「筛选器操作有没有变化?」
这件事让我重新审视 SaaS 发布说明的写法。发布说明不是 changelog 的复制粘贴,它是产品与用户之间的一次对话。写得好,能减少支持成本、提升功能采用率、建立信任;写得不好,等于白做。
这篇文章我会把这几年积累的经验系统整理出来:发布说明和 changelog 的本质区别、一份可用模板的完整结构、三个真实场景的写法对比,以及一套可复用的检查清单。
发布说明与 Changelog 的本质区别
很多团队把这两者混为一谈,或者干脆直接把 git log 丢给用户。这是问题的起点。
受众决定内容
Changelog 面向构建产品的人——开发者和运维。它记录的是代码层面的变更,追求完整和精确。一条典型的 changelog 条目长这样:
fix(report): use cursor-based pagination for /api/v2/reports
perf(export): switch to streaming response for CSV downloads
feat(filter): add multi-select support to date range picker
发布说明面向使用产品的人——客户、业务方、客户成功团队。它回答的不是「改了什么代码」,而是「对你有什么影响」。
| 维度 | Changelog | Release Notes |
|---|---|---|
| 目标受众 | 开发者、运维团队 | 最终用户、客户成功、业务方 |
| 内容粒度 | 每次 commit、每个 PR | 精选对用户有影响的变更 |
| 语言风格 | 技术术语、模块名、接口路径 | 用户能理解的业务语言 |
| 更新频率 | 每次代码合并即时更新 | 随版本发布,周/双周/月节奏 |
| 核心目的 | 技术追溯、团队协作 | 用户沟通、功能采用、信任建设 |
从技术语言到用户语言的翻译过程
这个翻译不是简单的文字替换,而是视角的切换。Announcekit 在其发布说明最佳实践指南中提到一个核心原则:「发布说明应该回答三个问题——改了什么、为什么重要、用户接下来该怎么做。」
Gleap 的模板建议更进一步:一份完整的发布说明应该包含「What's new(新功能)」「Why it matters(为何重要)」「Who gets it(适用对象)」「How to use it(使用方法)」「Known limitations(已知限制)」五个层次。
这个结构背后的逻辑是:用户不关心你做了什么,只关心这对我意味着什么、我该怎么做。
模板结构与写作规范
一份可用模板的完整结构
以下是我在多个 SaaS 产品中验证过的发布说明模板:
## [版本号] - YYYY-MM-DD
### 本次重点
> 用一两句话概括本次更新最核心的价值。
### 新功能
#### [功能名称]
- **做了什么**:一句话说清楚
- **为什么重要**:对用户工作的实际影响
- **谁可以用**:适用计划/角色/地区
- **怎么用**:操作步骤或入口位置
- **了解更多**:帮助文档链接
### 体验改进
- [改进 1]:一句话说明前后对比
- [改进 2]:一句话说明前后对比
### 问题修复
- [修复 1]:修复了 [场景] 下 [问题描述] 的问题
- [修复 2]:修复了 [场景] 下 [问题描述] 的问题
### 兼容变化(如有)
> 可能影响现有工作流的变更,需要用户注意或操作。
### 已知问题
- [问题 1]:在 [场景] 下可能出现 [表现],预计 [时间] 修复
### 需要用户操作(如有)
- [操作 1]:请在 [时间] 前完成 [操作],详见 [文档链接]每个模块的写作要求
| 模块 | 必须包含 | 常见错误 | 篇幅建议 |
|---|---|---|---|
| 本次重点 | 核心价值一句话 | 写成版本号或日期 | 1-2 句 |
| 新功能 | 做了什么 + 为什么重要 + 怎么用 | 只写标题不写说明 | 每个功能 3-5 句 |
| 体验改进 | 前后对比 | 用「优化了体验」一笔带过 | 每项 1-2 句 |
| 问题修复 | 场景 + 问题描述 | 直接贴 issue 标题 | 每项 1 句 |
| 兼容变化 | 影响范围 + 操作建议 | 藏在角落里不标注 | 必须置顶或高亮 |
| 已知问题 | 表现 + 临时规避方案 | 隐瞒不写 | 每项 1-2 句 |
三个真实场景的写法复盘
案例一:报表查询性能优化
场景:我们将报表列表的查询从全表扫描改为游标分页,大客户的报表加载时间从 12 秒降到 2 秒。
翻车写法:
### 优化
- 重构报表列表查询逻辑,使用 cursor-based pagination 替代 offset 分页
- 优化 /api/v2/reports 接口性能问题在哪?用户看到「cursor-based pagination」完全不知道跟自己有什么关系。这条说明对用户来说信息量为零。
修复后的写法:
### 体验改进
- 报表列表加载速度大幅提升:当报表数量超过 500 条时,
加载时间从约 12 秒缩短到 2 秒以内。无需任何操作,
打开报表页面即可感受变化。改进的核心:用用户能感知的指标(秒数)代替技术指标(分页方式),并明确告知「无需操作」。
案例二:新增定时导出功能
场景:管理员现在可以设置定时导出报表,按周/月自动发送 CSV 到指定邮箱。这个功能来自多个客户的反馈。
翻车写法:
### 新功能
- 新增定时导出模块,支持 cron 表达式配置
- 导出格式:CSV
- 相关接口:POST /api/v2/exports/schedule问题:用户不知道入口在哪、怎么配置、哪些计划可用。「cron 表达式」对非技术用户是一道墙。
修复后的写法:
### 新功能:定时导出报表
管理员现在可以设置报表定时导出,系统会按你设定的频率
自动生成 CSV 并发送到指定邮箱。
**为什么重要**:不再需要每月手动导出报表发给团队,
系统会自动完成。
**谁可以用**:Team、Pro 和 Enterprise 计划的管理员。
**怎么用**:
1. 打开「报表」页面
2. 选择一个已保存的筛选条件
3. 点击右上角「定时导出」
4. 选择频率(每周/每月)和收件人
5. 保存即可
> 这个功能来自 18 位管理员的反馈请求。
> 如果你在月度复盘中也需要定期导出报表,欢迎通过
> 「反馈」入口告诉我们。改进的核心:按「做了什么 → 为什么重要 → 谁能用 → 怎么用」的结构展开,并关联用户反馈来源,建立信任。
案例三:API 接口的 Breaking Change
场景:由于安全合规要求,我们将用户列表 API 的默认分页大小从 100 改为 20,并且废弃了 v1 版本的筛选参数。
翻车写法:
### 变更
- /api/v1/users 接口默认 page_size 改为 20
- 废弃 role_filter 参数,请使用 v2 接口问题:这对集成用户是破坏性变更。如果发布说明埋在「变更」分类下,很容易被忽略。已经对接 v1 的客户会在不知情的情况下面对接口行为变化。
修复后的写法:
### ⚠️ 兼容变化:用户列表 API 调整
**影响范围**:所有通过 API 集成用户列表的开发者。
**变更内容**:
- 用户列表接口(/api/v1/users)默认分页大小从 100 调整为 20
- role_filter 参数将于 2026-09-01 正式废弃
**你需要做什么**:
1. 如果你的集成依赖默认分页大小,请显式传入 page_size=100
2. 如果使用了 role_filter 参数,请迁移到 /api/v2/users 的
role_ids 参数
3. 迁移指南:[用户列表 API 迁移文档](https://example.com/migrate)
**时间线**:
- 2026-07-01:v1 接口开始返回 Deprecation 头
- 2026-09-01:v1 接口正式下线改进的核心:破坏性变更必须在标题和位置上做视觉强调,明确「影响范围」和「操作步骤」,给出清晰的时间线。
发布说明的完整工作流
发布说明不是上线前随手写的一段文字。它需要融入产品的发布流程,成为一个有明确输入和输出的环节。
这个流程的关键节点:
| 阶段 | 责任人 | 输入 | 输出 | 时间要求 |
|---|---|---|---|---|
| 需求标记 | 产品经理 | PRD / 需求卡片 | 变更影响标签(用户可见/内部) | 需求评审时 |
| 变更摘要 | 开发者 | 完成的 PR / 测试报告 | 技术变更说明 | 上线前 2 天 |
| 草稿撰写 | 产品经理/技术写作者 | 变更摘要 + 用户视角 | 发布说明草稿 | 上线前 1 天 |
| 审阅 | 客户成功 | 草稿 | 修改建议 | 上线前半天 |
| 分发 | 运营/客户成功 | 终稿 | 多渠道发布 | 上线当天 |
| 反馈收集 | 客户成功 | 用户反馈 + 工单数据 | 修订建议 | 上线后 1 周 |
写作中的常见问题与对照
写了很多份发布说明之后,我总结出几类高频问题。用对照的方式列出来,方便自查。
问题一:技术术语堆砌
| 坏写法 | 好写法 | 问题 |
|---|---|---|
| 优化了列表查询缓存 | 打开大型列表时加载更快 | 用户不关心实现方式 |
| 切换到 WebSocket 实时推送 | 消息现在会即时推送到页面,无需刷新 | 用户只需要知道结果 |
| 重构状态管理为 Zustand | 页面切换时不再丢失已填写的内容 | 用户感知到体验变化就够了 |
| 引入 RBAC 权限模型 | 管理员现在可以按角色控制团队成员的操作权限 | 用业务场景解释能力 |
问题二:缺少「为什么重要」
| 坏写法 | 好写法 | 问题 |
|---|---|---|
| 新增批量操作功能 | 新增批量操作:选中多个项目后可一次性修改状态,无需逐条操作 | 没有说明解决了什么痛点 |
| 支持自定义字段 | 支持自定义字段:你可以为每个客户添加专属信息,如合同编号、行业标签 | 不知道能填什么、为什么要填 |
| 改进了搜索算法 | 搜索结果现在会优先显示最近 30 天的内容,常用项目排在前面 | 不知道「改进」改进了什么 |
问题三:缺少行动指引
| 坏写法 | 好写法 | 问题 |
|---|---|---|
| 已上线新功能 | 打开「设置 → 通知偏好」即可配置 | 不知道去哪找 |
| 接口已更新 | 请在 9 月 1 日前迁移到新接口,迁移指南见链接 | 不知道要做什么、截止时间 |
| 修复了导出问题 | 如果之前导出 PDF 出现乱码,现在重新导出即可 | 不知道是否需要重新操作 |
问题四:兼容变化处理不当
| 坏写法 | 好写法 | 问题 |
|---|---|---|
| 更新了一些接口参数 | 用户 API 的 name 字段拆分为 first_name 和 last_name,详见迁移文档 | 不知道影响了哪个接口 |
| 废弃旧版登录方式 | OAuth 1.0 登录将于 2026-09-01 停止支持,请切换到 OAuth 2.0 | 没有时间和替代方案 |
| 调整了默认设置 | 新建项目的默认可见性从「团队」改为「私密」 | 不知道会影响什么 |
分发渠道与触达策略
写完只是完成了一半。发布说明发出去、被用户看到,才算真正起作用。
| 渠道 | 适用场景 | 优势 | 注意事项 |
|---|---|---|---|
| 应用内通知 | 所有更新,尤其是新功能和体验改进 | 用户在产品内直接看到,触达率最高 | 不要一次性弹太多,按重要性分级 |
| 邮件推送 | 重大功能、兼容变化 | 能触达沉默用户 | 标题要清晰,避免被当垃圾邮件 |
| 帮助中心/Changelog 页面 | 所有更新 | 可搜索、可追溯 | 保持格式统一,方便用户查阅历史 |
| 产品内 What's New 组件 | 常规更新 | 用户可随时查看,不打断工作流 | 配合引导提示首次使用时展示 |
| 社交媒体/博客 | 重大版本、里程碑 | 面向潜在客户的品牌传播 | 语言更通俗,突出产品价值 |
RightFeature 在其 2026 年的发布说明指南中建议:选择周二到周四的上午发布,这是用户活跃度最高的时段。避免周五下午发布——用户看不到,支持团队也无法及时响应。
常见误区与避坑指南
做了几年发布说明,踩过的坑比写过的字还多。把最常犯的错误整理在这里,希望能帮你跳过这些坑。
误区一:发布说明 = Changelog 的翻译版
很多团队的做法是:上线前让开发者把 git log 或 PR 标题「翻译」成用户能看懂的语言。这个思路本身就有问题。Changelog 里的条目不是每一条都值得出现在发布说明里。内部重构、依赖升级、测试覆盖优化——这些对用户没有任何影响,放进去只会稀释真正重要的信息。
正确的做法是:产品经理在需求评审时就标记哪些变更是「用户可见的」,开发完成后由产品经理或技术写作者从用户视角撰写说明,而不是从技术变更记录中翻译。
误区二:所有更新都写成同一副面孔
有的团队发布说明永远是「新增 XX 功能,优化了 XX 体验,修复了若干问题」——每次都是这三句话,区别只在于 XX 填什么。这种模板化等于没有模板。
一份好的发布说明应该让读者感受到节奏感:这个版本的重点是什么?是重大新功能,还是体验打磨,还是稳定性修复?重点不同,篇幅分配也应该不同。如果这个版本的核心是性能优化,那性能改进应该占最大篇幅;如果是一个全新功能,那功能的介绍应该最详细。
误区三:只发不收
发布说明发出去就完了,不管用户看没看懂。这是最可惜的做法。发布说明不是单向公告,它是一个沟通闭环的起点。
上线后一周内,应该检查几件事:支持工单里是否有用户问发布说明已经说过的问题?新功能的使用率是否达到预期?应用内通知的点击率如何?如果用户仍然困惑,说明发布说明还不够清楚,需要修订或补充帮助文档。
误区四:兼容变化藏在角落里
我见过不少发布说明把 breaking change 埋在「其他改进」或「技术优化」分类下面。这对已经集成 API 的开发者来说是一颗定时炸弹——他们不知道发生了什么变化,直到线上报错。
所有可能影响用户现有工作流的变更,必须在发布说明的最前面或最显眼的位置标注。标题里带 ⚠️ 标记,正文明确影响范围、操作步骤和时间线。宁可用户觉得「太啰嗦」,也不要让他们事后说「为什么不早说」。
检查清单
发布前逐项核对,确保发布说明可用。
撰写阶段
- 每一项变更都从用户视角描述,而非技术实现
- 新功能包含「做了什么 → 为什么重要 → 谁能用 → 怎么用」四个要素
- 兼容变化在标题和位置上做了明确标记
- 已知问题有临时规避方案或预计修复时间
- 没有内部模块名、issue 编号、技术缩写直接出现
- 包含帮助文档或迁移指南的链接
审阅阶段
- 客户成功团队或至少一位非技术同事审阅过
- 让一个不了解这个功能的人读完后,能说出「这次更新对我有什么用」
- 涉及 breaking change 的条目,提前至少 2 周通知受影响用户
分发与反馈阶段
- 选择合适的分发渠道(应用内/邮件/帮助中心)组合
- 上线后一周内检查支持工单,看是否有用户仍然困惑
- 根据反馈修订发布说明,补充不够清楚的说明
- 关联提出需求/反馈的用户,通知他们更新已上线
参考资料
- Release Notes Best Practices (2026) — Announcekit
- Release Notes Template for SaaS Product Updates — Gleap
- Release Notes Guide 2026: Best Practices, Examples & Tools — RightFeature
- Release Notes Examples: 10 Top SaaS Companies — ReleasePad
- What are Release Notes? Definition, Best Practices & Examples — Userpilot
- How to Write Release Notes Your Users Will Actually Read — ProductPlan
- 13 Release Notes Examples (+ Free Template) — Appcues
- Changelog vs. Release Notes — Appcues