Papermorph は何をしますか?
Papermorphは、1つのエンジンで3つのティアのブックを作成します。
- レッスン(教科書PDFから):各章は短いアニメーションレッスンフィルムで、図が説明を担い、ナレーションがそれを語り、図の中でクイックチェックと練習が行われます。
- 絵本(物語、ジョーク、おとぎ話から):コードで描かれたり画像モデルでペイントされた紙人形が舞台の前で演じる短編フィルムで、声、効果音、音楽が付きます。
- フィルム(書籍、アイデア、またはユーザーの主張から):パブリックドメインの画像、言葉、地図を声の動きに合わせて動かすナレーション付きドキュメンタリー、および3分未満で1つのポイントを伝える縦型ショート動画。
すべてはSVGステージ(1600×900、ショートの場合は900×1600)とプレーヤーで構成されます。ビートはナレーションクリップとタイミングアクションをペアリングします。良いとは、生きている(物事が重みとタイミングを持って動作・変化する)、構図が整っている(各瞬間が1つの絵として読め、テキストはそれが指すものの隣にある)、真実である(動き、ラベル、数値が常に一致する)、滑らか(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 |
| 3分未満で1つのポイントを伝える縦型動画(YouTube Shorts、TikTok、Reels)、または長編フィルムの再編集 | フィルム:ショート | films.md | shorts.md |
| フィルムの素材、または主に地図と数値からなるアイデアで、読者が自分のペースでスクロールに応じて絵が変わるページで読むもの(スクロールストーリー) | フィルム:スクロールページ | films.md | scroll.md |
| 地図上で年ごとに探検する歴史の一節(変化する国境、移動する人々:1ページ、独自のプレーヤー、エンジンは使用しない) | 探索ページ | 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//フォルダで、https://papermorph.diamonddoge.org//`で提供されているため、そのソースはチェックアウトで読むか、スキルが単独でインストールされている場合はどちらかのアドレスから取得できます。ティアファイルは、特定のステップで開く価値のあるブック内のファイルを指定します。
| ティア | ブック(スラッグ) |
|---|---|
| レッスン | ティア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、フーコーに基づく、10分)、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/ ナレーション.<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>はブックスラッグ、<lang>はその主要言語コードです。new_book.pyは任意のティアのブックを開始します(core/publish.md)。
必要なもの:uv、ffmpeg/ffprobe、Edge TTSネットワークアクセス(またはローカルのKokoro)、リポジトリのengine/フォルダが手元にない場合のgithub.comへのengine.py用アクセス、ユーザーが選択した有料ステップのみに使用されるOpenRouterキー(paint.py、eleven.py、video.py;paint_openai.pyはOpenAIキーを使用)、および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 …で実行する際にドキュメント文字列の最初の行に指定されたパッケージを使って--helpを実行すると使用方法を表示します(パッケージなしでも--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 シーンごとに1クリップ · 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に保持します。