The dream is simple: your AI agents collect news and research data every day, then automatically produce polished slide decks and video briefings โ no human clicking through PowerPoint. The reality in early 2026 is that this is now entirely possible, but you need to pick the right tools. This guide focuses exclusively on what an agent can call programmatically โ APIs, CLIs, Python libraries, and SDKs โ not pretty GUIs that require a human in the loop.
1. AI Slide Generation Tools (API/Programmatic)
Gamma.app โ The API-First AI Presentation Platform
Gamma is the standout winner for programmatic slide generation. It launched a developer API that lets you create presentations, documents, and web pages from text prompts. The API mirrors the full AI generation functionality of Gamma's web app.
Key capabilities:
- Generate endpoint: Send a prompt (one-liner, messy notes, or polished content) โ get a shareable presentation link
- Formats: Presentation (16:9, 4:3, fluid), document (letter, A4), webpage, social post
- 60+ languages supported natively
- Export: PDF, PPTX from generated presentations
- Customization: Headers/footers, image URLs in input, folder organization, email sharing
// Gamma API โ Generate a presentation (Node.js)
const response = await fetch('https://api.gamma.app/v1/generate', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: "Create a 10-slide briefing on today's top AI news...",
format: "presentation",
aspect_ratio: "16x9",
num_cards: 10
})
});
const { url, id } = await response.json();
// url โ shareable link to the generated deck
Presenton โ Open-Source Alternative (Self-Hosted)
Presenton is an open-source AI presentation generator with 4K+ GitHub stars. It's a self-hostable alternative to Gamma, Beautiful.ai, and Decktopus. You run it locally, call its API, and get pixel-perfect decks with no vendor lock-in.
- Self-hosted: Full control, no API costs beyond your own LLM provider
- API-first: REST API for programmatic generation
- TypeScript/React stack: Easy to customize themes and layouts
- BYO LLM: Uses OpenAI, Anthropic, or any compatible API as the AI backend
Google Slides API โ The Enterprise Workhorse
The Google Slides API is the most mature programmatic slide creation tool. It's not AI-powered by default โ you build the slides element by element โ but that gives you total control. Combined with an LLM for content generation, it's extremely powerful.
# Google Slides API โ Create a presentation with Python
from googleapiclient.discovery import build
slides_service = build('slides', 'v1', credentials=credentials)
# Create a new presentation
presentation = slides_service.presentations().create(
body={'title': 'Daily AI News Briefing โ Feb 15, 2026'}
).execute()
pres_id = presentation['presentationId']
# Add a title slide
requests = [{
'createSlide': {
'slideLayoutReference': {'predefinedLayout': 'TITLE'},
'placeholderIdMappings': [{
'layoutPlaceholder': {'type': 'TITLE', 'index': 0},
'objectId': 'title_text'
}, {
'layoutPlaceholder': {'type': 'SUBTITLE', 'index': 0},
'objectId': 'subtitle_text'
}]
}
}, {
'insertText': {
'objectId': 'title_text',
'text': 'AI News Briefing'
}
}, {
'insertText': {
'objectId': 'subtitle_text',
'text': 'February 15, 2026 โ Generated by Yaneth'
}
}]
slides_service.presentations().batchUpdate(
presentationId=pres_id, body={'requests': requests}
).execute()
Pros: Free (within Google Workspace quotas), battle-tested, excellent Python SDK, integrates with Google Drive for sharing. Cons: Verbose API โ creating a rich slide requires dozens of API calls. No built-in AI; you supply all content and positioning.
python-pptx โ Direct PowerPoint Generation
python-pptx is the go-to Python library for creating PowerPoint files without Microsoft Office. It gives you complete control over slides, shapes, charts, images, tables, and text formatting.
# python-pptx โ Generate a slide deck from data
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
prs = Presentation()
prs.slide_width = Inches(16)
prs.slide_height = Inches(9)
# Title slide
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "AI News Briefing"
slide.placeholders[1].text = "February 15, 2026 โ Auto-generated"
# Content slide with bullet points
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "Top Stories"
body = slide.placeholders[1]
for story in ["OpenAI ships GPT-5", "EU AI Act enforced", "NVIDIA stock surges"]:
p = body.text_frame.add_paragraph()
p.text = story
p.font.size = Pt(18)
# Add an image (e.g., DALL-E generated)
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.add_picture('dalle_output.png', Inches(1), Inches(1), Inches(8), Inches(5))
prs.save('daily_briefing.pptx')
Canva Connect API
Canva's Connect API lets you create designs programmatically, including presentations. It provides an OpenAPI spec for generating client SDKs in any language. You can create designs from templates, upload assets, and export to various formats.
Limitations: Requires OAuth2 user authentication (not ideal for headless agents). More designed for "embed Canva in your app" than "agent creates slides autonomously." The API is still maturing โ content manipulation is limited compared to Google Slides.
Other Tools โ API Status Summary
| Tool | API Available? | Agent-Friendly? | Notes |
|---|---|---|---|
| Gamma.app | โ Yes โ Developer API | โญโญโญโญโญ | Best-in-class. Send prompt โ get deck. |
| Presenton | โ Yes โ Self-hosted API | โญโญโญโญ | Open-source Gamma alternative. BYO LLM. |
| Google Slides API | โ Yes โ Full REST API | โญโญโญโญ | Mature, free, verbose. No built-in AI. |
| python-pptx | โ Python library | โญโญโญโญ | Offline PPTX generation. Total control. |
| Canva Connect | โ REST API + OpenAPI | โญโญโญ | OAuth required. Still maturing for headless use. |
| Beautiful.ai | โ No public API | โญ | GUI-only. Great design, no automation. |
| Tome.app | โ No public API | โญ | Pivoted away from presentations entirely. |
| SlidesAI.io | โ Google Slides add-on only | โญโญ | Could be automated via Google Apps Script. |
| Pitch.com | โ ๏ธ Limited (Zapier only) | โญโญ | No direct API. Some automation via Zapier. |
| Decktopus | โ No public API | โญ | GUI-only AI presentation maker. |
| Microsoft Copilot (PPT) | โ ๏ธ Via Graph API (limited) | โญโญ | Can create from template but no AI generation via API. |
2. AI Image & Visual Generation for Slides
OpenAI DALL-E 3 / gpt-image-1 (Images API)
We already have OpenAI API access, making this the easiest path. The Images API supports DALL-E 3 and the newer gpt-image-1 model.
# OpenAI Images API โ Generate a slide background
from openai import OpenAI
client = OpenAI()
response = client.images.generate(
model="dall-e-3",
prompt="Professional tech infographic background, dark blue gradient, "
"subtle circuit board pattern, 16:9 aspect ratio, clean modern design",
size="1792x1024", # 16:9 for slides
quality="hd",
n=1
)
image_url = response.data[0].url
Pricing: DALL-E 3 HD: $0.080/image (1792ร1024). Standard: $0.040/image. At 10 images per slide deck, that's $0.40โ$0.80 per presentation.
Stable Diffusion (API & Local)
Stability AI API: platform.stability.ai offers REST APIs for Stable Diffusion 3.5, SDXL, and image editing. Pay-per-generation with credits.
Local/self-hosted: Run via AUTOMATIC1111 or ComfyUI with their REST APIs. Free after hardware cost. ComfyUI's API accepts workflow JSON โ perfect for agents.
# ComfyUI API โ Queue a generation workflow
import requests, json
workflow = json.load(open("slide_background_workflow.json"))
workflow["6"]["inputs"]["text"] = "Modern data visualization dashboard, clean design"
response = requests.post("http://localhost:8188/prompt", json={"prompt": workflow})
prompt_id = response.json()["prompt_id"]
# Poll /history/{prompt_id} for results
Midjourney โ No Official API
As of February 2026, Midjourney still has no official public API. Unofficial wrappers exist (ImagineAPI, UserAPI, Apiframe) that automate the Discord bot, but they're fragile, against ToS, and unreliable for production agent workflows. Skip Midjourney for automated pipelines.
Other Image Generation APIs
| Tool | API? | Best For | Pricing |
|---|---|---|---|
| OpenAI DALL-E 3 | โ REST API | General-purpose slide visuals | $0.04โ0.08/image |
| Stability AI (SD3.5) | โ REST API | High-quality, controllable images | ~$0.03โ0.06/image |
| Flux (Black Forest Labs) | โ Via Replicate/fal.ai | Photorealistic images, text rendering | ~$0.03/image via Replicate |
| Ideogram | โ REST API | Text-in-image (logos, infographics) | Free tier + paid plans |
| ComfyUI (local) | โ REST API (local) | Full control, no per-image cost | Free (need GPU) |
Charts & Data Visualization
For data-driven slides, you need charts. These are all fully programmatic:
- Matplotlib + Seaborn (Python):
plt.savefig('chart.png', dpi=150)โ the classic. Generates publication-quality charts as PNG/SVG. - Plotly (Python/JS): Interactive charts that export to static images via
plotly.io.write_image(). Supports 40+ chart types. - Chart.js (JavaScript): Render charts server-side with
chartjs-node-canvasโ returns PNG buffers. - Mermaid (diagrams): Text-to-diagram. Use
@mermaid-js/mermaid-clito render flowcharts, sequences, Gantt charts as SVG/PNG. - QuickChart.io: Free API โ send chart config as URL params, get PNG back. No library needed:
https://quickchart.io/chart?c={type:'bar',data:{...}}
# Matplotlib โ Generate a chart for a slide
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg') # Headless rendering
categories = ['Tech', 'Health', 'Finance', 'Politics', 'Science']
stories = [12, 8, 15, 6, 9]
fig, ax = plt.subplots(figsize=(16, 9), dpi=150)
ax.barh(categories, stories, color='#2563eb')
ax.set_title('Stories by Category โ Feb 15, 2026', fontsize=24, fontweight='bold')
ax.set_xlabel('Number of Stories', fontsize=16)
fig.tight_layout()
fig.savefig('stories_chart.png', bbox_inches='tight')
plt.close()
3. Video & Slideshow Generation from Slides
FFmpeg โ The Swiss Army Knife (Free)
The simplest path from slides to video: export slides as images, add TTS audio, combine with FFmpeg. This is fully automatable and costs nothing.
# FFmpeg โ Combine slide images + audio into video
# Each slide shows for the duration of its audio segment
# Simple: all slides same duration
ffmpeg -framerate 1/5 -i slide_%03d.png -i narration.aac \
-c:v libx264 -pix_fmt yuv420p -c:a aac \
-shortest briefing.mp4
# Advanced: per-slide timing with concat demuxer
# Create slides.txt:
# file 'slide_001.png'
# duration 12.5
# file 'slide_002.png'
# duration 8.3
# ...
ffmpeg -f concat -i slides.txt -i narration.aac \
-c:v libx264 -pix_fmt yuv420p -vf "scale=1920:1080" \
-c:a aac -shortest briefing.mp4
Remotion โ React-Based Programmatic Video
Remotion lets you build videos as React components, then render them to MP4. It's the most powerful option for agents that need dynamic, data-driven videos with animations, transitions, and custom layouts.
// Remotion โ A slide component
import { AbsoluteFill, Img, useCurrentFrame } from 'remotion';
export const NewsSlide = ({ title, bullets, backgroundUrl }) => {
const frame = useCurrentFrame();
const opacity = Math.min(1, frame / 15); // Fade in
return (
<AbsoluteFill style={{ background: '#1a1a2e' }}>
{backgroundUrl && <Img src={backgroundUrl} style={{ opacity: 0.2 }} />}
<h1 style={{ color: 'white', opacity, fontSize: 48, padding: 60 }}>
{title}
</h1>
{bullets.map((b, i) => (
<p key={i} style={{
color: '#e2e8f0',
opacity: Math.min(1, (frame - 20 - i * 10) / 10),
fontSize: 28, paddingLeft: 80
}}>โข {b}</p>
))}
</AbsoluteFill>
);
};
# Render Remotion video from CLI
npx remotion render src/index.ts DailyBriefing out/briefing.mp4 \
--props='{"slides": [...], "audioUrl": "narration.aac"}'
Remotion is free for individuals and open-source projects. Companies with revenue > $1M need a license (~$750/year). Server-side rendering is available for headless agent workflows.
AI Avatar Video โ HeyGen & Synthesia
If you want a talking-head presenter instead of just slides, these platforms offer APIs:
| Platform | API? | Pricing | Key Features |
|---|---|---|---|
| HeyGen | โ REST API | $99/mo (100 credits) โ 10 free/mo | Avatar presenters, voice cloning, 1080p |
| Synthesia | โ API (Creator plan+) | $29/mo Starter (10 min), API on Creator ($89/mo) | 160+ avatars, 140+ languages, enterprise-grade |
| D-ID | โ REST API | Free tier (5 min), $5.90/min after | Photo-to-video, custom avatars |
# HeyGen API โ Generate a video with AI avatar
import requests
response = requests.post(
"https://api.heygen.com/v2/video/generate",
headers={"X-Api-Key": "YOUR_API_KEY"},
json={
"video_inputs": [{
"character": {
"type": "avatar",
"avatar_id": "Angela-inTshirt-20220820",
"avatar_style": "normal"
},
"voice": {
"type": "text",
"input_text": "Good morning! Here are today's top AI stories...",
"voice_id": "en-US-JennyNeural"
},
"background": {
"type": "image",
"url": "https://your-cdn.com/slide_bg.png"
}
}],
"dimension": {"width": 1920, "height": 1080}
}
)
video_id = response.json()["data"]["video_id"]
# Poll GET /v1/video_status.get?video_id={video_id}
Other Video Tools
- Manim (Python): Mathematical animation engine (used by 3Blue1Brown). Excellent for data visualizations and animated explanations. CLI-driven:
manim render scene.py MyScene -qh - MoviePy (Python): Programmatic video editing โ concatenate clips, add text overlays, transitions.
pip install moviepy - Revideo: Fork of Remotion focused on simpler video composition. TypeScript-based.
- Shotstack API: Cloud video editing API โ send JSON timeline, get rendered video. Pay per render.
4. End-to-End Pipelines
Here's how to wire everything together for an agent that goes from raw data to published video:
Pipeline A: The Minimal Pipeline (python-pptx + FFmpeg)
# End-to-end: data โ slides โ video
# Step 1: Agent collects news data (already done in our system)
news_data = fetch_daily_news() # Returns structured data
# Step 2: LLM generates slide content
from openai import OpenAI
client = OpenAI()
slide_content = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": "Generate a JSON array of slides. Each slide has: title, bullets (list), speaker_notes."
}, {
"role": "user",
"content": f"Create a 10-slide news briefing from: {json.dumps(news_data)}"
}],
response_format={"type": "json_object"}
).choices[0].message.content
# Step 3: Generate PPTX
slides = json.loads(slide_content)["slides"]
create_pptx(slides, "briefing.pptx") # Using python-pptx
# Step 4: Export slides as images
# Use LibreOffice headless:
os.system("libreoffice --headless --convert-to png briefing.pptx --outdir slides/")
# Step 5: Generate TTS narration from speaker notes
all_notes = " ".join(s["speaker_notes"] for s in slides)
audio = client.audio.speech.create(model="tts-1-hd", voice="shimmer", input=all_notes)
audio.write_to_file("narration.aac")
# Step 6: Combine into video with FFmpeg
os.system("ffmpeg -framerate 1/8 -i slides/slide_%d.png -i narration.aac "
"-c:v libx264 -pix_fmt yuv420p -shortest briefing.mp4")
# Step 7: Upload to S3 / publish
os.system("aws s3 cp briefing.mp4 s3://your-bucket/briefings/2026-02-15.mp4")
Pipeline B: The Polished Pipeline (Gamma + OpenAI TTS)
# Higher quality with Gamma's AI design
# Step 1โ2: Same data collection + content prep
# Step 3: Generate via Gamma API
gamma_response = requests.post("https://api.gamma.app/v1/generate", headers={...}, json={
"prompt": formatted_news_content,
"format": "presentation",
"aspect_ratio": "16x9"
})
presentation_url = gamma_response.json()["url"]
# Step 4: Export as PDF/images via Gamma
export = requests.post(f"https://api.gamma.app/v1/export/{pres_id}", json={"format": "pdf"})
# Step 5: TTS + video assembly (same as Pipeline A)
Pipeline C: The Premium Pipeline (Remotion + HeyGen)
# Full video production with AI avatar
# Step 1โ2: Data + content generation
# Step 3: Generate DALL-E backgrounds for each slide
backgrounds = []
for slide in slides:
img = client.images.generate(
model="dall-e-3", prompt=f"Slide background for: {slide['title']}", size="1792x1024"
)
backgrounds.append(download(img.data[0].url))
# Step 4: Render with Remotion
write_remotion_props(slides, backgrounds)
os.system("npx remotion render src/index.ts DailyBriefing slides_only.mp4")
# Step 5: Generate AI avatar intro/outro with HeyGen
heygen_video = create_heygen_video(intro_script, avatar_id="...")
# Step 6: Concatenate with FFmpeg
os.system("ffmpeg -i heygen_intro.mp4 -i slides_only.mp4 -i heygen_outro.mp4 "
"-filter_complex '[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1' "
"final_briefing.mp4")
5. Pricing Comparison
| Component | Free/OSS Option | Paid Option | Cost per Presentation |
|---|---|---|---|
| Slide Generation | python-pptx, Google Slides API | Gamma API | $0 (DIY) โ $2โ5 (Gamma) |
| AI Images (10/deck) | ComfyUI (local SD) | DALL-E 3 HD | $0 (local) โ $0.80 (DALL-E) |
| Charts/Graphs | Matplotlib, Plotly, QuickChart | โ | $0 |
| TTS Narration | โ | OpenAI TTS-1 | ~$0.09 (1000 chars) โ ~$0.50/deck |
| Video Assembly | FFmpeg | Remotion | $0 |
| AI Avatar (optional) | โ | HeyGen ($99/mo for 100 credits) | ~$1โ3/video |
| Total per presentation (Budget) | ~$0.50 | ||
| Total per presentation (Mid-tier) | ~$3โ5 | ||
| Total per presentation (Premium with avatar) | ~$5โ10 | ||
6. Recommended Architectures for ThinkSmart
Based on what we already have (OpenAI API, daily news data, audio briefings, AWS), here are three concrete architectures:
๐ข Budget: python-pptx + DALL-E + FFmpeg (~$0.50/presentation)
Stack: Python script โ python-pptx โ LibreOffice export โ DALL-E 3 backgrounds โ OpenAI TTS โ FFmpeg โ S3
- Slide generation: python-pptx with custom ThinkSmart template (.pptx)
- Images: DALL-E 3 for hero images, Matplotlib for charts
- Audio: OpenAI TTS (shimmer voice โ already configured)
- Video: FFmpeg combining slide PNGs + audio
- Hosting: S3 + CloudFront (already have this)
Pros: Cheapest option, fully self-contained, no external dependencies. Cons: Slides look "PowerPoint-ish" โ need careful template design. LibreOffice headless required for PNG export.
Implementation effort: ~2 days
๐ต Mid-Tier: Google Slides API + AI Images + TTS (~$1โ2/presentation)
Stack: Python โ Google Slides API โ Google Drive export โ DALL-E 3 โ OpenAI TTS โ FFmpeg โ S3
- Slide generation: Google Slides API with ThinkSmart master template
- Images: DALL-E 3 for backgrounds, Plotly for interactive charts (exported as PNG)
- Audio: OpenAI TTS-1-HD for narration
- Video: FFmpeg or Remotion for richer transitions
- Sharing: Google Drive links + S3 video hosting
Pros: Better-looking slides with Google's rendering. Shareable via Google Drive. Free tier is generous. Cons: Requires Google Workspace credentials. API is verbose.
Implementation effort: ~3โ4 days
๐ฃ Premium: Gamma API + Remotion + HeyGen (~$5โ10/presentation)
Stack: Python โ Gamma API โ DALL-E 3 โ Remotion (animated video) โ HeyGen (avatar intro) โ FFmpeg concat โ S3
- Slide generation: Gamma API โ send prompt, get polished deck
- Images: DALL-E 3 + Gamma's built-in image generation
- Audio: OpenAI TTS-1-HD + HeyGen avatar for intro/outro
- Video: Remotion for animated slide transitions, HeyGen for talking-head segments
- Output: Professional-quality video briefing with AI presenter
Pros: Broadcast-quality output. Minimal code for beautiful slides. Cons: Most expensive. Multiple API dependencies. Gamma API access requires approval.
Implementation effort: ~5โ7 days
Quick-Start: Minimum Viable Pipeline
Here's the exact stack to build first:
- Content: GPT-4o generates slide JSON from daily news data (already collected)
- Slides: python-pptx creates branded .pptx file
- Images: DALL-E 3 generates 2โ3 hero images per deck
- Charts: Matplotlib generates data charts as PNGs
- Export: LibreOffice headless converts .pptx โ PNGs (
libreoffice --headless --convert-to png) - Audio: OpenAI TTS generates narration from speaker notes (already using shimmer)
- Video: FFmpeg combines PNGs + AAC โ MP4
- Publish: Upload to S3, embed on ThinkSmart.life
Total estimated cost: ~$0.50 per daily briefing video. At 30 days/month, that's $15/month for daily automated video presentations.
References
- Gamma Developer API Documentation โ developers.gamma.app
- Presenton โ Open-Source AI Presentation Generator โ GitHub
- Google Slides API Documentation โ Google for Developers
- python-pptx Documentation โ readthedocs.io
- Canva Connect API Documentation โ canva.dev
- OpenAI Images API Guide โ platform.openai.com
- Remotion โ Make Videos Programmatically โ remotion.dev
- HeyGen API Pricing โ heygen.com
- Synthesia Pricing โ synthesia.io
- Stability AI Platform โ stability.ai