This guide provides comprehensive instructions for creating professional scientific presentations using PowerPoint, with emphasis on integration with the pptx skill for programmatic creation and best practices for scientific content.
CRITICAL: Avoid dry, text-heavy presentations. Scientific slides should be: - Visually engaging: High-quality images, figures, diagrams on EVERY slide - Research-backed: Citations from research-lookup for credibility (8-15 papers minimum) - Modern design: Contemporary color palettes, not default themes - Minimal text: 3-4 bullets with 4-6 words each, visuals do the talking - Professional polish: Consistent but varied layouts, generous white space
Anti-Pattern Warning: All-bullet-point slides with black text on white background = instant boredom and forgotten science.
For complete technical documentation on PowerPoint creation, refer to:
- Main documentation: the pptx skill's SKILL.md, which covers creation,
template editing, and the OOXML round-trip in one place
Best for: Creating presentations from scratch with custom designs and data visualizations.
Workflow:
1. Read the pptx skill's SKILL.md completely — its "Creating with pptxgenjs" section lists the footguns
2. Set pres.layout before adding slides (LAYOUT_16x9 is 10" × 5.625"; coordinates are inches)
3. Create a JavaScript file that builds the deck with the PptxGenJS API
4. Add charts and tables using the PptxGenJS API
5. Generate thumbnails and validate visually
6. Iterate based on visual inspection
Example Structure:
const pptx = new PptxGenJS();
// Add title slide
const slide1 = pptx.addSlide();
slide1.addText("Your Title", {
x: 1, y: 2, w: 8, h: 1,
fontSize: 44, bold: true, align: "center"
});
// Add content slide with figure
const slide2 = pptx.addSlide();
slide2.addText("Results", { x: 0.5, y: 0.5, fontSize: 32 });
slide2.addImage({ path: "figure.png", x: 1, y: 1.5, w: 8, h: 4 });
pptx.writeFile({ fileName: "presentation.pptx" });
Best for: Using existing PowerPoint templates or editing existing presentations.
Workflow (all scripts live in the pptx skill; run them from the repository root):
1. Start with template.pptx
2. Render a thumbnail grid to see which layouts the template offers
3. Read the existing text with markitdown to plan replacements
4. Unzip the deck, edit ppt/slides/slideN.xml directly, and zip it back up
5. Duplicate slides with add_slide.py, then drop orphaned parts with clean.py
6. Validate the result and re-render thumbnails
Key Scripts (under skills/pptx/scripts/):
- thumbnail.py: Labeled grid of every slide — for picking template layouts and visual validation
- add_slide.py: Duplicate a slide or layout with the package bookkeeping handled
- clean.py: Delete slides, media, and rels that are no longer referenced
- office/validate.py: Schema, relationship, and content-type checks; pass --original for template-derived decks
- office/soffice.py: LibreOffice wrapper for converting to PDF
Text extraction uses markitdown rather than a dedicated script:
markitdown template.pptx
Slide Master Setup: - Create consistent master slides - Define 4-5 layout types (title, content, figure, two-column, closing) - Set default fonts, colors, and spacing - Include placeholders for logos and footers
Standard Layouts:
Title Slide:
┌─────────────────────────┐
│ │
│ Presentation Title │
│ Your Name │
│ Institution │
│ Date / Conference │
│ │
└─────────────────────────┘
Content Slide:
┌─────────────────────────┐
│ Slide Title │
├─────────────────────────┤
│ • Bullet point 1 │
│ • Bullet point 2 │
│ • Bullet point 3 │
│ │
│ [Optional figure] │
└─────────────────────────┘
Two-Column Slide:
┌─────────────────────────┐
│ Slide Title │
├───────────┬─────────────┤
│ │ │
│ Text │ Figure │
│ Content │ or │
│ │ Data │
└───────────┴─────────────┘
Full-Figure Slide:
┌─────────────────────────┐
│ Figure Title (small) │
├─────────────────────────┤
│ │
│ Large Figure or │
│ Visualization │
│ │
└─────────────────────────┘
Font Selection: - Primary: Sans-serif (Arial, Calibri, Helvetica) - Alternative: Verdana, Tahoma, Trebuchet MS - Avoid: Serif fonts (harder to read on screens), decorative fonts
Font Sizes: - Title slide title: 44-54pt - Slide titles: 32-40pt - Body text: 24-28pt (minimum 18pt) - Captions: 16-20pt - Footer: 10-12pt
Text Formatting: - Bold: For emphasis (use sparingly) - Color: For highlighting (consistent meaning) - Size: For hierarchy - Alignment: Left for body, center for titles
The 6×6 Rule: - Maximum 6 bullet points per slide - Maximum 6 words per bullet - Better: 3-4 bullets with 4-8 words each
Selecting Colors:
Consider your subject matter and audience: - Academic/Professional: Navy blue, gray, white with minimal accent - Biomedical: Blue and green tones (avoid red-green combinations) - Technology: Modern colors (teal, orange, purple) - Clinical: Conservative (blue, gray, subdued greens)
Example Palettes:
Classic Scientific: - Background: White (#FFFFFF) - Title: Navy (#1C3D5A) - Text: Dark gray (#2D3748) - Accent: Orange (#E67E22)
Modern Research: - Background: Light gray (#F7FAFC) - Title: Teal (#0A9396) - Text: Charcoal (#2C2C2C) - Accent: Coral (#EE6C4D)
High Contrast (for large venues): - Background: White (#FFFFFF) - Title: Black (#000000) - Text: Dark gray (#1A1A1A) - Accent: Bright blue (#0066CC)
Accessibility Guidelines: - Minimum contrast ratio: 4.5:1 (body text) - Preferred contrast ratio: 7:1 (AAA standard) - Avoid red-green combinations (8% of men are color-blind) - Use patterns or shapes in addition to color for data
Figures and Images: - Resolution: Minimum 300 DPI for print, 150 DPI for projection - Format: PNG for screenshots, PDF/SVG for vector graphics - Size: Large enough to be readable from back of room - Placement: Center or use two-column layout
Data Visualizations: - Simplify from journal figures (fewer panels, larger text) - Font sizes: 18-24pt for axis labels - Line widths: 2-4pt thickness - Colors: High contrast, color-blind safe - Labels: Direct labeling preferred over legends
Icons and Shapes: - Use for visual interest and organization - Consistent style (all outline or all filled) - Size appropriately (not too large or small) - Limit colors (match theme)
When to Use: - ✅ Progressive disclosure of bullet points - ✅ Building complex figures incrementally - ✅ Emphasizing key findings - ✅ Showing process steps
When to Avoid: - ❌ Decoration or entertainment - ❌ Every single slide - ❌ Distracting effects (fly in, bounce, spin)
Recommended Animations: - Appear: Clean, professional - Fade: Subtle transition - Wipe: Directional reveal - Duration: Fast (0.2-0.3 seconds) - Trigger: On click (not automatic)
Slide Transitions: - Use consistent transition throughout (or none) - Recommended: None, Fade, or Push - Avoid: 3D rotations, complex effects - Duration: Very fast (0.3-0.5 seconds)
Step 0: Choose Modern Color Palette Based on Topic
CRITICAL: Select colors that reflect your subject matter, not generic defaults.
Topic-Based Palette Examples: - Biotechnology/Life Sciences: Teal (#0A9396), Coral (#EE6C4D), Cream (#F4F1DE) - Neuroscience/Brain Research: Deep Purple (#722880), Magenta (#D72D51), White - Machine Learning/AI: Bold Red (#E74C3C), Orange (#F39C12), Dark Gray (#2C2C2C) - Physics/Engineering: Navy (#1C3D5A), Orange (#E67E22), Light Gray (#F7FAFC) - Medicine/Healthcare: Teal (#5EA8A7), Coral (#FE4447), White (#FFFFFF) - Environmental Science: Sage (#87A96B), Terracotta (#E07A5F), Cream (#F4F1DE)
See full palette options in pptx skill SKILL.md (lines 76-94).
Step 1: Plan Design System (With Modern Palette)
// Define design constants with MODERN colors (not defaults)
const DESIGN = {
colors: {
primary: "0A9396", // Teal (modern, engaging)
accent: "EE6C4D", // Coral (attention-grabbing)
text: "2C2C2C", // Charcoal (readable)
background: "FFFFFF" // White (clean)
},
fonts: {
title: { size: 40, bold: true, face: "Arial" },
heading: { size: 28, bold: true, face: "Arial" },
body: { size: 24, face: "Arial" },
caption: { size: 16, face: "Arial" }
},
layout: {
margin: 0.5,
titleY: 0.5,
contentY: 1.5
}
};
Step 2: Create Reusable Functions
function addTitleSlide(pptx, title, subtitle, author) {
const slide = pptx.addSlide();
slide.background = { color: DESIGN.colors.primary };
slide.addText(title, {
x: 1, y: 2, w: 8, h: 1,
fontSize: 44, bold: true, color: "FFFFFF",
align: "center"
});
slide.addText(subtitle, {
x: 1, y: 3.2, w: 8, h: 0.5,
fontSize: 24, color: "FFFFFF",
align: "center"
});
slide.addText(author, {
x: 1, y: 4, w: 8, h: 0.4,
fontSize: 18, color: "FFFFFF",
align: "center"
});
return slide;
}
function addContentSlide(pptx, title, bullets) {
const slide = pptx.addSlide();
slide.addText(title, {
x: DESIGN.layout.margin,
y: DESIGN.layout.titleY,
w: 9,
h: 0.5,
...DESIGN.fonts.heading,
color: DESIGN.colors.primary
});
slide.addText(bullets, {
x: DESIGN.layout.margin,
y: DESIGN.layout.contentY,
w: 9,
h: 3,
...DESIGN.fonts.body,
bullet: true
});
return slide;
}
Step 3: Build Presentation (Visual-First Approach)
const pptx = new PptxGenJS();
pptx.layout = "LAYOUT_16x9";
// Title slide with background image or color block
const titleSlide = pptx.addSlide();
titleSlide.background = { color: DESIGN.colors.primary }; // Bold color background
addTitleSlide(
pptx,
"Research Title",
"Subtitle or Conference Name",
"Your Name • Institution • Date"
);
// Introduction with image/icon
const introSlide = pptx.addSlide();
introSlide.addImage({
path: "concept_image.png", // Visual representation of concept
x: 5, y: 1.5, w: 4, h: 3
});
introSlide.addText("Background", { x: 0.5, y: 0.5, fontSize: 36, bold: true });
introSlide.addText([
"Key context point 1 (AuthorA, 2023)",
"Key context point 2 (AuthorB, 2022)",
"Research gap identified (AuthorC, 2021)"
], {
x: 0.5, y: 1.5, w: 4, h: 2,
fontSize: 24, bullet: true
});
// Results slide - FIGURE DOMINATES
const resultsSlide = pptx.addSlide();
resultsSlide.addText("Main Finding", { x: 0.5, y: 0.5, fontSize: 32, bold: true });
resultsSlide.addImage({
path: "results_figure.png", // Large, clear figure
x: 0.5, y: 1.5, w: 9, h: 4 // Nearly full slide
});
// Minimal text annotation only
resultsSlide.addText("34% improvement (p < 0.001)", {
x: 7, y: 1, fontSize: 20, color: DESIGN.colors.accent, bold: true
});
// Save
pptx.writeFile({ fileName: "presentation.pptx" });
Key Changes from Dry Presentations: - Title slide uses bold background color (not plain white) - Introduction includes relevant image (not just bullets) - Results slide is figure-dominated (not text-dominated) - Citations included in bullets for research context - Text is minimal and supporting, visuals are primary
Equations (as images):
// Render equation as PNG first (using LaTeX or online tool)
// Then add to slide
slide.addImage({
path: "equation.png",
x: 2, y: 3, w: 6, h: 1
});
Tables:
slide.addTable([
[
{ text: "Method", options: { bold: true } },
{ text: "Accuracy", options: { bold: true } },
{ text: "Time (s)", options: { bold: true } }
],
["Method A", "0.85", "10"],
["Method B", "0.92", "25"],
["Method C", "0.88", "15"]
], {
x: 2, y: 2, w: 6,
fontSize: 20,
border: { pt: 1, color: "888888" },
fill: { color: "F5F5F5" }
});
Charts:
// Bar chart
slide.addChart(pptx.ChartType.bar, [
{
name: "Control",
labels: ["Metric 1", "Metric 2", "Metric 3"],
values: [45, 67, 82]
},
{
name: "Treatment",
labels: ["Metric 1", "Metric 2", "Metric 3"],
values: [52, 78, 91]
}
], {
x: 1, y: 1.5, w: 8, h: 4,
chartColors: [DESIGN.colors.primary, DESIGN.colors.accent],
showTitle: false,
showLegend: true,
fontSize: 18
});
After creating presentation:
# Create thumbnail grid for quick review
python skills/pptx/scripts/thumbnail.py presentation.pptx review/thumbnails --cols 4
# Or a single-column strip for per-slide detail
python skills/pptx/scripts/thumbnail.py presentation.pptx review/slide --cols 1
For each slide, check: - [ ] Text readable (not cut off or too small) - [ ] No element overlap - [ ] Consistent colors and fonts - [ ] Adequate white space - [ ] Figures clear and properly sized - [ ] Alignment correct
Text Overflow: - Reduce font size or text length - Increase text box size - Split into multiple slides
Element Overlap: - Use two-column layout - Reduce element sizes - Adjust positioning
Poor Contrast: - Choose higher contrast colors - Use dark text on light background - Test with contrast checker
If you have an existing template:
markitdown template.pptx > inventory.md
python skills/pptx/scripts/thumbnail.py template.pptx template_review
Analyze layouts and document which slides to use
Duplicate the layouts you need, then drop what you don't:
python skills/pptx/scripts/add_slide.py template.pptx slide2.xml -o working.pptx
python skills/pptx/scripts/clean.py unpacked/
ppt/slides/slideN.xml in the unzipped deck, then
zip it back up and check the result:python skills/pptx/scripts/office/validate.py output.pptx --original template.pptx
Color Contrast: - Use WebAIM contrast checker - Minimum 4.5:1 for normal text - Preferred 7:1 for optimal readability
Color Blindness: - Test with Coblis simulator - Use patterns/shapes with colors - Avoid red-green combinations
Readability: - Sans-serif fonts only - Minimum 18pt, prefer 24pt+ - Clear visual hierarchy - Adequate spacing
With Scientific Writing: - Convert paper content to slides - Simplify dense text - Extract key findings - Create visual abstracts
With Data Visualization: - Simplify journal figures - Recreate with larger labels - Use progressive disclosure - Emphasize key results
With Research Lookup: - Find relevant papers - Extract key citations - Build background context - Support claims with evidence
PowerPoint Tutorials: - Microsoft PowerPoint documentation - PowerPoint design templates - Scientific presentation examples
Design Tools: - Color palette generators (Coolors.co) - Contrast checkers (WebAIM) - Icon libraries (Noun Project) - Image editing (PowerPoint built-in, external tools)
PPTX Skill Documentation:
- skills/pptx/SKILL.md: Main documentation — creation, template editing, and OOXML
- skills/pptx/scripts/: Utility scripts
| Element | Minimum | Recommended |
|---|---|---|
| Title slide | 40pt | 44-54pt |
| Slide title | 28pt | 32-40pt |
| Body text | 18pt | 24-28pt |
| Caption | 14pt | 16-20pt |
| Footer | 10pt | 10-12pt |
Problem: Text appears cut off - Solution: Increase text box size or reduce font size
Problem: Figures are blurry - Solution: Use higher resolution images (300 DPI)
Problem: Colors look different when projected - Solution: Test with projector beforehand, use high contrast
Problem: File size too large - Solution: Compress images, reduce image resolution
Problem: Animations not working - Solution: Check PowerPoint version compatibility
Effective PowerPoint presentations for science require: 1. Clear, simple design 2. Readable text (24pt+ body) 3. High-quality figures 4. Consistent formatting 5. Visual validation 6. Accessibility considerations
Use the pptx skill for programmatic creation and the visual review workflow to ensure professional quality before presenting.