指南

如何建置線上課程平台:課程單元、影片、付款與學習進度

建置線上課程平台,你需要每門課程的目錄與銷售頁面、依模組組織的課程單元、安全的影片託管地點、付款後解鎖權限的機制,以及讓學員追蹤學習進度的方式。AI App 建置工具可以根據描述建立頁面、資料庫與邏輯;你則要連接付款服務商與影片託管服務。最重要的細節是權限控制:每一個課程單元都必須在伺服器端確認學員已付款,而不能只是隱藏連結。

課程平台需要什麼

先列出誰會使用它,以及每個人做什麼。

使用者需要的功能
訪客瀏覽課程、閱讀含課程大綱、價格與試看單元的銷售頁面,然後購買
學員登入、查看「我的課程」、依序觀看單元、標記完成、從上次停下的地方繼續
講師/你建立課程、模組與單元,上傳或連結影片,設定價格,查看誰已報名

背後的資料如下:

資料主要欄位
課程標題、說明、價格、封面圖、已發布或草稿
模組所屬課程、標題、順序
單元所屬模組、標題、順序、影片參照、文字筆記、附件、是否為免費試看
學員帳號、姓名、電子郵件
報名紀錄學員、課程、取得權限的方式(購買、優惠碼、人工指派)、日期
學習進度學員、單元、是否完成、最後觀看位置

可選功能,大致依人們通常加入的順序排列:可下載的資源、測驗、結訓證書、留言或討論區、定時開放(每週解鎖一個模組)、優惠碼、套裝與訂閱。

建置前需要做的決定

影片放在哪裡

影片是最容易出錯的部分。影片檔案很大,需要在不同網路品質下以不同畫質串流,而且是人們最想複製的東西。把原始影片檔存在 App 的一般檔案儲存空間,並由自己提供串流,通常是糟糕的選擇:在網路較差時很慢,而且每次觀看都會增加頻寬成本。

選項適合注意事項
具隱私控制的專用影片託管(Vimeo、Mux、Bunny Stream、Cloudflare Stream 等)付費課程各家計費方式不同;請比較儲存空間、播放流量與功能,並查看其官網
不公開的 YouTube 影片免費課程、名單磁鐵「不公開」並不是私密:任何拿到連結的人都能觀看與分享
存放在你自己的儲存空間短片、可下載的 PDF 與音訊頻寬成本高,且沒有自適應串流

無論選擇哪一種託管,都要尋找可以把播放限制在你的網域,或發出短效播放連結的功能。這能防止別人複製的嵌入碼在其他網站上運作。

人們如何付款

  • 每門課程一次買斷。 最簡單。使用 Stripe 等付款服務商的結帳頁面,之後永久存取。
  • 所有課程的訂閱方案。 如果你經常發布內容,會比較合適。但你也必須在訂閱結束時移除存取權。我們的建置會員網站指南詳細說明了以訂閱控管權限的方法。
  • 免費課程加上付費升級。 適合先建立受眾。

另外也要考慮稅務。許多國家會對銷售給消費者的數位產品課稅,有時依買家所在地決定。付款服務商提供計算稅額的工具,有些服務則扮演「經銷商」的角色並為你處理稅務。在跨國銷售之前,請先與會計師確認你的義務。

如何解鎖存取權

付款成功後,付款服務商會向你的伺服器發送訊息(Webhook),說明誰為什麼付了款。接著你的伺服器建立報名紀錄。不要只因學員來到「感謝購買」頁面就解鎖權限,因為該頁面可以在未付款的情況下被造訪。

一步一步建置

步驟 1:先做一門課、不接付款

先建置學員的體驗,並放上一門真實的課程與幾個單元。如果觀看與完成單元的過程不順暢,付款功能也無法改善它。

為 Sketch Daily 建置線上課程網站,這是一門針對初學者的素描課。首頁列出所有課程;課程頁面包含說明、依模組排列的課程大綱、價格,以及一個免費試看單元。已登入的學員會看到「我的課程」,以及單元頁面:內嵌影片、下方的筆記、「標記完成」按鈕,以及上一個/下一個按鈕,每門課程有各自的進度條。課程、模組、單元、報名紀錄與學習進度都存入資料庫。新增管理區,讓我可以建立課程、重新排序單元,並為每個單元貼上影片嵌入連結。設計要乾淨、沉穩,且在手機上運作良好。

步驟 2:加入帳號

學員需要登入,這樣他們的學習進度與購買紀錄才會跟著他們。最常見的起點是電子郵件加密碼;對於容易忘記密碼的人來說,透過電子郵件的「魔術連結」登入更友善。參見如何為你的 App 加入登入功能。

步驟 3:在伺服器端鎖定單元

要求每一個單元頁面,以及每一個單元資料的請求,都在伺服器端確認已登入的學員已報名該課程(或該單元是免費試看)。然後實際測試:以未報名的學員身分登入,並直接在瀏覽器貼上單元網址。你應該看到「購買本課程」的訊息,而不是單元內容。

步驟 4:接上付款

建立付款服務商帳號,先使用測試模式,並把密鑰以環境變數存放。請求在每個課程頁面加入結帳按鈕,並建立一個 Webhook 端點,在付款成功時建立報名紀錄。使用付款服務商的測試卡測試,也包含失敗的付款。如何為你的 App 加入付款功能會逐步說明。

步驟 5:加入電子郵件

至少要有:附上課程連結的收據,以及密碼重設。之後可以為好一陣子沒登入的學員加入提醒。電子郵件需要寄送服務與已驗證的網域。

步驟 6:以三種不同身分測試

上線前,分別以訪客(我能不能看懂我要買的是什麼?)、新學員(我能否在兩分鐘內完成付款、登入並開始第一個單元?)以及講師本人(我能否在不求助的情況下新增一個單元?)的身分,走完整個平台。

常見錯誤

  • 只在介面上隱藏單元。 如果單元資料在沒有伺服器端報名檢查的情況下就能被取得,任何人都能拿到。
  • 自己提供大型影片檔的串流。 對學員來說很慢,對你來說成本很高。
  • 在還沒有人購買之前就建置測驗、證書與社群功能。 先賣出第一門課。
  • 沒有試看單元。 人們在付款前想先聽聽你的聲音、看看你的教學方式。
  • 忘了退款與取消的訂閱。 決定這些情況下的存取權如何處理,並把它實際建置出來。
  • 無法手動修正學員的存取權。 處理客服請求時,你需要一個管理動作來授予或移除權限。

成本

持續性的成本包括 App 的主機與資料庫、影片託管服務(由託管商定價,通常依儲存與觀看量計費)、每筆銷售的付款手續費、電子郵件服務與網域。代管的課程平台通常會把這些整合成每月方案,較低層級有時還會收取交易手續費。在決定之前,請比較總成本,包括你自己維護所花費的時間。我們不在此列出廠商價格,因為價格會變動;請查閱各廠商的定價頁面。

何時現成的產品是更好的選擇

Teachable、Thinkific、Kajabi 與 Podia 等代管課程平台,是為了在同一處處理影片、結帳、學員帳號與電子郵件而打造的,有些還能協助處理銷售稅;請查看各家目前的功能。當出現以下情況時,它們通常是更好的選擇:

  • 你要銷售標準的影片課程,並希望本週就上線
  • 你完全不想維護軟體
  • 你希望使用內建的行銷功能,例如電子郵件序列與銷售漏斗

當學習體驗本身就是產品時(互動式練習、自訂的練習工具、分梯次的學習功能),當你希望對品牌與資料有完全的控制,或當以你的銷量來看,平台費用超過自行運作的成本時,自建就比較合理。一個折衷的做法是先在代管平台上驗證想法,確切知道缺少什麼之後,再投入建置。

用 Mythex 建置

Mythex 是一套 AI App 建置工具:你描述課程網站,它會在即時預覽中建置頁面、管理後台與資料庫,然後發布到公開網址。當 App 需要保存課程與進度時,它會為專案加入資料庫;需要上傳 PDF 與圖片等檔案時,則加入檔案儲存空間。Mythex 不內建影片託管、學員登入或課程付款等產品:你需要選擇影片託管服務,以驗證程式庫或服務加入 App 登入,並連接你自己的 Stripe 帳號,把金鑰以專案機密方式存放。文件涵蓋了 Stripe 付款、為 App 使用者加入登入,以及處理 Webhook。

若想快速開始,可以試用課程著陸頁範本作為銷售頁面,或課程商店範本作為目錄。如果你的課程是更大產品構想的一部分,如何建置 SaaS MVP說明了在第一版中應該省略哪些東西。

常見問題

課程影片應該放在哪裡?

請使用專為此設計的影片託管服務,而不要把影片檔案存在你的 App 裡。專門的託管服務會處理串流品質、各種裝置的相容性與網域限制,多數服務也提供隱私設定,讓影片只能在你的網站播放。

付費課程可以使用不公開的 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 简体中文 繁體中文(香港)