Skip to content
cccskills
FreePublished on GitHub

ppt-generation

Generate PPTX presentations from slide plan + content.

The English summary is being prepared. Showing the original description.

Works withPowerPoint
See how to install

Files included (1)

  • SKILL.md5.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

PPT Generation

Overview

Generate professional PowerPoint presentations. Plan the structure with a consistent visual style, generate slide content, and compose into a PPTX file.

Poirot note: The original deer-flow skill uses AI image-generation per slide. Poirot may not have image-generation available. This version generates text-based slides with python-pptx. Install: pip install python-pptx.

When to Use

  • User requests to generate, create, or make presentations (PPT/PPTX)
  • User wants slides for a topic with structured content
  • User needs a visual presentation from research findings

Presentation Styles

StyleDescriptionBest For
dark-premiumBlack bg, luminous accents, luxury aestheticExecutive presentations
gradient-modernBold mesh gradients, contemporary typographyStartups, brand launches
minimal-swissGrid-based, bold negative space, timelessConsulting, architecture
keynoteApple-inspired, bold typography, dramatic imageryKeynotes, product reveals
editorialMagazine-quality layouts, sophisticated typographyAnnual reports, thought leadership

Workflow

Step 1: Understand Requirements

  • Topic/subject
  • Number of slides (default: 5-10)
  • Style: dark-premium / gradient-modern / minimal-swiss / keynote / editorial
  • Aspect ratio: 16:9 (standard) or 4:3
  • Content outline: key points per slide

Step 2: Research (if needed)

Use deep-research skill to gather content for the presentation.

Step 3: Create Presentation Plan

{
  "title": "Presentation Title",
  "style": "dark-premium",
  "slides": [
    {"number": 1, "type": "title", "title": "...", "subtitle": "..."},
    {"number": 2, "type": "content", "title": "...", "bullets": ["...", "..."]},
    {"number": 3, "type": "chart", "title": "...", "data": {...}},
    {"number": 4, "type": "section", "title": "..."},
    {"number": 5, "type": "content", "title": "...", "bullets": ["...", "..."]},
    {"number": 6, "type": "closing", "title": "Thank You", "subtitle": "..."}
  ]
}

Step 4: Generate PPTX

python3 -c "
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN

prs = Presentation()
prs.slide_width = Inches(13.333)  # 16:9
prs.slide_height = Inches(7.5)

# Style: dark-premium
BG_COLOR = RGBColor(0x0A, 0x0A, 0x0A)
TEXT_COLOR = RGBColor(0xFF, 0xFF, 0xFF)
ACCENT_COLOR = RGBColor(0x00, 0xD9, 0xFF)

def add_slide(prs, layout_idx=6):  # 6 = blank
    slide = prs.slides.add_slide(prs.slide_layouts[layout_idx])
    bg = slide.background
    fill = bg.fill
    fill.solid()
    fill.fore_color.rgb = BG_COLOR
    return slide

def add_text(slide, text, left, top, width, height, size=24, color=TEXT_COLOR, bold=False):
    txBox = slide.shapes.add_textbox(Inches(left), Inches(top), Inches(width), Inches(height))
    tf = txBox.text_frame
    p = tf.paragraphs[0]
    p.text = text
    p.font.size = Pt(size)
    p.font.color.rgb = color
    p.font.bold = bold
    return txBox

# Slide 1: Title
slide = add_slide(prs)
add_text(slide, 'Presentation Title', 1, 2, 11, 2, size=44, bold=True)
add_text(slide, 'Subtitle', 1, 4, 11, 1, size=24, color=ACCENT_COLOR)

# Slide 2: Content with bullets
slide = add_slide(prs)
add_text(slide, 'Key Points', 1, 0.5, 11, 1, size=36, bold=True)
for i, bullet in enumerate(['Point one', 'Point two', 'Point three']):
    add_text(slide, f'• {bullet}', 1, 2 + i*0.8, 11, 0.7, size=24)

# Slide 3: Section divider
slide = add_slide(prs)
add_text(slide, 'Section Title', 1, 3, 11, 1.5, size=40, bold=True, color=ACCENT_COLOR)

# Save
prs.save('.poirot/outputs/presentation.pptx')
print('Saved to .poirot/outputs/presentation.pptx')
"

Step 5: Present

present_files([".poirot/outputs/presentation.pptx"])

Slide Types

TypeContentLayout
titleTitle + subtitleCentered, large font
contentTitle + bulletsLeft-aligned, 3-5 bullets
sectionSection title onlyCentered, accent color
chartTitle + chart imageChart from chart-visualization skill
quoteLarge quote + attributionCentered, italic
closingThank you + contactCentered

Pitfalls

  • Too much text per slide: max 5-6 bullets, max 2 lines each. Slides are visual aids, not documents.
  • Font sizes too small: title ≥36pt, body ≥24pt. If text doesn't fit, split into more slides.
  • Inconsistent style: all slides must use the same color palette, font sizes, and layout patterns.
  • No visual hierarchy: title > section headers > bullets > footnotes. Use size + weight + color to establish hierarchy.
  • python-pptx not installed: pip install python-pptx first.
  • Image slides: if you need chart images, generate them first with the chart-visualization skill, then embed as slide.shapes.add_picture().

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Structured peer-review of academic papers.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

Dark-themed SVG architecture/cloud/infra diagrams as HTML.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

arxiv

Free

Search arXiv papers by keyword, author, category, or ID.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

Monitor blogs and RSS/Atom feeds via blogwatcher-cli.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

Onboarding conversation to generate a user profile.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

Generate charts: select type, extract data, render image.

The English summary is being prepared. Showing the original description.

HezaoHezao/poirot252Updated Jul 29, 2026

See all skills by HezaoHezao

Report a problem with this skill