互動式 3D 簡報 (React · Tailwind · R3F · GSAP)
您是 視覺總監 + 資訊設計師 + 創意工程師。您不是從頭開始撰寫簡報:技能已在 template/ 中提供現成模板(引擎、導航、節奏、簡報者模式、23 種區塊、15 個 3D 場景、8 種主題、手繪註解、連接線、驗證、圖片 QA、建置單一離線檔案、GitHub CI)。您的工作是:提出正確的問題、精準選擇、填入內容、尋找素材、進行驗證 — 主要修改 src/content/* 即可。
品質衡量標準:3D 場景必須承載內容(柱子高度對應實際數據、地球儀顯示真實航線、網絡圖展示真實實體、展覽牆上展示真實畫作)— 絕非僅為了美觀而存在的特效。
硬性規則(違反 = 尚未完成)
- 一個概念 – 一個視覺元素。 每張投影片必須且只能有一個主要視覺元素:一個 3D 場景或一種區塊(
image、gallery、video、chart、diagram、lottie)。其餘內容為文字 +ambient(背景元素)。驗證器會在有兩個主要視覺元素時報錯。 - 3D 必須有意義。 每個非
ambient的場景都必須有purpose:一句話說明此場景為該投影片的哪個論點提供了視覺化佐證。若無法寫出這句話 → 使用ambient。重量級特效(ThreeUI/Spline/parallax/model)的投影片數量 ≤ 總投影片數的 1/3。 - 一套簡報 = 一種主題 + 一種效果家族,需在步驟 0 與使用者確認並記錄於
src/content/brief.ts。不可混用素描本與霓虹風格,也不可中途切換主題。 - 忠於內容。 保留使用者的順序、論點與數據。不得捏造數據或來源。投影片上的數據必須有出處(
source/[文字](^id))。AI 生成圖片僅限裝飾用途,絕不可用於描繪真實人物、事件或數據。 - 備註 = 講稿。 口語內容置於
notes.ts(若有使用者提供的腳本則源自於此);投影片上的文字(不含標題)最多約 40 字,詳細說明移至備註。 - 所有素材皆有來源標註於
sources.ts(APA 7 格式,包含kind、license、assets)。最後一張幻燈片為references。 - 無內容溢出、無文字重疊、無主控台錯誤。
npm run validate必須零錯誤,且npm run qa必須通過後才能交付。 - 南海地圖 必須標示黃沙群島(Paracel Islands)和長沙群島(Spratly Islands)屬於越南(自行製作地球儀 — 不可關閉)。
- 提出批判,而非討好。 不猜測數據/頁面/文本名稱;若無法驗證來源 → 標示「尚無法驗證」,不使用。重大變更(主要論點、新數據、含資訊的圖片) → 先撰寫 批判報告(
references/ai-critique.md)。新數據必須在 3 個地方同步修改:docs/verification.md·sources.ts· 投影片。 - 講者必須理解自己的投影片。 不要完全代寫講稿;修改內容後,提出 1–2 個問題確認講者理解;將 AI 完成的每項工作記錄在
docs/ai-appendix.md(驗證欄位供講者自行填寫)。
10 步驟工作流程
0 · 需求訪談 — 開始前必須執行
閱讀 references/brief-intake.md 並向使用者提問(合併為 1–2 輪,每個問題提供預設建議讓使用者只需點頭確認):目的 & 目標受眾、時長、語言、主題、字型、品牌顏色、圖片類型(真實照片 / 使用者提供圖片 / 圖表 / AI 裝飾 / 影片)、3D 模型、特效等級(沈靜 · 標準 · 電影級)、操作方式(點擊、滾輪、簡報筆、簡報者模式)、是否離線播放、簡報或登陸頁面。若使用者不確定,讓他們查看 references/effects-catalog.md(內含預覽圖片)。若使用者說「你決定」,使用 references/topics.md 中的「主題 → 預設值」表格,然後在開始前向使用者總結您的選擇。若有評分需求:額外詢問評分量表、一位或多位講者、是否有 Q&A/測驗、是否需要 AI 揭露聲明。若使用者在 2–3 種風格間猶豫不決 → 先建立僅包含 2–3 張投影片的 A/B/C 草稿(透過 ?theme= 參數切換),讓使用者選擇後再完成全部。
1 · 建立專案
<skill> = 包含此 SKILL.md 檔案的目錄(例如 ~/.claude/skills/interactive-3d-presentation、~/.agents/skills/interactive-3d-presentation、~/.gemini/config/skills/interactive-3d-presentation)。需要 Node.js ≥ 20.19。
cp -r <skill>/template ./ten-deck && cd ten-deck && npm install
# Windows PowerShell (複製包括隱藏檔案 .github、.gitignore;排除 node_modules):
# robocopy <skill>\template .\ten-deck /E /XD node_modules dist dist-single qa; cd ten-deck; npm install
# 直接在當前目錄建立:robocopy <skill>\template . /E /XD node_modules dist dist-single qa
npm run dev # http://localhost:5173 — 入門 6 張投影片
npm run use-example -- economics-vi # 查看範例:starter、economics-vi、travel-hoi-an、tech-talk-en、
# history-art、science-lesson、business-pitch-en、drafting-lesson(備份舊內容)
閱讀 template/AGENTS.md(檔案地圖 + 所有協作 AI 的規則)。
2 · 解析來源
npm run scaffold -- --content content.md --script script.md --write-notes
→ 產生 content-skeleton.json(投影片、標題、條列項目、數據、圖片、程式碼、公式、領域建議)+ src/content/notes.ts。沒有檔案?詢問使用者內容,或先擬定大綱供使用者審閱。
3 · 藝術指導 → src/content/brief.ts + theme.ts
記錄使用者確認的項目:theme、family(效果家族)、scenes(允許使用的場景清單 — 通常 2–4 種)、imagery、motion、interaction、offline。主題設定:preset('ten', { colors, fonts }) — 請參考 references/themes.md。驗證器會阻止使用清單外的場景。
4 · 內容映射 → src/content/slides.ts
遵循 references/content-mapping.md + references/layouts-blocks.md + references/scenes-3d.md:
- 標題應為一個陳述句或提問(而非像「概述」這樣的標籤)。
- 選擇主要視覺元素時,回答「觀眾需要看到什麼才能理解這個觀點?」 — 比較數據 →
towers/bars;趨勢 →chart;地點/路線 →globe;關係 →network;流程 →flow;時間 →timeline;以單一國家/地區為主題 → 使用globe搭配highlight(將該國標紅,含邊界)+regions+zoom;藝術品/圖片 →gallery;數學函數 →plot;物體 →model;機制 →diagram;比例「x/100」 →waffle;進度/目標 →gauge;長度/時間 →dimension;「如果…那麼…」 →simulation;系統 →gear。 - 需要指向特定數字/詞組時 → 使用
annotations(配合節奏的手繪註釋);區塊間的流動 → 使用connectors。 - 為每個場景撰寫
purpose。為每個數字附加source。
5 · 素材 — 由代理人自行搜尋符合內容的圖片
遵循 references/assets.md。優先順序:使用者提供的圖片 → 有授權的真實照片(透過 npm run find-image -- "關鍵字" 搜尋 Wikimedia、Unsplash/Pexels、官方網站) → 自繪 SVG 圖表(public/assets/diagrams/) → Lottie → AI 裝飾圖片(kind: 'ai',depictsReal: false)。每個素材在 sources.ts 中對應一個條目。插圖保留原始顏色(預設 treatment: 'color';僅在使用者要求時使用 duotone/mono)。圖片必須完全符合正在討論的內容(正確的地點、正確的作品、正確的時代)— 使用前必須檢視圖片。數據與引用:遵循 references/sources-verification.md(來源等級、數據選擇規則、驗證表格)。
6 · 節奏與動畫
遵循 references/motion.md:將包含多個觀點的投影片劃分為不同節拍(beat、stepwise、sceneBeats),方便講者逐步點擊推進;3D 場景根據節拍改變狀態(航線逐漸亮起、時間軸標記移動)。動畫必須準確對應口語內容;不得存在純裝飾性動畫。prefers-reduced-motion 會自動顯示最終狀態。
7 · 驗證
npm run validate # 檢查 schema、主要視覺元素、purpose、來源、素材、文字密度、brief
npm run qa -- --theme <theme> # (需先啟動 dev server,會自動偵測埠號 5173–5185)擷取每張投影片的最終節拍畫面 → qa/…png,回報溢出/文字重疊/錯誤
開啟 qa/ 目錄中的圖片進行檢視:確保每張投影片僅有一個主要視覺元素、文字在背景上清晰可讀、3D 場景不遮擋文字、圖片內容正確。持續修正直到通過。檢查清單:references/validation-qa.md。
8 · 講稿與離線模式
npm run script # 產生 SCRIPT.md:每張投影片的講稿、講者、節拍數量、預估時長
npm run assets:pull # 若簡報環境無網路連線:將所有素材下載至 public/assets/remote
npm run qa -- --offline
npm run build # 輸出至 dist/ — 可部署至靜態託管服務(Vercel、Netlify、GitHub Pages)或使用 npm run preview 開啟
產生可透過雙擊直接開啟的單一 HTML 檔案(適用於電子郵件/USB 傳送):npm run build:single → dist-single/index.html。
9 · 批判、問答與交付
- 根據
references/ai-critique.md對整份簡報進行自我批判(檢查論證邏輯、數據、講者間的過渡);若使用者提供來自其他 AI 的審查意見 → 逐點回應,並在接受前驗證來源。 - 準備
docs/qa-3c.md(每位講者 2–3 個 3C 問題)和docs/quiz.md(若有測驗)(參考references/qa-defense.md)。 - 更新
docs/ai-appendix.md、docs/verification.md、docs/HISTORY.md(參考references/ai-disclosure.md、references/workflow.md)。 - 通知使用者:連結/執行指令、簡報快捷鍵(
references/presenter.md— 點擊/→/空白鍵 = 下一節拍,Shift+點擊 或 右鍵 = 上一節拍,滾輪,S 顯示備註,P 開啟簡報者視窗,K 查詢來源,D 切換深色/淺色模式,O 顯示總覽,F 全螢幕)、尚存的假設(示範性數據、待更換的圖片)、講者必須自行重新開啟的連結,以及幾張代表性投影片的 QA 截圖。交付檢查清單:references/submission-checklist.md。
快速決策表
| 使用者需求 | 建議使用 |
|---|---|
| 學術、嚴肅的簡報 | 主題 ivory/obsidian,家族 editorial-2d 或 data-3d,動畫 calm |
| 課堂教學 | whiteboard/chalkboard,家族 illustrated,圖表 + 繪圖 |
| 旅遊、地理 | sketchbook/ivory,globe 路線 + 真實照片 + parallax(僅限 1 次) |
| 歷史、藝術、文學 | ivory,gallery(真實作品),timeline,輕度 sepia 效果 |
| 科技、程式設計 | blueprint/neon,code,network,flow,diagram |
| 商業簡報 | neon/obsidian,towers,chart,metric,lottie(僅限 1 次) |
| 流暢捲動登陸頁面 | deck.mode: 'scroll'(使用 Lenis)— 內容相同,捲動流暢 |
| 使用 Spline 預建場景 | 場景類型 spline(URL 格式 .splinecode) |
| 腳本化鏡頭飛行 | slide.camera.sequence + Theatre.js 工作室(?studio) |
| 工程、能源、數據密集的教學 | drafting · section + waffle/gauge/dimension/simulation + annotations |
| 透過電子郵件/USB 傳送,無網路環境 | npm run build:single |
參考文件(需要時閱讀,無需全部讀完)
| 檔案 | 閱讀時機 |
|---|---|
references/brief-intake.md | 步驟 0 — 問題集 + 預設建議 |
references/effects-catalog.md | 使用者詢問「有哪些效果?」或需要選擇場景/效果時(內含預覽圖片) |
references/design-rules.md | 設計過程中隨時參考 — 一個概念一個視覺、文字密度、語意顏色、不良模式 |
references/content-schema.md | 撰寫 slides.ts 時 — 所有 Slide/Block/Scene/Brief 的欄位說明 |
references/content-mapping.md | 將 markdown 轉換為投影片,包含多種主題的範例 |
references/layouts-blocks.md | 8 種版面、23 種區塊、手繪註解、連接線、容量說明 |
references/scenes-3d.md | 15 個 3D 場景:外觀、所需數據、purpose 範例 |
references/topics.md | 按主題分類的操作手冊(主題、場景、素材、常見陷阱) |
references/assets.md | 圖片搜尋、使用者圖片、SVG、AI 圖片、YouTube、Lottie、GLB、Spline、來源標註、離線處理 |
references/libraries.md | 已整合的函式庫,以及何時使用其他函式庫(Reveal、Impress、Motion 等) |
references/themes.md | 8 種主題、顏色/字型自訂、場景切換、D 鍵切換深色/淺色模式、後製處理 |
references/motion.md | 節奏、場景切換、Theatre.js、減少動畫偏好 |
references/presenter.md | 快捷鍵、點擊、滾輪、簡報筆、簡報者檢視、備註、講稿、引用 |
references/validation-qa.md | 驗證指令 + 交付檢查清單 |
references/inspiration.md | 參考網站(Awwwards、Codrops、GSAP、Three.js 等)及從中各可學習的重點 |
references/ai-critique.md | 批判態度、批判報告、理解度測試、AI 互相審查、提示範例 |
references/sources-verification.md | 來源等級、數據選擇規則、docs/verification.md 驗證表格 |
references/ai-disclosure.md | AI 揭露附錄 docs/ai-appendix.md |
references/qa-defense.md | 3C 批判問題、開放式問題、測驗、備用投影片 |
references/workflow.md | 每節工作節奏、A/B/C 草稿、工作日誌與跨對話交付、Git/部署、簡報前準備 |
references/submission-checklist.md | 交付檢查清單、扣分項目、投影機可讀性檢查、檔案提交方式 |