Create and edit Google Slides presentations. Add or delete slides, insert text, shapes, and images. Use when asked to build a deck, create a slideshow, update a Google presentation, or edit slides.
94
Quality
94%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Full argument details and examples for all google-slides commands.
Verify configuration and connectivity.
$SKILL_DIR/scripts/google-slides.py checkThis validates:
Store OAuth 2.0 client credentials for custom OAuth flow.
$SKILL_DIR/scripts/google-slides.py auth setup \
--client-id YOUR_CLIENT_ID \
--client-secret YOUR_CLIENT_SECRETCredentials are saved to ~/.config/agent-skills/google-slides.yaml.
Options:
--client-id - OAuth 2.0 client ID (required)--client-secret - OAuth 2.0 client secret (required)Clear stored OAuth token. The next command that needs authentication will trigger re-authentication automatically.
$SKILL_DIR/scripts/google-slides.py auth resetUse this when you encounter scope or authentication errors.
Show current OAuth token information without making API calls.
$SKILL_DIR/scripts/google-slides.py auth statusDisplays: whether a token is stored, granted scopes, refresh token presence, token expiry, and client ID.
Create a new Google Slides presentation.
$SKILL_DIR/scripts/google-slides.py presentations create --title "My Presentation"Options:
--title - Presentation title (required)Example:
$SKILL_DIR/scripts/google-slides.py presentations create --title "Q4 Review"
# Output:
# ✓ Presentation created successfully
# Title: Q4 Review
# Presentation ID: 1abc...xyz
# Slides: 1
# URL: https://docs.google.com/presentation/d/1abc...xyz/editGet presentation metadata and structure.
$SKILL_DIR/scripts/google-slides.py presentations get PRESENTATION_IDArguments:
presentation_id - The Google Slides presentation IDExample:
$SKILL_DIR/scripts/google-slides.py presentations get 1abc...xyz
# Output:
# Title: Q4 Review
# Presentation ID: 1abc...xyz
# Slides: 5
# URL: https://docs.google.com/presentation/d/1abc...xyz/edit
#
# Slides:
# Slide 1:
# ID: slide_id_1
# Layout: TITLE
# Elements: 2 (2 text, 0 shapes, 0 images, 0 other)
# Slide 2:
# ID: slide_id_2
# Layout: TITLE_AND_BODY
# Elements: 3 (2 text, 1 shapes, 0 images, 0 other)Read presentation text content from all slides, or export as PDF.
$SKILL_DIR/scripts/google-slides.py presentations read PRESENTATION_IDArguments:
presentation_id - The Google Slides presentation IDOptions:
--format - Output format: text (default) or pdf--output, -o - Output file path (used with pdf format)Example:
# Read as text (default)
$SKILL_DIR/scripts/google-slides.py presentations read 1abc...xyz
# Export as PDF
$SKILL_DIR/scripts/google-slides.py presentations read 1abc...xyz --format pdf --output presentation.pdf
# Output (text format):
# --- Slide 1 ---
# Welcome to Our Product
# An introduction to key features
#
# --- Slide 2 ---
# Key Metrics
# Revenue: $1.2M
# Users: 50,000
#
# --- Slide 3 ---
# | Quarter | Revenue | Growth |
# | --- | --- | --- |
# | Q1 | $250K | 10% |
# | Q2 | $300K | 20% |Note: Text format extracts text from all shapes, text boxes, and tables on each slide (tables formatted as markdown). PDF export uses Google's native Drive API export, which requires the drive.readonly scope.
Add a new slide to a presentation.
$SKILL_DIR/scripts/google-slides.py slides create PRESENTATION_ID --layout BLANKArguments:
presentation_id - The Google Slides presentation IDOptions:
--layout - Slide layout (default: BLANK)
BLANK - Empty slideTITLE - Title slideTITLE_AND_BODY - Title and body textTITLE_ONLY - Title onlySECTION_HEADER - Section headerSECTION_TITLE_AND_DESCRIPTION - Section with descriptionONE_COLUMN_TEXT - Single column of textMAIN_POINT - Large centered textBIG_NUMBER - Large number display--index - Insert at specific position (0-based, optional)Example:
# Add blank slide at the end
$SKILL_DIR/scripts/google-slides.py slides create 1abc...xyz --layout BLANK
# Add title slide at position 0
$SKILL_DIR/scripts/google-slides.py slides create 1abc...xyz --layout TITLE --index 0
# Output:
# ✓ Slide created successfully
# Slide ID: slide_abc123
# Layout: TITLESee layouts-guide.md for layout details.
Delete a slide from a presentation.
$SKILL_DIR/scripts/google-slides.py slides delete PRESENTATION_ID --slide-id SLIDE_IDArguments:
presentation_id - The Google Slides presentation IDOptions:
--slide-id - Slide object ID to delete (required)Example:
# Get slide IDs first
$SKILL_DIR/scripts/google-slides.py presentations get 1abc...xyz
# Delete a slide
$SKILL_DIR/scripts/google-slides.py slides delete 1abc...xyz --slide-id slide_abc123
# Output:
# ✓ Slide deleted successfullyWarning: Cannot delete the last remaining slide in a presentation.
Insert text into a slide.
$SKILL_DIR/scripts/google-slides.py text insert PRESENTATION_ID \
--slide-id SLIDE_ID \
--text "Hello World"Arguments:
presentation_id - The Google Slides presentation IDOptions:
--slide-id - Slide object ID (required)--text - Text to insert (required)--x - X position in points (default: 100)--y - Y position in points (default: 100)--width - Text box width in points (default: 400)--height - Text box height in points (default: 100)Example:
# Insert text at default position
$SKILL_DIR/scripts/google-slides.py text insert 1abc...xyz \
--slide-id slide_abc123 \
--text "Hello World"
# Insert text at custom position
$SKILL_DIR/scripts/google-slides.py text insert 1abc...xyz \
--slide-id slide_abc123 \
--text "Q4 Results" \
--x 50 --y 50 --width 500 --height 80
# Output:
# ✓ Text inserted successfully
# Text: Q4 Results
# Position: (50.0, 50.0) points
# Size: 500.0 x 80.0 pointsCreate a shape on a slide.
$SKILL_DIR/scripts/google-slides.py shapes create PRESENTATION_ID \
--slide-id SLIDE_ID \
--shape-type RECTANGLEArguments:
presentation_id - The Google Slides presentation IDOptions:
--slide-id - Slide object ID (required)--shape-type - Shape type (required)
RECTANGLE, ELLIPSE, TRIANGLE, PENTAGON, HEXAGONSTAR_5, STAR_8, STAR_24, STAR_32CLOUD, HEART, LIGHTNING_BOLT, MOON, SUNARROW_NORTH, ARROW_EAST, ARROW_SOUTH, ARROW_WEST--x - X position in points (default: 100)--y - Y position in points (default: 100)--width - Shape width in points (default: 200)--height - Shape height in points (default: 200)Example:
# Create rectangle
$SKILL_DIR/scripts/google-slides.py shapes create 1abc...xyz \
--slide-id slide_abc123 \
--shape-type RECTANGLE
# Create star with custom size
$SKILL_DIR/scripts/google-slides.py shapes create 1abc...xyz \
--slide-id slide_abc123 \
--shape-type STAR_5 \
--x 300 --y 200 --width 150 --height 150
# Output:
# ✓ Shape created successfully
# Type: STAR_5
# Position: (300.0, 200.0) points
# Size: 150.0 x 150.0 pointsSee shapes-guide.md for all shape types.
Insert an image into a slide.
$SKILL_DIR/scripts/google-slides.py images create PRESENTATION_ID \
--slide-id SLIDE_ID \
--image-url "https://example.com/image.png"Arguments:
presentation_id - The Google Slides presentation IDOptions:
--slide-id - Slide object ID (required)--image-url - Image URL (required, must be publicly accessible)--x - X position in points (default: 100)--y - Y position in points (default: 100)--width - Image width in points (default: 300)--height - Image height in points (default: 200)Example:
$SKILL_DIR/scripts/google-slides.py images create 1abc...xyz \
--slide-id slide_abc123 \
--image-url "https://example.com/chart.png" \
--x 50 --y 150 --width 400 --height 300
# Output:
# ✓ Image created successfully
# URL: https://example.com/chart.png
# Position: (50.0, 150.0) points
# Size: 400.0 x 300.0 pointsNote: The image URL must be publicly accessible or authenticated with Google.
Install with Tessl CLI
npx tessl i odyssey4me/google-slides