課程簡報設計
將一堂課的內容轉換為能讓學習者有效學習的簡報以及供配音版本使用的影片腳本。一次處理一堂課,每堂課一個資料夾。
輸出位置預設為 slides/<課程>/<課程單元>/,除非使用者指定其他路徑:
| 檔案 | 說明 |
|---|---|
slides.json | 單一資料來源:每頁投影片的資料,使用 16 種投影片類型(請參考 references/slide-types.md)。編輯此檔案後可重新建置 |
<file_name>.pptx | 16:9 比例的簡報,使用 Arial 字型與三色主題;每頁的旁白皆寫在備忘稿中 |
<file_name>.video-script.md | 提供給影片製作步驟的檔案:每頁投影片一個區塊,包含畫面文字、製作說明、可供文字轉語音使用的旁白,以及秒數,另外加上一個總覽表格 |
_preview/slide-NN.png, _preview/contact-sheet.png | 每頁投影片的 1920x1080 圖片以及聯絡頁,供視覺檢查及影片畫面使用 |
<file_name>.preview.mp4(選擇性) | 依照腳本時間進行的無聲簡報,或當每頁有音檔時也可生成有配音的版本 |
腳本使用的工具:Python 3.9+ 搭配 python-pptx、Pillow、lxml(以及用於圖示的 cairosvg、sharp-cli、rsvg-convert 或 Inkscape);LibreOffice 和 Poppler(pdftoppm)用於生成預覽;ffmpeg 用於選擇性預覽影片。圖示採用 Lucide 集(ISC 授權),放在 assets/icons/ 中。
工作流程
步驟 0. 閱讀來源並確認需求
- 完整閱讀課程來源:教學目標、對象、授課方式、含時間分配的課程計畫、腳本、含答案的問題、任何投影片大綱、講義。如果使用者只提供標題,請要求提供內容,或先自行撰寫(配套技能
lesson-content-writer可處理此需求)。 - 閱讀
references/slide-standards.md(規則與簡報結構)和references/slide-types.md(16 種投影片類型及其文字限制)。 - 確認:授課方式(自學影片:每個影片群組需有自己的開場、主體、結尾以及暫停投影片;或現場課程:投影片需包含提問及練習簡報);語言(
language,任何語言皆可,en和vi有額外檢查);主題(預設navy;每門課程使用同一主題,每堂課重複使用);講師對學習者的稱呼方式(從腳本中取得);講師姓名與聯絡資訊用於頁尾。
步驟 1. 規劃簡報
根據來源中的投影片大綱或課程順序,撰寫一個表格:編號 | 類型 | 該頁的核心概念 | 視覺元素或圖示 | 提問或暫停 | 影片編號。限制:
- 完整結構:
title-> (如果有,則加入一個question,作為先試再學的開場)->objectives->agenda-> 每個部分加入一個section(或再次使用agenda,加上current標示目前位置)-> 2 到 5 張內容投影片 -> 至少一個question->summary->closing。 - 每頁只傳遞一個概念。 每份簡報至少使用 4 種投影片類型,不連續出現 3 張相同類型的投影片,每 10 到 12 分鐘的旁白中至少安排一次暫停或提問。
- 規劃情感曲線,並在 1/3 和 2/3 處安排節奏改變點;以陳述句撰寫標題,而非單純標籤(參考
references/rhythm-and-titles.md)。有來源的數字應使用big-numbers或chart類型呈現,不要放在項目符號中。 - 事實、術語、數字和範例僅能來自課程來源。不得自行發明。範例應來自學習者自身的工作。
- 影片課程:遵循課程計畫,將來源中的每個章節、範例、暫停提問和練習範例都以投影片或旁白涵蓋,並宣告
videos規劃時間,以便腳本能預警時間過短的影片。來源中的投影片大綱是最低要求,而非上限。一堂 100 分鐘的課程通常需要 35 到 60 張投影片;17 頁的範本僅為技術展示,不是完整的課程。
步驟 2. 撰寫 slides.json
複製 templates/slides.example.json 並根據規劃填入內容。對於每張投影片:
- 畫面文字是關鍵字和簡短行數,需能容納在 24 點字型中(每種類型的限制請見
slide-types.md)。文字太長?請分割投影片。切勿縮小字型。 narration:根據課程腳本改寫,適合聽覺接收(參考references/narration-and-video-script.md):每行一個呼吸,每行結尾使用.,?或!,數字寫成口語唸法,不要逐字讀出投影片內容,提問投影片需說「請暫停影片」。notes:製作指示(逐一顯示、指向、圈選、插入片段、「靜音 60 秒」)。- 根據意義選擇圖示(
slide-types.md第 4 節),且對於整個課程中重複出現的概念,保持一致使用同一個圖示。真實圖片(螢幕截圖、產品照片)應放在slides.json旁,並在IMAGE-SOURCES.md中記錄來源。從網路下載圖片前需詢問,並檢查授權。 - 像人類一樣寫作,而非廣告文案(參考
references/plain-human-voice.md)。
步驟 3. 建置與檢查
python scripts/build_slides.py slides/<課程>/<課程單元>/slides.json
腳本會在遇到嚴重違規時停止:超過 6 行、文字無法容納在 24 點字型中、孤兒字(無法透過合併最後兩個字解決)、缺少圖示或圖片、未知類型、使用禁止的破折號或 AI 常見詞語、計時標籤與旁白不一致、旁白從未讀到的項目。修正 slides.json 並重新建置,直到出現 0 個錯誤。同時閱讀所有警告(行太長、旁白中有數字、連續三張相同類型的投影片、無節奏改變點、影片時間太短)並修正,或記錄不修正的原因。
python scripts/render_slides.py slides/<課程>/<課程單元>/<file_name>.pptx
檢查 _preview/contact-sheet.png,然後以實際尺寸檢查每一張 slide-NN.png,對照 slide-standards.md 第 5 節的清單:文字被裁剪或重疊、大片空白區域、未對齊、在縮小到三分之一時是否仍可閱讀、每頁是否只有一個視覺焦點。修正、重新建置、再次檢查,直到完整檢查無問題。從未在沒有檢查最新渲染結果的情況下就回報完成。
選擇性,用於檢查節奏或提供草稿影片:
python scripts/preview_video.py slides/<課程>/<課程單元>/slides.json [--audio <包含 S01.mp3 ... 的資料夾>]
長時間的影片課程(每個主題一個影片,10 到 12 分鐘):維護一個課程層級的 slides.json,並在每頁投影片上標記 video 編號,然後進行分割:
python scripts/split_videos.py slides/<課程>/<課程單元>/slides.json --build --render
每個影片會獲得自己的資料夾和簡報,包含標題投影片(「影片 k/n」)、自己的教學目標、主體,以及連結到下一個影片的結尾。請編輯課程層級的檔案,切勿編輯自動生成的檔案。
步驟 4. 報告
向使用者提供:簡報檔案路徑、影片腳本路徑、聯絡頁路徑;一個簡短的總覽表格(編號 - 類型 - 概念 - 秒數);投影片數量與預估長度;主題;你的假設(稱呼方式、數字及其來源);你保留的警告及其原因。顯示聯絡頁。
連續多堂課
在同一門課程的資料夾中,沿用之前課程的主題、頁尾、稱呼方式以及概念對應的圖示集。讓 title 和 closing 投影片在整門課程中保持相同版面,並讓每個結尾連結到下一堂課。
原則
- 標準不會變動(
slide-standards.md)。標準內的內容才是發揮創意的地方。腳本是守門員,絕不為了通過而關閉任何檢查。 - 投影片給眼睛看,旁白給耳朵聽。兩個通道互補,絕不重複。
- 學習者需要動起來。每個部分都包含一個提問或暫停時間;簡報以一個具體行動結尾。
- 標題預設為大寫(
"title_case": "upper"),JSON 保持原樣,因此旁白和字幕不受影響。大寫字母較寬,所以標題要保持簡短。 - 24 點是所有元素的最低限制,包括標籤、說明文字、來源和頁尾。太長就重寫,不要縮小字型。
- 無孤兒字。在標題、卡片、步驟或項目符號的最後一行只有一個字會看起來不完整。腳本會在可行時將最後兩個字合併在一起,若不行則停止。
- 執行後再交付。建置、渲染、檢查、評估。絕不靠猜測。
- 要新增投影片類型,請在
scripts/build_slides.py中加入s_<類型>方法,在KINDS中註冊,在slide-types.md中記錄,並在使用前建置測試用簡報。
參考檔案
references/slide-standards.md- 數位學習投影片的定義、十項設計規則及腳本如何檢查每一項、簡報結構、多媒體學習原則、交付前檢查清單。references/slide-types.md-slides.json格式、16 種投影片類型及其文字限制、主題、影片規劃、圖示清單。references/narration-and-video-script.md- 適用於文字轉語音或真人配音的旁白規則、製作說明、讀取每個畫面項目、移交給影片製作。references/rhythm-and-titles.md- 一堂課的情感曲線、1/3 和 2/3 處的節奏改變點、陳述句標題、開場、比較、數字和結尾的句型。references/plain-human-voice.md- 如何去除 AI 語調:禁止使用的破折號和詞語、句子節奏、具體細節、觀點。templates/slides.example.json- 一個 17 頁的示範課程,使用所有主要類型,已建置並檢查完成。