Ai-skills google-slides
install
source · Clone the upstream repo
git clone https://github.com/sanjay3290/ai-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sanjay3290/ai-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/google-slides" ~/.claude/skills/sanjay3290-ai-skills-google-slides && rm -rf "$T"
manifest:
skills/google-slides/SKILL.mdsource content
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:
- Empty slide (default)BLANK
- Title slideTITLE
- Title with body textTITLE_AND_BODY
- Title with two text columnsTITLE_AND_TWO_COLUMNS
- Title bar onlyTITLE_ONLY
- Section dividerSECTION_HEADER
- Single column textONE_COLUMN_TEXT
- Main point highlightMAIN_POINT
- Large number displayBIG_NUMBER
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.