Generate professional presentations using the 2slides AI API. The skill supports content-based generation (theme-driven Fast PPT), style matching from a reference image, custom PDF design, document summarization, AI voice narration, and exporting pages/audio. It returns both an interactive slide URL and a downloadable PDF.
This skill is adapted from the official 2slides skill repository (2slides/slides-generation-2slides-skills). It calls the hosted 2slides API and requires the user's own API key and credits.
Users must have a 2slides API key and credits:
SLIDES_2SLIDES_API_KEY
export SLIDES_2SLIDES_API_KEY="your_api_key_here"
Credit Costs:
See references/pricing.md for detailed pricing information.
Choose the appropriate approach based on the user's request:
User Request
│
├─ "Create slides from this content/text"
│ └─> Use Content-Based Generation (Section 1)
│
├─ "Create slides like this image"
│ └─> Use Reference Image Generation (Section 2)
│
├─ "Create custom designed slides" or "Create PDF slides"
│ └─> Use Custom PDF Generation (Section 3)
│
├─ "Create slides from this document"
│ └─> Use Document Summarization (Section 4)
│
├─ "Add voice narration" or "Generate audio for slides"
│ └─> Use Voice Narration (Section 5)
│
├─ "Download slides as images" or "Export slides and voices"
│ └─> Use Download Export (Section 6)
│
└─ "Search for themes" or "What themes are available?"
└─> Use Theme Search (Section 7)
Generate slides from user-provided text content.
Step 1: Prepare Content
Structure the content clearly for best results:
Title: [Main Topic]
Section 1: [Subtopic]
- Key point 1
- Key point 2
- Key point 3
Section 2: [Subtopic]
- Key point 1
- Key point 2
Step 2: Choose Theme (Required)
Search for an appropriate theme (themeId is required):
python scripts/search_themes.py --query "business"
python scripts/search_themes.py --query "professional"
python scripts/search_themes.py --query "creative"
Pick a theme ID from the results.
Step 3: Generate Slides
Use the generate_slides.py script with the theme ID:
# Basic generation (theme ID required)
python scripts/generate_slides.py --content "Your content here" --theme-id "theme123"
# In different language
python scripts/generate_slides.py --content "Your content" --theme-id "theme123" --language "Spanish"
# Async mode for longer presentations
python scripts/generate_slides.py --content "Your content" --theme-id "theme123" --mode async
Step 4: Handle Results
Sync mode response:
{
"slideUrl": "https://2slides.com/slides/abc123",
"pdfUrl": "https://2slides.com/slides/abc123/download",
"status": "completed"
}
Provide both URLs to the user:
slideUrl: Interactive online slidespdfUrl: Downloadable PDF versionAsync mode response:
{
"jobId": "job123",
"status": "pending"
}
Poll for results:
python scripts/get_job_status.py --job-id "job123"
Generate slides that match the style of a reference image.
Step 1: Verify Image URL
Ensure the reference image is:
Step 2: Generate Slides
Use the generate_slides.py script with --reference-image:
python scripts/generate_slides.py \
--content "Your presentation content" \
--reference-image "https://example.com/template.jpg" \
--language "Auto"
Optional parameters (all values from 2slides API):
--language LANG # Auto, English, Spanish, Arabic, Portuguese, Indonesian,
# Japanese, Russian, Hindi, French, German, Greek, Vietnamese,
# Turkish, Polish, Italian, Korean, Simplified Chinese,
# Traditional Chinese, Thai (default: Auto)
--mode sync|async # default: sync for theme, async for reference-image
--aspect-ratio RATIO # 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 (default: 16:9)
--resolution 1K|2K|4K # default: 2K
--page N # 0=auto, 1-100 (default: 1)
--content-detail concise|standard # default: standard
Note: This uses Nano Banana Pro mode with credit costs:
Step 3: Handle Results
This mode always runs synchronously and returns:
{
"slideUrl": "https://2slides.com/workspace?jobId=...",
"pdfUrl": "https://...pdf...",
"status": "completed",
"message": "Successfully generated N slides",
"slidePageCount": N
}
Provide both URLs to the user:
slideUrl: View slides in 2slides workspacepdfUrl: Direct PDF download (expires in 1 hour)Processing time: ~30 seconds per page (30-60 seconds typical for 1-2 pages)
Generate custom-designed slides from text without needing a reference image.
Step 1: Prepare Content
Structure the content clearly:
Title: [Main Topic]
Section 1: [Subtopic]
- Key point 1
- Key point 2
Section 2: [Subtopic]
- Key point 1
- Key point 2
Step 2: Generate Slides
Use the create_pdf_slides.py script:
Install the Python dependency first if it is not already available:
python -m pip install -r requirements.txt
# Basic generation
python scripts/create_pdf_slides.py --content "Your content here"
# With design style (API: designStyle)
python scripts/create_pdf_slides.py \
--content "Sales Report Q4 2025" \
--design-style "modern minimalist, blue color scheme"
# High resolution with auto page detection
python scripts/create_pdf_slides.py \
--content "Marketing Plan" \
--resolution 4K \
--page 0 \
--content-detail standard
Optional parameters:
--design-style "text" # Design instructions (API: designStyle)
--language LANG # Same as generate_slides (default: Auto)
--aspect-ratio RATIO # 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 (default: 16:9)
--resolution 1K|2K|4K # default: 2K
--page N # 0=auto, 1-100 (default: 1)
--content-detail concise|standard # default: standard
Step 3: Handle Results
Returns same structure as create-like-this:
{
"slideUrl": "https://2slides.com/workspace?jobId=...",
"pdfUrl": "https://...pdf...",
"status": "completed",
"message": "Successfully generated N slides",
"slidePageCount": N
}
Notes:
Generate slides from document content.
Step 1: Read Document
Use appropriate tool to read the document content:
Step 2: Extract Key Points
Analyze the document and extract:
Step 3: Structure Content
Format extracted information into presentation structure:
Title: [Document Main Topic]
Introduction
- Context
- Purpose
- Overview
[Section 1 from document]
- Key point 1
- Key point 2
- Supporting detail
[Section 2 from document]
- Key point 1
- Key point 2
- Supporting detail
Conclusion
- Summary
- Key takeaways
- Next steps
Step 4: Generate Slides
Use content-based generation workflow (Section 1). First search for a theme, then generate:
# Search for appropriate theme
python scripts/search_themes.py --query "business"
# Generate with theme ID
python scripts/generate_slides.py --content "[Structured content from step 3]" --theme-id "theme123"
Tips:
Add AI-generated voice narration to slides.
IMPORTANT: The slide generation job must be completed before adding narration.
Step 1: Choose Voice
30 voices available including:
List all voices:
python scripts/generate_narration.py --list-voices
Step 2: Generate Narration
Use the generate_narration.py script with the job ID:
# Basic narration with default voice
python scripts/generate_narration.py --job-id "abc-123-def-456"
# Single speaker, specific voice
python scripts/generate_narration.py --job-id "abc-123-def-456" --voice Aoede
# No speaker intro
python scripts/generate_narration.py --job-id "abc-123-def-456" --no-intro
# Multi-speaker (names required)
python scripts/generate_narration.py --job-id "abc-123-def-456" --multi-speaker \
--speaker1-name "Alice" --speaker2-name "Bob" \
--speaker1-voice Aoede --speaker2-voice Puck
Parameters (aligned with 2slides API):
--job-id: Job ID (required, UUID for Nano Banana)--mode: single or multi (default: single)--speaker-name: Speaker name (single mode)--voice: Voice name (default: Puck); use --list-voices for all 30--content-mode: concise or standard (default: standard)--no-intro: Omit speaker introduction (single mode)--speaker1-name, --speaker2-name: Required for multi mode--speaker1-voice, --speaker2-voice: Optional for multi mode--multi-speaker: Shortcut for --mode multi
Step 3: Check Status
Narration generation runs asynchronously:
python scripts/get_job_status.py --job-id "abc-123-def-456"
Step 4: Handle Results
Once completed, the job will include narration files. Use download endpoint (Section 6) to get audio files.
Notes:
Download slides as PNG images and voice narrations as WAV files.
Step 1: Verify Job Complete
Ensure slides (and optionally narration) are generated and job is completed.
Step 2: Download Archive
Use the download_slides_pages_voices.py script:
# Download with default filename (<job_id>.zip)
python scripts/download_slides_pages_voices.py --job-id "abc-123-def-456"
# Download to specific path
python scripts/download_slides_pages_voices.py \
--job-id "abc-123-def-456" \
--output "my-presentation.zip"
Step 3: Extract Contents
The ZIP archive contains:
Notes:
Find appropriate themes for presentations.
Search themes:
# Search for specific style (query is required)
python scripts/search_themes.py --query "business"
python scripts/search_themes.py --query "creative"
python scripts/search_themes.py --query "education"
python scripts/search_themes.py --query "professional"
# Get more results
python scripts/search_themes.py --query "modern" --limit 50
Theme selection:
If the 2slides MCP server is configured in Claude Desktop, use the integrated tools instead of scripts.
Two Configuration Modes:
Streamable HTTP Protocol (Recommended)
"url": "https://2slides.com/api/mcp?apikey=YOUR_API_KEY"
NPM Package (stdio)
"command": "npx", "args": ["2slides-mcp"]
Available MCP tools:
slides_generate - Generate slides from contentslides_create_like_this - Generate from reference imagethemes_search - Search themesjobs_get - Check job statusSee mcp-integration.md for complete setup instructions and detailed tool documentation.
When to use MCP vs scripts:
Sync Mode (default):
Async Mode:
get_job_status.py
Different endpoints have different rate limits:
If rate limited, wait before retrying or check plan limits.
2slides uses a pay-as-you-go credit system with no subscriptions required.
Credit Packages: (Current promotion: up to 20% off)
New users receive 500 free credits for onboarding (~50 Fast PPT pages).
Credits never expire - use them at your own pace.
Purchase credits at: https://2slides.com/pricing
All download URLs (PDF, ZIP archives) are valid for 1 hour only. Download files promptly after generation.
Generate slides in multiple languages (use full language name):
--language "Auto" # Automatic detection (default)
--language "English" # English
--language "Simplified Chinese" # 简体中文
--language "Traditional Chinese" # 繁體中文
--language "Spanish" # Español
--language "French" # Français
--language "German" # Deutsch
--language "Japanese" # 日本語
--language "Korean" # 한국어
And more: Arabic, Portuguese, Indonesian, Russian, Hindi, Vietnamese, Turkish, Polish, Italian
Common error codes:
Missing API key
Error: API key not found
Solution: Set SLIDES_2SLIDES_API_KEY environment variable
RATE_LIMIT_EXCEEDED
Error: 429 Too Many Requests
Solution: Wait 20-30 seconds before retrying
Rate limits: Fast PPT (10/min), Nano Banana (6/min)
INSUFFICIENT_CREDITS
Error: Not enough credits
Solution: Add credits at https://2slides.com/api
INVALID_JOB_ID
Error: Job ID not found or invalid
Solution: Verify job ID format (must be UUID for Nano Banana)
Invalid content
Error: 400 Bad Request
Solution: Verify content format and parameters
All scripts accept parameters that match 2slides API. Allowed values are defined in scripts/api_constants.py and enforced where applicable.
| Script | Key parameters | Allowed values (see script --help or api_constants.py) |
|---|---|---|
generate_slides.py |
--language |
Auto, English, Spanish, Arabic, Portuguese, Indonesian, Japanese, Russian, Hindi, French, German, Greek, Vietnamese, Turkish, Polish, Italian, Korean, Simplified Chinese, Traditional Chinese, Thai |
--mode |
sync, async | |
--aspect-ratio |
1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 | |
--resolution |
1K, 2K, 4K | |
--content-detail |
concise, standard | |
create_pdf_slides.py |
Same as above + --design-style / --design-spec (free text) |
|
generate_narration.py |
--mode |
single, multi |
--voice |
30 voices (Puck, Aoede, Charon, …); use --list-voices |
|
--content-mode |
concise, standard | |
Multi: --speaker1-name, --speaker2-name, --speaker1-voice, --speaker2-voice |
||
search_themes.py |
--query (required), --limit (1–100) |
|
get_job_status.py |
--job-id (required) |
|
download_slides_pages_voices.py |
--job-id (required), --output (path) |
See api-reference.md for:
See pricing.md for:
Content Structure:
Theme Selection:
Reference Images:
Document Processing:
SLIDES_2SLIDES_API_KEY environment variable. Never hard-code the key in commands, commit it, or echo it back to the user. The scripts send it as a bearer/apikey value to https://2slides.com over HTTPS only.@youtube-full — fetch source material (transcripts) that can be summarized into a deck with this skill.