google-slides — Claude Code skill: what it does, how to install
A skill for searching, reading, creating, and editing Google Slides presentations directly from agent commands. Uses Python scripts with standalone OAuth.
npx skills add sanjay3290/ai-skills --skill google-slides -a claude-codeWhat google-slides does
The integration operates through scripts/slides.py and bypasses the need for an MCP server. It inspects metadata, extracts text from shapes and tables, searches Drive presentations by query, creates blank files, and inserts slides using layouts like TITLE_AND_BODY. For content edits, it supports global find-and-replace across all slides and slide deletion by object ID. The scripts accept either raw presentation IDs or full Google Slides edit URLs.
First-time setup authenticates via scripts/auth.py login in the browser. Credentials are saved directly to system keyrings, including macOS Keychain, Windows Credential Locker, and Linux Secret Service API under the service name google-slides-skill-oauth. Expired tokens refresh automatically via Google cloud functions.
Make sure your organization uses Google Workspace. Personal Gmail accounts are completely unsupported and will fail during authentication.
What it helps with
- extract text and table data from existing Google Slides decks
- find presentations across Google Drive using search terms
- create new decks and insert slides with predefined layouts
- perform batch text replacement across all presentation slides
- remove individual slides using their object IDs
Example prompts for the agent
- Find presentations matching "project proposal" with a limit of 5
- Create a new presentation named "Q4 Sales Report" and add a TITLE slide at index 0
- Replace text "Draft" with "Final" matching case in presentation 1abc123xyz789
How to install google-slides
1Skills CLI (Vercel)
npx skills add sanjay3290/ai-skills --skill google-slides -a claude-code2Manually: put the files in place
~/.claude/skills/google-slides/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/google-slides/
1Skills CLI (Vercel)
npx skills add sanjay3290/ai-skills --skill google-slides -a codex2Manually: put the files in place
.agents/skills/google-slides/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add sanjay3290/ai-skills --skill google-slides -a cursor2Manually: put the files in place
.cursor/skills/google-slides/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install sanjay3290/ai-skills google-slides2Manually: put the files in place
.github/skills/google-slides/SKILL.md1Skills CLI (Vercel)
npx skills add sanjay3290/ai-skills --skill google-slides -a gemini-cli2Platform CLI
gemini skills install https://github.com/sanjay3290/ai-skills --path skills/google-slidesManually: put the files in place
.devin/skills/google-slides/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add sanjay3290/ai-skills --skill google-slides -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about google-slides
How to install google-slides in Claude Code?
Run npx skills add sanjay3290/ai-skills --skill google-slides -a claude-code.
What does the google-slides skill do?
It gives your agent commands to read text, search files, create presentations, add slides with specific layouts, and replace text via Google Slides API scripts.
Does google-slides work with personal Gmail accounts?
No. The integration strictly requires a Google Workspace account, and standard personal Gmail accounts will not work.
Source text
SKILL.md · Apache-2.0
---
name: google-slides
description: |
Read and write Google Slides presentations - get text, find presentations, create presentations, add slides,
replace text, and manage slide content. Use when user asks to: read a presentation, create slides, find slides,
add a slide, replace text in a presentation, or manage presentation content. Lightweight integration with
standalone OAuth authentication supporting full read/write access.
license: Apache-2.0
metadata:
author: sanjay3290
version: "1.0"
---
# Google Slides
Lightweight Google Slides integration with standalone OAuth authentication. No MCP server required. Full read/write access.
> **Requires Google Workspace account.** Personal Gmail accounts are not supported.
## First-Time Setup
Authenticate with Google (opens browser):
```bash
python scripts/auth.py login
```
Check authentication status:
```bash
python scripts/auth.py status
```
Logout when needed:
```bash
python scripts/auth.py logout
```
## Read Commands
All operations via `scripts/slides.py`. Auto-authenticates on first use if not logged in.
```bash
# Get all text content from a presentation
python scripts/slides.py get-text "1abc123xyz789"
python scripts/slides.py get-text "https://docs.google.com/presentation/d/1abc123xyz789/edit"
# Find presentations by search query
python scripts/slides.py find "quarterly report"
python scripts/slides.py find "project proposal" --limit 5
# Get presentation metadata (title, slide count, slide object IDs)
python scripts/slides.py get-metadata "1abc123xyz789"
```
## Write Commands
```bash
# Create a new empty presentation
python scripts/slides.py create "Q4 Sales Report"
# Add a blank slide to the end
python scripts/slides.py add-slide "1abc123xyz789"
# Add a slide with a specific layout
python scripts/slides.py add-slide "1abc123xyz789" --layout TITLE_AND_BODY
# Add a slide at a specific position (0-based index)
python scripts/slides.py add-slide "1abc123xyz789" --layout TITLE --at 0
# Find and replace text across all slides
python scripts/slides.py replace-text "1abc123xyz789" "old text" "new text"
python scripts/slides.py replace-text "1abc123xyz789" "Draft" "Final" --match-case
# Delete a slide by object ID (use get-metadata to find IDs)
python scripts/slides.py delete-slide "1abc123xyz789" "g123abc456"
# Batch update (advanced - for formatting, inserting shapes, images, etc.)
python scripts/slides.py batch-update "1abc123xyz789" '[{"replaceAllText":{"containsText":{"text":"foo"},"replaceText":"bar"}}]'
```
## Slide Layouts
Available layouts for `add-slide --layout`:
- `BLANK` - Empty slide (default)
- `TITLE` - Title slide
- `TITLE_AND_BODY` - Title with body text
- `TITLE_AND_TWO_COLUMNS` - Title with two text columns
- `TITLE_ONLY` - Title bar only
- `SECTION_HEADER` - Section divider
- `ONE_COLUMN_TEXT` - Single column text
- `MAIN_POINT` - Main point highlight
- `BIG_NUMBER` - Large number display
## Presentation ID Format
You can use either:
- Direct presentation ID: `1abc123xyz789`
- Full Google Slides URL: `https://docs.google.com/presentation/d/1abc123xyz789/edit`
The scripts automatically extract the ID from URLs.
## Output Format
### get-text
Returns extracted text from all slides, including:
- Presentation title
- Text from shapes/text boxes on each slide
- Table data with cell contents
### find
Returns list of matching presentations:
```json
{
"presentations": [
{"id": "1abc...", "name": "Q4 Report", "modifiedTime": "2024-01-15T..."}
],
"nextPageToken": "..."
}
```
### get-metadata
Returns presentation details:
```json
{
"presentationId": "1abc...",
"title": "My Presentation",
"slideCount": 15,
"pageSize": {"width": {...}, "height": {...}},
"hasMasters": true,
"hasLayouts": true
}
```
## Token Management
Tokens stored securely using the system keyring:
- **macOS**: Keychain
- **Windows**: Windows Credential Locker
- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)
Service name: `google-slides-skill-oauth`
Automatically refreshes expired tokens using Google's cloud function.
© sanjay3290 · Apache-2.0 · sanjay3290/ai-skills