Communitygithub.com

iwyusdaz/chalkreel

將可衡量的學習目標轉換為簡短、以程式碼繪製的解釋性影片,包含旁白、對齊字幕、逐字稿、口述影像筆記、來源可追溯性,並依據 Mayer 多媒體原則進行品質控管。

chalkreel 是什麼?

Chalkreel 是一個 AI 助手技能,專為 instructional designers、e-learning 開發人員和教育工作者設計,可從可衡量的學習目標(而非廣泛的主題)開始,生成可存取的解釋性影片。與典型的 AI 影片生成器不同,它避免使用生成式影片模型或庫存素材,完全依靠 Remotion 元件、SVG 和 CSS 來繪製幀,確保每個畫面都可審查、可比較且可重現。此技能強制執行嚴格的門禁流程:驗證 ABCD 目標、將事實主張研究與來源記錄在分類帳中、確保旁白通過人性化檢查,以及對照 Mayer 多媒體原則(如分段、信號提示和連貫性)進行品質審查。它將可存取性放在首位,透過本地 TTS(kokoro-82m)產生逐字時間戳記,並編譯字尾對齊的 SRT 字幕、無障礙 HTML 逐字稿以及每個片段的詳細口述影像筆記。最終交付成果包括影片、字幕、逐字稿和完整的文件軌跡(客觀性、研究、品質報告),所有這些都明確標記為 AI 生成的,並通過四個人類批准關卡,以確保教學品質和道德透明度。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iwyusdaz/chalkreel/tree/main/skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

chalkreel — 目標輸入,無障礙解釋性影片輸出

您正在製作一部學習型解釋性影片。與追求觀看時長的 AI 解釋器不同,學習型影片從可衡量的目標開始,有目的地管理認知負荷(Mayer 的多媒體原則),並將無障礙交付成果——字幕、逐字稿、口述影像筆記——視為一級產出,而非事後補充。旁白中的每一項事實主張都可追溯至來源。

觀眾聽到的所有內容也必須是可見或可讀的。告知學習者的所有內容都必須是可追溯的。未經人類把關,任何內容都不能交付。

嚴格規則

  1. 不使用生成式影片模型。不使用庫存素材。場景內容不使用影像生成器。 影格以程式碼繪製(Remotion 元件、SVG、CSS)。這確保每個影格都可審查、可比較且可重現。
  2. 四道人工關卡。 未經明確批准並記錄在專案日誌中,絕不能越過任何關卡:關卡 1 目標 + 節拍圖、關卡 2 旁白腳本、關卡 3 視覺風格、關卡 4 最終剪輯。
  3. 標記所有合成內容。 建構的範例資料、模擬的時間點和 AI 審查結果必須在檔案本身中標記為如此。絕不能將乾燥的成品呈現為真實的渲染/TTS 輸出。
  4. 先有主張,後有腳本。 在撰寫旁白之前,必須先有包含來源的主張研究筆記;沒有分類帳列的數字不得進入腳本。
  5. 優先使用本地 TTS。 預設語音為 kokoro-82m(本地,免費)。支援自備 TTS;未經使用者設定金鑰,絕不能呼叫雲端 TTS。不使用使用者選擇的 TTS 以外的本地模型。

輸入

objective:    一個可衡量的句子(ABCD — 目標關卡強制執行此格式)
audience:     誰在學習,以及他們的假定先備知識
length:       目標時長(預設 60–120 秒)
language:     旁白語言(預設 en)

拒絕主題。「一支關於光合作用的影片」不是有效輸入;請執行 scripts/objective-gate.mjs 並與使用者反覆迭代,直到通過為止。

流程

objective + audience + prior knowledge + length + language
  |
  +-- 1. 目標關卡    objective-gate.mjs;將主題改寫為 ABCD 目標;
  |                        學習者可見的「您將能夠...」框架;
  |                        根據 Mayer 分段原則(10-30 秒節拍)分割的節拍圖
  |                        << 關卡 1:使用者批准目標 + 節拍圖
  +-- 2. 研究          提取主張、尋找來源、撰寫主張分類帳
  |                        (claim-001 樣式 ID;附上標題/出版/年份的來源;
  |                        寧可使用模糊措辭,也不使用編造的統計數據)
  +-- 3. 旁白          根據片段預算的腳本;經人性化檢查通過
  |                        (scripts/lint-narration.mjs 必須回傳 0);
  |                        針對目標受眾進行閱讀水平檢查
  |                        << 關卡 2:使用者批准腳本
  +-- 4. 風格評比      使用範本以 2-3 種背景/主題變體渲染**相同**節拍;
  |                        使用者透過視覺選擇
  |                        << 關卡 3:使用者選擇風格
  +-- 5. 建置          每個節拍一個 Remotion 片段元件 (template/);
  |                        帶有逐字時間戳記的 TTS(預設 kokoro-82m,可自備);
  |                        建立時間 JSON {segments[].words[{w,start,end}]}
  +-- 6. 無障礙功能    make-srt.mjs(字尾對齊 SRT)、make-transcript.mjs
  |                        (逐字稿 HTML)、每個片段的
  |                        口述影像筆記,然後 a11y-lint.mjs **必須**通過
  +-- 7. 品質控管      根據以下書面標準對渲染影格 + 腳本進行評分;
  |                        撰寫 qc-report.md 並標示方法
  |                        << 關卡 4:使用者審查最終剪輯
  +-- 交付:video.mp4 + .srt + transcript.html + instructor-notes.md
      + 主張分類帳 + 完整文件軌跡(目標、研究、旁白、
      分鏡、時間、品質報告)

片段預算

  • 每個片段 10–30 秒(Mayer 分段原則;未經使用者覆寫,硬上限為 30 秒)。
  • 每 60 秒旁白約 145 個字;一個片段一個想法。
  • 螢幕文字:僅限標籤和簡短短語(2–7 個字),切勿逐字重複旁白(冗餘原則)。
  • 每個片段定義:旁白、一種場景類型、螢幕文字、口述影像筆記、主張 ID。

TTS 預設

  • 預設:kokoro-82m,本地。語音:af_heart(或使用者選擇)。速度 1.0。
  • 從 TTS/對齊器捕獲逐字時間戳記至時間 JSON。如果 TTS 無法發出時間戳記,請使用強制對齊器進行對齊;絕不能猜測時間——猜測的對齊會導致字幕漂移,而往返檢查只會捕獲不匹配的文字,但無法捕獲漂移的時間。
  • 自備 TTS:任何能回傳逐字時間戳記的引擎;在專案日誌中記錄引擎和語音。

腳本(皆為獨立執行,node >=18,無依賴項)

腳本用途回傳 0 表示
scripts/objective-gate.mjs "<objective>"驗證 ABCD 目標目標是可衡量的
scripts/lint-narration.mjs <script.txt>AI 寫作痕跡檢查器(TTS 前執行)腳本聽起來夠人性化,可以錄製
scripts/make-srt.mjs <timing.json> --out x.srt從時間 JSON 生成字尾對齊 SRTSRT 已寫入
scripts/make-transcript.mjs --timing <timing.json> --storyboard <sb.json> --out t.html無障礙逐字稿頁面HTML 已寫入
scripts/a11y-lint.mjs <storyboard.json>「沒有僅透過音訊傳達的資訊」+ 交付成果檢查每個旁白事實都在螢幕上或逐字稿/AD 筆記中

負向測試範例位於 examples/ 中(bad-narration.txt、bad-storyboard.json)——始終透過對這些範例執行檢查工具並確認它們失敗,來驗證新設定。

檔案格式

timing.json — 逐字時間戳記(來自 TTS 對齊):

{ "video": { "title": "...", "fps": 30 },
  "segments": [ { "id": "seg-01", "text": "...", "start": 0.0,
    "words": [ { "w": "Close", "start": 0.1, "end": 0.34 } ] } ] }

storyboard.json — 每個片段一個物件:

{ "video": { "title": "...", "fps": 30, "width": 1920, "height": 1080,
    "srtEmitted": true, "transcriptEmitted": true, "claimsLedger": "path" },
  "segments": [ { "id": "seg-01", "title": "Hook", "sceneKind": "statement",
    "startSec": 0, "durationSec": 18.2, "narration": "...",
    "visual": { "backdrop": "chalkboard", "description": "...",
                "onScreenText": ["Recall beats rereading"] },
    "audioDescriptionNote": "...", "claims": [] } ] }

sceneKind 對應到範本元件:statement、definition、timeline、cycle、list、caption。在範本中新增新的類型,而非在專案內部建立一次性元件。

QC 標準包(針對此標準對渲染輸出進行評分,以書面形式)

QC 代理人並非「觀看」影片並發表意見。它會為每個標準評定通過/失敗,並附上引用觀察結果。影格級別的檢查需要渲染的影格;腳本級別的檢查則針對成品進行。將結果寫入 qc-report.md,並標示審查方法(例如「AI 啟發式審查」)。

腳本級別(每次執行)

  1. 目標一致性 — 每個片段都推進已批准的目標;任何未推進的內容都應刪除(將連貫性原則應用於目標)。
  2. 主張可追溯性 — 旁白中的每個數字、日期或具名發現都有一行附有來源的主張分類帳。任何孤立事實都視為失敗。
  3. 旁白檢查 — lint-narration.mjs 回傳 0。
  4. 閱讀水平 — 句子平均少於約 17 個字;無未經說明的技術術語;使用具體動詞而非抽象概念。
  5. 無障礙套件 — a11y-lint.mjs 回傳 0;SRT 和逐字稿存在;每個片段都有 AD 筆記。

影格級別(根據每個片段的渲染影格或螢幕截圖執行)

  1. 信號提示 — 當下的關鍵術語/數字在旁白時被視覺化突顯(粉筆底線、顏色、箭頭)。
  2. 連貫性 — 螢幕上無裝飾性元素;每個元素都對應一個旁白想法;除非使用者要求,否則無背景音樂。
  3. 冗餘 — 螢幕文字不逐字重複旁白;應為標籤和簡短短語。
  4. 空間連續性 — 標籤與其描述的對象相鄰;影格內無需在圖例和圖表之間尋找。
  5. 時間連續性 — 元素的顯示與其旁白行同步(根據 timing.json 檢查),而非提前或延後顯示。
  6. 易讀性 — 粉筆線條與背景形成對比(螢幕文字替代方案 >= 4.5:1);在 1920x1080 或 1280x720 下無裁剪。
  7. 動態預算 — 動畫在 1.2 秒內穩定下來;在引入不同想法的句子期間,不應有任何移動。

每個標準評分為通過/失敗,並附上證據。1–5 的任何失敗都會阻擋關卡 4。6–12 的任何失敗都需要修復並重新渲染該片段,或獲得使用者的明確接受。

風格預設(關卡 3 評比)

  • 背景:chalkboard(深灰綠色,微妙紋理,柔和暗角)。評比替代方案:paper(暖米白色,墨水線條)、night(接近黑色,單一強調色)。
  • 調色板:粉筆白主色,一個強調色(琥珀色 #FFC66D)用於突顯。僅突顯信號提示所需的內容。
  • 字體:大(1080p 下 >= 64 px),高對比度;字幕置中底部,帶半透明底板,每行最多 2 行 / 42 個字符。
  • 尊重觀眾:無閃爍(禁止 > 3 次閃爍/秒),動畫快速穩定,進度條顯示章節位置。

文件軌跡(全部提交)

01-objective.md (+ gate output)     05-timing.json
02-research-notes.md                06-subtitles.srt
03-narration.md                     07-claims-ledger.md
04-storyboard.json                  08-qc-report.md

文件軌跡與影片本身同等重要:它使流程可被其他教學設計師審計。

誠實的限制(在專案日誌中說明)

  • 代理人 QC 是模型進行的啟發式審查,非專家背書。
  • 不得聲稱輸出「經過教學驗證」——這需要此技能無法進行的學習者測試。
  • 字尾對齊字幕的品質取決於 TTS 對齊;在關卡 4 之前,對 10 個提示進行抽樣檢查。
  • 語音授權:kokoro-82m 語音有其自己的使用條款;在商業發布前請檢查。

歸屬

方法層面的啟發,無複製程式碼:anything2explainer(PolyForm Noncommercial — 僅方法,請參閱此儲存庫的 ATTRIBUTION.md),來自 vox-director(MIT)的關卡式批准流程模式,以及來自 blader/humanizer 和維基百科「AI 寫作的跡象」(此儲存庫的 lint 為獨立實作)的 AI 寫作痕跡檢查清單概念。


此翻譯以英文原文為準。

相關技能