paper-slides

Generate conference presentation slides (beamer LaTeX → PDF + editable PPTX) from a compiled paper, with speaker notes and full talk script. Use when user says "做PPT", "做幻灯片", "make slides", "conference talk", "presentation slides", "生成slides", "写演讲稿", or wants beamer slides for a conference talk.

By wanshuiyin · 420 installs

npx skills add wanshuiyin/auto-claude-code-research-in-sleep --skill paper-slides

Source repository · Upstream listing

Paper Slides: From Paper to Conference Talk Generate conference presentation slides from: $ARGUMENTS Context This skill runs after Workflow 3 ( /paper writing ). It takes a compiled paper and generates a presentation slide deck for conference oral talks, spotlight presentations, or poster lightning talks. Unlike posters (single page, visual first), slides tell a temporal story : each slide builds on the previous one, with progressive revelation of the research narrative. A good talk makes the audience understand why this matters before showing what was done . Constants VENUE = NeurIPS — Target venue, determines color scheme. Supported: NeurIPS , ICML , ICLR , AAAI , ACL , EMNLP , CVPR , ECCV , GENERIC . Override via argument. TALK TYPE = spotlight — Talk format. Options: oral (15 20 min), spotlight (5 8 min), poster talk (3 5 min), invited (30 45 min). Determines slide count and content depth. TALK MINUTES = 15 — Talk duration in minutes. Auto adjusts slide count (~1 slide/minute for oral, ~1.5 slides/minute for spotlight). Override explicitly if needed. ASPECT RATIO = 16:9 — Slide aspect ratio. Options: 16:9 (default, modern projectors), 4:3 (legacy). SPEAKER NOTES = true — Generate \note{} blocks in beamer and corresponding PPTX notes. Set false for clean slides without notes. PAPER DIR = paper/ — Directory containing the compiled paper. OUTPUT DIR = slides/ — Output directory for all slide files. REVIEWER MODEL = gpt 6 astra — Model used via Codex MCP for slide review. AUTO PROCEED = false — At each checkpoint, always wait for explicit user confirmation . COMPILER = latexmk — LaTeX build tool. ENGINE = pdflatex — LaTeX engine. Use xelatex for CJK text. 💡 Override: /paper slides "paper/" — talk type: oral, venue: ICML, minutes: 20, aspect: 4:3 Optional: Style reference ( — style ref: <source , opt in) Lets the user steer the talk's structural rhythm (story beats, theorem density, figure density inherited from the source paper) toward a reference paper. Default OFF — when the user does not pass — style ref , do nothing differently from before. Only when — style ref: <source appears in $ARGUMENTS , run the helper FIRST: Sources accepted: local TeX dir / file, local PDF, arXiv id, http(s) URL. Overleaf URLs/IDs are rejected — clone via /overleaf sync setup <id first and pass the local clone path. Strict rules (full contract in tools/extract paper style.py docstring): Use style profile.md to align section budget tendency and theorem environment density. Talk type slide count above still takes precedence. Never copy speaker note prose, slide titles, or examples from anything reachable through the cache. The talk content is from the user's paper, not the reference. Never pass — style ref (or the cache contents) to the GPT 6 Astra reviewer sub agent — the reviewer must judge the talk's clarity on its own merits. Talk Type → Slide Count Talk Type Duration Slides Content Depth : : poster talk 3 5 min 5 8 Problem + 1 method slide + 1 result + conclusion spotlight 5 8 min 8 12 Problem + 2 method + 2 results + conclusion oral 15 20 min 15 22 Full story with motivation, method detail, experiments, analysis invited 30 45 min 25 40 Comprehensive: background, related work, deep method, extensive results, discussion Venue Color Schemes Same as /paper poster html : Venue Primary Accent Background Text NeurIPS 8B5CF6 2563EB FFFFFF 1E1E1E ICML DC2626 1D4ED8 FFFFFF 1E1E1E ICLR 059669 0284C7 FFFFFF 1E1E1E CVPR 2563EB 7C3AED FFFFFF 1E1E1E GENERIC 334155 2563EB FFFFFF 1E1E1E State Persistence (Compact Recovery) Persist state to slides/SLIDES STATE.json after each phase: On startup : if SLIDES STATE.json exists with "status": "in progress" and within 24h → resume. Otherwise → fresh start. Workflow Phase 0: Input Validation & Setup 1. Check prerequisites : 2. Verify paper exists : 3. Backup existing slides : if slides/ exists, copy to slides backup {timestamp}/ 4. Create output directory : mkdir p slides/figures 5. Detect CJK : if paper contains Chinese/Japanese/Korean, set ENGINE to xelatex 6. Determine slide count : from TALK TYPE and TALK MINUTES using the table above 7. Check for resume : read slides/SLIDES STATE.json if it exists State : Write SLIDES STATE.json with phase: 0 . Phase 1: Content Extraction & Slide Outline Read paper/sections/ .tex and build a slide by slide outline. Slide template by talk type : Oral (15 22 slides) Slide Purpose Content Source Figure? : : : : 1 Title Paper metadata No 2 Outline Section headers No 3 4 Motivation & Problem Introduction Optional 5 Key Insight Introduction (contribution) No 6 9 Method Method section Yes (hero figure) 10 14 Results Experiments Yes (per slide) 15 16 Analysis / Ablations Experiments Yes 17 Limitations Conclusion No 18 Conclusion / Takeaway Conclusion No 19 Thank You + QR — QR code Spotlight (8 12 slides) Slide Purpose Content Source Figure? : : : : 1 Title Paper metadata No 2 3 Problem + Why It Matters Introduction Optional 4 Key Insight Contribution No 5 6 Method Method (condensed) Yes (hero) 7 9 Results Key results only Yes 10 Takeaway Conclusion No 11 Thank You + QR — QR code Poster talk (5 8 slides) Slide Purpose Content Source Figure? : : : : 1 Title Paper metadata No 2 Problem Introduction (1 slide) No 3 Method Method (1 slide) Yes 4 5 Results Key result only Yes 6 Takeaway + QR Conclusion QR For each slide, specify : Title (max 8 words) 3 5 bullet points (max 8 words each) Figure reference (if any) from paper/figures/ Speaker note (2 3 sentences of what to say) Time allocation (in seconds) Output : slides/SLIDE OUTLINE.md 🚦 Checkpoint: ⛔ STOP HERE and wait for user response. This is the most critical checkpoint — the outline determines the entire talk flow. Options: "go" → proceed to Phase 2 adjustments (e.g., "merge slides 3 4", "add a demo slide", "cut the ablation") → revise "stop" → save to slides/SLIDE OUTLINE.md State : Write SLIDES STATE.json with phase: 1 . Phase 2: Slide by Slide Content Drafting For each slide in the outline, draft the actual content. Presentation rules (enforced strictly) : Rule Rationale One message per slide If a slide has two ideas, split it Max 6 lines per slide More than 6 lines = wall of text Max 8 words per line Audience reads, not listens, if text is long Sentence fragments, not sentences "Improves F1 by 3.2%" not "Our method improves the F1 score by 3.2 percentage points" Figure slides: figure ≥60% area The figure IS the content; bullets are annotations Bold key numbers "Achieves 94.3% accuracy" Progressive disclosure Use \pause or \onslide for complex slides No Related Work slide Unless invited talk (30+ min) For each slide, produce : 1. \frametitle{} 2. Content (itemize or figure + caption) 3. \note{} with speaker text (if SPEAKER NOTES=true) Phase 3: Generate Slides LaTeX Create slides/main.tex using beamer. Template structure : Symlink figures : Key formatting rules : Title font: ≥28pt, venue primary color Body font: ≥20pt Footnotes: ≥14pt No navigation symbols Frame numbers in bottom right Clean white background (no gradients, no decorative elements) Phase 4: Compile Slides Error handling loop (max 3 attempts): 1. Parse error log 2. Fix: missing package, undefined command, file not found, overfull boxes 3. Recompile Verification : If page count differs significantly from outline ( 2 slides off), investigate. State : Write SLIDES STATE.json with phase: 4 . Phase 5: Codex MCP Review Send the slide outline + selected LaTeX frames to GPT 6 Astra xhigh: Apply fixes. Recompile if LaTeX was changed. ⚠️ If mcp codex codex is not available (no OpenAI API key), skip external review and proceed to Phase 6. Note the skip in SLIDES STATE.json . Save review to slides/SLIDES REVIEW.md . State : Write SLIDES STATE.json with phase: 5 . Phase 6: Speaker Notes For each slide, ensure a \note{} block exists with: 1. What to say (2 3 complete sentences, conversational tone) 2. Timing hint (e.g., "spend 1 minute here", "quick — 20 seconds") 3. Transition phrase to the next slide (e.g., "So how do we actually implement this? Let me show you...") Also generate slides/speaker notes.md as a standalone backup: State : Write SLIDES STATE.json with phase: 6 . Phase 7: PowerPoint Export Generate an editable PPTX using python pptx : Write slides/generate pptx.py that: 1. Creates a PPTX with correct aspect ratio (16:9 → 13.33" x 7.5"; 4:3 → 10" x 7.5") 2. For each beamer frame: Creates a slide with matching layout Title in venue primary color, bold Bullet points with venue accent color markers Figures embedded as images (from slides/figures/) Speaker notes transferred to PPTX notes field 3. Title slide with special formatting (centered, larger title) 4. Thank You slide with centered text 5. Applies venue color scheme throughout ⚠️ If python pptx is not installed, skip with a note: "Install pip install python pptx to enable PowerPoint export." State : Write SLIDES STATE.json with phase: 7 . Phase 8: Full Talk Script Generate slides/TALK SCRIPT.md — a complete, word for word script for the talk. This is different from speaker notes (brief reminders). The talk script is a full manuscript that can be read aloud or used for practice. Final Output Summary State : Write SLIDES STATE.json with phase: 8, status: "completed" . Recommended Follow up: /slides polish After this skill produces the initial Beamer + PPTX, the typical drift is typography proportion + per slide layout , not content. Run /slides polish as a focused post generation polish phase: it does per page Codex review against a reference visual (e.g., a prior academic talk), bumps PPTX fonts to projector readable sizes, fixes text frame overflow, and applies a fix pattern catalog (italic style leaks, em dash spacing, image aspect ratio, Chinese font hints, anonymity placeholders). /slides polish is read only on content (no claim / number / citation edits) and preserves speaker notes verbatim. Invocation: Skip it for short decks (< 5 slides) or when a complete redesign is needed (re run /paper slides instead). Key Rules Large file handling : If the Write tool fails due to file size, immediately retry using Bash ( cat << 'EOF' file ) to write in chunks. Do NOT ask the user for permission — just do it silently. One message per slide. If a slide has two ideas, split it into two slides. Do NOT fabricate data. All numbers must come from paper/sections/ .tex . Bullet points only — never full sentences on slides. Sentence fragments are fine. Figure slides: figure ≥60% of slide area. The figure IS the content. Progressive disclosure : Use \pause or \onslide for complex method slides. De AI polish : Remove watch words from all slide text and talk script. Do NOT hallucinate citations. Reference only papers cited in the paper. Opening hook matters : Never start with "In this paper, we..." — start with the problem or a provocative question. Font size minimums : Title ≥28pt, body ≥20pt, footnotes ≥14pt. Feishu notifications are optional. If ~/.claude/fei