Community画像github.com

michaelweber/page-to-poster

冒険の舞台(PDFページまたはテキスト)と大まかなマッピングガイドラインから、3D Blenderモデルと印刷可能なアイソメトリック断面図ポスター(スクリーンプリント風)を作成します。GM用とプレイヤー用の2種類のポスターを生成します。ダンジョン、バンカー、船、ステーション、建物など、RPGアドベンチャーや場所の文章による説明を地図やモデル、ポスターにするときに使用します。

page-to-poster とは?

このスキルは、RPGアドベンチャーのテキスト(PDFまたはプレーンテキスト)を解析し、その場所の3Dモデルと印刷可能なアイソメトリック断面図ポスターを生成するエージェント向けツールです。ユーザーはまず `brief.md`、`layout.json`、`props.py`、`poster.json` の5つの小さなファイルを作成し、場所の概要、部屋と通路のレイアウト、部屋内のオブジェクト、ポスターのタイトルやラベルなどを定義します。このスキルは `p2p.py` を使用して、ヘッドレスBlenderで3Dモデルを構築・レンダリングし、最終的にGM用(秘密情報含む)、プレイヤー用(秘密情報伏せ字)、ベース(何もない)の3種類のポスター画像(PNGおよびJPEG)を出力します。プロセス全体を通じて各ステップで画像を確認することを推奨し、ドラフト段階では低解像度(100 dpi)で、最終版では200 dpiでレンダリングします。このスキルはClaude Code、Cursor、CodexなどのAIエージェント用に設計されており、作成したモデルを基に戦闘マップや部屋のアップビュー、ComfyUIを使用した部屋のイラスト(ペインティング)も生成できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/michaelweber/page-to-poster/tree/HEAD

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ページからポスターへ

あなたはアドベンチャーを読み、その場所を説明する5つの小さなファイルを書きます。このフォルダ内のコードがそれらをチェックし、ヘッドレスBlenderで3Dモデルを構築し、レンダリングしてポスターを構成します。

アドベンチャー (PDF/テキスト) + ガイドライン
   -> brief.md        テキストがその場所について述べていること          (あなたが記述)
   -> layout.json     部屋、通路、出入り口(メートル単位)            (あなたが記述; `check` が検証・描画)
   -> props.py        各部屋に何があるか                             (あなたが記述; `build` がモデル化)
   -> poster.json     タイトル、ラベル、コールアウト、テキストボックス  (あなたが記述; `poster` がレンダリング・構成)
   -> out/poster_gm.png, poster_player.png, poster_bare.png  (+ .jpg)

p2p.py はこのフォルダにあります。ユーザーの作業ディレクトリからのフルパスで呼び出し、プロジェクトフォルダがここではなくそこに作成されるようにしてください。以下のコマンドでは簡略化のため python p2p.py と記述します。python がPython 3でない場合は python3 を使用してください。

常に守るべきルール

  1. 作成したすべての画像を確認すること。 各ステップで画像が書き出されます。先に進む前に、画像読み取りツールでその画像を開いて確認してください。手順ではファイル名を指定しています。ほとんどの間違いは数字ではなく画像を見れば明らかです。
  2. メートル単位、+xが東、+yが北、床はz=0。 props.py 内の角度はラジアンです。
  3. 推定したことを明記すること。 アドベンチャーではサイズや正確な位置が示されることはほとんどありません。推定した場合は brief.md に「est.」と書き、報告時に推定値をリストアップしてください。本に書かれていない事実を、あたかも本の記述であるかのように提示しないでください。
  4. Blenderは p2p.py を通じてヘッドレスで実行されます。 Blenderのウィンドウは開けず、Blender MCPサーバーも使用しないでください。
  5. ドラフトは低コストで。 ドラフトポスターは --dpi 100 で作成し、ドラフトが適切になったら最終版を --dpi 200 でレンダリングしてください。
  6. プロジェクトフォルダにはアドベンチャーのテキストとマップが含まれます。アドベンチャーを公開する権利がない限り、パブリックリポジトリには保管しないでください。

ステップ 0:マシンのチェック

python p2p.py doctor

Core pipeline: ready で終了する必要があります。Pythonパッケージがない場合:pip install -r requirements.txt。Blenderがない場合は、docs/setup.md に従ってください。GPUは不要です(レンダリングはCPUにフォールバックします)。ComfyUIはオプションです:ユーザーからURLが提供された場合のみ --comfy URL を渡してください(docs/comfyui.md)。

ステップ 1:プロジェクトを開始し、ソースを読む

python p2p.py new PROJECT --source adventure.pdf --pages 53-56

PROJECT はこのマップ用の新しいフォルダです。例えば、ユーザーの作業ディレクトリ内の maps/the-site-name です。--pages は、マッピングする場所のPDFのページ番号(最初のページは1)です。短いPDFの場合は省略できます。テキストまたはMarkdownソースはそのままコピーされます。このコマンドは5つのファイルのテンプレートを作成し、PDFの場合は source/page_NNN.txt と source/page_NNN.png も作成します。

テキストをすべて読んでください。次に、すべてのページ画像を確認してください:マップ、図、サイドバーは画像にしかありません。本にマップがある場合、そのマップが部屋の位置を決定し、テキストが部屋の中身を決定します。

ユーザーが要求した内容に基づいて guidelines.md を記入してください。ユーザーが言及しなかったことはデフォルトのままにします。どの場所をマッピングするか判断できない場合にのみ、ユーザーに確認してください。

brief.md を記入してください:部屋ごとに1行、接続ごとに1行、出入り口ごとに1行です。ページ番号を引用してください。このステップで、何が与えられた情報で何が推定かを決定します。

テキストにサイズが記載されていない場合の目安:ドアは1 m、廊下は2.5~3.5 m、独房やオフィスは4×5 m、通常の部屋は6×8 m、広間は15×25 m、洞窟や格納庫は30×50 m。天井の高さ:通常の部屋は3 m、広間は5~8 m。ファンタジーゲームでは、1マップマスは通常5フィート(1.5 m)です。「ペース」は約1メートルです。

ステップ 2:layout.json

テンプレートをサイトの部屋、通路、出入り口に置き換えます。docs/layout.md にすべてのキーが記載されています。学習用の完全なプロジェクト例:examples/brine-chapel/(テキストのみでマップなしの石のダンジョン)と examples/kestrel-9/(スケッチマップ付きPDFからのプレハブステーション)。基本事項:

  • 部屋は軸に平行な長方形の明確な床です:`

関連スキル