speakerdeck
SpeakerDeck Scraper
Purpose
Download all slide images from a SpeakerDeck presentation URL. Zero dependencies — uses only built-in fetch and fs APIs. The downloaded images can be read by Claude Vision or converted with markitdown.
Run
nix-shell -p bun --run "bun {baseDir}/scripts/speakerdeck.ts <speakerdeck-url> [-o output-dir]"
Arguments
| Arg | Description |
|---|---|
<url> |
SpeakerDeck presentation URL (required) |
-o, --output <dir> |
Output directory (default: $TMPDIR/speakerdeck-<id>/) |
Output (JSON to stdout)
{
"title": "Presentation Title",
"presentationId": "abc123def456",
"slideCount": 30,
"outputDir": "/tmp/speakerdeck-abc123def456",
"files": ["/tmp/speakerdeck-abc123def456/slide_000.jpg", "..."]
}
Workflow Examples
Read slides with Claude Vision
result=$(nix-shell -p bun --run "bun {baseDir}/scripts/speakerdeck.ts 'https://speakerdeck.com/user/talk'")
# Then use the file paths from the JSON output with Read tool
Convert to Markdown with markitdown
result=$(nix-shell -p bun --run "bun {baseDir}/scripts/speakerdeck.ts 'https://speakerdeck.com/user/talk'")
dir=$(echo "$result" | jq -r '.outputDir')
for f in "$dir"/*.jpg; do markitdown "$f"; done
How It Works
- Fetches the SpeakerDeck page HTML to extract the presentation ID (from the player iframe URL)
- Binary-search probes the CDN (
files.speakerdeck.com) to determine slide count - Downloads all slide JPEGs (5 concurrent)
Notes
- Images are 1920x1080 JPEG from SpeakerDeck's CDN
- Zero external dependencies — bun is provided via
nix-shell -p bun - Private or password-protected presentations are not supported
More from yutakobayashidev/dotnix
markitdown
Convert files (PDF, DOCX, PPTX, XLSX, HTML, images, audio, etc.) to Markdown using Microsoft's markitdown CLI. Use when the user wants to extract text content from documents, convert files for LLM processing, or read non-text file formats.
25dce
Detect and eliminate dead code in TypeScript projects using ts-remove-unused (tsr). Use when the user wants to find unused exports, unused files, or clean up dead code.
1gha-lint
Lint and secure GitHub Actions workflows using pinact, actionlint, ghalint, and zizmor. Use when the user adds, updates, or reviews GitHub Actions workflows and wants to check correctness, security, or pin action versions.
1oura-daily-watch
Build and run a daily Oura + Discord behavior monitor. Use when the user wants morning wellness summaries, anomaly alerts, readiness/sleep trend checks, or advice based on Oura Ring data combined with chat activity patterns.
1check-similarity
Detects duplicate TypeScript/JavaScript code using AST comparison for refactoring. Use when the user wants to find similar or duplicated functions, plan refactoring, or clean up redundant code in TS/JS projects.
1social-digest
Fetch today's Discord channel + Mastodon posts via API tokens, summarize to Markdown, and save into an Obsidian vault (Bun script).
1