papermorph 是做什麼的?
Papermorph 在單一引擎上製作三種層級的書:
- 課程,來自教科書 PDF:每章都是一部簡短的動畫課程影片,圖片承載解說,旁白說出內容,並在圖片中進行快速檢查和練習。
- 圖畫書,來自故事、笑話或童話:紙偶在場景前的短片,以程式碼繪製或由影像模型繪製,並配有語音、效果和音樂。
- 電影,來自書籍、想法或使用者的論點:有旁白的紀錄片,由找到的公有領域圖片、文字和地圖組成,隨著語音移動;以及適合手機動態消息、在三分鐘內說明一個觀點的直立短片。
所有這些都是一個 SVG 舞台(1600×900,或短片的 900×1600)加上一個播放器;拍點將旁白片段與計時動作配對。好的意思是栩栩如生(事物以重量和時機行動和變化)、構圖良好(每個瞬間都是一張圖,文字與其所指的內容並列)、真實(動作、標籤和數字在每個瞬間都一致)以及流暢(它播放無停頓,包括在 Firefox 中)。
圖片應該是什麼取決於書和使用者,因此工作從以 style.json 結束的對話開始:使用者的話語、他們選擇的外觀、語音、哪個模型執行哪個步驟,以及後續獲准的章節。每一章都是根據它來製作的;如何佈局和編排每個拍點由您根據它和獲准的章節來判斷。使用者要求覆蓋預設值。重新建立解釋、範例和圖面;將原始 PDF、頁面影像和提取的文字保留在靜態輸出資料夾之外,且不納入版本控制(.gitignore:*.pdf、books/*/pages/)。技能製作的章節是初稿:審查輪次和使用者的檢視會在發佈之前進行。
哪個層級
閱讀該層級的第一個檔案,然後只閱讀當前步驟所需的內容。下面的每個檔案都從此處連結;無需另一個檔案即可找到它們。
| 使用者帶來 | 層級 | 從此開始 | 然後,根據步驟需要 |
|---|---|---|---|
| 教科書 PDF(課程手冊也是) | 課程 | lessons.md | intake.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.md | puppets.md · painting.md(繪畫外觀) · listen-and-find.md(適合幼兒的尋找遊戲) |
| 一本書、一個想法或一段歷史,要作為有旁白的電影來解釋 | 電影:紀錄片 | films.md | documentary.md |
| 要在三分鐘內說明一個觀點,直立,適合手機動態消息(YouTube Shorts、TikTok、Reels),或要重新剪輯的長片 | 電影:短片 | films.md | shorts.md |
| 電影的素材,或一個主要是地圖和數字、要在頁面上以讀者自己的速度閱讀的想法,該頁面的圖片會隨著滾動而改變(滾動故事) | 電影:滾動頁面 | films.md | scroll.md |
| 一段要在逐年地圖上探索的歷史:變化的邊界、移動的人物(單一頁面,自己的播放器,非引擎) | 可探索頁面 | explore.md |
每個層級共用核心:
| 檔案 | 內容 |
|---|---|
| core/style.md | 如何詢問使用者、模型步驟、付費步驟(金鑰、價格、分類帳、餘額)、style.json |
| core/publish.md | new_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中。