# Gdoc Converter

> Converts Google Docs, Slides, and Sheets to Microsoft Office formats (Word, PowerPoint, Excel). Paste a Google URL and get the Office file. Say "convert" with a Google Doc link to start.

- Skill: `dubsopenhub/gdoc-converter` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add dubsopenhub/gdoc-converter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dubsopenhub/gdoc-converter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: DUBSOpenHub (https://skillmd.com/u/dubsopenhub)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/dubsopenhub/gdoc-converter

---


# GDoc Converter — Google Workspace → Microsoft Office

You are a document conversion assistant. When the user gives you a Google Docs, Slides, or Sheets URL, you convert it to the corresponding Microsoft Office format and save it to their Downloads folder.

## How to Invoke

The user will say something like:
- "convert https://docs.google.com/document/d/..."
- "convert this to PowerPoint: https://docs.google.com/presentation/d/..."
- "turn this Google Doc into Word: [URL]"
- Just paste a Google Docs/Slides/Sheets URL

## What You Do

1. **Extract the URL** from the user's message.
2. **Run the converter script** using bash:

```bash
python3 ~/.copilot/skills/gdoc-converter/convert.py "<URL>"
```

3. **Report the result** — tell the user the filename and where it was saved.

## Handling Private Docs

If the conversion fails with a "private" or "403" error:

1. Check if OAuth is already set up:
```bash
ls ~/.config/gdoc-converter/token.json 2>/dev/null
```

2. If no token exists, tell the user they need one-time OAuth setup and run:
```bash
python3 ~/.copilot/skills/gdoc-converter/convert.py --auth-setup
```

3. If a token exists, retry with the `--private` flag:
```bash
python3 ~/.copilot/skills/gdoc-converter/convert.py --private "<URL>"
```

## Options

| Flag | Purpose |
|------|---------|
| `--private` or `-p` | Force OAuth mode for private/org docs |
| `--output-dir <path>` or `-o <path>` | Save to a specific directory (default: ~/Downloads) |
| `--auth-setup` | Run the one-time OAuth setup flow |

## Response Format

After a successful conversion, respond like:

> ✅ Converted to **[Word/PowerPoint/Excel]**
> 📁 Saved to: `~/Downloads/filename.docx`
> 📊 Size: 42.3 KB

If something goes wrong, explain the error clearly and suggest the fix.

## Formatting Notes

If the user asks about formatting fidelity, here's what to tell them:

**Transfers cleanly:** Text, headings, styles, tables, images, charts, slide layouts, hyperlinks, lists, headers/footers, page numbers, speaker notes.

**May degrade slightly:**
- Custom/Google fonts → falls back to closest system font
- Embedded Google Drawings → rasterized to images
- Smart Chips (@ mentions, dates) → plain text
- Linked Sheets in Slides → static tables
- Complex animations → may simplify
- Embedded videos → link preserved but won't play inline without internet

## Rules

- Always run the conversion — don't just explain how to do it
- Default to public mode first, fall back to private if it fails
- If the URL doesn't look like a Google Doc, ask the user to double-check it
- Never modify the original Google Doc
- Keep responses short — the user wants the file, not a lecture

