skills/02-luwill-research-skills/paper-slide-deck/SKILL.md
<!-- ╔══════════════════════════════════════════════════════════════╗ ║ 本文件为开源 Skill 原始文档,收录仅供学习与研究参考 ║ ║ CoPaper.AI 收集整理 | https://copaper.ai ║ ╚══════════════════════════════════════════════════════════════╝ 来源仓库: https://github.com/luwill/research-skills 项目名称: research-skills 开源协议: MIT License 收录日期: 2026-04-02 声明: 本文件版权归原作者所有。此处收录旨在为社会科学实证研究者 提供 AI Agent Skills 的集中参考。如有侵权,请联系删除。 --> --- name: paper-slide-deck description: Generate professional
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research skills/02-luwill-research-skills/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
Show mcp-stata identity, connected tools, and status. Use when the user asks if mcp-stata is available, asks about access to the toolkit, or asks what Stata tools are connected.
tools
Activate when users mention Stata commands, .do files, regressions, econometrics, stored results, graphs, dataset inspection, replication, or Stata errors. Route the task through mcp-stata tools and the specialized research skills instead of treating it as plain text coding.
development
Build and review paper-ready regression, balance, and summary tables from Stata outputs. Use when the user needs a clean table for a draft, appendix, or coauthor share-out.
tools
Install, configure, update, or verify mcp-stata across Claude Code, Codex, Gemini CLI, Cursor, Windsurf, and VS Code. Activate when users ask to set up the Stata toolkit or troubleshoot the installation.