mcpField
T
thesis-defense-pptx

thesis-defense-pptx

github.com/zouchenzhenドキュメント28083 回インストール21 週間前に更新
リポジトリ

thesis-defense-pptx について

thesis-defense-pptxは、指定されたPowerPointテンプレートを使って、編集可能な論文発表用スライドを作るスキルです。大学や研究室のデザインを保ちながら論文資料を反映し、出力後の表示も確認します。

主な機能

  1. 01論文資料から発表内容を抽出
  2. 02テンプレートのスライドを再利用
  3. 03編集可能なPPTXを作成
  4. 04出力画像でレイアウトを確認

活用シーン

  1. 01大学指定テンプレートで発表資料を作成
  2. 02論文の図表や実験結果をスライド化
  3. 03文字のはみ出しやテンプレート残存要素を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zouchenzhen/thesis-defense-pptx-skill --skill thesis-defense-pptx

インストール後、Claude Code で/thesis-defense-pptxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

requirements.txt
agents/
openai.yaml
references/
pptx_quality_gate.md
scripts/
clone_template_deck.ps1
dump_pptx_content.py
export_pptx_png.ps1
extract_thesis_context.py
inspect_pptx_overflow.ps1
make_contact_sheet.py
pptx_template_tools.py
scan_pptx_text.py

詳細

Thesis Defense PPTX

このスキルは、大学/研究室/企業から提供された PowerPoint テンプレートに準拠する、ローカルで編集可能な .pptx 形式の学位論文発表用スライドデッキに使用します。

運用原則

  • プラットフォーム:COM を使用した複製、エクスポート、はみ出しの確認には Windows と Microsoft PowerPoint を使用します。macOS/Linux では python-pptx のみで対応できる部分を使用し、COM ベースの品質確認は省略します。
  • ビジュアルテンプレートを信頼できる唯一の基準として扱います。ユーザーが明示的にデザイン変更を依頼しない限り、表紙、色、フォント、ナビゲーション、カードスタイル、ロゴ、スライド比率を維持します。
  • まず学位論文のソースを読みます:PDF、LaTeX、図、旧版の PPT、実験スクリプト、表、キャプション。ソースファイルが存在する場合、トピックやタイトルだけをもとに生成してはいけません。
  • 画像を配置する前に、ソースアセットの一覧を作成します。最終版の TeX/PDF から \includegraphics の項目とキャプションを抽出し、学位論文で引用されている図、またはユーザーが明示的に承認した画像のみを使用します。関連がありそうだからという理由だけで、テンプレート、旧版の進捗報告スライド、下書きの図フォルダーから画像を引き継いではいけません。
  • 白紙のスライドから再構築するより、テンプレートのネイティブなスライドをコピーして内容を置き換える方法を優先します。
  • スライドは簡潔で、プレゼンテーションに適した内容にします。学位論文の文章を、発表用の要点にまとめます。
  • 特に指定がなければ、テンプレートのフォントサイズと階層を維持します。プロジェクターで読みやすくするには、まずテキストを短くする、密度の高いスライドを分割する、テンプレートにある既存の大きなレイアウトを使用する、の順で対応します。フォントサイズを個別に変更するのは、テンプレートに読みやすく収まるレイアウトがない場合に限ります。
  • アウトライン、画像スライドデッキ、PDF、HTML だけでなく、常に編集可能な .pptx を生成します。
  • 最終回答の前に、必ずビジュアル品質確認を実施します。スライド画像をエクスポートし、コンタクトシートと重要なスライドの全サイズ画像を確認して、テキストのはみ出しやテンプレート由来の古い文言/画像が残っていないかチェックし、PPTX が開けることを確認します。

推奨ワークフロー

  1. 入力を確認します。

    • 論文プロジェクトのパス、または論文全文
    • ビジュアルテンプレートの PPTX
    • 任意の旧発表・報告用 PPTX
    • 出力ディレクトリと希望するファイル名
  2. 論文の内容を抽出します。

    • scripts/extract_thesis_context.py を使用して、PDF/TeX のテキストを要約し、図の候補を一覧表示します。
    • 詳細が重要な場合は、ソースファイルを直接読みます。対象は要旨、序論、手法、実験、結果、結論です。
    • \includegraphics とキャプションから、最終版の論文に掲載されている図を明示的に一覧化します。ユーザーが新しいビジュアルを希望しない限り、この一覧を PPT に使用できる画像の許可リストとして扱います。
    • 発表で重要な事実を集めます。課題、動機、モデリング、アルゴリズム、実験設定、ベースライン、指標、主な結果、制約、今後の課題です。
  3. テンプレートを分析します。

    • PowerPoint を利用できる場合は、テンプレートのスライドを PNG にエクスポートします。
    • 表紙、目次、ナビゲーション、セクション、本文/カード、グラフ/画像、まとめ、締めくくりの各スライドのスタイルを確認します。
    • フォント、フォントサイズ、赤色/ブランドカラー、カードの寸法、線幅、間隔を記録します。
  4. テンプレートに沿ったネイティブの骨組みを作成します。

    • PowerPoint がインストールされている場合は、PowerPoint COM(scripts/clone_template_deck.ps1)を使用します。
    • 必要な順序で、元のテンプレートスライドをコピーまたは複製します。
    • 骨組みが有効になった後で、python-pptx を使用してコンテンツを置き換え、画像/図形を追加します。
  5. 内容を入力します。

    • ユーザーから別途指定がない限り、学部の卒業研究発表では 12~16 枚のスライドを使用します。
    • 一般的な順序は、表紙、目次、背景、問題の定義、研究概要、システム/手法、モデリング、実装、実験設定、学習/結果、比較、ロバスト性/複数シード、独自性/制約、まとめ/展望、謝辞です。
    • 最終版の論文に掲載されている図を優先し、挿入した各画像がソースアセットの一覧と一致することを確認します。テンプレートや旧デッキの画像で、論文内で引用されていないものは差し替えるか削除します。
    • 情報量の多い表は主要な指標に限定し、詳細な説明は口頭での補足に回すか省略します。テキストを縮小したり、小さな複数列の表を追加したりするのではなく、スライドごとにメッセージを 1 つに絞り、既存の大きなプレースホルダー、指標カード、短い箇条書きを優先します。
    • サイズを変更する前に、テンプレートのタイポグラフィに合わせます。可能な限りタイトル/本文/表/ナビゲーションのサイズを維持し、手動でフォントサイズを調整する前に、内容の削減やスライドの分割を行います。
  6. 品質確認を行います。

    • scripts/export_pptx_png.ps1 を使用して、最終版 PPTX を PNG にエクスポートします。
    • scripts/make_contact_sheet.py でコンタクトシートを作成します。
    • scripts/inspect_pptx_overflow.ps1 を実行します。
    • scripts/scan_pptx_text.py を実行して、スライド数と古いテンプレート用語を確認します。
    • コンタクトシートを目視で確認し、問題が起きやすいスライドはフルサイズで開きます。COM によるオーバーフロー検出だけでは不十分です。表示上のクリッピング、カードの境界を越えるテキスト、詰め込みによる小さな文字、古いテンプレート画像、画像の縦横比、テキストとカードの重なりも確認します。
    • 古いテンプレートのテキスト、プレースホルダー、誤った名前/日付、誤ったナビゲーションラベル、赤色のアクティブナビゲーションの白文字、テンプレートや旧進捗デッキから誤って引き継がれた論文に関係のない画像を確認します。
    • エクスポートしたデッキに問題がなくなるまで修正と確認を繰り返します。
  7. 最終回答:

    • 出力先の完全なパス、スライドの合計枚数、主な変更点、実施した検証、未解決の手動確認事項を提示します。

スクリプトの使用方法

論文の内容を抽出します。

python scripts/extract_thesis_context.py --input "D:\path\to\thesis" --output "D:\path\to\thesis_context.md"

テンプレートのスライドをネイティブの骨組みに複製します。

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/clone_template_deck.ps1 `
  -Template "D:\path\template.pptx" `
  -Output "D:\path\output.pptx" `
  -SlideSequence "1,2,3,4,4,6,7,8,9,10,11,12,13,14,15"

この例では、スライド 4 をサブセクションページとして意図的に再利用し、スライド 5 はスキップしています。

最終版デッキをエクスポートします。

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/export_pptx_png.ps1 `
  -Pptx "D:\path\output.pptx" `
  -OutDir "D:\path\visual_check" `
  -Width 1600 -Height 900

オーバーフローの可能性を確認します。

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/inspect_pptx_overflow.ps1 `
  -Pptx "D:\path\output.pptx" `
  -Tolerance 40 `
  -OutputJson "D:\path\overflow.json"

コンタクトシートを作成します。

python scripts/make_contact_sheet.py --input "D:\path\visual_check" --output "D:\path\contact_sheet.png"

デッキ内のテキストと禁止用語をスキャンします。

python scripts/scan_pptx_text.py `
  --pptx "D:\path\output.pptx" `
  --bad "中期检查,项目简介,系统框图,算法设计,成果展示,总结分析,TODO,占位"

品質基準については、references/pptx_quality_gate.md をお読みください。

イテレーションのヒント

コンテンツを埋める際に最も早く失敗する原因は、文字列を確認せずに推測することです。次の手順で進めてください。

  1. まずダンプします。 scripts/dump_pptx_content.py --pptx <skeleton> --output dump.md を実行し、すべての図形の正確なテキストと、すべての表のセルおよび画像名を一覧表示します。dump.md を開き、置き換える文字列をコピーしてください。
  2. 本文には部分一致を優先します。 本文の文がテンプレートと、余分なスペース、半角/全角の引用符、—— と — の違いなどで異なる可能性がある場合は、replace_exact_text ではなく replace_partial_text(slide, {"keyword": "new full text"}) を使用してください。ナビゲーションタグとの短いキーの衝突を避けるため、min_len=20 を指定します。
  3. 短いタグには replace_exact_text を使用します。 ナビゲーションラベルやセクションタイトル(「プロジェクト概要」、「作業のまとめ」)は安定しているため、完全一致のほうが安全です。同じ語を含む本文の段落を誤って書き換えることがありません。
  4. 表/画像用ヘルパーを使用します。 write_table(table, rows) はセルのフォント/色/サイズを維持し、replace_picture(slide, old_pic, new_path) は位置とサイズを保ったまま画像を差し替えます。どちらも図形を削除して再作成する定型的な作業を避けられます。
  5. 入力を追加するたびに、オーバーフローの確認とスキャンを再実行します。 内容が長くなったことによるオーバーフローは、最もよくあるバグです。まず文章を短くし、次に手動で \n による改行を追加して修正してください。テキストボックスのサイズ変更は、テンプレートの見た目上、本当に問題がない場合に限ります。
  6. エンコーディング。 ここに含まれるすべての Python スクリプトは stdout を UTF-8 に設定し、PowerShell スクリプトはコンソールの出力コードページを UTF-8 に設定します。そのため、cp936/gbk のコンソールでも、CJK のパスや Unicode 記号(−、Δ、✓)を含む JSON 出力が文字化けしません。

スクリプトの使用方法

置換用の辞書を作成する前に、すべてのスライドの図形/テキスト/表/画像をダンプします。

python scripts/dump_pptx_content.py --pptx "D:\path\skeleton.pptx" --output "D:\path\dump.md"

反復作業中に特定のスライドだけを対象にするには、--slide 4,8,9 を追加します。

実装上の注意

  • Python 3.10 以降と、requirements.txt に記載されたパッケージが必要です。
  • Microsoft PowerPoint がインストールされた Windows では、テンプレートのスライドを複製し、実際のレンダリングを確認する方法として、PowerPoint COM が最も信頼できます。
  • python-pptx は編集可能なテキスト、図形、画像、表、簡単なグラフに適していますが、PowerPoint のすべてのレイアウト/レンダリング動作を完全には再現できません。
  • scripts/pptx_template_tools.py は THESIS_PPTX_BRAND_RED が設定されている場合(#830604、830604、または 131,6,4)、その値を使用します。これにより、主要な赤色を変更するためにソースを編集する必要がなく、新しい学校用テンプレートにも対応できます。
  • PowerPoint アドインによって COM オートメーションが妨げられる場合、必要に応じて問題のあるアドインの自動読み込みのみを無効にし、その対応を報告してください。
  • プレゼンテーションファイルを上書きする前に、バックアップを作成してください。
  • 反復作業中に、無関係なユーザーファイルを元に戻さないでください。

コメント