skills/02-luwill-research-skills/paper-slide-deck/SKILL.md
Generate professional slide deck images from academic papers and content. Creates comprehensive outlines with style instructions, auto-detects figures from PDFs, then generates individual slide images. Use when user asks to "create slides", "make a presentation", "generate deck", or "slide deck" for papers.
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research paper-slide-deckInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Transform academic papers and content into professional slide deck images with automatic figure extraction.
/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
Important: All scripts are located in the scripts/ subdirectory of this skill.
Agent Execution Instructions:
SKILL_DIR${SKILL_DIR}/scripts/<script-name>.ts${SKILL_DIR} in this document with the actual pathScript Reference:
| Script | Purpose |
|--------|---------|
| scripts/generate-slides.py | Generate AI slides via Gemini API (Python) |
| scripts/merge-to-pptx.ts | Merge slides into PowerPoint |
| scripts/merge-to-pdf.ts | Merge slides into PDF |
| scripts/detect-figures.ts | Auto-detect figures/tables in PDF |
| scripts/extract-figure.ts | Extract figure from PDF page (uses PyMuPDF fallback) |
| scripts/apply-template.ts | Apply figure container template |
| Option | Description |
|--------|-------------|
| --style <name> | Visual style (see Style Gallery) |
| --audience <type> | Target audience: beginners, intermediate, experts, executives, general |
| --lang <code> | Output language (en, zh, ja, etc.) |
| --slides <number> | Target slide count |
| --outline-only | Generate outline only, skip image generation |
| Style | Description | Best For |
|-------|-------------|----------|
| academic-paper | Clean professional, precise charts | Conference talks, thesis defense |
| blueprint (Default) | Technical schematics, grid texture | Architecture, system design |
| chalkboard | Black chalkboard, colorful chalk | Education, tutorials, classroom |
| notion | SaaS dashboard, card-based layouts | Product demos, SaaS, B2B |
| bold-editorial | Magazine cover, bold typography, dark | Product launches, keynotes |
| corporate | Navy/gold, structured layouts | Investor decks, proposals |
| dark-atmospheric | Cinematic dark mode, glowing accents | Entertainment, gaming |
| editorial-infographic | Magazine explainers, flat illustrations | Tech explainers, research |
| fantasy-animation | Ghibli/Disney style, hand-drawn | Educational, storytelling |
| intuition-machine | Technical briefing, bilingual labels | Technical docs, academic |
| minimal | Ultra-clean, maximum whitespace | Executive briefings, premium |
| pixel-art | Retro 8-bit, chunky pixels | Gaming, developer talks |
| scientific | Academic diagrams, precise labeling | Biology, chemistry, medical |
| sketch-notes | Hand-drawn, warm & friendly | Educational, tutorials |
| vector-illustration | Flat vector, retro & cute | Creative, children's content |
| vintage | Aged-paper, historical styling | Historical, heritage, biography |
| watercolor | Hand-painted textures, natural warmth | Lifestyle, wellness, travel |
| Content Signals | Selected Style |
|-----------------|----------------|
| 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 |
| Default | blueprint |
Optional layout hints for individual slides. Specify in outline's // LAYOUT section.
| Layout | Description | Best For |
|--------|-------------|----------|
| title-hero | Large centered title + subtitle | Cover slides, section breaks |
| quote-callout | Featured quote with attribution | Testimonials, key insights |
| key-stat | Single large number as focal point | Impact statistics, metrics |
| split-screen | Half image, half text | Feature highlights, comparisons |
| icon-grid | Grid of icons with labels | Features, capabilities, benefits |
| two-columns | Content in balanced columns | Paired information, dual points |
| three-columns | Content in three columns | Triple comparisons, categories |
| image-caption | Full-bleed image + text overlay | Visual storytelling, emotional |
| agenda | Numbered list with highlights | Session overview, roadmap |
| bullet-list | Structured bullet points | Simple content, lists |
| Layout | Description | Best For |
|--------|-------------|----------|
| linear-progression | Sequential flow left-to-right | Timelines, step-by-step |
| binary-comparison | Side-by-side A vs B | Before/after, pros-cons |
| comparison-matrix | Multi-factor grid | Feature comparisons |
| hierarchical-layers | Pyramid or stacked levels | Priority, importance |
| hub-spoke | Central node with radiating items | Concept maps, ecosystems |
| bento-grid | Varied-size tiles | Overview, summary |
| funnel | Narrowing stages | Conversion, filtering |
| dashboard | Metrics with charts/numbers | KPIs, data display |
| venn-diagram | Overlapping circles | Relationships, intersections |
| circular-flow | Continuous cycle | Recurring processes |
| winding-roadmap | Curved path with milestones | Journey, timeline |
| tree-branching | Parent-child hierarchy | Org charts, taxonomies |
| iceberg | Visible vs hidden layers | Surface vs depth |
| bridge | Gap with connection | Problem-solution |
| Layout | Description | Best For |
|--------|-------------|----------|
| paper-title | Title, authors, affiliations, venue | Conference paper cover |
| outline-agenda | Numbered section list with highlights | Talk structure overview |
| methods-diagram | Central architecture/pipeline diagram | Methods, system design |
| results-chart | Chart area + data annotations | Quantitative results |
| equation-focus | Centered equation + variable definitions | Mathematical derivations |
| qualitative-grid | 2x2 or 3x2 image comparison grid | Visual results, ablations |
| references-list | Numbered citation list | Key references slide |
| contributions | Numbered contribution points | Contributions summary |
Usage: Add Layout: <name> in slide's // LAYOUT section to guide visual composition.
This deck is designed for reading and sharing, not live presentation:
Each session creates an independent directory named by content slug:
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
Slug Generation:
intro-machine-learningIf slide-deck/{topic-slug}/ already exists:
{topic-slug}-YYYYMMDD-HHMMSSintro-ml exists → intro-ml-20260118-143052Copy all sources with naming source-{slug}.{ext}:
source-article.md (main text content)source-diagram.png (image from conversation)source-data.xlsx (additional file)Multiple sources supported: text, images, files from conversation.
source.md)references/analysis-framework.md for deep content analysis--style or auto-select from signals)--slides or dynamic)npx -y bun ${SKILL_DIR}/scripts/detect-figures.ts --pdf source-paper.pdf --output figures.json
This outputs a JSON file with all detected figures/tables, their page numbers, and captions.references/outline-template.md for structurefigures.json from Step 1references/analysis-framework.md Section 8// IMAGE_SOURCE blocks to appropriate slides:
Source: extract)Source: extract)Source: extract)Source: generate or omit)outline-{style}.md for each variantSingle AskUserQuestion with all applicable options:
| Question | When to Ask | |----------|-------------| | Style variant | Always (3 options + custom) | | Language | Only if source ≠ user language |
After selection:
outline-{style}.md to outline.mdoutline.md for fine-tuningIf --outline-only, stop here.
references/base-prompt.mdLayout: specified in outline, include layout guidance in prompt:
Layout: hub-spoke → "Central concept in middle with related items radiating outward"prompts/ directoryBefore generating images, ask user to choose generation method:
Use AskUserQuestion with options:
| Option | Label | Description | |--------|-------|-------------| | 1 | Gemini API (Recommended) | Official Google API via Python. Requires GOOGLE_API_KEY env var. | | 2 | Gemini Web (Browser-based) | ⚠️ Uses reverse-engineered web API. No API key needed but may break. |
Based on selection:
GOOGLE_API_KEY or GEMINI_API_KEY environment variablepython ${SKILL_DIR}/scripts/generate-slides.py <slide-deck-dir> --model gemini-3-pro-image-preview
Script Features:
google-genai package if missing--model flagslides/ subdirectoryTroubleshooting:
Consent Check: Read consent file at:
$APPDATA/baoyu-skills/gemini-web/consent.json~/Library/Application Support/baoyu-skills/gemini-web/consent.json~/.local/share/baoyu-skills/gemini-web/consent.jsonIf no consent or version mismatch, display disclaimer and ask:
⚠️ DISCLAIMER: This uses a reverse-engineered Gemini Web API (NOT official).
Risks: May break anytime, no support, possible account risk.
For each slide, run:
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}
Where GEMINI_WEB_SKILL_DIR = path to baoyu-danger-gemini-web skill directory.
Proxy support: If user is in restricted network, prepend:
HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890
For academic presentations, IMAGE_SOURCE metadata was auto-populated in Step 2 based on figure detection from Step 1.
Automatic Execution:
Parse outline to identify slides with Source: extract
Create figures directory: mkdir -p figures
For each extract slide, automatically:
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
For slides with Source: generate (or no IMAGE_SOURCE):
Note: Source PDF must be saved as source-paper.pdf in output directory.
Troubleshooting:
// IMAGE_SOURCE block to outlineFigure: and Page: values in outlinePyMuPDF Fallback for Page Extraction:
If extract-figure.ts fails with "Image or Canvas expected" error (common with complex PDFs), use 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")
Then apply template using apply-template.ts.
Source: extract)slides-{topic-slug}-{timestamp}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>
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
See references/modification-guide.md for:
Requires:
GOOGLE_API_KEY or GEMINI_API_KEY environment variablegoogle-genai package (auto-installed by script)Model: gemini-3-pro-image-preview (default)
Requires:
baoyu-danger-gemini-web skill installed at .claude/skills/baoyu-danger-gemini-webRequires:
pdfjs-dist npm package (use legacy build for Node.js)pymupdf Python package (more reliable for complex PDFs)canvas npm package for apply-template.ts| File | Content |
|------|---------|
| references/analysis-framework.md | Deep content analysis for presentations |
| references/outline-template.md | Outline structure and STYLE_INSTRUCTIONS format |
| references/modification-guide.md | Edit, add, delete slide workflows |
| references/content-rules.md | Content and style guidelines |
| references/base-prompt.md | Base prompt for image generation |
| references/figure-container-template.md | Visual specs for extracted figure containers |
| references/styles/<style>.md | Full style specifications |
Custom styles and configurations via EXTEND.md.
Check paths (priority order):
.paper-skills/paper-slide-deck/EXTEND.md (project)~/.paper-skills/paper-slide-deck/EXTEND.md (user)If found, load before Step 1. Extension content overrides defaults.
tools
Recommend AND run open-source AI tools, agents, Claude Code / Codex skills, and MCP servers for any stage of a literature review — searching, reading, extracting, synthesizing, screening, citation-checking, and paper writing. Use when the user asks "what tool should I use to..." OR "install/run/use <tool> to ..." for research/lit-review work: automating a survey or related-work section, PDF→Markdown extraction for LLMs (MinerU/marker/docling), PRISMA / systematic review (ASReview), citation-backed Q&A over PDFs (PaperQA2), wiring papers into Claude/Cursor via MCP (arxiv/paper-search/zotero servers), or chatting with a Zotero library. Ships a launcher (scripts/litrun.py) that installs each tool in an isolated venv and runs it. Curated catalog of 70+ vetted projects. 支持中英文(用于「文献综述工具选型」与「一键安装/运行」)。
development
Route empirical-research requests through the Auto-Empirical Research Skills catalog when this whole repository is installed as one skill in Codex, CodeBuddy, Claude Code, or another IDE. Use to choose and load the right vendored AERS skill for causal inference, econometrics, replication, data acquisition, manuscript writing, peer review and referee responses, citation checking, de-AIGC editing, or full empirical-paper workflows without reading the entire repository at once.
documentation
Use when the project collects primary data or runs a field, lab, or survey experiment, before the intervention begins — write the pre-analysis plan, size the sample from a power calculation, and register with the AEA RCT Registry. Apply after the design is chosen in aer-identification and before any outcome data are seen.
tools
Guide economists to authoritative data sources with explicit, confirmed data specifications before retrieval; interfaces with Playwright MCP to navigate portals and extract real data, not articles about data.