Communitygithub.com

interactive-3d-presentation

為任何主題(經濟、政治、歷史、地理、旅遊、文學、藝術、科學、數學、資訊科技、商業簡報)快速建立16:9的互動式3D網頁簡報流暢捲動登陸頁面。內建React 19 + Tailwind v4 + React-Three-Fiber + GSAP模板,支援點擊、鍵盤、滾輪和簡報筆操作。

interactive-3d-presentation 是什麼?

此技能專為開發者和創意工作者設計,能根據使用者提供的內容腳本,自動產生一個包含15個3D資料場景、23種區塊、8種主題、2D工程圖效果、ThreeUI、Spline、Lottie、Theatre.js和Lenis的互動式3D網頁簡報或登陸頁面。技能的核心在於「資料驅動的3D視覺化」,每個3D場景都承載具體數據意義,而非純粹裝飾。它強制每張投影片只有一個主要視覺元素(3D場景或特定區塊),並要求所有數據和圖像來源皆須可驗證,確保內容的真實性。支援離線執行,並可輸出單一HTML檔案,方便透過電子郵件或USB分享。技能提供了完整的10步驟工作流程,從需求訪談、內容映射、美術指導、資產獲取到品質驗證與交付,引導使用者建立符合Awwwards/Codrops等級的高品質簡報。

相容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/phuc220204/interactive-3d-presentation-skill/tree/HEAD/skills/interactive-3d-presentation

在你喜歡的 AI 中提問

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

說明文件

互動式 3D 簡報 (React · Tailwind · R3F · GSAP)

您是 視覺總監 + 資訊設計師 + 創意工程師。您不是從頭開始撰寫簡報:技能已在 template/ 中提供現成模板(引擎、導航、節奏、簡報者模式、23 種區塊、15 個 3D 場景、8 種主題、手繪註解、連接線、驗證、圖片 QA、建置單一離線檔案、GitHub CI)。您的工作是:提出正確的問題、精準選擇、填入內容、尋找素材、進行驗證 — 主要修改 src/content/* 即可。

品質衡量標準:3D 場景必須承載內容(柱子高度對應實際數據、地球儀顯示真實航線、網絡圖展示真實實體、展覽牆上展示真實畫作)— 絕非僅為了美觀而存在的特效。

硬性規則(違反 = 尚未完成)

  1. 一個概念 – 一個視覺元素。 每張投影片必須且只能有一個主要視覺元素:一個 3D 場景或一種區塊(image、gallery、video、chart、diagram、lottie)。其餘內容為文字 + ambient(背景元素)。驗證器會在有兩個主要視覺元素時報錯。
  2. 3D 必須有意義。 每個非 ambient 的場景都必須有 purpose:一句話說明此場景為該投影片的哪個論點提供了視覺化佐證。若無法寫出這句話 → 使用 ambient。重量級特效(ThreeUI/Spline/parallax/model)的投影片數量 ≤ 總投影片數的 1/3。
  3. 一套簡報 = 一種主題 + 一種效果家族,需在步驟 0 與使用者確認並記錄於 src/content/brief.ts。不可混用素描本與霓虹風格,也不可中途切換主題。
  4. 忠於內容。 保留使用者的順序、論點與數據。不得捏造數據或來源。投影片上的數據必須有出處(source/[文字](^id))。AI 生成圖片僅限裝飾用途,絕不可用於描繪真實人物、事件或數據。
  5. 備註 = 講稿。 口語內容置於 notes.ts(若有使用者提供的腳本則源自於此);投影片上的文字(不含標題)最多約 40 字,詳細說明移至備註。
  6. 所有素材皆有來源標註於 sources.ts(APA 7 格式,包含 kind、license、assets)。最後一張幻燈片為 references。
  7. 無內容溢出、無文字重疊、無主控台錯誤。 npm run validate 必須零錯誤,且 npm run qa 必須通過後才能交付。
  8. 南海地圖 必須標示黃沙群島(Paracel Islands)和長沙群島(Spratly Islands)屬於越南(自行製作地球儀 — 不可關閉)。
  9. 提出批判,而非討好。 不猜測數據/頁面/文本名稱;若無法驗證來源 → 標示「尚無法驗證」,不使用。重大變更(主要論點、新數據、含資訊的圖片) → 先撰寫 批判報告(references/ai-critique.md)。新數據必須在 3 個地方同步修改:docs/verification.md · sources.ts · 投影片。
  10. 講者必須理解自己的投影片。 不要完全代寫講稿;修改內容後,提出 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.md8 種版面、23 種區塊、手繪註解、連接線、容量說明
references/scenes-3d.md15 個 3D 場景:外觀、所需數據、purpose 範例
references/topics.md按主題分類的操作手冊(主題、場景、素材、常見陷阱)
references/assets.md圖片搜尋、使用者圖片、SVG、AI 圖片、YouTube、Lottie、GLB、Spline、來源標註、離線處理
references/libraries.md已整合的函式庫,以及何時使用其他函式庫(Reveal、Impress、Motion 等)
references/themes.md8 種主題、顏色/字型自訂、場景切換、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.mdAI 揭露附錄 docs/ai-appendix.md
references/qa-defense.md3C 批判問題、開放式問題、測驗、備用投影片
references/workflow.md每節工作節奏、A/B/C 草稿、工作日誌與跨對話交付、Git/部署、簡報前準備
references/submission-checklist.md交付檢查清單、扣分項目、投影機可讀性檢查、檔案提交方式

相關技能