AI-powered presentation generation via the 2slides API — create slides from text, match a reference image style, summarize documents into decks, add AI voice narration, and export pages/audio. Use for any "make slides", "create a deck", or "slides from this document" request.
73
—
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
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_KEYread -r -s SLIDES_2SLIDES_API_KEY
export SLIDES_2SLIDES_API_KEYpython -m pip install -r requirements.txtCredit 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 2Step 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 asyncStep 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: conciseNote: 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 2Step 2: Generate Slides
Use the create_pdf_slides.py script:
# 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 standardOptional 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: standardStep 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 stepsStep 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-voicesStep 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
# Multi-speaker mode
python scripts/generate_narration.py --job-id "abc-123-def-456" --multi-speakerParameters (aligned with 2slides API):
--job-id: Job ID (required, UUID for Nano Banana)--voice: Voice name (default: Puck); use --list-voices for all 30--language: Narration language (default: Auto)--multi-speaker: Enable multi-speaker mode--list-voices: Print the supported voices without calling the APIStep 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 50Theme 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.pyDifferent 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 variableRATE_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/apiINVALID_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 parametersAll 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 | --voice | 30 voices (Puck, Aoede, Charon, …); use --list-voices |
--language | Auto, English, Spanish, Arabic, Portuguese, Indonesian, Japanese, Russian, Hindi, French, German, Vietnamese, Turkish, Polish, Italian, Korean, Simplified Chinese, Traditional Chinese | |
--multi-speaker | enabled when present | |
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.6e69f00
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.