| name | gamma-migration-deep-dive |
| description | Deep dive into migrating to Gamma from other presentation platforms.
Use when migrating from PowerPoint, Google Slides, Canva,
or other presentation tools to Gamma.
Trigger with phrases like "gamma migration", "migrate to gamma",
"gamma import", "gamma from powerpoint", "gamma from google slides".
|
| allowed-tools | Read, Write, Edit, Bash(node:*) |
| version | 1.13.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","gamma","migration"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Gamma Migration Deep Dive
Current State
!npm list 2>/dev/null | head -10
Overview
Migrate presentation workflows from PowerPoint, Google Slides, Canva, or other platforms to Gamma's AI-powered generation. Gamma takes a fundamentally different approach -- instead of manually placing slides, you provide content and Gamma generates the presentation. Migration is about converting your content pipeline, not your slide files.
Prerequisites
- Gamma API access (Pro+ plan)
- Source presentations accessible for content extraction
- Node.js 18+ for migration scripts
- Completed
gamma-install-auth setup
Migration Approaches
| Approach | When to Use | Effort |
|---|
| Content extraction + regeneration | Lots of text-heavy presentations | Medium |
| Import via Gamma UI | One-off migration of key decks | Low |
| Template recreation | Repeatable presentation formats | Medium |
| Parallel operation | Gradual transition over time | Low |
Key insight: You don't "import" slides into Gamma. You extract content from old presentations and regenerate them using Gamma's AI. This often produces better results than the originals.
Instructions
Step 1: Inventory Source Presentations
import { readdir, stat } from "node:fs/promises";
import { join, extname } from "node:path";
interface PresentationInfo {
path: string;
format: string;
sizeMB: number;
lastModified: Date;
}
async function (): <[]> {
entries = (dir, { : });
: [] = [];
( entry entries) {
ext = (entry).();
([, , , , ].(ext)) {
fullPath = (dir, entry);
info = (fullPath);
presentations.({
: fullPath,
: ext,
: info. / ( * ),
: info.,
});
}
}
.();
byFormat = presentations.( {
acc[p.] = (acc[p.] || ) + ;
acc;
}, {} <, >);
.(, byFormat);
presentations;
}