paper-slide-deck について
paper-slide-deckは、学術論文や入力したコンテンツからスライド画像とプレゼンテーションファイルを作成します。PDFからの図表検出・抽出に対応し、スタイル、対象読者、言語、枚数の指定やアウトラインのみの生成も可能です。
主な機能
- 01PDFやテキストからスライドを生成
- 02論文内の図表を検出・抽出
- 03ビジュアルスタイルと対象読者の選択
- 04言語とスライド枚数の指定
- 05PowerPointまたはPDFへの出力
活用シーン
- 01学会発表用スライドの作成
- 02レポートのエグゼクティブ向け資料化
- 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.mdbase-prompt.mdcontent-rules.mdfigure-container-template.mdmodification-guide.mdoutline-template.mdreferences/styles/academic-paper.mdblueprint.mdbold-editorial.mdchalkboard.mdcorporate.mddark-atmospheric.mdeditorial-infographic.mdfantasy-animation.mdintuition-machine.mdminimal.mdnotion.mdpixel-art.mdscientific.mdsketch-notes.mdvector-illustration.mdvintage.mdwatercolor.mdscripts/apply-template.tsdetect-figures.tsextract-figure.tsgenerate-slides.pymerge-to-pdf.tsmerge-to-pptx.tspackage-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/ サブディレクトリにあります。
エージェントの実行手順:
- この SKILL.md ファイルのディレクトリパスを
SKILL_DIRとして特定します - スクリプトのパス =
${SKILL_DIR}/scripts/<script-name>.ts - このドキュメント内のすべての
${SKILL_DIR}を実際のパスに置き換えます
スクリプト一覧:
| スクリプト | 用途 |
|---|---|
scripts/generate-slides.py | Gemini API 経由で AI スライドを生成(Python) |
scripts/merge-to-pptx.ts | スライドを PowerPoint に統合 |
scripts/merge-to-pdf.ts | スライドを PDF に統合 |
scripts/detect-figures.ts | PDF 内の図・表を自動検出 |
scripts/extract-figure.ts | PDF ページから図を抽出(PyMuPDF によるフォールバックを使用) |
scripts/apply-template.ts | 図のコンテナテンプレートを適用 |
オプション
| オプション | 説明 |
|---|---|
--style <name> | ビジュアルスタイル(スタイル一覧を参照) |
--audience <type> | 対象者:初心者、中級者、専門家、経営幹部、一般向け |
--lang <code> | 出力言語(en、zh、ja など) |
--slides <number> | 目標スライド数 |
--outline-only | アウトラインのみを生成し、画像生成をスキップ |
スタイル一覧
| スタイル | 説明 | 最適な用途 |
|---|---|---|
academic-paper | すっきりとしたプロフェッショナルなデザイン、正確なグラフ | 学会発表、学位論文の審査 |
blueprint (Default) | 技術的な設計図、グリッドのテクスチャ | アーキテクチャ、システム設計 |
chalkboard | 黒板、カラフルなチョーク | 教育、チュートリアル、教室 |
notion | SaaS ダッシュボード、カードベースのレイアウト | 製品デモ、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, iclr | academic-paper |
| tutorial, learn, education, guide, intro, beginner | sketch-notes |
| classroom, teaching, school, chalkboard, blackboard | chalkboard |
| architecture, system, data, analysis, technical | blueprint |
| creative, children, kids, cute, illustration | vector-illustration |
| briefing, bilingual, infographic, concept | intuition-machine |
| executive, minimal, clean, simple, elegant | minimal |
| saas, product, dashboard, metrics, productivity | notion |
| investor, quarterly, business, corporate, proposal | corporate |
| launch, marketing, keynote, bold, impact, magazine | bold-editorial |
| entertainment, music, gaming, creative, atmospheric | dark-atmospheric |
| explainer, journalism, science communication | editorial-infographic |
| story, fantasy, animation, magical, whimsical | fantasy-animation |
| gaming, retro, pixel, developer, nostalgia | pixel-art |
| biology, chemistry, medical, pathway, scientific | scientific |
| history, heritage, vintage, expedition, historical | vintage |
| lifestyle, wellness, travel, artistic, natural | watercolor |
| デフォルト | 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-comparison | Aと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-grid | 2x2 または 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
スラッグの生成:
- コンテンツの主要なトピックを抽出します(2~4語、ケバブケース)
- 例:「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:コンテンツを分析する
- ソースコンテンツを保存します(貼り付けられた場合は
source.mdとして保存します) - 詳細なコンテンツ分析には
references/analysis-framework.mdに従います - スタイルを決定します(
--styleを使うか、シグナルに基づいて自動選択します) - 言語を検出します(ソースとユーザーの希望言語)
- スライド枚数を計画します(
--slidesまたは動的に決定します) - 学術論文(図を含む PDF)の場合:図の自動検出を実行します:
これにより、検出されたすべての図と表、そのページ番号、キャプションを含む JSON ファイルが出力されます。npx -y bun ${SKILL_DIR}/scripts/detect-figures.ts --pdf source-paper.pdf --output figures.json
ステップ 2:アウトラインのバリエーションを生成する
- コンテンツ分析に基づいて、スタイルの異なるアウトラインを 3 種類生成します
- 構成には
references/outline-template.mdに従います - 学術論文の IMAGE_SOURCE を自動入力します:
- ステップ 1 の
figures.jsonを読み取ります references/analysis-framework.mdのセクション 8 のルールを使って、図をスライドに割り当てます- 適切なスライドに
// IMAGE_SOURCEブロックを自動的に追加します:- アーキテクチャ/パイプライン図 → 手法のスライド(
Source: extract) - 結果の表 → 定量的な結果のスライド(
Source: extract) - 比較画像 → 定性的な結果のスライド(
Source: extract) - 概念図/シンプルな図 → AI による生成に任せます(
Source: generateまたは省略)
- アーキテクチャ/パイプライン図 → 手法のスライド(
- ステップ 1 の
- 各バリエーションを
outline-{style}.mdとして保存します
ステップ 3:ユーザーによる確認
該当するすべての選択肢を含む AskUserQuestion を 1 回だけ行います:
| 質問 | 質問するタイミング |
|---|---|
| スタイルのバリエーション | 常に(3 つの選択肢+カスタム) |
| 言語 | ソースの言語とユーザーの言語が異なる場合のみ |
選択後:
- 選択した
outline-{style}.mdをoutline.mdにコピーします - 希望があれば、別の言語で再生成します
- ユーザーは微調整のために
outline.mdを編集できます
--outline-only が指定されている場合は、ここで終了します。
ステップ 4:プロンプトを生成する
references/base-prompt.mdを読みます- アウトラインのスタイル指示と組み合わせます
- スライド固有の内容を追加します
- アウトラインで
Layout:が指定されている場合は、プロンプトにレイアウトの指示を含めます:- 画像構成のレイアウト特性を参照します
- 例:
Layout: hub-spoke→ 「中央に中心的な概念を配置し、関連項目を周囲に放射状に配置します」
prompts/ディレクトリに保存します
ステップ 5:画像生成方法の選択
画像を生成する前に、生成方法を選ぶようユーザーに尋ねます:
AskUserQuestionを使用し、次の選択肢を提示します:
| オプション | ラベル | 説明 |
|---|---|---|
| 1 | Gemini API(推奨) | Python 経由の Google 公式 API です。GOOGLE_API_KEY 環境変数が必要です。 |
| 2 | Gemini Web(ブラウザベース) | ⚠️ リバースエンジニアリングされた Web API を使用します。API キーは不要ですが、動作しなくなる可能性があります。 |
選択に基づく処理:
オプション 1:Gemini API(Python)
- API キーを確認:
GOOGLE_API_KEYまたはGEMINI_API_KEY環境変数を確認します - 生成スクリプトを実行:
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 スキル
-
同意の確認:次の場所にある同意ファイルを読みます:
- 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
- Windows:
-
同意がない場合、またはバージョンが一致しない場合は、免責事項を表示して次のように尋ねます:
⚠️ DISCLAIMER: This uses a reverse-engineered Gemini Web API (NOT official). Risks: May break anytime, no support, possible account risk. -
各スライドについて、次を実行します:
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スキルディレクトリへのパスです。 -
プロキシのサポート:ユーザーが制限付きネットワークを使用している場合は、先頭に次を追加します:
HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890
ステップ 5.5:IMAGE_SOURCE を処理する(図を自動抽出)
学術プレゼンテーションでは、ステップ 1 の図検出に基づき、ステップ 2 で IMAGE_SOURCE メタデータが自動入力されています。
自動実行:
-
アウトラインを解析し、
Source: extractのスライドを特定します -
図のディレクトリを作成します:
mkdir -p figures -
各抽出スライドについて、次を自動的に実行します:
- メタデータから図番号、ページ、キャプションを読み取ります
- 図の抽出スクリプトを実行します:
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」
-
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:画像を生成する
- ステップ 5 で選択した方法を使用します
- ステップ 5.5 ですでに処理したスライド(
Source: extractのスライド)はスキップします - セッション ID を生成します:
slides-{topic-slug}-{timestamp} - 残りのスライドをそれぞれ、同じセッション ID で生成します
- 進捗を報告します:「生成済み X/N」
- 生成に失敗した場合は 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-distnpm パッケージ(Node.js ではレガシービルドを使用) - 代替方法:
pymupdfPython パッケージ(複雑な PDF ではより信頼性があります) - apply-template.ts 用の
canvasnpm パッケージ
参考資料
| ファイル | 内容 |
|---|---|
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 を使用して、カスタムスタイルと設定を利用できます。
パスを確認(優先順位順):
.paper-skills/paper-slide-deck/EXTEND.md(プロジェクト)~/.paper-skills/paper-slide-deck/EXTEND.md(ユーザー)
見つかった場合は、ステップ 1 の前に読み込みます。拡張内容はデフォルト設定より優先されます。