一键导入
codex-ppt-skill
Generate image-based PowerPoint presentations using gpt-image-2, converting articles, papers, and reports into visual slide decks
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate image-based PowerPoint presentations using gpt-image-2, converting articles, papers, and reports into visual slide decks
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | codex-ppt-skill |
| description | Generate image-based PowerPoint presentations using gpt-image-2, converting articles, papers, and reports into visual slide decks |
| triggers | ["create a powerpoint presentation from this document","generate slides from this article","make a ppt deck with images","convert this paper to presentation slides","build a slide deck using codex-ppt","generate visual presentation from content","create image-based slides for this report","make a ppt with gpt-image-2"] |
Skill by ara.so — Codex Skills collection.
A skill for generating image-based PowerPoint presentations where each slide is a complete 16:9 image generated by gpt-image-2. Converts articles, papers, reports, and notes into visually cohesive presentation decks with unified styling.
.pptx with speaker notesnpx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent codex \
--global
Restart Codex after installation.
npx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent claude-code \
--global
openclaw skills install codex-ppt
npx -y skills@latest add ningzimu/codex-ppt-skill \
--skill codex-ppt \
--agent hermes-agent \
--global
Clone and symlink to your agent's skills directory:
git clone https://github.com/ningzimu/codex-ppt-skill.git
mkdir -p ~/.codex/skills
ln -s $(pwd)/codex-ppt-skill/skills/codex-ppt ~/.codex/skills/codex-ppt
Important: Only configure if you need API/CLI fallback. If using Codex with GPT subscription and built-in image generation works, skip this section.
Configure only when:
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py config \
--api-key "$OPENAI_API_KEY" \
--model gpt-image-2
With custom base URL (for third-party providers):
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py config \
--api-key "$OPENAI_API_KEY" \
--base-url "https://api.example.com/v1" \
--model openai/gpt-image-2
Configuration is stored in ~/.codex-ppt-skill/.env and shared across all agents.
If configured, the .env file contains:
OPENAI_API_KEY=your-api-key-here
OPENAI_BASE_URL=https://api.example.com/v1 # optional
OPENAI_IMAGE_MODEL=gpt-image-2
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py generate \
--prompt "Clean professional slide: Introduction to AI, blue gradient background, large title, 3 bullet points" \
--output /path/to/slide_01.png \
--size 2048x1152
python3 ~/.codex/skills/codex-ppt/scripts/assemble_ppt.py \
--project-dir /path/to/ppt-project \
--title "My Presentation" \
--speech-file /path/to/ppt-project/speech.md
python3 ~/.codex/skills/codex-ppt/scripts/codex_ppt_runtime.py check-config
Output:
✓ Configuration file exists
✓ API key configured
✓ Model: gpt-image-2
✓ Base URL: https://api.openai.com/v1
# In agent conversation:
# "Use codex-ppt skill to create a 10-slide presentation from article.md"
The skill follows this workflow:
outline.md with slide titles and key pointsspeech.md with speaker notes.pptx using local script{base_dir}/{ppt_name}/
├── origin_image/
│ ├── slide_01.png # Title slide
│ ├── slide_02.png # Content slides
│ ├── slide_03.png
│ └── ...
├── outline.md # Slide structure
├── speech.md # Speaker notes (## Slide 1: Title format)
└── {ppt_name}.pptx # Final presentation
# Input: technical_article.md containing AI research summary
# Agent command: "Use codex-ppt skill to make this into slides"
# Step 1: Outline generation
outline = """
# AI Research Presentation Outline
## Slide 1: Title
- "Recent Advances in Large Language Models"
- Speaker name, date
## Slide 2: Background
- Evolution of NLP
- Pre-transformer era vs transformer era
- Key milestones timeline
## Slide 3: Architecture
- Transformer architecture diagram
- Attention mechanism
- Scaling laws
# ... (continues)
"""
# Step 2: Style selection
styles = [
"clean-professional", # Recommended for tech talks
"scientific-defense", # For academic presentations
"handdrawn-technical" # For approachable tech explanation
]
# Step 3: Sample slide generation (2K resolution)
sample_prompt = """
16:9 slide, clean professional style, blue gradient background
Title: "Recent Advances in Large Language Models"
Subtitle: "Dr. Jane Smith | May 2024"
Minimalist design, large readable font, subtle geometric accents
"""
# Step 4: Bulk generation (all remaining slides)
# Agent generates each slide with consistent style but varied layouts
# Outline with custom figure specification
outline_with_figures = """
## Slide 5: Model Architecture
- Insert: /path/to/architecture_diagram.png
- Transformer architecture
- Multi-head attention
- Feed-forward layers
## Slide 8: Experimental Results
- Insert: /path/to/results_chart.png
- Benchmark comparison
- Performance metrics
"""
# The skill will:
# 1. Use provided image as background/focal element
# 2. Add consistent styling (borders, background, text overlays)
# 3. Maintain visual coherence with other slides
#!/usr/bin/env python3
from pptx import Presentation
from pptx.util import Inches
import os
def assemble_presentation(project_dir: str, title: str, speech_file: str):
"""
Assemble PPT from images in origin_image/ directory.
Args:
project_dir: Path to PPT project directory
title: Presentation title
speech_file: Path to speech.md with speaker notes
"""
prs = Presentation()
prs.slide_width = Inches(10) # 16:9 aspect ratio
prs.slide_height = Inches(5.625)
image_dir = os.path.join(project_dir, "origin_image")
images = sorted([f for f in os.listdir(image_dir) if f.startswith("slide_")])
# Parse speaker notes
notes_map = parse_speaker_notes(speech_file)
for idx, img_file in enumerate(images, 1):
slide_layout = prs.slide_layouts[6] # Blank layout
slide = prs.slides.add_slide(slide_layout)
# Add image filling entire slide
img_path = os.path.join(image_dir, img_file)
slide.shapes.add_picture(
img_path,
Inches(0), Inches(0),
width=Inches(10), height=Inches(5.625)
)
# Add speaker notes
if idx in notes_map:
slide.notes_slide.notes_text_frame.text = notes_map[idx]
output_path = os.path.join(project_dir, f"{title}.pptx")
prs.save(output_path)
return output_path
def parse_speaker_notes(speech_file: str) -> dict:
"""Extract speaker notes by slide number from markdown."""
notes = {}
current_slide = None
current_text = []
with open(speech_file, 'r', encoding='utf-8') as f:
for line in f:
if line.startswith("## Slide "):
if current_slide:
notes[current_slide] = "\n".join(current_text).strip()
# Extract slide number
current_slide = int(line.split("Slide ")[1].split(":")[0])
current_text = []
elif current_slide:
current_text.append(line.rstrip())
if current_slide:
notes[current_slide] = "\n".join(current_text).strip()
return notes
Built-in styles in skills/codex-ppt/references/styles.md:
# Input: research_paper.pdf (converted to markdown)
# Command: "Create a 15-slide conference talk using scientific-defense style"
# Agent workflow:
# 1. Extract key sections (abstract, methodology, results, conclusions)
# 2. Create outline with 1 title + 2-3 intro + 6-8 technical + 2-3 conclusion slides
# 3. Insert paper figures on relevant slides
# 4. Generate slides with consistent academic styling
# 5. Add detailed speaker notes from paper content
# Input: Q4_2024_metrics.md with KPIs and charts
# Command: "Make data-dashboard style slides, insert my 3 chart images"
# Outline example:
"""
## Slide 1: Q4 2024 Review
## Slide 2: Revenue Overview
- Insert: revenue_chart.png
## Slide 3: User Growth
- Insert: growth_chart.png
## Slide 4: Regional Performance
- Insert: regional_map.png
## Slide 5: Key Initiatives
## Slide 6: Q1 2025 Goals
"""
# Input: lecture_notes.md (markdown with headings and bullets)
# Command: "Create handdrawn-technical style slides, about 20 pages"
# Agent approach:
# - 1 slide per major concept
# - Visual metaphors for abstract ideas
# - Step-by-step diagrams for processes
# - Summary slide every 5-6 slides
# - Consistent whiteboard aesthetic throughout
# 2048x1152 (16:9, sufficient for most presentations)
python3 codex_ppt_runtime.py generate \
--prompt "..." \
--output slide.png \
--size 2048x1152
# 3840x2160 (16:9, for text-heavy slides or printing)
python3 codex_ppt_runtime.py generate \
--prompt "..." \
--output slide.png \
--size 3840x2160
When to use 4K:
Solution: Increase resolution to 4K
# In agent: "Regenerate slides 3-5 at 4K resolution for better text clarity"
Cause: Vague or varying style prompts
Solution:
# Good: Consistent base prompt
base_style = "Clean professional, blue gradient (#1e3a8a to #3b82f6), Inter font, minimalist"
slide_2_prompt = f"{base_style}\nTitle: Introduction\n3 bullet points..."
slide_3_prompt = f"{base_style}\nTitle: Methods\nDiagram with 4 boxes..."
# Bad: Different styles per slide
slide_2_prompt = "Blue background, title and bullets"
slide_3_prompt = "Professional slide with diagram" # Too vague
Cause: speech.md format doesn't match parser
Solution: Use strict heading format
## Slide 1: Title Slide
This is the opening slide. Introduce yourself and the topic.
## Slide 2: Background
Explain the context. Mention key historical developments.
## Slide 3: Problem Statement
...
Parser expects ## Slide N: Title format exactly.
Check configuration:
python3 codex_ppt_runtime.py check-config
Common fixes:
~/.codex-ppt-skill/.env/v1)curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Test slide",
"size": "2048x1152"
}'
Solution: Explicitly mention the skill
# Weak: "Make slides from this article"
# Strong: "Use codex-ppt skill to generate slides from this article"
Correct outline format:
## Slide 5: Architecture
- Insert: /absolute/path/to/diagram.png
- Model architecture overview
- Key components
Agent should:
# Don't regenerate entire deck
# Command: "Regenerate slide 7 with darker background and larger font"
# Agent should:
# 1. Load slide_07 prompt from history or reconstruct from outline
# 2. Modify only specified parameters
# 3. Overwrite origin_image/slide_07.png
# 4. Re-run assembly script
# Upload reference image
# Command: "Use this slide style for the entire presentation"
# Agent approach:
# 1. Analyze uploaded image (colors, fonts, layout, visual elements)
# 2. Create detailed style description
# 3. Apply to all slide prompts
# 4. Generate sample for confirmation
from pptx import Presentation
import subprocess
def export_formats(pptx_path: str):
"""Export to PDF and images."""
base = os.path.splitext(pptx_path)[0]
# PDF (requires LibreOffice)
subprocess.run([
"libreoffice", "--headless", "--convert-to", "pdf",
"--outdir", os.path.dirname(pptx_path),
pptx_path
])
# Individual PNGs already in origin_image/
print(f"Exported: {base}.pdf")
print(f"Images: {os.path.dirname(pptx_path)}/origin_image/")
# Required only for API/CLI fallback
OPENAI_API_KEY=sk-... # Your OpenAI API key
OPENAI_BASE_URL=https://api.openai.com/v1 # Optional, for third-party providers
OPENAI_IMAGE_MODEL=gpt-image-2 # Model name
Never commit these to version control. Store in ~/.codex-ppt-skill/.env.
Convert attached object images into code-only, animation-ready procedural Three.js models through guided sculpting workflow
Create and manage AI video storyboard projects with automated asset generation through Codex Storyboard workspace
Continue-thinking middleware that detects and handles reasoning truncation in Codex/OpenAI Responses-compatible APIs
Desktop manager for OpenAI Codex CLI with prompt injection, provider switching, and TOML/Auth visualization
Inject unrestricted developer mode instructions into Codex CLI (GPT-5.5) to bypass content filters
Install and use TradingCodex to build Codex-native investment research workflows with fixed-role agents, order approval gates, and local Django service plane