gslides-claudecode
A Python library and CLI for programmatically creating Google Slides presentations from Claude Code projects. Uses service account authentication to append slides to user-owned presentations — no OAuth flows, browser authentication, or user interaction required.
Why gslides-claudecode?
This package solves the automation gap for Google Slides:
- Service account only: No OAuth, no browser flows, works in headless environments
- Append workflow: Works with existing presentations you create and share
- Claude Code integration: Built-in skills and agents for seamless AI-assisted slide generation
- Multiple content types: Text, bullets, images (local files or URLs), tables from CSV data
- Speaker notes: Add context and talking points to every slide
Perfect for automated reporting, progress dashboards, and transforming analysis outputs into stakeholder-ready presentations.
Quick start (Claude Code plugin)
If you use Claude Code, install the plugin and let the bundled setup skill walk you through everything:
/plugin marketplace add jorgebotas/gslides-claudecode
/plugin install gslides-claudecode
Then in Claude Code:
> help me set up google slides
The gslides-setup skill activates, asks which installer you use (uv, pip, conda, poetry, pipx), and walks you through installing the Python package, creating the GCP project, enabling APIs, generating a service account, sharing a deck, and verifying the connection.
For the manual setup (without Claude Code), follow the guide below.
Prerequisites
- Python 3.8+
- Google Cloud Project with Slides and Drive APIs enabled
- uv (recommended) or pip for installation
Setup Guide
1. Create Google Cloud Project and Enable APIs
-
Create a project (or use existing):
- Go to Google Cloud Console
- Click "Select a project" → "New Project"
- Enter project name and click "Create"
- Note your
PROJECT_ID for the next steps
-
Enable Google Slides API:
- Navigate to:
https://console.cloud.google.com/apis/library/slides.googleapis.com?project=<YOUR_PROJECT_ID>
- Click "Enable"
-
Enable Google Drive API:
- Navigate to:
https://console.cloud.google.com/apis/library/drive.googleapis.com?project=<YOUR_PROJECT_ID>
- Click "Enable"
2. Create Service Account
-
Go to Service Accounts:
- Navigate to:
https://console.cloud.google.com/iam-admin/serviceaccounts?project=<YOUR_PROJECT_ID>
- Click "Create Service Account"
-
Configure the account:
- Service account name:
slides-automation (or your preferred name)
- Description:
Service account for Google Slides API access
- Click "Create and Continue"
- Skip role assignment (not needed) and click "Done"
-
Generate and download JSON key:
- Click on your new service account
- Go to "Keys" tab → "Add Key" → "Create new key"
- Select "JSON" format and click "Create"
- Save the downloaded file as
service_account.json in your project directory
3. Install Package
# Recommended: using uv
uv pip install -e .
# Alternative: using pip
pip install -e .
4. Create and Share Presentation
⚠️ Important: Service accounts have zero Google Drive storage quota and cannot create or own files. You must create presentations in your personal Google Drive first, then share them.
-
Create a presentation:
- Go to Google Slides
- Create a new presentation
- Copy the presentation ID from the URL:
https://docs.google.com/presentation/d/{PRESENTATION_ID}/edit
-
Share with service account:
- Click "Share" in the top-right
- Enter the service account email (found in your
service_account.json file, looks like [email protected])
- Set permission to "Editor"
- Click "Send"
5. Verify Setup
# Test the connection
gslides test {PRESENTATION_ID}
Expected success output:
✓ Connected successfully!
Title: My Presentation
Slides: 1
Presentation ID: 1AbCdEfGhIjKlMnOpQrStUvWxYz
Usage
Command Line Interface
The gslides CLI provides six commands for different slide types:
# Test API connection
gslides test {presentation_id}
# Add text slide
gslides text {presentation_id} \
--title "Project Results" \
--body "Our analysis shows a 15% improvement in accuracy over the baseline model." \
--notes "Emphasize the business impact of this improvement"
# Add bulleted list
gslides bullets {presentation_id} \
--title "Key Achievements" \
--bullets "Completed model training,Achieved 94% accuracy,Reduced inference time by 30%" \
--notes "These milestones unlock the next phase of development"