一键导入
google-slides
Use when creating, importing, exporting, or quality-checking Google Slides decks via markdown-to-PPTX conversion and Drive import.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when creating, importing, exporting, or quality-checking Google Slides decks via markdown-to-PPTX conversion and Drive import.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | google-slides |
| description | Use when creating, importing, exporting, or quality-checking Google Slides decks via markdown-to-PPTX conversion and Drive import. |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| platforms | ["macos","linux"] |
| metadata | {"hermes":{"tags":["google","slides","drive","markdown","pptx","presentation","productivity"],"related_skills":["google-docs","google-sheets"]}} |
Use this skill when the artifact is a Google Slides deck. Slides is the weakest
surface for the local gog CLI: gog slides only supports create/info/copy/export, and
the local OAuth token did not even include the Slides scope during testing. So content
authoring goes through a conversion or raw-API path, not gog content commands.
Tested-good default: author Markdown -> pandoc PPTX -> Drive import as native Google Slides. In testing this produced a 6-slide deck with correct titles, bullet lists, and numbered lists, verified by exporting the created deck back to PPTX and reading slide XML.
gog CLI (steipete/gogcli) installed and authorized: run gog auth login once in
the operating-system user's real $HOME. The Drive import path only needs Drive auth;
it does not require the Slides API scope.python3 on PATH (the helper is stdlib-only — no pip install required).pandoc installed for the default Markdown -> PPTX conversion
(brew install pandoc on macOS).scripts/gworkspace.py reuses gog's stored OAuth refresh token. If lookup
fails with {"error": "missing_credentials"}, see Common Pitfalls for the explicit
credential-file escape hatch.Run helper commands from the skill directory so
scripts/gworkspace.pyresolves relative to$PWD, or useskills/google-slides/scripts/gworkspace.pyfrom the repo root.
$HOME shadowing: some agent runtimes rewrite
$HOMEto a sandbox path where gog's auth doesn't exist. If credential lookup fails in that environment, pointHOMEat the real OS user home before invoking the helper.
gog, raw API, or browser for Slides.Do not use this for Docs or Sheets; load google-docs or google-sheets.
Author the deck as Markdown where each top-level header starts a slide, then convert and import.
# 1. Author deck.md (see authoring rules below)
# 2. Convert to pptx
pandoc deck.md -o deck.pptx
# 3. Import as native Google Slides
python3 scripts/gworkspace.py upload deck.pptx --as slide --name "Product Launch Deck" --parent FOLDER_ID
scripts/gworkspace.py sets source MIME to the pptx type and target MIME
application/vnd.google-apps.presentation, producing a native editable deck.
FOLDER_ID is optional; omit --parent to create in My Drive root. To target a folder,
copy the ID from its Drive URL (.../folders/<FOLDER_ID>), list folders with
gog drive ls --json, or create one with python3 scripts/gworkspace.py mkdir "Decks".
pandoc's pptx writer creates a new slide at each level-1 (and level-2) heading. Structure the Markdown accordingly:
% Product Launch Deck % Author Name % June 2026
# Section / Slide Title
Body text for the slide.
# Why Now
- Bullet one
- Bullet two
- Bullet three
# Roadmap
1. Beta in July
2. GA in September
3. Enterprise tier in Q4
% title / % author / % date block becomes the title slide.# heading becomes a new slide.Treat md2gslides (googleworkspace/md2googleslides) as an optional path only when
it is already installed and authorized. It supports a richer slide-specific Markdown
dialect (speaker notes, columns, image placement, background images), but it maintains
its own OAuth in ~/.md2googleslides and can prompt interactively on first use.
md2gslides deck.md --title "Talk Title"
If md2gslides is absent or unauthenticated, fall back to Path A. Do not start an OAuth
flow without the user's involvement.
For precise control — specific layouts, text boxes at exact positions, shapes, charts,
themes — use the Slides API presentations.batchUpdate. Mint a token with
python3 scripts/gworkspace.py token and POST to
https://slides.googleapis.com/v1/presentations/PID:batchUpdate.
Note: the Slides API requires the Slides scope. The local gog token did not include it
in testing; you may need a token from a credential set authorized for
https://www.googleapis.com/auth/presentations. Verify scope before relying on this
path.
Not the primary creation backend.
python3 scripts/gworkspace.py meta PRESENTATION_ID # native Slides MIME?
gog slides export --help >/dev/null 2>&1 || { echo "gog slides export unavailable"; exit 1; }
gog slides export PRESENTATION_ID --format pptx --output /tmp/deck-check.pptx --json --no-input
python3 - <<'PY'
import zipfile, re
with zipfile.ZipFile('/tmp/deck-check.pptx') as z:
for n in sorted(z.namelist()):
if n.startswith('ppt/slides/slide') and n.endswith('.xml'):
t = re.findall(r'<a:t>(.*?)</a:t>', z.read(n).decode('utf-8','replace'))
if t: print(n, t)
PY
Confirm:
mimeType is application/vnd.google-apps.presentation.webViewLink in the browser.Expecting gog to author slide content. Local gog slides only does
create/info/copy/export — no content or layout editing. Authoring goes through
conversion or the Slides API.
Missing Slides scope. The local gog OAuth token lacked the Slides scope in
testing. Raw Slides API calls need a token authorized for
https://www.googleapis.com/auth/presentations. Drive import of a pptx does not need
the Slides scope, only Drive — another reason the pptx import path is the default.
Uploading pptx without conversion. gog drive upload deck.pptx keeps it a
PowerPoint file. Use target MIME application/vnd.google-apps.presentation to get
native Slides.
Overstuffed slides. pandoc does not auto-fit text. Keep slides short; split dense content across multiple headings.
Wrong heading levels. If everything lands on one slide, your Markdown probably
lacks # per-slide headings. Each slide needs its own top-level heading.
Credential lookup fails (missing_credentials). If the helper can't find gog's
token, pass credentials explicitly: export gog's refresh token to a 0600 file with
gog auth tokens export <account> --output /tmp/tok.json --force, then run the
helper with
--refresh-token-file /tmp/tok.json --client-secret-file <gog credentials.json>. The
helper refuses explicit credential files that are group/world-readable or not owned
by you — chmod 600 them. These flags work before or after the subcommand. For a gog
named client or a non-default gog home, use --gog-client <name> /
--gog-home <dir> (or the GOG_CLIENT / GOG_HOME env vars).
Sharing is irreversible.
scripts/gworkspace.py share PRESENTATION_ID --email ... --role ... grants real
Drive access. Confirm recipient and role with the user before using it.
cat > /tmp/deck.md <<'MD'
% Demo Deck
% Your Name
% Today
# Overview
- Point one
- Point two
# Next Steps
1. Do the thing
2. Ship it
MD
pandoc /tmp/deck.md -o /tmp/deck.pptx
python3 scripts/gworkspace.py upload /tmp/deck.pptx --as slide --name "Demo Deck"
Return the resulting webViewLink to the user.
Use when you have a HARD, open-ended, high-stakes problem worth throwing multiple AI models at and pulling the best solution out — architecture decisions, strategy design, thorny debugging, research synthesis, "what am I missing", tool/system design. This is the SOLVE counterpart to multi-review (which critiques an existing artifact). It fans the problem out to a role-differentiated panel of model families (proposer layer), then the caller acts as aggregator and builds a NEW best-of-breed answer via a component ledger — not an average, not a cut-and-paste splice. Also encodes WHEN NOT to use a panel (most problems), routing to a single strong model or the commodity openrouter/fusion instead. Accumulates a persistent model-task-fit knowledge base so future runs pick the right models for the right roles.
Use to govern your own autonomy, deciding when to act on your own versus ask for approval, and earning more freedom over time the way a new employee earns trust through training and repetition. Group your capabilities into skill buckets, classify every action as a reversible (two-way) or irreversible (one-way) door, hold a trust level per bucket (L1 supervised, L2 guardrailed, L3 autonomous), and keep an honest markdown ledger of your decisions that you read back to promote or demote yourself. Load when setting up your autonomy rules or when a consequential act-vs-ask decision comes up.
On-demand real-time web and X (Twitter) search via xAI's Grok. Reach for this when the user explicitly wants Grok to search, or asks for real-time / breaking / X-Twitter-native results that a general web search misses. Not the default web search — a named tool you invoke deliberately.
Use when a Hermes MEMORY.md or USER.md file is too large, bloated, stale, or over the recommended cap and you need to reduce prompt footprint without losing important facts. Applies a lossless memory diet: compress, relocate to SOUL.md/USER.md/AGENTS.md/context files, offload long-tail facts to the memory provider, convert reusable procedures into skills, then drop only stale or duplicate material. Includes dry-run, diff, and review gates before any write.
Use when creating, importing, formatting, editing, exporting, or quality-checking Google Docs from agent-generated markdown or local files.
Use when creating, populating, formatting, importing, exporting, or quality-checking Google Sheets from CSV, JSON arrays, or computed tabular data.