Communitygithub.com

DozenTwelve/papermorph

從參考 PDF 製作或編輯動畫、有旁白、可互動的網頁書;從故事、笑話或童話製作動畫圖畫書(紙偶電影);從書籍或想法製作有旁白的紀錄片;製作適合手機動態消息、三分鐘內說明一個觀點的直立短片;製作隨讀者滾動而改變圖片的滾動故事;以及製作可探索的地圖,讓歷史逐年上演,讀者可點擊其中的人物與地點。

papermorph 是什麼?

Papermorph 是一個 AI 代理技能,用於在單一引擎上製作三種層級的網頁書:課程(來自教科書 PDF)、圖畫書(來自故事、笑話或童話)和電影(來自書籍、想法或使用者論點)。所有輸出都是 SVG 舞台(1600×900 或 900×1600)加上播放器,將旁白片段與計時動作配對。該技能支援 Claude Code、Cursor 和 Codex 等平台,並使用結構化參考檔案來指導每個層級的製作。它透過與使用者的對話開始,以 `style.json` 結束,該檔案定義了風格、模型選擇和章節核准。核心原則是讓輸出「栩栩如生」(事物以重量和時機行動和變化)、「構圖良好」(每個瞬間都是一張圖,文字與其所指的內容並列)、「真實」(動作、標籤和數字在每個瞬間都一致)以及「流暢」(播放無停頓,包括在 Firefox 中)。該技能包含用於處理書籍、聲音、審查、團隊協作和發佈的腳本,並提供參考書籍作為品質基準。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/DozenTwelve/Papermorph/tree/HEAD/.claude/skills/papermorph

在你喜歡的 AI 中提問

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

說明文件

papermorph 是做什麼的?

Papermorph 在單一引擎上製作三種層級的書:

  • 課程,來自教科書 PDF:每章都是一部簡短的動畫課程影片,圖片承載解說,旁白說出內容,並在圖片中進行快速檢查和練習。
  • 圖畫書,來自故事、笑話或童話:紙偶在場景前的短片,以程式碼繪製或由影像模型繪製,並配有語音、效果和音樂。
  • 電影,來自書籍、想法或使用者的論點:有旁白的紀錄片,由找到的公有領域圖片、文字和地圖組成,隨著語音移動;以及適合手機動態消息、在三分鐘內說明一個觀點的直立短片。

所有這些都是一個 SVG 舞台(1600×900,或短片的 900×1600)加上一個播放器;拍點將旁白片段與計時動作配對。好的意思是栩栩如生(事物以重量和時機行動和變化)、構圖良好(每個瞬間都是一張圖,文字與其所指的內容並列)、真實(動作、標籤和數字在每個瞬間都一致)以及流暢(它播放無停頓,包括在 Firefox 中)。

圖片應該是什麼取決於書和使用者,因此工作從以 style.json 結束的對話開始:使用者的話語、他們選擇的外觀、語音、哪個模型執行哪個步驟,以及後續獲准的章節。每一章都是根據它來製作的;如何佈局和編排每個拍點由您根據它和獲准的章節來判斷。使用者要求覆蓋預設值。重新建立解釋、範例和圖面;將原始 PDF、頁面影像和提取的文字保留在靜態輸出資料夾之外,且不納入版本控制(.gitignore:*.pdf、books/*/pages/)。技能製作的章節是初稿:審查輪次和使用者的檢視會在發佈之前進行。

哪個層級

閱讀該層級的第一個檔案,然後只閱讀當前步驟所需的內容。下面的每個檔案都從此處連結;無需另一個檔案即可找到它們。

使用者帶來層級從此開始然後,根據步驟需要
教科書 PDF(課程手冊也是)課程lessons.mdintake.md · authoring.md · diagrams.md(層級 1) · scenes.md(層級 2) · assets.md · maths.md(math.js、數學零件、LaTeX) · questions.md · figures.md(讀者可以移動的圖形) · checks.md · cover.md · courses.md(引用、題庫、SCORM:僅在書本要求時使用)
故事、笑話、童話或故事書的 PDF(其自己的掃描圖片:stories.md)圖畫書stories.mdpuppets.md · painting.md(繪畫外觀) · listen-and-find.md(適合幼兒的尋找遊戲)
一本書、一個想法或一段歷史,要作為有旁白的電影來解釋電影:紀錄片films.mddocumentary.md
要在三分鐘內說明一個觀點,直立,適合手機動態消息(YouTube Shorts、TikTok、Reels),或要重新剪輯的長片電影:短片films.mdshorts.md
電影的素材,或一個主要是地圖和數字、要在頁面上以讀者自己的速度閱讀的想法,該頁面的圖片會隨著滾動而改變(滾動故事)電影:滾動頁面films.mdscroll.md
一段要在逐年地圖上探索的歷史:變化的邊界、移動的人物(單一頁面,自己的播放器,非引擎)可探索頁面explore.md

每個層級共用核心:

檔案內容
core/style.md如何詢問使用者、模型步驟、付費步驟(金鑰、價格、分類帳、餘額)、style.json
core/publish.mdnew_book.py、語言、分鐘數、預覽與交付、影片匯出
core/sound.md旁白檔案、語音、音量、效果、音樂、字幕
core/review.md查看自己作品的動態、幀數、流暢度、導演輪次
core/team.md使用子代理製作章節、協調器、並行工作
core/engine.md播放器和繪圖 API、時機、攝影機、效能、陷阱

每當 books/<book>/style.json 尚不存在時,從該層級的引入開始;重複使用已給出的答案和核准。

參考書籍

參考書籍是標竿:要達到的水平,而非要複製的格式。每個都是 Papermorph 儲存庫(https://github.com/DozenTwelve/Papermorph)中 site/<slug>/ 的資料夾,託管在 https://papermorph.diamonddoge.org/<slug>/,因此當技能獨立安裝時,可以在檢出中讀取其原始碼,或從任一地址獲取。層級檔案會指出在給定步驟中值得開啟的書籍檔案。

層級書籍(slug)
課程層級 1:Elementary Algebra(elementary-algebra)、Math Notebook(math-notebook);層級 2:Science(science);帶暗墨水的亮板:physics-notebook
圖畫書The Little Horse Crosses the River(little-horse)和 Little Red Riding Hood(little-red-riding-hood):全部以程式碼製作,由 ElevenLabs 配音,包含聽力尋找暫停點,是最新且是標竿;Joke Collection(joke-collection):繪畫場景、程式碼製作的木偶、一系列劇集;Millions of Cats(millions-of-cats,Wanda Gág,1928):將掃描書籍的圖片提取到場景和木偶中(不在書架上)
紀錄片Madness and Civilization(madness,根據 Foucault,十分鐘)、The Pandemic(pandemic)、Shooting an Elephant(shooting-an-elephant,讀者參與其中)
短片Madness and Civilization 短片(madness-shorts;第 1 集 The Ship 是操作範例)、The Pandemic 短片(pandemic-shorts)

Tulip Mania(tulip-mania)是一部僅由技能本身製作的測試電影,除了這些檔案之外沒有其他協助;這些檔案引用了它遇到的問題。

專案佈局

books/<book>/                 私人:原始碼、style.json、分鏡腳本、藝術、review/(層級檔案列出它們自己的)
content/<book>/chNN/           narration.<lang>.json 和語音快取
tools/<book>/                  測試、音訊腳本、證據
site/<book>/                   靜態書本(僅交付這個)
  index.html                  封面和目錄,或系列頁面
  lib/                        引擎(由 engine.py 同步)、lib/book.css(此書的設定)、該層級的工具包、書本自己的片段
  img/                        書本的圖片
  chNN/index.html, audio/<lang>/   章節或劇集、其拍點 MP3 和 timings.js(電影和圖畫書:audio/sfx/、audio/bgm/)

SKILL 表示此技能的絕對資料夾;<book> 是書籍 slug,<lang> 是其主要語言代碼。new_book.py 啟動任何層級的書本(core/publish.md)。

需要:uv、ffmpeg/ffprobe、Edge TTS 網路存取(或 Kokoro,本機)、用於 engine.py 的 github.com(當儲存庫的 engine/ 資料夾不在手邊時)、僅用於使用者選擇的付費步驟(paint.py、eleven.py、video.py;paint_openai.py 接受 OpenAI 金鑰)的 OpenRouter 金鑰,以及 Playwright 瀏覽器(uv run --with playwright playwright install chromium firefox;如果 Playwright 的 Chromium 無法執行,請將 CHROME 設定為已安裝的 Chrome、Chromium、Brave 或 Edge)。預覽:python3 SKILL/scripts/serve.py 8765 site(無瀏覽器快取)。

腳本

全部在 SKILL/scripts/ 中;每個腳本在使用 uv run --with … 執行時,都會在其 docstring 第一行命名的套件(即使沒有其套件,--help 會在匯入時停止)中列印使用方式。

用於腳本
每本書new_book.py 啟動書本資料夾 · serve.py 無快取預覽 · engine.py 將引擎同步到書本 · tts.py 旁白和字詞時間 · eleven.py 來自 ElevenLabs 的相同功能(付費) · level.py 均勻響度 · lint.py 靜態檢查 · check.py 在 Chromium 和 Firefox 中檢查頁面錯誤、控制台警告和拍點長度 · shot.py 拍點螢幕截圖 · strip.py 分鏡腳本表和動作條 · still.py 無任何移動的片段 · playlog.py 聲音和字幕與圖片對應 · perf.py Firefox 幀時間 · export.py MP4 和 .srt · sfx.py 合成效果
課程outline.py 和 split_pages.py 頁面地圖和章節文字 · check_blank.py 空白開場 · overlap.py 穿過文字的箭頭 · sprites.py 影像處理步驟 · refs.py 驗證引用 · items.py 題庫 · scorm.py LMS 套件
圖畫書mouths.py 嘴形 · join.py 每個場景一個片段 · bake_sets.py 場景圖層 · bake_puppets.py 木偶點陣圖 · paint.py / paint_openai.py 影像模型圖片 · painted.py 將它們放置到書中 · lift.py 從掃描書籍自己的圖片中剪取的人物、場景和文字 · cutout.py 將主色上的影像模型圖片剪成木偶零件和道具
可探索頁面topo.py 來自 Natural Earth 的地圖 TopoJSON · explore.py 可探索地圖的檢查、螢幕截圖、Firefox 時間和旁白檔案
電影commons.py 帶有其授權的公有領域圖片和錄音 · prep.py 印刷、線條和滿版處理 · trace.py 自行繪製的圖畫 · video.py 來自靜止圖片的片段 · frames.py 作為處理後幀的片段 · geo.py 來自 Natural Earth 的地圖工具包資料 · music.py 剪輯到影片的曲目、語音間隙中的背景音樂,以及針對每句台詞的音樂、背景音樂和效果 · safe.py 直立電影安全區域外的文字

silence.py、ledger.py(單一成本分類帳:日期、章節、檔案、模型、用途、成本)和 browsers.py 是其他腳本匯入的輔助程式。

背景

  • 從主要對話與使用者交談:引入,以及試點的每一張表和選擇。當子代理可用時,章節作為團隊製作,每一步都在使用者選擇的模型上執行,主要對話作為試點的協調者(core/team.md 說明了這允許什麼);如果沒有子代理,則在當前代理中以基於檔案的狀態執行相同的步驟。
  • 在需要時使用引擎 API 並檢查個別函式;複製工具包檔案,而不是將其完整原始碼作為指令讀取。
  • 保持 style.json 為最新且簡短;章節狀態、勘誤和歷史回饋保留在 chapters.md 和 chapters/chNN.md 中。

相關技能