Agent Skills: Google Slides

|

UncategorizedID: sanjay3290/ai-skills/google-slides

Install this agent skill to your local

pnpm dlx add-skill https://github.com/sanjay3290/ai-skills/tree/HEAD/skills/google-slides

Skill Files

Browse the full folder contents for google-slides.

Download Skill

Loading file tree…

skills/google-slides/SKILL.md

Skill Metadata

Name
google-slides
Description
|

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):

python scripts/auth.py login

Check authentication status:

python scripts/auth.py status

Logout when needed:

python scripts/auth.py logout

Read Commands

All 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"

Write Commands

# 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:

{
  "presentations": [
    {"id": "1abc...", "name": "Q4 Report", "modifiedTime": "2024-01-15T..."}
  ],
  "nextPageToken": "..."
}

get-metadata

Returns presentation details:

{
  "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.