{"id":"95cd47db-d7db-44d1-bc60-21640d898bcc","shortId":"qDVmhj","kind":"skill","title":"google-slides","tagline":"Read and write Google Slides presentations - get text, find presentations, create presentations, add slides,\nreplace text, and manage slide content. Use when user asks to: read a presentation, create slides, find slides,\nadd a slide, replace text in a presentation, or manage pres","description":"# Google Slides\n\nLightweight Google Slides integration with standalone OAuth authentication. No MCP server required. Full read/write access.\n\n> **Requires Google Workspace account.** Personal Gmail accounts are not supported.\n\n## First-Time Setup\n\nAuthenticate with Google (opens browser):\n```bash\npython scripts/auth.py login\n```\n\nCheck authentication status:\n```bash\npython scripts/auth.py status\n```\n\nLogout when needed:\n```bash\npython scripts/auth.py logout\n```\n\n## Read Commands\n\nAll operations via `scripts/slides.py`. Auto-authenticates on first use if not logged in.\n\n```bash\n# Get all text content from a presentation\npython scripts/slides.py get-text \"1abc123xyz789\"\npython scripts/slides.py get-text \"https://docs.google.com/presentation/d/1abc123xyz789/edit\"\n\n# Find presentations by search query\npython scripts/slides.py find \"quarterly report\"\npython scripts/slides.py find \"project proposal\" --limit 5\n\n# Get presentation metadata (title, slide count, slide object IDs)\npython scripts/slides.py get-metadata \"1abc123xyz789\"\n```\n\n## Write Commands\n\n```bash\n# Create a new empty presentation\npython scripts/slides.py create \"Q4 Sales Report\"\n\n# Add a blank slide to the end\npython scripts/slides.py add-slide \"1abc123xyz789\"\n\n# Add a slide with a specific layout\npython scripts/slides.py add-slide \"1abc123xyz789\" --layout TITLE_AND_BODY\n\n# Add a slide at a specific position (0-based index)\npython scripts/slides.py add-slide \"1abc123xyz789\" --layout TITLE --at 0\n\n# Find and replace text across all slides\npython scripts/slides.py replace-text \"1abc123xyz789\" \"old text\" \"new text\"\npython scripts/slides.py replace-text \"1abc123xyz789\" \"Draft\" \"Final\" --match-case\n\n# Delete a slide by object ID (use get-metadata to find IDs)\npython scripts/slides.py delete-slide \"1abc123xyz789\" \"g123abc456\"\n\n# Batch update (advanced - for formatting, inserting shapes, images, etc.)\npython scripts/slides.py batch-update \"1abc123xyz789\" '[{\"replaceAllText\":{\"containsText\":{\"text\":\"foo\"},\"replaceText\":\"bar\"}}]'\n```\n\n## Slide Layouts\n\nAvailable layouts for `add-slide --layout`:\n- `BLANK` - Empty slide (default)\n- `TITLE` - Title slide\n- `TITLE_AND_BODY` - Title with body text\n- `TITLE_AND_TWO_COLUMNS` - Title with two text columns\n- `TITLE_ONLY` - Title bar only\n- `SECTION_HEADER` - Section divider\n- `ONE_COLUMN_TEXT` - Single column text\n- `MAIN_POINT` - Main point highlight\n- `BIG_NUMBER` - Large number display\n\n## Presentation ID Format\n\nYou can use either:\n- Direct presentation ID: `1abc123xyz789`\n- Full Google Slides URL: `https://docs.google.com/presentation/d/1abc123xyz789/edit`\n\nThe scripts automatically extract the ID from URLs.\n\n## Output Format\n\n### get-text\nReturns extracted text from all slides, including:\n- Presentation title\n- Text from shapes/text boxes on each slide\n- Table data with cell contents\n\n### find\nReturns list of matching presentations:\n```json\n{\n  \"presentations\": [\n    {\"id\": \"1abc...\", \"name\": \"Q4 Report\", \"modifiedTime\": \"2024-01-15T...\"}\n  ],\n  \"nextPageToken\": \"...\"\n}\n```\n\n### get-metadata\nReturns presentation details:\n```json\n{\n  \"presentationId\": \"1abc...\",\n  \"title\": \"My Presentation\",\n  \"slideCount\": 15,\n  \"pageSize\": {\"width\": {...}, \"height\": {...}},\n  \"hasMasters\": true,\n  \"hasLayouts\": true\n}\n```\n\n## Token Management\n\nTokens stored securely using the system keyring:\n- **macOS**: Keychain\n- **Windows**: Windows Credential Locker\n- **Linux**: Secret Service API (GNOME Keyring, KDE Wallet, etc.)\n\nService name: `google-slides-skill-oauth`\n\nAutomatically refreshes expired tokens using Google's cloud function.","tags":["google","slides","skills","sanjay3290","agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research"],"capabilities":["skill","source-sanjay3290","skill-google-slides","topic-agent-skills","topic-ai-skills","topic-atlassian","topic-azure-devops","topic-claude-code","topic-claude-skills","topic-confluence","topic-deep-research","topic-elevenlabs","topic-gmail","topic-google-calendar","topic-google-drive"],"categories":["ai-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sanjay3290/ai-skills/google-slides","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sanjay3290/ai-skills","source_repo":"https://github.com/sanjay3290/ai-skills","install_from":"skills.sh"}},"qualityScore":"0.574","qualityRationale":"deterministic score 0.57 from registry signals: · indexed on github topic:agent-skills · 248 github stars · SKILL.md body (3,576 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:54:10.801Z","embedding":null,"createdAt":"2026-04-18T22:05:17.066Z","updatedAt":"2026-05-02T18:54:10.801Z","lastSeenAt":"2026-05-02T18:54:10.801Z","tsv":"'-01':428 '-15':429 '/presentation/d/1abc123xyz789/edit':138,378 '0':222,234 '15':445 '1abc':422,440 '1abc123xyz789':130,170,197,210,230,247,257,281,297,371 '2024':427 '5':155 'access':63 'account':67,70 'across':239 'add':16,36,185,195,198,208,215,228,310 'add-slid':194,207,227,309 'advanc':285 'api':471 'ask':27 'authent':56,78,88,109 'auto':108 'auto-authent':107 'automat':381,484 'avail':306 'bar':303,339 'base':223 'bash':83,90,97,117,173 'batch':283,295 'batch-upd':294 'big':356 'blank':187,313 'bodi':214,322,325 'box':404 'browser':82 'case':262 'cell':411 'check':87 'cloud':491 'column':330,335,346,349 'command':102,172 'containstext':299 'content':23,121,412 'count':161 'creat':14,32,174,181 'credenti':466 'data':409 'default':316 'delet':263,279 'delete-slid':278 'detail':437 'direct':368 'display':360 'divid':344 'docs.google.com':137,377 'docs.google.com/presentation/d/1abc123xyz789/edit':136,376 'draft':258 'either':367 'empti':177,314 'end':191 'etc':291,476 'expir':486 'extract':382,393 'final':259 'find':12,34,139,146,151,235,274,413 'first':75,111 'first-tim':74 'foo':301 'format':287,363,388 'full':61,372 'function':492 'g123abc456':282 'get':10,118,128,134,156,168,271,390,433 'get-metadata':167,270,432 'get-text':127,133,389 'gmail':69 'gnome':472 'googl':2,7,47,50,65,80,373,480,489 'google-slid':1 'google-slides-skill-oauth':479 'haslayout':451 'hasmast':449 'header':342 'height':448 'highlight':355 'id':164,268,275,362,370,384,421 'imag':290 'includ':398 'index':224 'insert':288 'integr':52 'json':419,438 'kde':474 'keychain':463 'keyr':461,473 'larg':358 'layout':204,211,231,305,307,312 'lightweight':49 'limit':154 'linux':468 'list':415 'locker':467 'log':115 'login':86 'logout':94,100 'maco':462 'main':351,353 'manag':21,45,454 'match':261,417 'match-cas':260 'mcp':58 'metadata':158,169,272,434 'modifiedtim':426 'name':423,478 'need':96 'new':176,250 'nextpagetoken':431 'number':357,359 'oauth':55,483 'object':163,267 'old':248 'one':345 'open':81 'oper':104 'output':387 'pages':446 'person':68 'point':352,354 'posit':221 'pres':46 'present':9,13,15,31,43,124,140,157,178,361,369,399,418,420,436,443 'presentationid':439 'project':152 'propos':153 'python':84,91,98,125,131,144,149,165,179,192,205,225,242,252,276,292 'q4':182,424 'quarter':147 'queri':143 'read':4,29,101 'read/write':62 'refresh':485 'replac':18,39,237,245,255 'replace-text':244,254 'replacealltext':298 'replacetext':302 'report':148,184,425 'requir':60,64 'return':392,414,435 'sale':183 'script':380 'scripts/auth.py':85,92,99 'scripts/slides.py':106,126,132,145,150,166,180,193,206,226,243,253,277,293 'search':142 'secret':469 'section':341,343 'secur':457 'server':59 'servic':470,477 'setup':77 'shape':289 'shapes/text':403 'singl':348 'skill':482 'skill-google-slides' 'slide':3,8,17,22,33,35,38,48,51,160,162,188,196,200,209,217,229,241,265,280,304,311,315,319,374,397,407,481 'slidecount':444 'source-sanjay3290' 'specif':203,220 'standalon':54 'status':89,93 'store':456 'support':73 'system':460 'tabl':408 'text':11,19,40,120,129,135,238,246,249,251,256,300,326,334,347,350,391,394,401 'time':76 'titl':159,212,232,317,318,320,323,327,331,336,338,400,441 'token':453,455,487 'topic-agent-skills' 'topic-ai-skills' 'topic-atlassian' 'topic-azure-devops' 'topic-claude-code' 'topic-claude-skills' 'topic-confluence' 'topic-deep-research' 'topic-elevenlabs' 'topic-gmail' 'topic-google-calendar' 'topic-google-drive' 'true':450,452 'two':329,333 'updat':284,296 'url':375,386 'use':24,112,269,366,458,488 'user':26 'via':105 'wallet':475 'width':447 'window':464,465 'workspac':66 'write':6,171","prices":[{"id":"da792594-ff1f-4011-ac88-839ecade431b","listingId":"95cd47db-d7db-44d1-bc60-21640d898bcc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sanjay3290","category":"ai-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:05:17.066Z"}],"sources":[{"listingId":"95cd47db-d7db-44d1-bc60-21640d898bcc","source":"github","sourceId":"sanjay3290/ai-skills/google-slides","sourceUrl":"https://github.com/sanjay3290/ai-skills/tree/main/skills/google-slides","isPrimary":false,"firstSeenAt":"2026-04-18T22:05:17.066Z","lastSeenAt":"2026-05-02T18:54:10.801Z"}],"details":{"listingId":"95cd47db-d7db-44d1-bc60-21640d898bcc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sanjay3290","slug":"google-slides","github":{"repo":"sanjay3290/ai-skills","stars":248,"topics":["agent-skills","ai-skills","atlassian","azure-devops","claude-code","claude-skills","confluence","deep-research","elevenlabs","gmail","google-calendar","google-drive","google-workspace","imagen","jira","mcp","mysql","notebooklm","postgresql","text-to-speech"],"license":"apache-2.0","html_url":"https://github.com/sanjay3290/ai-skills","pushed_at":"2026-04-13T14:16:19Z","description":"Collection of agent skills for AI coding assistants","skill_md_sha":"b8eaac1ad54714ae635b8ba047c65b404339bcad","skill_md_path":"skills/google-slides/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sanjay3290/ai-skills/tree/main/skills/google-slides"},"layout":"multi","source":"github","category":"ai-skills","frontmatter":{"name":"google-slides","license":"Apache-2.0","description":"Read and write Google Slides presentations - get text, find presentations, create presentations, add slides,\nreplace text, and manage slide content. Use when user asks to: read a presentation, create slides, find slides,\nadd a slide, replace text in a presentation, or manage presentation content. Lightweight integration with\nstandalone OAuth authentication supporting full read/write access."},"skills_sh_url":"https://skills.sh/sanjay3290/ai-skills/google-slides"},"updatedAt":"2026-05-02T18:54:10.801Z"}}