pptx-posters について
pptx-posters は、承認済みのローカル JSON マニフェストから編集可能な 1 枚構成の PowerPoint ポスターを作成するスキルです。出典追跡、素材検査、レイアウト監査と生成前の明示的な承認を要する研究ポスターの制作に向いています。
主な機能
- 01厳密な JSON から 1 枚の PPTX を生成
- 02出典・素材・ハッシュ・承認状態を検証
- 03画像メタデータ・コントラスト・出力計画を確認
- 04パッケージの安全性とスライドレイアウトを検査
- 05アクセシビリティと印刷の手動確認が必要
活用シーン
- 01承認済みコンテンツから編集可能な研究ポスターを作成
- 02ポスター生成前にローカル画像素材を検証
- 03公開前にパッケージとレイアウトを監査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill pptx-postersインストール後、Claude Code で/pptx-postersを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/generation_dependencies.jsonposter_manifest_template.jsonposter_quality_checklist.mdreferences/manifest_spec.mdposter_content_guide.mdposter_design_principles.mdposter_layout_design.mdpptx_security.mdsecurity_validation.mdsource_ledger.mdscripts/_common.py_manifest.py_pptx.pycheck_layout.pycheck_palette.pygenerate_poster.pyinspect_pptx.pyinventory_images.pyplan_export.pyvalidate_manifest.py詳細
PPTX ポスター
対象範囲
依頼されたソース/成果物が編集可能な PowerPoint ポスターの場合にのみ、このスキルを使用してください。PowerPoint が利用可能というだけの理由で、指定のないポスター依頼をここに振り分けないでください。
バージョン 2.0 では、厳密なローカル JSON から実際の 1 枚スライドの .pptx を生成します。HTML 変換、外部テンプレート、模式図/画像生成サービス、API キー、環境ファイル、ネットワークリクエスト、必須の図のスタイルは使用しません。
厳格なゲート
次のいずれかのゲートが満たされていない場合は、推測せずに停止してください。
- 作成者から正確なポスター内容とソース記録が提供されていない。
- 主張、数値、引用、作成者、所属、助成金の記載、図、ライセンス、QR のリンク先に未解決の項目がある。
- 現行の学会要件と印刷業者の要件が確認されていない。
- 作成者の承認が、現在のマニフェスト内容ハッシュに紐付けられていない。
- アセットがリモートにある、マニフェストのディレクトリ外にある、ハッシュがない、または未承認である。
- 入力が
.pptmである、マクロ/外部リレーションシップ/OLE/埋め込みファイルを含む、または信頼できないテンプレートである。 - 依頼されたワークフローで、PowerPoint の自動起動または自動実行が必要である。
- スクリプトがパッケージ、レイアウト、DPI、コントラスト、または出力計画に関するブロッカーを報告する。
不足している素材を捏造したり、もっともらしいプレースホルダーを残したりしないでください。ドラフトは必ず失敗として扱われます。
正確な生成依存関係をインストールする
スキルのディレクトリから実行します。
uv venv
uv pip install "python-pptx==1.0.2" "Pillow==12.3.0" "lxml==6.1.1"
生成に必要なものは次のとおりです。
python-pptx==1.0.2
Pillow==12.3.0
lxml==6.1.1
すべての CLI でオプションインポートを遅延実行するため、これらのパッケージがなくても python -B scripts/<tool>.py --help は動作します。バイトコードの生成物を避けるには -B を使用してください。
レイアウトの前に要件を確定する
次の項目を個別に記録してください。
- 仕上がり寸法の幅/高さと向き。
- 各辺の塗り足し。
- 仕上がり線の内側の安全マージン。
- PowerPoint のキャンバス幅/高さ。
- 物理アートボードとキャンバスの均一な印刷倍率。
- 学会の最大寸法と納品形式。
- 印刷業者の仕上がり、塗り足し、マージン、拡大縮小、カラーモード、校正刷りに関する要件。
- 最終出力のフォントとラスター DPI のしきい値。それぞれに、経験則に基づくものか、正確な出典に紐付くものかを明記すること。
- 必要なフォントフェイス、ワークステーションでの利用可否、埋め込み許可、代替フォント/校正刷りのワークフロー。
ポスターに共通するサイズはありません。Microsoft では現在、PowerPoint の各カスタム寸法を 1~56 インチに制限し、すべてのスライドに同じサイズを使用します。物理アートボードがこれより大きい場合は、印刷業者が拡大縮小を確認した場合に限り、比例したキャンバスを使用してください。
references/poster_layout_design.md を読んでください。
マニフェストを作成する
assets/poster_manifest_template.json をプロジェクトにコピーします。テンプレートは、置換トークン、false の確認項目、ドラフト承認をすべて解決するまで意図的に無効になっています。
references/manifest_spec.md と references/poster_content_guide.md に従ってください。
マニフェストには次の項目が必要です。
- ドキュメントのメタデータ、各要素、各アセットに対する正確なソース ID。
- すべてのソースで
author_verified: true。 - すべての要素とアセットで
author_approved: true。 - ローカルの PNG/JPEG パスと小文字の SHA-256 ハッシュ。
- すべての任意画像に対する正確な出典情報とライセンス/使用許可。
- 承認済みの代替テキストと、必要な場合はソースに紐付いたネイティブの長い説明。
- 明示的な読み上げ順序とデザイン用の矩形。
- すべてのローカル QR 画像に対する、画面上に表示する正確な代替 URL/テキスト。
- 確認済みの学会/印刷業者の規則。
- 宣言済みの sRGB コントラストペアと冗長なデータ表現。
- 正規化されたマニフェスト内容に紐付いた承認。
承認以外のすべての項目が通過した後、内容ハッシュを取得するには次を実行します。
python -B scripts/validate_manifest.py poster.json \
--print-content-hash
その正確なマニフェストとハッシュを作成者に渡してください。その後、approval.status を approved に設定し、承認者とタイムゾーンオフセット付きのタイムスタンプを記録して、ハッシュをコピーします。承認以外の項目を編集すると、承認は無効になります。
承認済みマニフェストとローカルアセットを検証します。
python -B scripts/validate_manifest.py poster.json
生成前にアセットとカラーパレットを監査する
python -B scripts/inventory_images.py poster.json \
--output poster.assets.json
python -B scripts/check_palette.py poster.json \
--output poster.palette.json
python -B scripts/plan_export.py poster.json \
--output poster.export-plan.json
実効 DPI は画像メタデータの DPI ではなく、ピクセル数を最終配置サイズ(インチ)で割った値です。 インベントリでは、サイズに上限を設けて画像を完全にデコードし、EXIF/XMP/コメントおよび埋め込みテキスト/アプリケーションのメタデータをブロックします。 これらをオフラインで削除してから、アセットのハッシュを再計算し、再承認してください。 コントラストには WCAG 2.2 の sRGB 数学的手法を使用します。これらの値を実物のポスターに適用することはデザイン上の目標であり、それだけで適合性を主張するものではありません。 色に頼らないラベル、マーカー、形状、パターン、線のスタイルを維持してください。
プリンターで CMYK が必要な場合、プリンターが承認した変換/プロファイルと校正刷りが用意されるまで、プランでは印刷準備完了になりません。 ネイティブの PowerPoint PDF が CMYK に準拠していると主張しないでください。
references/poster_design_principles.md をお読みください。
PPTX を生成する
新しい出力パスを使用してください。
python -B scripts/generate_poster.py poster.json \
--output poster.pptx \
--report poster.generation.json
生成では、以下の処理を行います。
- 新しい空のプレゼンテーションを作成し、ユーザーのテンプレートは読み込みません。
- コンテンツを追加する前に、承認済みのキャンバスを設定します。
- ネイティブのタイトルプレースホルダー、ネイティブのテキストボックス、ローカルの画像を使用します。
containによるフィッティングで、画像の縦横比を維持します。- テキストの自動縮小を無効にします。
- 承認済みの読み上げ順で要素を追加します。
- 承認済みの画像代替説明と明示的なテキスト言語を PresentationML に書き込みます。
- フォント、音声、動画、OLE、ActiveX、リンク、その他のメディアを埋め込みません。
- 既定のプリンター設定のバイナリデータを削除し、パッケージのタイムスタンプを正規化します。
- 代替テキストのパッチ適用前後にパッケージを検査します。
- 重なり、範囲外の図形、最終的なフォントサイズ/DPI の不足、安全でないパッケージ、および既存の出力先がある場合は処理を拒否します。
マニフェストのテキストをそのまま描画します。 科学的な内容の作成、要約、調査、修正は行いません。
最終的な技術監査を実行する
python -B scripts/inspect_pptx.py poster.pptx \
--output poster.package.json
python -B scripts/check_layout.py poster.pptx \
--manifest poster.json \
--output poster.layout.json
パッケージインスペクターは、サイズに上限を設けた ZIP メタデータと選択した XML のみを読み取ります。 メンバーを展開したり、プレゼンテーションを開いたり実行したりすることはありません。 以下を拒否します。
.pptmを含む、.pptx以外のすべての拡張子- 1 枚のスライドを生成する上限付きプロファイルの範囲外のパッケージ
- マクロ/VBA、ActiveX、カスタム UI、OLE、埋め込みファイル、実行可能ファイル、およびバイナリパーツ
- リモートのリンク画像やハイパーリンクを含む、すべての外部リレーションシップ
- 安全でない ZIP パス/重複する ZIP パス、シンボリックリンク、暗号化、展開後のサイズ超過、および過剰な圧縮率
- 不正な形式の XML、または検査対象の XML に含まれるエンティティ
- 内部リレーションシップのターゲットの欠落
references/pptx_security.md をお読みください。
PowerPoint とアクセシビリティの手動確認ゲート
自動化では、アクセシビリティ、テキストの描画、科学的正確性を認定できません。 完全にパッチが適用された PowerPoint で、以下を行ってください。
- 生成済みで技術的に問題のないファイルのみを開きます。
- [校閲]>[アクセシビリティのチェック]を実行します。
- [読み上げ順序]ウィンドウとオブジェクト名を確認します。
- すべての代替テキストとネイティブの長い説明を確認します。
- キーボードとスクリーンリーダーによる操作をテストします。
- フォントがインストール済みで、ライセンス上使用可能であることを確認します。フォントの埋め込み設定、代替、グリフ、数式、はみ出し、コントラスト、およびすべての端も確認します。
- 色だけを唯一の符号化手段として使用していないことを確認します。
- すべての QR コードと、目視できる代替 URL/テキストをテストします。
- すべての内容と引用について、作成者の承認を得ます。
Microsoft のスライドに関する推奨値である 18 pt は、ポスターに適用される普遍的な最小サイズではありません。 マニフェストに記載された基準と校正刷りを使い、最終的な実物サイズでフォントサイズを評価してください。
エクスポートと印刷
承認済みのエクスポートプランを使用してください。 PDF が必要な場合は、レビュー済みの PowerPoint から[標準]/高印刷品質を選択してエクスポートし、[最小サイズ]は選択しないでください。
PDF を個別に検証してください。
- ページ/アートボードの寸法、向き、トリム、塗り足し
- 必要な場合は 1 ページで出力されていること
- フォント、クリッピング、グリフ、数式、画像の再サンプリング
- タグ、読み上げ順序、代替テキスト、言語、リンク
- RGB/CMYK 変換と実物の色校正
- 学会指定のファイル名、ファイルサイズ、およびアップロード規則
縮小率を下げた校正刷りを印刷し、プリンターが指定する校正刷りを取得してください。 変更を加えた場合は、すべてのチェックを再実行してください。
リリース承認には assets/poster_quality_checklist.md を使用してください。
同梱された CLI
validate_manifest.py— コンテンツ、出典、承認を厳密に検証します。generate_poster.py— バージョンを厳密に固定したローカルの PPTX 生成ツールです。inspect_pptx.py— ZIP/XML を実行せずに検査するセキュリティツールです。check_layout.py— 境界、重なり、読み取り順序、最終フォントを確認します。inventory_images.py— アセットのハッシュ、メタデータ、有効 DPI のマニフェストを作成します。check_palette.py— WCAG コントラストとヒューリスティックな配色レポートを作成します。plan_export.py— 寸法、倍率、フォント、色、メディア、エクスポート、印刷前のチェックを行います。
参考資料
references/manifest_spec.mdreferences/poster_content_guide.mdreferences/poster_design_principles.mdreferences/poster_layout_design.mdreferences/pptx_security.mdreferences/security_validation.mdreferences/source_ledger.md
エージェントの作業手順
- 環境を確認します。 データソース、各図で伝えるメッセージ、対象媒体(ジャーナル、ポスター、スライド)を確認します。
- 入力を確定します。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果に影響する値は推測せず、質問してください。
- まず小規模なバージョンを実行します。 1つの図を最終サイズでレンダリングし、全体を作成する前に読みやすさを確認します。
- 上記の手順と参考資料を使用して、タスク全体を実行します。
- 結果を検証します。 軸、単位、エラーバーにラベルと定義があり、色は色覚多様性に配慮し、数値は基礎データと一致していることを確認します。
- 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確定の事項を伝えます。
| これが起きた場合 | こうしてください |
|---|---|
| 最終サイズでテキストが読めない | 文字を小さくするのではなく、フォントサイズを大きくするか、パネルを簡素化します。 |
| これらの手順に記載された関数、フラグ、エンドポイントがインストール済みバージョンに存在しない | インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認し、適宜対応してユーザーに伝えます。API を決してでっち上げないでください。 |
| 必須の入力、識別子、パラメーターが曖昧 | ユーザーに確認するか、実行前に前提を明示します。 |
インテグリティに関するルール
- 結果、パラメーター、識別子、引用、統計を決して捏造しないでください。実行または検証できない場合は、その旨を明確に伝えます。
- 図の見栄えを良くするためにデータを変更しないでください。画像の調整は一律に適用し、内容を開示します。
- ここに記載されているバージョン固有の詳細は古くなっている可能性があるものとして扱い、インストール済みバージョンの公式ドキュメントで確認します。
- 費用が発生する、共有 GPU やクラウドのクォータを消費する、個人データや患者データに触れる、または取り消せない操作を行う場合は、事前に確認します。
関連スキル
scientific-slides:研究発表用のスライドデッキやプレゼンテーションを作成します。latex-posters:beamerposter、tikzposter、baposter を使用して LaTeX で研究ポスターを作成します。ページサイズ(A0、A1、36x48 inch)、複数列のレイアウトなどに対応します…presenting-conference-talks:発表者ノートと講演スクリプトを含む、コンパイル済み論文から会議発表用スライド(Beamer LaTeX PDF および編集可能な PPTX)を生成します。