mcpField
P
paper-slide-deck

paper-slide-deck

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

paper-slide-deck について

paper-slide-deckは、学術論文や入力したコンテンツからスライド画像とプレゼンテーションファイルを作成します。PDFからの図表検出・抽出に対応し、スタイル、対象読者、言語、枚数の指定やアウトラインのみの生成も可能です。

主な機能

  1. 01PDFやテキストからスライドを生成
  2. 02論文内の図表を検出・抽出
  3. 03ビジュアルスタイルと対象読者の選択
  4. 04言語とスライド枚数の指定
  5. 05PowerPointまたはPDFへの出力

活用シーン

  1. 01学会発表用スライドの作成
  2. 02レポートのエグゼクティブ向け資料化
  3. 03画像生成前のスライド構成案作成

インストール

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

$npx skills add https://github.com/leonchaox/qinyan-academic-skills --skill paper-slide-deck

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

同梱ファイル

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

references/
analysis-framework.md
base-prompt.md
content-rules.md
figure-container-template.md
modification-guide.md
outline-template.md
references/styles/
academic-paper.md
blueprint.md
bold-editorial.md
chalkboard.md
corporate.md
dark-atmospheric.md
editorial-infographic.md
fantasy-animation.md
intuition-machine.md
minimal.md
notion.md
pixel-art.md
scientific.md
sketch-notes.md
vector-illustration.md
vintage.md
watercolor.md
scripts/
apply-template.ts
detect-figures.ts
extract-figure.ts
generate-slides.py
merge-to-pdf.ts
merge-to-pptx.ts
package-lock.json

詳細

論文スライドデッキ生成ツール

学術論文やコンテンツを、図の自動抽出機能を備えたプロフェッショナルなスライドデッキ画像に変換します。

使用方法

/paper-slide-deck path/to/paper.pdf
/paper-slide-deck path/to/paper.pdf --style academic-paper
/paper-slide-deck path/to/content.md --style sketch-notes
/paper-slide-deck path/to/content.md --audience executives
/paper-slide-deck path/to/content.md --lang zh
/paper-slide-deck path/to/content.md --slides 10
/paper-slide-deck path/to/content.md --outline-only
/paper-slide-deck  # Then paste content

スクリプトディレクトリ

重要:すべてのスクリプトは、このスキルの scripts/ サブディレクトリにあります。

エージェントの実行手順:

  1. この SKILL.md ファイルのディレクトリパスを SKILL_DIR として特定します
  2. スクリプトのパス = ${SKILL_DIR}/scripts/<script-name>.ts
  3. このドキュメント内のすべての ${SKILL_DIR} を実際のパスに置き換えます

スクリプト一覧:

スクリプト用途
scripts/generate-slides.pyGemini API 経由で AI スライドを生成(Python)
scripts/merge-to-pptx.tsスライドを PowerPoint に統合
scripts/merge-to-pdf.tsスライドを PDF に統合
scripts/detect-figures.tsPDF 内の図・表を自動検出
scripts/extract-figure.tsPDF ページから図を抽出(PyMuPDF によるフォールバックを使用)
scripts/apply-template.ts図のコンテナテンプレートを適用

オプション

オプション説明
--style <name>ビジュアルスタイル(スタイル一覧を参照)
--audience <type>対象者:初心者、中級者、専門家、経営幹部、一般向け
--lang <code>出力言語(en、zh、ja など)
--slides <number>目標スライド数
--outline-onlyアウトラインのみを生成し、画像生成をスキップ

スタイル一覧

スタイル説明最適な用途
academic-paperすっきりとしたプロフェッショナルなデザイン、正確なグラフ学会発表、学位論文の審査
blueprint (Default)技術的な設計図、グリッドのテクスチャアーキテクチャ、システム設計
chalkboard黒板、カラフルなチョーク教育、チュートリアル、教室
notionSaaS ダッシュボード、カードベースのレイアウト製品デモ、SaaS、B2B
bold-editorial雑誌の表紙、大胆なタイポグラフィ、ダーク製品発表、基調講演
corporateネイビーとゴールド、構造化されたレイアウト投資家向け資料、提案書
dark-atmospheric映画のようなダークモード、発光するアクセントエンターテインメント、ゲーム
editorial-infographic雑誌風の解説、フラットなイラスト技術解説、研究
fantasy-animationジブリ/ディズニー風、手描き教育、ストーリーテリング
intuition-machine技術ブリーフィング、二言語のラベル技術文書、学術
minimal極めてすっきりとしたデザイン、広い余白経営幹部向けブリーフィング、高級感のある資料
pixel-artレトロな8ビット、粗めのピクセルゲーム、開発者向け講演
scientific学術的な図、正確なラベル付け生物学、化学、医学
sketch-notes手描き、温かみのある親しみやすいデザイン教育、チュートリアル
vector-illustrationフラットなベクター、レトロでかわいらしいデザインクリエイティブ、子ども向けコンテンツ
vintage古びた紙、歴史を感じさせるスタイル歴史、文化遺産、伝記
watercolor手描きの質感、自然な温かみライフスタイル、ウェルネス、旅行

スタイルの自動選択

コンテンツのシグナル選択されるスタイル
paper, thesis, defense, conference, ieee, acm, icml, neurips, cvpr, acl, aaai, iclracademic-paper
tutorial, learn, education, guide, intro, beginnersketch-notes
classroom, teaching, school, chalkboard, blackboardchalkboard
architecture, system, data, analysis, technicalblueprint
creative, children, kids, cute, illustrationvector-illustration
briefing, bilingual, infographic, conceptintuition-machine
executive, minimal, clean, simple, elegantminimal
saas, product, dashboard, metrics, productivitynotion
investor, quarterly, business, corporate, proposalcorporate
launch, marketing, keynote, bold, impact, magazinebold-editorial
entertainment, music, gaming, creative, atmosphericdark-atmospheric
explainer, journalism, science communicationeditorial-infographic
story, fantasy, animation, magical, whimsicalfantasy-animation
gaming, retro, pixel, developer, nostalgiapixel-art
biology, chemistry, medical, pathway, scientificscientific
history, heritage, vintage, expedition, historicalvintage
lifestyle, wellness, travel, artistic, naturalwatercolor
デフォルトblueprint

レイアウトギャラリー

スライドごとの任意のレイアウトヒントです。アウトラインの // LAYOUT セクションで指定します。

スライド専用レイアウト
レイアウト説明最適な用途
title-hero中央に大きなタイトル+サブタイトル表紙スライド、セクションの区切り
quote-callout引用文を目立たせ、出典を添えるお客様の声、重要な洞察
key-stat大きな数字を1つ、主役として配置インパクトを示す統計、指標
split-screen画像とテキストを左右半分に配置機能の紹介、比較
icon-gridラベル付きアイコンのグリッド機能、性能、メリット
two-columnsバランスの取れた2列にコンテンツを配置対になる情報、2つの要点
three-columnsコンテンツを3列に配置3項目の比較、カテゴリ
image-caption全画面画像+テキストのオーバーレイ視覚的なストーリーテリング、感情的な訴求
agendaハイライト付きの番号付きリストセッション概要、ロードマップ
bullet-list構造化された箇条書きシンプルなコンテンツ、リスト
インフォグラフィック由来のレイアウト
レイアウト説明最適な用途
linear-progression左から右への順次的な流れタイムライン、段階的な手順
binary-comparisonAとBを並べて比較ビフォーアフター、メリットとデメリット
comparison-matrix複数の要素を比べるグリッド機能の比較
hierarchical-layersピラミッド型または積み重ねた階層優先度、重要度
hub-spoke中央のノードから項目が放射状に広がるコンセプトマップ、エコシステム
bento-gridサイズの異なるタイル概要、要約
funnel段階的に絞り込む構成コンバージョン、フィルタリング
dashboardグラフや数値を使った指標KPI、データ表示
venn-diagram重なり合う円関係性、共通部分
circular-flow継続的なサイクル繰り返しのプロセス
winding-roadmapマイルストーンのある曲線状の道筋道のり、タイムライン
tree-branching親子関係の階層組織図、分類体系
iceberg見える層と隠れた層表層と深層
bridge隔たりと、それをつなぐ要素問題と解決策
学術論文向けレイアウト
レイアウト説明最適な用途
paper-titleタイトル、著者、所属、発表会場学会論文の表紙
outline-agendaハイライト付きの番号付きセクション一覧講演の構成概要
methods-diagram中央に配置したアーキテクチャ/パイプライン図手法、システム設計
results-chartグラフ領域とデータ注釈定量的な結果
equation-focus中央に配置した数式と変数の定義数学的な導出
qualitative-grid2x2 または 3x2 の画像比較グリッド視覚的な結果、アブレーション
references-list番号付きの引用文献一覧主要な参考文献のスライド
contributions番号付きの貢献項目貢献の要約

使い方:スライドの // LAYOUT セクションに Layout: <name> を追加し、視覚的な構成を指定します。

デザインの理念

このスライドデッキは、ライブプレゼンテーションではなく、閲覧と共有を目的として設計されています。

  • 各スライドは、口頭での説明がなくても内容を理解できる必要があります
  • スクロール時に論理的な流れになるようコンテンツを構成します
  • 各スライドに必要なコンテキストをすべて含めます
  • ソーシャルメディアでの共有とオフラインでの閲覧に最適化します

ファイル管理

出力ディレクトリ

各セッションでは、コンテンツのスラッグを名前にした独立したディレクトリが作成されます。

slide-deck/{topic-slug}/
├── source-{slug}.{ext}    # Source files (text, images, etc.)
├── outline.md
├── outline-{style}.md     # Style variant outlines
├── prompts/
│   └── 01-slide-cover.md, 02-slide-{slug}.md, ...
├── 01-slide-cover.png, 02-slide-{slug}.png, ...
├── {topic-slug}.pptx
└── {topic-slug}.pdf

スラッグの生成:

  1. コンテンツの主要なトピックを抽出します(2~4語、ケバブケース)
  2. 例:「Introduction to Machine Learning」→ intro-machine-learning
競合の解決

slide-deck/{topic-slug}/ がすでに存在する場合:

  • タイムスタンプを追加します:{topic-slug}-YYYYMMDD-HHMMSS
  • 例:intro-ml が存在する場合 → intro-ml-20260118-143052
ソースファイル

すべてのソースを source-{slug}.{ext} という名前でコピーします:

  • source-article.md(メインのテキストコンテンツ)
  • source-diagram.png(会話からの画像)
  • source-data.xlsx(追加ファイル)

複数のソースに対応しています:会話からのテキスト、画像、ファイル。

ワークフロー

ステップ 1:コンテンツを分析する
  1. ソースコンテンツを保存します(貼り付けられた場合は source.md として保存します)
  2. 詳細なコンテンツ分析には references/analysis-framework.md に従います
  3. スタイルを決定します(--style を使うか、シグナルに基づいて自動選択します)
  4. 言語を検出します(ソースとユーザーの希望言語)
  5. スライド枚数を計画します(--slides または動的に決定します)
  6. 学術論文(図を含む PDF)の場合:図の自動検出を実行します:
    npx -y bun ${SKILL_DIR}/scripts/detect-figures.ts --pdf source-paper.pdf --output figures.json
    
    これにより、検出されたすべての図と表、そのページ番号、キャプションを含む JSON ファイルが出力されます。
ステップ 2:アウトラインのバリエーションを生成する
  1. コンテンツ分析に基づいて、スタイルの異なるアウトラインを 3 種類生成します
  2. 構成には references/outline-template.md に従います
  3. 学術論文の IMAGE_SOURCE を自動入力します:
    • ステップ 1 の figures.json を読み取ります
    • references/analysis-framework.md のセクション 8 のルールを使って、図をスライドに割り当てます
    • 適切なスライドに // IMAGE_SOURCE ブロックを自動的に追加します:
      • アーキテクチャ/パイプライン図 → 手法のスライド(Source: extract)
      • 結果の表 → 定量的な結果のスライド(Source: extract)
      • 比較画像 → 定性的な結果のスライド(Source: extract)
      • 概念図/シンプルな図 → AI による生成に任せます(Source: generate または省略)
  4. 各バリエーションを outline-{style}.md として保存します
ステップ 3:ユーザーによる確認

該当するすべての選択肢を含む AskUserQuestion を 1 回だけ行います:

質問質問するタイミング
スタイルのバリエーション常に(3 つの選択肢+カスタム)
言語ソースの言語とユーザーの言語が異なる場合のみ

選択後:

  • 選択した outline-{style}.md を outline.md にコピーします
  • 希望があれば、別の言語で再生成します
  • ユーザーは微調整のために outline.md を編集できます

--outline-only が指定されている場合は、ここで終了します。

ステップ 4:プロンプトを生成する
  1. references/base-prompt.mdを読みます
  2. アウトラインのスタイル指示と組み合わせます
  3. スライド固有の内容を追加します
  4. アウトラインでLayout:が指定されている場合は、プロンプトにレイアウトの指示を含めます:
    • 画像構成のレイアウト特性を参照します
    • 例:Layout: hub-spoke → 「中央に中心的な概念を配置し、関連項目を周囲に放射状に配置します」
  5. prompts/ディレクトリに保存します
ステップ 5:画像生成方法の選択

画像を生成する前に、生成方法を選ぶようユーザーに尋ねます:

AskUserQuestionを使用し、次の選択肢を提示します:

オプションラベル説明
1Gemini API(推奨)Python 経由の Google 公式 API です。GOOGLE_API_KEY 環境変数が必要です。
2Gemini Web(ブラウザベース)⚠️ リバースエンジニアリングされた Web API を使用します。API キーは不要ですが、動作しなくなる可能性があります。

選択に基づく処理:

オプション 1:Gemini API(Python)
  1. API キーを確認:GOOGLE_API_KEYまたはGEMINI_API_KEY環境変数を確認します
  2. 生成スクリプトを実行:
    python ${SKILL_DIR}/scripts/generate-slides.py <slide-deck-dir> --model gemini-3-pro-image-preview
    

スクリプトの機能:

  • google-genaiパッケージが見つからない場合、自動でインストールします
  • 指数バックオフによる再試行ロジック(3 回再試行)
  • 生成済みのスライド(> 10KB)はスキップします
  • --modelフラグでカスタムモデルを指定できます
  • slides/サブディレクトリに出力します

トラブルシューティング:

  • サーバー切断エラーが発生した場合、スクリプトが自動で再試行します
  • 失敗が続く場合は、スクリプトを再実行します(完了済みのスライドはスキップされます)
  • 失敗が多数発生する場合は、API の割り当てを確認します
オプション 2:Gemini Web スキル
  1. 同意の確認:次の場所にある同意ファイルを読みます:

    • Windows:$APPDATA/baoyu-skills/gemini-web/consent.json
    • macOS:~/Library/Application Support/baoyu-skills/gemini-web/consent.json
    • Linux:~/.local/share/baoyu-skills/gemini-web/consent.json
  2. 同意がない場合、またはバージョンが一致しない場合は、免責事項を表示して次のように尋ねます:

    ⚠️ DISCLAIMER: This uses a reverse-engineered Gemini Web API (NOT official).
    Risks: May break anytime, no support, possible account risk.
    
  3. 各スライドについて、次を実行します:

    npx -y bun ${GEMINI_WEB_SKILL_DIR}/scripts/main.ts \
      --promptfiles prompts/01-slide-cover.md \
      --image 01-slide-cover.png \
      --sessionId slides-{topic-slug}-{timestamp}
    

    ここで、GEMINI_WEB_SKILL_DIRはbaoyu-danger-gemini-webスキルディレクトリへのパスです。

  4. プロキシのサポート:ユーザーが制限付きネットワークを使用している場合は、先頭に次を追加します:

    HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890
    
ステップ 5.5:IMAGE_SOURCE を処理する(図を自動抽出)

学術プレゼンテーションでは、ステップ 1 の図検出に基づき、ステップ 2 で IMAGE_SOURCE メタデータが自動入力されています。

自動実行:

  1. アウトラインを解析し、Source: extractのスライドを特定します

  2. 図のディレクトリを作成します:mkdir -p figures

  3. 各抽出スライドについて、次を自動的に実行します:

    • メタデータから図番号、ページ、キャプションを読み取ります
    • 図の抽出スクリプトを実行します:
      npx -y bun ${SKILL_DIR}/scripts/extract-figure.ts \
        --pdf source-paper.pdf \
        --page <page-number> \
        --output figures/figure-<N>.png
      
    • テンプレート適用スクリプトを実行します:
      npx -y bun ${SKILL_DIR}/scripts/apply-template.ts \
        --figure figures/figure-<N>.png \
        --title "<slide-headline>" \
        --caption "Figure <N>: <caption-text>" \
        --output <NN>-slide-<slug>.png
      
    • 報告します:「抽出済み:図 N → スライド NN」
  4. Source: generateが指定されたスライド(または IMAGE_SOURCE がないスライド)について:

    • ステップ 6 に進み、AI で生成します

注:ソース PDF は、出力ディレクトリにsource-paper.pdfとして保存する必要があります。

トラブルシューティング:

  • 図の検出で図を見落とした場合:アウトラインに// IMAGE_SOURCEブロックを手動で追加します
  • 図の対応付けが間違っている場合:アウトラインのFigure:とPage:の値を編集します
  • 抽出に失敗した場合:PDF のページ番号(1 始まり)を確認します

ページ抽出時の PyMuPDF フォールバック: extract-figure.tsで「Image or Canvas expected」エラーが発生した場合(複雑な PDF でよく発生します)、PyMuPDF を使用します:

import fitz
doc = fitz.open("source-paper.pdf")
page = doc[page_num - 1]  # 0-indexed
mat = fitz.Matrix(3, 3)  # 3x scale for high resolution
pix = page.get_pixmap(matrix=mat)
pix.save(f"extracted/page-{page_num}.png")

次に、apply-template.tsを使用してテンプレートを適用します。

ステップ 6:画像を生成する
  1. ステップ 5 で選択した方法を使用します
  2. ステップ 5.5 ですでに処理したスライド(Source: extractのスライド)はスキップします
  3. セッション ID を生成します:slides-{topic-slug}-{timestamp}
  4. 残りのスライドをそれぞれ、同じセッション ID で生成します
  5. 進捗を報告します:「生成済み X/N」
  6. 生成に失敗した場合は 1 回自動で再試行します
ステップ 7:PPTX と PDF に結合する
npx -y bun ${SKILL_DIR}/scripts/merge-to-pptx.ts <slide-deck-dir>
npx -y bun ${SKILL_DIR}/scripts/merge-to-pdf.ts <slide-deck-dir>
ステップ 8:概要を出力する
Slide Deck Complete!

Topic: [topic]
Style: [style name]
Location: [directory path]
Slides: N total

- 01-slide-cover.png ✓ Cover
- 02-slide-intro.png ✓ Content
- ...
- {NN}-slide-back-cover.png ✓ Back Cover

Outline: outline.md
PPTX: {topic-slug}.pptx
PDF: {topic-slug}.pdf

スライドの変更

以下については、references/modification-guide.md を参照してください。

  • 1 枚のスライドを編集するワークフロー
  • スライドを追加する(番号の振り直しを含む)
  • スライドを削除する(番号の振り直しを含む)
  • ファイルの命名規則

画像生成の依存関係

Gemini API(オプション 1 - 推奨)

必要なもの:

  • GOOGLE_API_KEY または GEMINI_API_KEY 環境変数
  • pip を含む Python 3.8 以降
  • google-genai パッケージ(スクリプトによって自動インストールされます)

モデル:gemini-3-pro-image-preview(デフォルト)

Gemini Web Skill(オプション 2)

必要なもの:

  • .claude/skills/baoyu-danger-gemini-web にインストールされた baoyu-danger-gemini-web スキル
  • Google アカウントにログイン済みの Google Chrome ブラウザー
  • リバースエンジニアリングされた API に関する免責事項へのユーザーの同意
PDF の図の抽出

必要なもの:

  • 主な方法:pdfjs-dist npm パッケージ(Node.js ではレガシービルドを使用)
  • 代替方法:pymupdf Python パッケージ(複雑な PDF ではより信頼性があります)
  • apply-template.ts 用の canvas npm パッケージ

参考資料

ファイル内容
references/analysis-framework.mdプレゼンテーション向けの詳細なコンテンツ分析
references/outline-template.mdアウトラインの構成と STYLE_INSTRUCTIONS の形式
references/modification-guide.mdスライドの編集、追加、削除のワークフロー
references/content-rules.mdコンテンツとスタイルのガイドライン
references/base-prompt.md画像生成用の基本プロンプト
references/figure-container-template.md抽出した図のコンテナのビジュアル仕様
references/styles/<style>.mdスタイルの詳細仕様

注意事項

画像生成
  • Nano Banana Pro API:推奨です。安定しており信頼性がありますが、API キーが必要です
  • Gemini Web:API キーは不要ですが、アカウントのリスクを伴うリバースエンジニアリングされた API を使用します
  • 生成時間:スライド 1 枚あたり 10~30 秒
  • 生成に失敗した場合は 1 回自動で再試行します
  • セッション ID を使ってスタイルの一貫性を維持します
コンテンツのガイドライン
  • 公人の表現には、センシティブな人物を避けた代替案を使用します
  • どちらの方法も、画像生成には同じ基盤の Gemini モデルを使用します

拡張機能のサポート

EXTEND.md を使用して、カスタムスタイルと設定を利用できます。

パスを確認(優先順位順):

  1. .paper-skills/paper-slide-deck/EXTEND.md(プロジェクト)
  2. ~/.paper-skills/paper-slide-deck/EXTEND.md(ユーザー)

見つかった場合は、ステップ 1 の前に読み込みます。拡張内容はデフォルト設定より優先されます。

コメント