Lightweight Google Slides integration with standalone OAuth authentication. No MCP server required. Full read/write access.
The canonical home for this skill is google-slides-automation in popey/claude-code-skills
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.
Authenticate with Google (opens browser):
python scripts/auth.py loginCheck authentication status:
python scripts/auth.py statusLogout when needed:
python scripts/auth.py logoutAll operations via scripts/slides.py. Auto-authenticates on first use if not logged in.
# 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"# 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"}}]'Available layouts for add-slide --layout:
BLANK - Empty slide (default)TITLE - Title slideTITLE_AND_BODY - Title with body textTITLE_AND_TWO_COLUMNS - Title with two text columnsTITLE_ONLY - Title bar onlySECTION_HEADER - Section dividerONE_COLUMN_TEXT - Single column textMAIN_POINT - Main point highlightBIG_NUMBER - Large number displayYou can use either:
1abc123xyz789https://docs.google.com/presentation/d/1abc123xyz789/editThe scripts automatically extract the ID from URLs.
Returns extracted text from all slides, including:
Returns list of matching presentations:
{
"presentations": [
{"id": "1abc...", "name": "Q4 Report", "modifiedTime": "2024-01-15T..."}
],
"nextPageToken": "..."
}Returns presentation details:
{
"presentationId": "1abc...",
"title": "My Presentation",
"slideCount": 15,
"pageSize": {"width": {...}, "height": {...}},
"hasMasters": true,
"hasLayouts": true
}Tokens stored securely using the system keyring:
Service name: google-slides-skill-oauth
Automatically refreshes expired tokens using Google's cloud function.
a5a6601
Canonical home
since Sep 26, 2026
Also appears in
since Sep 26, 2026
since Sep 26, 2026
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.