Getting started

slides

orc slides selects a slides backend with --target CONNECTION_ID. Google Workspace is the currently supported backend. The connection ID is a flag.

get returns the presentations.get response; create accepts --title. api get and api update call read and write methods from the pinned Discovery document. batch-requests create validates exactly one Request key per object. schemas list/get inspect methods, Request types, and schemas without a connection.

Reconnect existing Workspace connections to grant Slides scopes. Writes require manage access. --readonly blocks writes; --wrap-untrusted wraps external text. After a timeout, read the presentation before retrying a write.

exports get PRESENTATION_ID --format pdf|pptx --output FILE saves PDF or PowerPoint (Drive export, maximum 10 MB). The drive.file grant covers files created by the app or explicitly opened with it through Picker or a similar app file picker. User ownership alone is insufficient; sharing with the account or reconnecting does not itself grant app access to every existing file. Inaccessible files return CONFLICT with share/reconnect guidance. Orchestor does not request the restricted drive or drive.readonly scopes.

thumbnails get PRESENTATION_ID PAGE_ID [--size SMALL|MEDIUM|LARGE] returns content_url, width, and height. With --output FILE, the CLI downloads the PNG. The URL normally lasts 30 minutes; anyone with it can access the image. Both commands work with --readonly.

create --markdown FILE creates a deck from Slidev Markdown; update PRESENTATION_ID --markdown FILE replaces every slide. FILE is a UTF-8 file path, or - for raw stdin. API clients send the content in markdown. Headmatter title names the presentation. Creating with only --title remains supported. Titles, body text, notes, and hide are converted. Unsupported features use safe plain text fallbacks and appear in report with a zero-based slide_index.

get PRESENTATION_ID --format markdown [--output deck.md] converts an existing presentation to Slidev Markdown. It retains titles, body text, lists, tables, image URLs, speaker notes and skipped slides, and reads hand-added text in position order. The API returns { markdown, report }. Layout aliases normalize to cover or center where Google cannot distinguish them. Unsupported shapes, videos, charts and other elements appear in report, as do expiring contentUrl references. Images prefer sourceUrl.

Usage

terminal
orc slides get PRESENTATION_ID --target CONNECTION_ID --workspace WORKSPACE_ID --wrap-untrusted --json

Get a presentation

terminal
orc slides create --target CONNECTION_ID --title "Weekly review" --workspace WORKSPACE_ID --json

Create a presentation

Subcommands

get

Get a presentation

terminal
orc slides get <presentation-id> [options]

Unique options

--target

Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Required.

terminal
orc slides get <presentation-id> --target <value>

create

Create a presentation

terminal
orc slides create [options]

Unique options

--markdown

Path to a UTF-8 file, or - for stdin. Slidev Markdown content. CLI: path to a UTF-8 file, or - for stdin.; max 1000000 chars

Type: string. Optional.

terminal
orc slides create --markdown <value>
--target

(required) Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Optional.

terminal
orc slides create --target <value>
--title

Body field: title; max 500 chars

Type: string. Optional.

terminal
orc slides create --title <value>

api get

Call a read-only Slides API method

terminal
orc slides api get [options]

Unique options

--method

(required) Read-only Discovery method ID, for example presentations.pages.get.; enum: presentations.get|presentations.pages.get|presentations.pages.getThumbnail

Type: string. Optional.

terminal
orc slides api get --method <value>
--params

Path and query parameters by Discovery name, for example {"presentationId":"…","pageObjectId":"…"}. Run orc slides schemas get <method> for parameters.; (JSON object, e.g. '{"custom_id":"x"}')

Type: string. Optional.

terminal
orc slides api get --params <value>
--target

(required) Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Optional.

terminal
orc slides api get --target <value>

api update

Call a mutating Slides API method

terminal
orc slides api update [options]

Unique options

--body

Request body in the Discovery request schema.; (JSON object, e.g. '{"custom_id":"x"}')

Type: string. Optional.

terminal
orc slides api update --body <value>
--method

(required) Mutating Discovery method ID, for example presentations.batchUpdate.; enum: presentations.batchUpdate|presentations.create

Type: string. Optional.

terminal
orc slides api update --method <value>
--params

Path and query parameters by Discovery name, for example {"presentationId":"…","pageObjectId":"…"}. Run orc slides schemas get <method> for parameters.; (JSON object, e.g. '{"custom_id":"x"}')

Type: string. Optional.

terminal
orc slides api update --params <value>
--target

(required) Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Optional.

terminal
orc slides api update --target <value>

batch-requests create

Apply Slides batchUpdate requests

terminal
orc slides batch-requests create <presentation-id> [options]

Unique options

--requests

(required) batchUpdate requests, each with exactly one Request key, for example {"createSlide":{…}}. Run orc slides schemas list for types.; JSON array of objects (use --stdin for large resources)

Type: string. Optional.

terminal
orc slides batch-requests create <presentation-id> --requests <value>
--target

(required) Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Optional.

terminal
orc slides batch-requests create <presentation-id> --target <value>
--write-control

Slides WriteControl, for example {"requiredRevisionId":"…"}.; (JSON object, e.g. '{"custom_id":"x"}')

Type: string. Optional.

terminal
orc slides batch-requests create <presentation-id> --write-control <value>

schemas list

List Slides API methods and request types

terminal
orc slides schemas list [options]

schemas get

Get a Slides API schema

terminal
orc slides schemas get <name> [options]

exports get

Export a presentation

terminal
orc slides exports get <presentation-id> [options]

Unique options

--target

Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Required.

terminal
orc slides exports get <presentation-id> --target <value>

thumbnails get

Get a slide thumbnail

terminal
orc slides thumbnails get <presentation-id> <page-id> [options]

Unique options

--target

Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Required.

terminal
orc slides thumbnails get <presentation-id> <page-id> --target <value>
--size

Thumbnail width: SMALL 200px, MEDIUM 800px, LARGE 1600px. Google chooses the default when omitted.; enum: SMALL|MEDIUM|LARGE

Type: string. Optional.

terminal
orc slides thumbnails get <presentation-id> <page-id> --size <value>

update

Replace all slides from Slidev Markdown

terminal
orc slides update <presentation-id> [options]

Unique options

--markdown

(required) Path to a UTF-8 file, or - for stdin. Slidev Markdown content. CLI: path to a UTF-8 file, or - for stdin.; max 1000000 chars

Type: string. Optional.

terminal
orc slides update <presentation-id> --markdown <value>
--target

(required) Connection ID of the slides backend (currently a google-workspace connection); max 200 chars

Type: string. Optional.

terminal
orc slides update <presentation-id> --target <value>

Examples

Inspect a method schema

terminal
orc slides schemas get presentations.pages.get --workspace WORKSPACE_ID --json

Inspect a method schema

Read a page

terminal
orc slides api get --target CONNECTION_ID --method presentations.pages.get --params '{"presentationId":"PRESENTATION_ID","pageObjectId":"PAGE_ID"}' --workspace WORKSPACE_ID --readonly --json

Read a page

Apply batch requests

terminal
orc slides batch-requests create PRESENTATION_ID --target CONNECTION_ID --requests '[{"createSlide":{"objectId":"slide_1"}}]' --workspace WORKSPACE_ID --dry-run

Apply batch requests

Export PDF

terminal
orc slides exports get PRESENTATION_ID --target CONNECTION_ID --format pdf --output deck.pdf --workspace WORKSPACE_ID --readonly

Export PDF

Export PowerPoint

terminal
orc slides exports get PRESENTATION_ID --target CONNECTION_ID --format pptx --output deck.pptx --workspace WORKSPACE_ID --readonly

Export PowerPoint

Save a slide thumbnail

terminal
orc slides thumbnails get PRESENTATION_ID PAGE_ID --target CONNECTION_ID --size LARGE --output slide.png --workspace WORKSPACE_ID --readonly

Save a slide thumbnail

Create from Markdown

terminal
orc slides create --target CONNECTION_ID --markdown deck.md --workspace WORKSPACE_ID --dry-run --json

Create from Markdown

Replace all slides from stdin

terminal
cat deck.md | orc slides update PRESENTATION_ID --target CONNECTION_ID --markdown - --workspace WORKSPACE_ID --json

Replace all slides from stdin

Read as Slidev Markdown

terminal
orc slides get --target CONNECTION_ID PRESENTATION_ID --format markdown --output deck.md --workspace WORKSPACE_ID --readonly

Read as Slidev Markdown

Markdown and dry run

For Markdown, --dry-run sends dry_run: true to the API and performs no Google writes. Create does not call Google; update reads the existing slide IDs and revision. The response includes presentation_id (null for create), slide_count, requests (Phase 1), notes (slide_object_id and text), and report. Update also returns write_control.requiredRevisionId. Notes are deferred text, not requests, because their object IDs exist only after slide creation. Real execution writes slides in Phase 1, then only when notes exist reads their IDs and a fresh revision and writes all notes in Phase 2. A notes failure reports that slides were already written. Re-run update to replace the slides and retry notes.

Markdown elements and layouts

Lists become native bullets or numbering, including nesting. Each top-level list uses one preset throughout; mixed nested list types use the top-level style and add a lists report entry. Tables become editable tables with a bold header row. Bold, italic, inline code (Courier New), and links become text styles, with UTF-16 ranges. Markdown images and frontmatter image: accept absolute HTTPS URLs; Google fetches them, and Orchestor never downloads or uploads them. background: sets a stretched page image. Relative, data:, and HTTP sources appear in report; other content still converts. Mermaid, KaTeX, code blocks, v-click, components, and unknown options keep report entries. Ordinary code blocks remain editable monospaced text.

Slidev layoutGoogle layoutContent mapping
cover, introTITLETitle and subtitle
defaultTITLE_AND_BODYTitle and body
sectionSECTION_HEADERTitle; body content uses TITLE_AND_BODY and reports the fallback
center, endTITLE_ONLYTitle; body content uses TITLE_AND_BODY and reports the fallback
two-colsTITLE_AND_TWO_COLUMNSHeading as title; default slot and ::left:: in BODY index 0; ::right:: in BODY index 1
two-cols-headerTITLE_AND_TWO_COLUMNSHeading and default slot text in title; ::left:: in BODY index 0; ::right:: in BODY index 1. Default-slot tables and images go in the left column
image-left, image-rightTITLE_AND_BODYFrontmatter image in the named half; body placeholder replaced with sized text boxes in the opposite half; title above
imageBLANKFull-page frontmatter image; any Markdown content is overlaid
fullBLANKTitle and body in one full-page text box; tables and images remain separate native elements

Image placement uses a 16:9 page (9,144,000 × 5,143,500 EMU). Mixed text, tables, and Markdown images stack within each body or column; the body placeholder is replaced with explicitly sized native elements when needed. HTTPS images must be accessible to Google. createImage preserves aspect ratio; background images stretch.

Permissions

Requires a Workspace and connector:backend-execute. Schema commands need no connection.

Global Options

The following global options can be used with orc slides:

For details and examples, see global options.