付费文档
用 MDX frontmatter 创建带试读和会员解锁的文档页面
01MVP 的文档系统内置了会员试读能力。你不需要单独写页面,只要在 MDX 文档顶部加上 access: paid,这篇文章就会变成会员文档。
快速版
最小配置如下:
---
title: 拿到第一个付费用户的 7 天流程
description: 一套适合 MVP 早期使用的付费验证流程。
access: paid
previewRatio: 0.2
---
这里写正文内容。字段含义:
| 字段 | 说明 |
|---|---|
access | 文档访问权限。设为 paid 后,未解锁用户只能看到试读内容。 |
previewRatio | 试读比例。0.2 表示大约展示正文的 20%。可用范围是 0.05 到 0.8。 |
不写 access 时,文档默认是免费内容。
接下来你可以:
- 在需要会员解锁的 MDX 文件里添加
access: paid - 按内容价值调整
previewRatio - 在本地登录一个未购买账号,检查试读和开通会员入口
- 用有效会员账号检查完整正文是否可读
会员文档的边界
access: paid 只表示这篇文章需要有效会员才能阅读全文。
MDX 里不要写这些内容:
- 商品 ID
- 支付 provider 的 price id
- 单篇购买权益
- 源码包 ID
- 兑换码规则
这些属于支付、商品或交付系统,不属于文档内容本身。文档作者只需要关心这篇文章是否免费、试读多少。
创建一篇付费文档
新建 MDX 文件
文档一般放在 apps/01mvp-web/content/docs 下。比如:
apps/01mvp-web/content/docs/cases/my-paid-guide.mdx写入 frontmatter
---
title: 我的付费教程
description: 这篇教程会展示试读内容,会员解锁后可以阅读全文。
access: paid
previewRatio: 0.2
---正常编写正文
正文仍然按普通 MDX 写法处理,可以使用标题、列表、代码块、表格、Callout、Steps 等组件。
## 第一部分
这里会进入试读内容。
## 第二部分
未解锁用户通常看不到这一段,会员可以继续阅读全文。加入目录
如果这个文件所在目录有 meta.json,把新文件名加入 pages:
{
"title": "实战案例",
"pages": [ "my-paid-guide"]
}文件名不需要写 .mdx 或 .zh.mdx 后缀。
阅读和解锁流程
付费文档在页面上的行为如下:
| 读者状态 | 页面表现 |
|---|---|
| 未登录 | 显示试读内容,并提示登录后继续。 |
| 已登录但不是会员 | 显示试读内容,并展示开通会员入口。 |
| 有效会员 | 显示完整 MDX 正文和目录。 |
V1 不支持单篇文档购买,也不支持兑换码解锁某篇文档。低价项目包、资料包、源码相关交付物走数字商品系统,一次性交付,不和会员文档权限绑定。
试读内容怎么生成
previewRatio 控制未解锁用户能看到多少正文。比如:
previewRatio: 0.2表示大约展示 20% 的正文。系统会尽量按段落截断,不会强行把一句话切开。
需要注意:
- 试读最少会保留一小段可读内容,避免页面只有一两行。
- 试读比例会被限制在
0.05到0.8之间。 - 搜索索引、公开文本和 LLM 文档接口只会暴露试读部分,不会输出完整付费正文。
相关文件
| 文件 | 作用 |
|---|---|
apps/01mvp-web/content-collections.ts | 定义 access、previewRatio 等 frontmatter 字段。 |
apps/01mvp-web/src/lib/docs/access.ts | 判断文档是否解锁。 |
apps/01mvp-web/src/lib/docs/preview.ts | 生成试读内容,并限制公开搜索和 LLM 文本。 |
apps/01mvp-web/src/app/(main)/(docs)/docs/[[...path]]/page.tsx | 渲染付费文档的试读、购买提示和完整正文。 |
apps/01mvp-web/src/lib/payments/channels.ts | 维护站内 checkout 可用支付渠道。 |