指南

如何构建在线课程平台:课时、视频、付款与学习进度

构建在线课程平台,你需要:每门课程的目录和销售页面、按模块组织的课时、安全的视频托管场所、付款后解锁访问的机制,以及让学员跟踪学习进度的方式。AI 应用构建器可以根据描述创建页面、数据库和业务逻辑;你再连接付款服务商和视频托管平台。最重要的细节是访问控制:每个课时都必须在服务器端检查学员是否已付款,而不能只是隐藏链接。

课程平台需要什么

先列出谁会使用它,以及每个人要做什么。

角色需要的功能
访客浏览课程,阅读包含课程大纲、价格和试看课时的销售页面,然后购买
学员登录,查看“我的课程”,按顺序观看课时,标记完成,从上次离开的地方继续学习
讲师 / 你创建课程、模块和课时,上传或链接视频,设置价格,查看已报名的学员

背后的数据如下:

数据主要字段
课程标题、描述、价格、封面图、已发布或草稿
模块所属课程、标题、顺序
课时所属模块、标题、顺序、视频引用、文字笔记、附件、是否为免费试看
学员账户、姓名、邮箱
报名记录学员、课程、获得访问权限的方式(购买、优惠券、手动添加)、日期
学习进度学员、课时、是否完成、最后学习位置

可选功能,大致按人们通常添加的顺序排列:可下载的资料、测验、结业证书、评论或讨论区、定期释放(每周解锁一个模块)、优惠券、课程套餐和订阅。

构建前需要做出的决定

视频存放在哪里

视频是最容易做错的部分。视频文件很大,需要在不同网络条件下以不同画质流畅播放,而且也是人们最想复制的东西。把原始视频文件存放在应用的通用文件存储中,然后自己提供服务,通常是个糟糕的选择:在网速较慢时会很卡,而且每次观看都会增加带宽成本。

方案适用于需要注意
带隐私控制的专业视频托管(Vimeo、Mux、Bunny Stream、Cloudflare Stream 等)付费课程每家都有自己的定价模式;请在其官网上比较存储空间、播放时长和功能
未列出的 YouTube 视频免费课程、引流资料“未列出”并不等于私密:任何拿到链接的人都能观看和分享
保存在你自己的存储中的文件短视频片段、可下载的 PDF 和音频带宽成本高,且没有自适应码率流媒体

无论选择哪家托管平台,都要确认它支持将播放限制在你的域名内,或者能签发有效期很短的播放链接。这样,被复制的嵌入代码就无法在别人的网站上使用。

人们如何付款

  • 按课程单独一次性购买。 最简单。通过 Stripe 等付款服务商提供结账页面,之后永久访问。
  • 所有课程统一订阅。 如果你经常发布新内容,这种方式更好。但你还需要在订阅结束时取消访问权限。我们关于如何构建会员网站的指南详细介绍了订阅权限控制。
  • 免费课程加付费升级。 适合先积累受众。

还需要考虑税务。许多国家会对卖给消费者的数字产品征税,有时以买家所在地为准。付款服务商提供计算税费的工具,有些服务还会作为“商户记录方”(merchant of record)替你处理税务。在开始跨境销售之前,请先与会计师确认你的义务。

如何解锁访问权限

付款成功后,付款服务商会通过 webhook(什么是 webhook)向你的服务器发送一条消息,说明谁为哪门课程付了款。然后你的服务器创建报名记录。不要仅仅因为学员进入了“感谢购买”页面就解锁访问,因为这个页面在未付款的情况下也能访问。

分步构建

第一步:从一门课程、不接入付款开始

先构建学员的使用体验,用一门真实课程和几个课时来测试。如果观看和完成课时的过程并不愉快,付款功能也救不了它。

为 Sketch Daily 构建一个在线课程网站,这是一门面向初学者的绘画课程。首页列出所有课程;课程页面包含描述、按模块划分的课程大纲、价格,以及一节免费试看课时。已登录的学员可以看到“我的课程”,课时页面包含嵌入式视频、视频下方的笔记、“标记为已完成”按钮,以及上一节和下一节按钮,并且每门课程都有一个进度条。课程、模块、课时、报名记录和学习进度都保存在数据库中。添加一个管理区域,让我可以创建课程、调整课时顺序,并为每个课时粘贴视频嵌入链接。设计简洁、沉稳,并且在手机上运行良好。

第二步:添加账户

学员需要登录,这样他们的学习进度和购买记录才能跟随他们。通常从邮箱和密码开始;对于容易忘记密码的人来说,通过邮件发送“魔法链接”登录会更友好。参见如何为应用添加登录。

第三步:在服务器端锁定课时

要求每个课时页面和每个课时数据请求都在服务器端检查:已登录的学员是否已报名该课程(或者该课时是否被标记为免费试看)。然后进行测试:以一位未报名的学员身份登录,并直接在浏览器中粘贴一个课时的 URL。你应该看到“购买本课程”的提示,而不是课时内容。

第四步:接入付款

创建付款服务商账户,先使用其测试模式,并将密钥作为环境变量保存。要求在每个课程页面上添加结账按钮,并添加一个 webhook 端点,在付款成功时创建报名记录。使用服务商提供的测试卡进行测试,包括一次失败的付款。如何为应用添加付款功能介绍了完整步骤。

第五步:添加邮件

至少需要:包含课程链接的付款收据,以及密码重置邮件。之后可以再添加:提醒长时间未登录的学员。邮件功能需要发送服务商和一个已验证的域名。

第六步:以三种不同的身份测试

上线前,分别以三种身份体验整个平台:访客(我能理解自己在买什么吗?)、新学员(我能否在两分钟内完成付款、登录并开始第一节课?),以及讲师本人(我能否在不求助的情况下添加一节课?)。

常见错误

  • 只在界面上隐藏课时。 如果课时数据可以在没有服务器端报名检查的情况下被获取,任何人都能拿到它。
  • 自己提供大型视频文件。 学员观看缓慢,而你的成本高昂。
  • 在还没有人购买之前就构建测验、证书和社区。 先卖出第一门课程。
  • 没有试看课时。 人们在付款之前,希望听到你的声音,看到你的讲课方式。
  • 忘记退款和取消的订阅。 要决定在这两种情况下访问权限如何处理,并把它构建出来。
  • 无法手动修复学员的访问权限。 你需要一个管理员操作,用于处理客服请求时授予或撤销访问权限。

成本是多少

持续性的成本包括:应用的托管和数据库、视频托管服务(由服务商定价,通常按存储和观看量计费)、每笔销售的付款处理费、邮件服务商,以及域名。托管式课程平台通常会把大部分费用打包进月度套餐,较低档位有时还会收取交易手续费。在做决定之前,请比较总成本,并计入你自己用于维护的时间。这里不列出供应商的具体价格,因为价格会变化;请查看各供应商的定价页面。

什么时候现成的产品是更好的选择

Teachable、Thinkific、Kajabi 和 Podia 等托管式课程平台,被设计为在一个地方处理视频、结账、学员账户和邮件,其中一些还能协助处理销售税;请查看每个平台当前的功能。在以下情况下,它们通常是更好的选择:

  • 你要销售一门标准视频课程,并希望本周就上线
  • 你完全不想维护软件
  • 你希望使用内置的营销功能,例如邮件序列和销售漏斗

当学习体验本身就是产品(互动练习、定制的练习工具、小组学习功能)时,当你希望完全掌控品牌和数据时,或者当你的规模下平台费用超过自行运营的成本时,自建就很有意义。一种折中的做法是先在托管平台上验证想法,等确切知道缺少什么之后,再开始自建。

用 Mythex 构建

Mythex 是一款 AI 应用构建器:你描述课程网站,它就会在实时预览中构建页面、管理后台和数据库,然后发布到一个公开网址。当你的应用需要保存课程和学习进度时,它会为项目添加数据库;对于 PDF 和图片等上传内容,则使用文件存储。Mythex 没有内置视频托管、学员登录或课程付款这些产品:你需要自己选择视频托管服务,使用认证库或服务商为应用添加登录功能,并连接你自己的 Stripe 账户,将密钥保存为项目机密。文档介绍了 Stripe 付款、为应用用户添加登录以及处理 webhook。

若想更快上手,可以试试用于销售页面的课程落地页模板,或用于目录的课程店铺模板。如果你的课程只是一个更大产品构想的一部分,如何构建 SaaS MVP会告诉你第一版应该省去哪些内容。

常见问题

课程视频应该托管在哪里?

请使用专门的视频托管服务,而不是把视频文件存放在你的应用里。专业的托管平台能处理流媒体画质、不同设备的兼容性和域名限制,而且大多数都提供隐私设置,让视频只能在你的网站上播放。

付费课程可以使用未列出的 YouTube 视频吗?

可以,但“未列出”并不等于私密:任何拿到链接的人都能观看和分享。对于付费内容,具有域名级隐私控制或签名播放链接的托管服务能更好地保护你的作品。

学员付款后如何获得访问权限?

付款服务商通常通过 webhook 告知你的服务器付款已成功,然后服务器记录该学员已拥有这门课程。之后每个课时页面在展示内容之前,都会在服务器端检查这条记录。

我应该自己构建课程平台,还是使用 Teachable 或 Kajabi?

如果你想以最少的设置和维护销售一门标准视频课程,就使用托管的课程平台。当你需要特定的学习体验、全程使用自己的品牌形象,或者需要这些平台不提供的功能时,再自己构建。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)