hermes - 💡(How to fix) Fix Feature: Add Google Slides support to google-workspace skill [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#15600Fetched 2026-04-26 05:26:19
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Participants
Timeline (top)
labeled ×4

The google-workspace skill currently covers Gmail, Calendar, Drive, Contacts, Sheets, and Docs, but lacks Google Slides support.

Root Cause

The google-workspace skill currently covers Gmail, Calendar, Drive, Contacts, Sheets, and Docs, but lacks Google Slides support.

Fix Action

Workaround

Currently using a user-level skill at ~/.hermes/skills/productivity/google-slides/ that reuses the same ~/.hermes/google_token.json credentials. Works fine but would be cleaner as part of the built-in skill.

RAW_BUFFERClick to expand / collapse

Summary

The google-workspace skill currently covers Gmail, Calendar, Drive, Contacts, Sheets, and Docs, but lacks Google Slides support.

Proposed Changes

1. scripts/setup.py

Add https://www.googleapis.com/auth/presentations to the SCOPES list.

2. scripts/google_api.py

Add a slides subcommand with:

  • slides get PRESENTATION_ID — extract all text from all slides
  • slides create --title "Title" — create a new presentation
  • slides update PRESENTATION_ID --title-text "Title" --text "Body" — add a slide with title + body text boxes

3. SKILL.md

  • Add Slides to description, tags, usage section, and output format docs

Implementation Reference

I built a standalone user-level skill with working implementations of all three commands. The key API calls:

  • service.presentations().get() for reading
  • service.presentations().create() for creating
  • service.presentations().batchUpdate() with createSlide + createShape + insertText requests for adding slides

The text extraction walks slides[].pageElements[].shape.text.textElements[].textRun.content.

Workaround

Currently using a user-level skill at ~/.hermes/skills/productivity/google-slides/ that reuses the same ~/.hermes/google_token.json credentials. Works fine but would be cleaner as part of the built-in skill.

Additional Request

A docs create command would also be useful (currently the skill only has docs get and docs update which appends). Creating native Google Docs requires service.documents().create() which is not exposed via the CLI.

extent analysis

TL;DR

Add Google Slides support to the google-workspace skill by modifying the scripts/setup.py and scripts/google_api.py files and updating the SKILL.md documentation.

Guidance

  • Modify the SCOPES list in scripts/setup.py to include the https://www.googleapis.com/auth/presentations scope to enable Google Slides access.
  • Implement the slides subcommand in scripts/google_api.py with get, create, and update functionality using the Google Slides API.
  • Update the SKILL.md file to reflect the added Slides support, including description, tags, usage, and output format documentation.
  • Consider adding a docs create command to the skill, utilizing the service.documents().create() API call.

Example

# Example slides subcommand implementation in scripts/google_api.py
import argparse

def slides_get(service, presentation_id):
    # Use service.presentations().get() to read the presentation
    pass

def slides_create(service, title):
    # Use service.presentations().create() to create a new presentation
    pass

def slides_update(service, presentation_id, title_text, text):
    # Use service.presentations().batchUpdate() to add a slide
    pass

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command')

get_parser = subparsers.add_parser('get')
get_parser.add_argument('presentation_id')

create_parser = subparsers.add_parser('create')
create_parser.add_argument('--title')

update_parser = subparsers.add_parser('update')
update_parser.add_argument('presentation_id')
update_parser.add_argument('--title-text')
update_parser.add_argument('--text')

args = parser.parse_args()

if args.command == 'get':
    slides_get(service, args.presentation_id)
elif args.command == 'create':
    slides_create(service, args.title)
elif args.command == 'update

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Feature: Add Google Slides support to google-workspace skill [1 participants]