porteden slides
Use porteden slides for Google Slides content operations and file management. Use -jc flags for AI-optimized output.
If porteden is not installed: brew install porteden/tap/porteden (or go install github.com/porteden/cli/cmd/porteden@latest).
Setup (once)
- Browser login (recommended):
porteden auth login— opens browser, credentials stored in a local credentials file (~/.config/porteden/credentials.json, 0600) - Direct token:
porteden auth login --token <key>— stored in a local credentials file (~/.config/porteden/credentials.json, 0600) - Verify:
porteden auth status - If
PE_API_KEYis set in the environment, the CLI uses it automatically (no login needed). - Slides access requires a token with
driveAccessEnabled: trueand a connected Google account with Drive scopes.
Slides commands (porteden slides)
Content
- Deck metadata (slide index + first-line titles):
porteden slides info google:DECKID -jc - Read deck text + speaker notes:
porteden slides read google:DECKID - Read structured (full Google Slides API JSON):
porteden slides read google:DECKID --format structured -j - Create new blank deck:
porteden slides create --name "Q1 Review" - Create in folder:
porteden slides create --name "Kickoff" --folder google:0B7_FOLDER
File management
- Get export links (pptx, pdf, txt):
porteden slides download google:DECKID -jc - Share with user:
porteden slides share google:DECKID --type user --role reader --email user@example.com - Share publicly:
porteden slides share google:DECKID --type anyone --role reader - List permissions:
porteden slides permissions google:DECKID -jc - Rename:
porteden slides rename google:DECKID --name "Q1 Review (final)" - Copy (duplicate):
porteden slides copy google:DECKID --name "Working copy"(optional--folder google:0B7_FOLDER) - Delete (trash):
porteden slides delete google:DECKID -y
Reading slides — text vs. structured
--format text(default): slide bodies joined with\n\n---\n\nseparators; speaker notes appended under each slide under a[Speaker notes]header. Cheap to call, agent-friendly.--format structured: raw Google Slides API JSON — slide object IDs, page elements, layouts, masters, character ranges. Use only when you need positions/IDs to feed back into another tool. The payload can be many KB even for small decks.
Notes
- Credentials persist in a local credentials file (~/.config/porteden/credentials.json, 0600 permissions) after login. No repeated auth needed.
- Set
PE_PROFILE=workto avoid repeating--profile. -jcis shorthand for--json --compact: strips noise, limits fields, reduces tokens for AI agents.- File IDs are always provider-prefixed (e.g.,
google:1BxiMVs0XRA5...). Pass them as-is. porteden slides infolists slides by index + the first non-empty text element on each slide as a working title. Use it to plan a content fetch or surface a navigable slide list.porteden slides read --format textis the default and the cheapest path; only ask forstructuredwhen you genuinely need slide IDs or page elements.- No edit endpoint today. Slides cannot be modified through the CLI —
presentations.batchUpdateis not exposed. Use the Slides UI for changes. - Layouts, masters, and themes are only accessible via
--format structured. Text mode strips them to keep the response useful. porteden slides createproduces a blank deck — Google's Drive API doesn't support importing text content into Slides, so passing--content/--content-filereturnsUNSUPPORTED_IMPORT(400) with a clear server message. Create the deck blank, then add content via the Slides UI (noslides editendpoint exists today).porteden slides downloadreturns URLs only — no binary content is streamed. URLs are short-lived (~1 hour) and unauthenticated; re-fetch on every download.accessInfoin responses describes active token restrictions.deletemoves to trash (reversible). Files can be restored from Google Drive trash.- Confirm before sharing or deleting.
- Environment variables:
PE_API_KEY,PE_PROFILE,PE_FORMAT,PE_COLOR,PE_VERBOSE.