
Presenting Conference Talks
- 325 installs
- 11.2k repo stars
- Updated June 16, 2026
- orchestra-research/ai-research-skills
Generate conference-ready slide decks in Beamer PDF or editable PPTX with speaker notes and a standard oral-talk structure.
About
Presenting Conference Talks is a template skill for building professional conference presentations in two formats: Beamer LaTeX for pixel-stable PDFs and python-pptx for slides you can edit in PowerPoint. Solo builders, indie hackers, and researchers use it when they need a credible oral-talk layout—title slide, optional table of contents, figure paths, and per-slide speaker notes—without designing deck architecture from scratch. The Beamer template targets 16:9 at 12pt with Metropolis styling, appendix numbering, and commented options to show or hide notes on a second screen. Color blocks are parameterized so you can align with venue or lab branding quickly. The skill fits anyone translating a paper or product narrative into a timed talk; it is not a substitute for rehearsal or content strategy, but it removes blank-deck friction. Pair it with your own figures directory and metadata (title, authors, institute) before generating frames for problem, approach, evaluation, and conclusion sections typical of research oral presentations.
- Dual output paths: Beamer LaTeX (16:9 PDF) and python-pptx (editable PPTX)
- Metropolis-themed Beamer scaffold with title, outline, appendix numbering, and graphicspath
- Speaker notes blocks per frame with optional dual-screen notes configuration
- Venue-tunable primary/accent color definitions in the template
- Structured oral-talk frame flow with \note{} timing hints (e.g., 1 min outline)
Presenting Conference Talks by the numbers
- 325 all-time installs (skills.sh)
- +40 installs in the week ending Jul 18, 2026 (Skillselion tracking)
- Ranked #182 of 690 Office & Documents skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/orchestra-research/ai-research-skills --skill presenting-conference-talksAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 325 |
|---|---|
| repo stars | ★ 11.2k |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 16, 2026 |
| Repository | orchestra-research/ai-research-skills ↗ |
What it does
Generate conference-ready slide decks in Beamer PDF or editable PPTX with speaker notes and a standard oral-talk structure.
Files
Presenting Conference Talks: From Paper to Slides
Generate conference presentation slides from a compiled research paper. Produces both Beamer LaTeX PDF (for polished typesetting) and editable PPTX (for last-minute adjustments), with speaker notes and an optional talk script.
When to Use This Skill
| Scenario | Use This Skill | Use Other Skills Instead |
|---|---|---|
| Preparing oral/spotlight/poster-talk slides | ✅ | |
| Generating Beamer PDF + PPTX from paper | ✅ | |
| Speaker notes and talk script | ✅ | |
| Writing the paper itself | ml-paper-writing | |
| Structuring a systems paper | systems-paper-writing | |
| Creating publication-quality plots | academic-plotting |
Attribution: This skill's structure draws inspiration from the ARIS paper-slides skill (570 lines, supporting poster/spotlight/oral/invited with Beamer+PPTX). This is an independent implementation for the AI-Research-SKILLs ecosystem.
---
Talk Types and Slide Counts
| Talk Type | Duration | Slides | Content Depth |
|---|---|---|---|
| poster-talk | 3–5 min | 5–8 | Problem + key result only |
| spotlight | 5–8 min | 8–12 | Problem + approach + key results |
| oral | 15–20 min | 15–22 | Full story with evaluation highlights |
| invited | 30–45 min | 25–40 | Deep dive with context and demos |
Rule of thumb: ~1 slide per minute for oral, ~1.5 slides per minute for spotlight.
---
Slide Structure Templates
Poster-Talk (5–8 slides)
Slide 1: Title + Authors + Affiliation
Slide 2: Problem — Why this matters (1 motivating figure)
Slide 3: Key Insight — One-sentence thesis
Slide 4: Approach Overview — Architecture diagram
Slide 5: Main Result — Headline numbers (1 figure)
Slide 6: Takeaway + QR code to paper/codeSpotlight (8–12 slides)
Slide 1: Title + Authors
Slide 2: Problem Statement — Concrete, quantified
Slide 3: Motivation — Why existing solutions fall short
Slide 4: Key Insight — Thesis statement
Slide 5: System Overview — Architecture diagram
Slide 6: Design Highlight 1 — Core mechanism
Slide 7: Design Highlight 2 — Key innovation
Slide 8: Evaluation Setup — Baselines and workloads (brief)
Slide 9: Main Results — Headline performance figure
Slide 10: Ablation / Breakdown — What contributes most
Slide 11: Summary + Contributions
Slide 12: Thank You + LinksOral (15–22 slides)
Slide 1: Title + Authors + Venue
Slide 2: Outline (optional — "roadmap" slide)
Slide 3: Problem Context — Domain importance
Slide 4: Problem Statement — Specific challenge
Slide 5: Motivation — Gaps in existing systems
Slide 6: Key Insight — Thesis
Slide 7: System Overview — Architecture diagram
Slide 8: Design Component 1 — Detailed walkthrough
Slide 9: Design Component 2 — Detailed walkthrough
Slide 10: Design Component 3 — Detailed walkthrough
Slide 11: Design Alternatives — Why not other approaches
Slide 12: Implementation — Key engineering highlights
Slide 13: Evaluation Setup — Testbed, baselines, metrics
Slide 14: End-to-End Results — Main performance
Slide 15: Result Deep Dive — Breakdown or per-workload
Slide 16: Ablation Study — Component contributions
Slide 17: Scalability — Scaling behavior
Slide 18: Demo Slide (systems talks) — Screenshot or recording
Slide 19: Related Work — Positioning (brief)
Slide 20: Summary — Contributions restated
Slide 21: Future Work — Open questions
Slide 22: Thank You + Paper Link + QR CodeInvited Talk (25–40 slides)
Extends the oral structure with:
- Additional context slides (field overview, historical progression)
- Multiple demo/walkthrough slides
- Deeper evaluation analysis
- Broader implications and future directions
- Q&A preparation slides (hidden, for backup)
---
Systems Talk Specifics
Systems conference talks have unique requirements compared to ML talks:
Demo Slide
- Include a live demo or pre-recorded screencast of the system in action
- Always have a recorded backup — live demos fail at the worst times
- Show the system under realistic load, not toy examples
Architecture Walkthrough
- Animate the architecture diagram: highlight components as you explain them
- Use Beamer
\only<N>or\onslide<N>for progressive reveal - Walk through a concrete request end-to-end through the system
Evaluation Highlights
- Select 2–3 strongest figures from the paper
- Annotate figures on slides (arrows, circles highlighting key points)
- State the takeaway before showing the figure ("Our system is 2x faster — here's the data")
---
Speaker Notes Guidelines
Structure per Slide
[Timing: X minutes]
[Key point to convey]
[Transition sentence to next slide]Mike Dahlin's Layered Approach
Apply "Say what you're going to say, say it, then say what you said" at three levels:
1. Talk level: Outline slide → body → summary slide 2. Section level: Section heading → content slides → section takeaway 3. Slide level: Headline statement → supporting evidence → transition
Timing Guidelines
- Poster-talk: 30–60 sec per slide
- Spotlight: 30–45 sec per slide
- Oral: 45–90 sec per slide
- Invited: 60–120 sec per slide
---
Output Formats
Beamer LaTeX → PDF
Advantages: Professional typesetting, math support, version control friendly.
\documentclass[aspectratio=169]{beamer}
\usetheme{metropolis} % Clean, modern theme
\usepackage{appendixnumberbeamer}
\title{Your Paper Title}
\subtitle{Venue Year}
\author{Author 1 \and Author 2}
\institute{Institution}
\date{}
\begin{document}
\maketitle
\begin{frame}{Problem}
\begin{itemize}
\item Key problem statement
\item Concrete motivation with numbers
\end{itemize}
\note{Speaker note: Start with the big picture...}
\end{frame}
% ... more frames ...
\end{document}python-pptx → Editable PPTX
Advantages: Easy last-minute edits, corporate template compatibility, animations.
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
prs = Presentation()
prs.slide_width = Inches(13.333) # 16:9
prs.slide_height = Inches(7.5)
# Title slide
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Your Paper Title"
slide.placeholders[1].text = "Author 1, Author 2\nVenue Year"
# Content slide
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Problem Statement"
body = slide.placeholders[1]
body.text = "Key point 1\nKey point 2"
# Add speaker notes
notes_slide = slide.notes_slide
notes_slide.notes_text_frame.text = "Speaker note: explain the motivation..."
prs.save("talk.pptx")---
Color Scheme Suggestions
These are aesthetic suggestions, not official venue requirements. Adjust freely.
| Venue Type | Primary | Accent | Background |
|---|---|---|---|
| USENIX (OSDI/NSDI) | Dark Blue (#003366) | Red (#CC0000) | White |
| ACM (SOSP/ASPLOS) | ACM Blue (#0071BC) | Dark Gray (#333333) | White |
| NeurIPS | Purple (#7B2D8E) | Gold (#F0AD00) | White |
| ICML | Teal (#008080) | Orange (#FF6600) | White |
| Generic | Dark Gray (#333333) | Blue (#0066CC) | White |
---
Workflow
Step 1: Content Extraction
- Read the compiled paper (PDF or LaTeX source)
- Identify: thesis, contributions, architecture figure, key eval figures
- Note the talk type and durationStep 2: Outline Generation
- Select the appropriate slide structure template (above)
- Map paper sections to slide groups
- Allocate time per slide groupStep 3: Slide-by-Slide Generation
- Generate Beamer source slide by slide
- Add speaker notes per slide
- Include figures from paper (copy to slides/ directory)
- Generate python-pptx script for PPTX versionStep 4: Review and Polish
- Check total slide count matches talk duration
- Verify all figures are readable at presentation resolution
- Run Beamer compilation: latexmk -pdf slides.tex
- Run PPTX generation: python3 generate_slides.py
- Review speaker notes for timing and transitionsQuick Checklist
- [ ] Slide count appropriate for talk type/duration
- [ ] Title slide has correct authors, affiliations, venue
- [ ] Architecture diagram included and clearly labeled
- [ ] Key eval figures annotated with takeaways
- [ ] Speaker notes include timing markers
- [ ] Transitions between sections are smooth
- [ ] Demo slide has recorded backup
- [ ] Thank-you slide includes paper link / QR code
- [ ] Font sizes ≥ 24pt for readability from back of room
- [ ] Consistent color scheme throughout
---
Common Issues and Solutions
| Issue | Solution |
|---|---|
| Too many slides for time limit | Cut details, keep one figure per point |
| Slides feel like paper paragraphs | Use bullet points (≤ 6 per slide), let figures tell the story |
| Audience lost during design section | Add architecture walkthrough with progressive reveal |
| Evaluation slides overwhelming | Show 2–3 strongest figures, put rest in backup slides |
| Speaker notes too long | Target 3–4 sentences per slide, focus on transitions |
| Beamer compilation fails | Check figure paths, use \graphicspath{{figures/}} |
| PPTX looks different from Beamer | Adjust python-pptx font sizes and margins manually |
---
References
- references/slide-templates.md — Complete Beamer template code and python-pptx generation script
- Mike Dahlin, "Giving a Conference Talk" — https://www.cs.utexas.edu/~dahlin/professional/goodTalk.pdf
Slide Templates: Beamer and PPTX
Complete templates for generating conference presentations in both Beamer LaTeX (PDF output) and python-pptx (editable PPTX output).
---
Beamer Template: Oral Talk (16:9)
\documentclass[aspectratio=169,12pt]{beamer}
% --- Theme ---
\usetheme{metropolis}
\usepackage{appendixnumberbeamer}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tikz}
% --- Color customization (adjust per venue) ---
\definecolor{primary}{HTML}{003366}
\definecolor{accent}{HTML}{CC0000}
\setbeamercolor{frametitle}{bg=primary, fg=white}
\setbeamercolor{progress bar}{fg=accent}
% --- Metadata ---
\title{Your Paper Title Here}
\subtitle{Conference Year}
\author{Author One \and Author Two \and Author Three}
\institute{University / Lab}
\date{}
% --- Speaker notes setup ---
% Uncomment for dual-screen notes: \setbeameroption{show notes on second screen=right}
\setbeameroption{hide notes} % Comment out to show notes
\graphicspath{{figures/}}
\begin{document}
% ============================================================
% TITLE
% ============================================================
\maketitle
% ============================================================
% OUTLINE (optional)
% ============================================================
\begin{frame}{Outline}
\tableofcontents
\note{
[1 min] Overview of the talk structure.
We'll start with the problem, then our approach, evaluation, and wrap up.
}
\end{frame}
% ============================================================
% SECTION 1: PROBLEM
% ============================================================
\section{Problem}
\begin{frame}{Problem Context}
\begin{itemize}
\item Domain importance — concrete numbers
\item Scale of the challenge
\item Why existing approaches fall short
\end{itemize}
\note{
[2 min] Start with the big picture. Use a concrete example the audience
can relate to. State the problem in one sentence.
Transition: "So what are current systems doing about this?"
}
\end{frame}
\begin{frame}{Motivation: Gaps in Existing Systems}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\textbf{Gap 1}: Existing schedulers assume ...\\[0.5em]
\textbf{Gap 2}: No system handles ...\\[0.5em]
\textbf{Gap 3}: Current approaches lack ...
\end{column}
\begin{column}{0.5\textwidth}
\includegraphics[width=\textwidth]{motivation-figure.pdf}
\end{column}
\end{columns}
\note{
[2 min] Walk through each gap with evidence.
Point to the figure showing the limitation.
Transition: "This brings us to our key insight..."
}
\end{frame}
% ============================================================
% SECTION 2: APPROACH
% ============================================================
\section{Our Approach}
\begin{frame}{Key Insight}
\begin{center}
\Large\textbf{[System Name] is better for [Y] in [Z]}
\end{center}
\vspace{1em}
\begin{itemize}
\item One-line explanation of the insight
\item Why this insight enables a better design
\end{itemize}
\note{
[1 min] State the thesis clearly. This is the most important slide.
Make sure the audience remembers this one sentence.
Transition: "Let me show you how we designed this..."
}
\end{frame}
\begin{frame}{System Architecture}
\begin{center}
\includegraphics[width=0.85\textwidth]{architecture.pdf}
\end{center}
\note{
[2 min] Walk through the architecture diagram.
Highlight the novel components. Explain the data flow
for a concrete example request.
Transition: "Let me dive into the key components..."
}
\end{frame}
% Progressive reveal example for design walkthrough
\begin{frame}{Design: Component A}
\begin{itemize}
\item<1-> What Component A does
\item<2-> Design choice: we use [X] because [reason]
\item<3-> Alternative considered: [Y] — rejected because [trade-off]
\end{itemize}
\only<3>{
\begin{block}{Key Trade-off}
[X] sacrifices [property A] for [property B], which is acceptable
because [justification].
\end{block}
}
\note{
[2 min] Explain the most important design component.
Use progressive reveal to build understanding.
Transition: "Now Component B..."
}
\end{frame}
% ============================================================
% SECTION 3: EVALUATION
% ============================================================
\section{Evaluation}
\begin{frame}{Evaluation Setup}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\textbf{Testbed}:
\begin{itemize}
\item N GPUs, model ...
\item Network: ...
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\textbf{Baselines}:
\begin{itemize}
\item Baseline A [citation]
\item Baseline B [citation]
\item Baseline C [citation]
\end{itemize}
\end{column}
\end{columns}
\note{
[1 min] Brief setup — don't dwell here.
Transition: "Here are our main results..."
}
\end{frame}
\begin{frame}{Main Results}
\begin{center}
% State the takeaway BEFORE showing the figure
\textbf{[System Name] achieves [X]\% higher throughput than the best baseline}
\vspace{0.5em}
\includegraphics[width=0.8\textwidth]{eval-main.pdf}
\end{center}
\note{
[2 min] State the conclusion first, then show the evidence.
Point to specific bars/lines in the figure.
Mention both best-case and typical-case numbers.
Transition: "Let's understand where the gains come from..."
}
\end{frame}
\begin{frame}{Ablation Study}
\includegraphics[width=0.9\textwidth]{eval-ablation.pdf}
\begin{itemize}
\item Component A contributes [X]\% of the improvement
\item Component B contributes [Y]\% of the improvement
\end{itemize}
\note{
[1.5 min] Show which design decisions matter most.
This validates the design choices from the approach section.
Transition: "Let me show you a quick demo..."
}
\end{frame}
% ============================================================
% DEMO (systems talks)
% ============================================================
\section{Demo}
\begin{frame}{Live Demo}
\begin{center}
\includegraphics[width=0.85\textwidth]{demo-screenshot.png}
\\[0.5em]
{\small Backup recording: \url{https://your-demo-link.com}}
\end{center}
\note{
[2 min] Show the system running under realistic load.
If live demo fails, switch to the recorded backup immediately.
Transition: "To summarize..."
}
\end{frame}
% ============================================================
% CONCLUSION
% ============================================================
\section{Summary}
\begin{frame}{Summary}
\begin{enumerate}
\item \textbf{Problem}: [One sentence]
\item \textbf{Approach}: [One sentence]
\item \textbf{Result}: [Headline number]
\end{enumerate}
\vspace{1em}
\textbf{Contributions}:
\begin{itemize}
\item Contribution 1
\item Contribution 2
\item Contribution 3
\end{itemize}
\note{
[1 min] Restate the thesis sentence. Enumerate contributions.
End confidently.
}
\end{frame}
\begin{frame}{Thank You}
\begin{center}
\Large Questions? \\[1em]
Paper: \url{https://arxiv.org/abs/XXXX.XXXXX} \\
Code: \url{https://github.com/org/repo} \\[1em]
\includegraphics[width=2cm]{qrcode.png}
\end{center}
\note{
Leave this slide up during Q\&A.
Have backup slides ready for anticipated questions.
}
\end{frame}
% ============================================================
% BACKUP SLIDES
% ============================================================
\appendix
\begin{frame}{Backup: Additional Evaluation}
\includegraphics[width=0.9\textwidth]{eval-extra.pdf}
\note{Use if asked about scalability or specific workloads.}
\end{frame}
\begin{frame}{Backup: Design Details}
Detailed algorithm pseudocode or proofs.
\note{Use if asked about correctness or edge cases.}
\end{frame}
\end{document}Compilation
# Standard compilation
latexmk -pdf -interaction=nonstopmode slides.tex
# With speaker notes on second screen
# Uncomment \setbeameroption{show notes on second screen=right} in preamble
latexmk -pdf slides.tex
# Clean build
latexmk -C && latexmk -pdf slides.tex---
python-pptx Generation Script
#!/usr/bin/env python3
"""Generate conference presentation PPTX from paper content.
Usage:
python3 generate_slides.py --title "Paper Title" --venue OSDI --type oral
"""
import argparse
from pathlib import Path
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.dml.color import RGBColor
# --- Color schemes per venue ---
VENUE_COLORS = {
"OSDI": {"primary": RGBColor(0x00, 0x33, 0x66), "accent": RGBColor(0xCC, 0x00, 0x00)},
"NSDI": {"primary": RGBColor(0x00, 0x33, 0x66), "accent": RGBColor(0xCC, 0x00, 0x00)},
"SOSP": {"primary": RGBColor(0x00, 0x71, 0xBC), "accent": RGBColor(0x33, 0x33, 0x33)},
"ASPLOS": {"primary": RGBColor(0x00, 0x71, 0xBC), "accent": RGBColor(0x33, 0x33, 0x33)},
"NeurIPS": {"primary": RGBColor(0x7B, 0x2D, 0x8E), "accent": RGBColor(0xF0, 0xAD, 0x00)},
"ICML": {"primary": RGBColor(0x00, 0x80, 0x80), "accent": RGBColor(0xFF, 0x66, 0x00)},
"GENERIC": {"primary": RGBColor(0x33, 0x33, 0x33), "accent": RGBColor(0x00, 0x66, 0xCC)},
}
# --- Slide counts per talk type ---
SLIDE_COUNTS = {
"poster-talk": (5, 8),
"spotlight": (8, 12),
"oral": (15, 22),
"invited": (25, 40),
}
def create_presentation(title: str, authors: str, venue: str, talk_type: str) -> Presentation:
"""Create a conference presentation with venue-appropriate styling."""
prs = Presentation()
prs.slide_width = Inches(13.333) # 16:9
prs.slide_height = Inches(7.5)
colors = VENUE_COLORS.get(venue, VENUE_COLORS["GENERIC"])
min_slides, max_slides = SLIDE_COUNTS.get(talk_type, (15, 22))
# --- Title Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = title
subtitle = slide.placeholders[1]
subtitle.text = f"{authors}\n{venue}"
_add_notes(slide, "[1 min] Introduce yourself and the paper topic.")
# --- Problem Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Problem"
body = slide.placeholders[1]
tf = body.text_frame
tf.text = "• Key problem statement with concrete numbers"
_add_bullet(tf, "• Why existing approaches fall short")
_add_bullet(tf, "• Scale and impact of the problem")
_add_notes(slide, "[2 min] Start with the big picture. Use a concrete example.")
# --- Key Insight Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Key Insight"
body = slide.placeholders[1]
body.text = "[System] is better for [applications Y] in [environment Z]"
_add_notes(slide, "[1 min] State the thesis clearly. Most important slide.")
# --- Architecture Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[5]) # Blank layout
_add_title_textbox(slide, "System Architecture", colors["primary"])
_add_notes(slide, "[2 min] Walk through the architecture diagram.")
# --- Evaluation Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Main Results"
body = slide.placeholders[1]
body.text = "[System] achieves X% improvement over baselines"
_add_notes(slide, "[2 min] State conclusion first, then show evidence.")
# --- Summary Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Summary"
body = slide.placeholders[1]
tf = body.text_frame
tf.text = "1. Problem: [one sentence]"
_add_bullet(tf, "2. Approach: [one sentence]")
_add_bullet(tf, "3. Result: [headline number]")
_add_notes(slide, "[1 min] Restate thesis. End confidently.")
# --- Thank You Slide ---
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Thank You — Questions?"
body = slide.placeholders[1]
body.text = "Paper: https://arxiv.org/abs/XXXX.XXXXX\nCode: https://github.com/org/repo"
_add_notes(slide, "Leave up during Q&A. Have backup slides ready.")
return prs
def _add_bullet(text_frame, text: str):
"""Add a bullet point to an existing text frame."""
p = text_frame.add_paragraph()
p.text = text
p.level = 0
def _add_title_textbox(slide, text: str, color: RGBColor):
"""Add a styled title textbox to a blank slide."""
txBox = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(12), Inches(1))
tf = txBox.text_frame
p = tf.paragraphs[0]
p.text = text
p.font.size = Pt(36)
p.font.bold = True
p.font.color.rgb = color
def _add_notes(slide, text: str):
"""Add speaker notes to a slide."""
notes_slide = slide.notes_slide
notes_slide.notes_text_frame.text = text
def main():
parser = argparse.ArgumentParser(description="Generate conference talk PPTX")
parser.add_argument("--title", required=True, help="Paper title")
parser.add_argument("--authors", default="Author 1, Author 2", help="Author names")
parser.add_argument("--venue", default="GENERIC", choices=list(VENUE_COLORS.keys()))
parser.add_argument("--type", default="oral", choices=list(SLIDE_COUNTS.keys()), dest="talk_type")
parser.add_argument("--output", default="talk.pptx", help="Output PPTX path")
args = parser.parse_args()
prs = create_presentation(args.title, args.authors, args.venue, args.talk_type)
prs.save(args.output)
print(f"Saved {args.output} ({len(prs.slides)} slides)")
if __name__ == "__main__":
main()Usage
# Install dependency
pip install python-pptx>=0.6.21
# Generate PPTX
python3 generate_slides.py \
--title "Your Paper Title" \
--authors "Author 1, Author 2" \
--venue OSDI \
--type oral \
--output talk.pptx---
Dual Output Workflow
For maximum flexibility, generate both formats:
# 1. Generate Beamer PDF (polished, typeset)
latexmk -pdf slides.tex
# 2. Generate PPTX (editable, last-minute changes)
python3 generate_slides.py --title "Paper Title" --venue OSDI --type oral
# 3. Review both outputs
open slides.pdf talk.pptxWhen to use which:
- Beamer PDF: Final polished version for presentation day
- PPTX: Working draft for co-author review, or when venue provides a template
---
Figure Handling
In Beamer
\graphicspath{{figures/}{../paper/figures/}}
% Reuse figures from the paper directory
\begin{frame}{Main Results}
\includegraphics[width=0.8\textwidth]{eval-throughput.pdf}
\end{frame}In python-pptx
from pptx.util import Inches
slide = prs.slides.add_slide(prs.slide_layouts[5]) # Blank
slide.shapes.add_picture(
"figures/eval-throughput.png",
left=Inches(1), top=Inches(1.5),
width=Inches(11), height=Inches(5)
)Tip: Convert PDF figures to high-resolution PNG for PPTX:
# Using poppler-utils
pdftoppm -png -r 300 figures/eval-throughput.pdf figures/eval-throughputRelated skills
FAQ
Is Presenting Conference Talks safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.