Skip to content
Agentmart
Submit a tool

dev-slides

Generate a Google Slides presentation from a paper PDF URL using gws CLI.

Skill by guan404ming

IndexedApache-2.0★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/guan404ming-dev-slides

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Generate a Google Slides presentation from a paper PDF URL using gws CLI.

Use cases: documents, presentations, research

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/dev-slides

What's inside

Skill name
dev-slides
Description
Generate a Google Slides presentation from a paper PDF URL using gws CLI.
License
Apache-2.0
Instructions
103 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Paper-to-Slides Generator

## Usage
```
/dev-slides <arxiv PDF URL or paper URL>
```

## Prerequisites
- `gws` CLI authenticated with Slides and Drive APIs
- Python packages: `pymupdf`, `Pillow`, `numpy`

## Presentation Style
- Title slide: 個人進度報告 / 電機所碩一 邱冠銘
- Section headers: TITLE layout (CENTERED_TITLE), left-aligned
- Content slides: TITLE_AND_BODY layout (single column, not two columns)
- Fonts: theme defaults (no overrides)
- Body: bullet points with lineSpacing 150, indent 36pt (level 0), 72pt (level 1)
- Sub-items use level 1 indentation for hierarchy
- Keep each slide concise, 3-5 bullet points max per slide

## Slide Structure
1. Title slide (TITLE layout): 個人進度報告 + 電機所碩一 邱冠銘
2. Paper info slide (TITLE_AND_BODY): paper title as slide title, body lists authors, affiliation, conference/year, arXiv ID. Paper titles are often long and wrap to multiple lines, so always move body translateY down to ~1600000 EMU on this slide.
3. Section: Intro
4. Motivation & Problem (content slide)
5. Paper Goal (content slide)
6. Section: Design
7. Method slides (2-4 slides depending on paper complexity)
8. Figure slides (from paper, with captions)
9. Section: Eval
10. Experimental setup (content slide)
11. Results (content slide)
12. Table/figure slides (from paper, with captions)
13. Section: Conclusion
14. Limitations & Key Takeaways (content slide)
15. Thanks slide

## Instructions

1. **Fetch paper content:**
   - Use `WebFetch` on the arxiv abstract page to get title, authors, abstract
   - Use `WebFetch` on the PDF URL for detailed methodology, results, contributions

2. **Create presentation:**
   ```
   gws slides presentations create --json '{"title": "<paper title>"}'
   ```
   Save the `presentationId` from the response.

3. **Get layout IDs** from the create response:
   - TITLE layout (for section headers + title slide)
   - TITLE_AND_BODY layout (for content slides)
   - TITLE_ONLY layout (for figure/table slides)

4. **Build slides via batchUpdate:**
   - Delete the default empty slide first
   - Create ALL slides listed in the Slide Structure section, do not skip any (especially the paper info slide)
   - Create all slides with `createSlide`, mapping placeholders by type
   - Object IDs must be at least 5 characters
   - Insert text with `insertText`
   - Apply bullets with `createParagraphBullets` (preset: `BULLET_DISC_CIRCLE_SQUARE`)
   - Set paragraph styles: lineSpacing 150, indent 36pt/72pt for level 0/1
   - Alignment enum: use `START` not `LEFT`, use `CENTER` not `CENTER`
   - Send all requests in a single `batchUpdate` call

5. **Extract figures from PDF:**
   - Download PDF: `curl -sL "<url>" -o /tmp/paper.pdf`
   - Use `pymupdf` to analyze exact figure boundaries: call `page.get_text("dict")` for text blocks and `page.get_drawings()` for drawing bounds
   - Define precise `fitz.Rect` clip regions based on analyzed coordinates, not rough guesses
   - Auto-crop remaining whitespace with PIL + numpy (threshold gray < 248)
   - Target key figures: overview diagram, method diagram, result tables

6. **Upload images** to a public host:
   ```bash
   curl -s -X POST "https://freeimage.host/api/1/upload" \
     -F "key=6d207e02198a847aa98d0a2a901485a5" \
     -F "source=@/tmp/paper_figs/fig.png" \
     -F "format=json"
   ```
   Extract URL from response: `.image.url`

7. **Insert images into slides** via batchUpdate:
   - Use TITLE_ONLY layout for figure slides
   - `createImage` with the hosted URL
   - Position: centered horizontally, image top at ~1250000 EMU (0.25" below title bottom)
   - Add caption text box below image: 12pt, gray (#666), centered
   - Caption top = image bottom + 150000 EMU gap
   - Scale images to fit: max image bottom at ~4400000 EMU, keep aspect ratio

8. **Verify layout** after building all slides:
   - Programmatically check every slide for overflow: compute each element's bounding box (size * scale + translate) and verify it stays within slide bounds (9144000 x 5143500 EMU)
   - Verify title-to-image gap >= 228600 EMU (0.25") on figure/table slides
   - Verify title-to-body gap on TITLE_AND_BODY slides: if title text is long (>50 chars), move body translateY down to avoid overlap
   - Verify image-to-caption gap ~150000 EMU, consistent across slides
   - Verify caption bottom < 5000000 EMU
   - Fix any violations in a single batchUpdate pass

9. **Output** the presentation URL:
   ```
   https://docs.google.com/presentation/d/<presentationId>/edit
   ```

From guan404ming/gmccc, Apache-2.0.

More from guan404ming/gmccc

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Jun 17, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from guan404ming

Cite this page

dev-slides skill. Agent Mart. https://agentmart.dev/skills/guan404ming-dev-slides (last updated 2026-10-24)