Catalog
github/publish-to-pages

github

publish-to-pages

Publish presentations and web content to GitHub Pages. Converts PPTX, PDF, HTML, or Google Slides to a live GitHub Pages URL. Handles repo creation, file conversion, Pages enablement, and returns the live URL. Use when the user wants to publish, deploy, or share a presentation or HTML file via GitHub Pages.

v1.0Latest
New~1.1kUpdated Jun 26, 2026

publish-to-pages

Publish any presentation or web content to GitHub Pages in one shot.

1. Prerequisites Check

Run these silently. Only surface errors:

command -v gh >/dev/null || echo "MISSING: gh CLI — install from https://cli.github.com"
gh auth status &>/dev/null || echo "MISSING: gh not authenticated — run 'gh auth login'"
command -v python3 >/dev/null || echo "MISSING: python3 (needed for PPTX conversion)"

poppler-utils is optional (PDF conversion via pdftoppm). Don't block on it.

2. Input Detection

Determine input type from what the user provides:

Input Detection
HTML file Extension .html or .htm
PPTX file Extension .pptx
PDF file Extension .pdf
Google Slides URL URL contains docs.google.com/presentation

Ask the user for a repo name if not provided. Default: filename without extension.

3. Conversion

Large File Handling

Both conversion scripts automatically detect large files and switch to external assets mode:

  • PPTX: Files >20MB or with >50 images → images saved as separate files in assets/
  • PDF: Files >20MB or with >50 pages → page PNGs saved in assets/
  • Files >150MB print a warning (PPTX suggests PDF path instead)

This keeps individual files well under GitHub's 100MB limit. Small files still produce a single self-contained HTML.

You can force the behavior with --external-assets or --no-external-assets.

HTML

No conversion needed. Use the file directly as index.html.

PPTX

Run the conversion script:

python3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html
# For large files, force external assets:
python3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html --external-assets

If python-pptx is missing, tell the user: pip install python-pptx

PDF

Convert with the included script (requires poppler-utils for pdftoppm):

python3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html
# For large files, force external assets:
python3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html --external-assets

Each page is rendered as a PNG and embedded into HTML with slide navigation. If pdftoppm is missing, tell the user: apt install poppler-utils (or brew install poppler on macOS).

Google Slides

  1. Extract the presentation ID from the URL (the long string between /d/ and /)
  2. Download as PPTX:
curl -L "https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx" -o /tmp/slides.pptx
  1. Then convert the PPTX using the convert script above.

4. Publishing

Visibility

Repos are created public by default. If the user specifies private (or wants a private repo), use --private — but note that GitHub Pages on private repos requires a Pro, Team, or Enterprise plan.

Publish

bash SKILL_DIR/scripts/publish.sh /path/to/index.html REPO_NAME public "Description"

Pass private instead of public if the user requests it.

The script creates the repo, pushes index.html (plus assets/ if present), and enables GitHub Pages.

Note: When external assets mode is used, the output HTML references files in assets/. The publish script automatically detects and copies the assets/ directory alongside the HTML file. Make sure the HTML file and its assets/ directory are in the same parent directory.

5. Output

Tell the user:

  • Repository: https://github.com/USERNAME/REPO_NAME
  • Live URL: https://USERNAME.github.io/REPO_NAME/
  • Note: Pages takes 1-2 minutes to go live.

Error Handling

  • Repo already exists: Suggest appending a number (my-slides-2) or a date (my-slides-2026).
  • Pages enablement fails: Still return the repo URL. User can enable Pages manually in repo Settings.
  • PPTX conversion fails: Tell user to run pip install python-pptx.
  • PDF conversion fails: Suggest installing poppler-utils (apt install poppler-utils or brew install poppler).
  • Google Slides download fails: The presentation may not be publicly accessible. Ask user to make it viewable or download the PPTX manually.
Files4
4 files · 22.1 KB

Select a file to preview

Overall Score

82/100

Grade

B

Good

Safety

82

Quality

85

Clarity

78

Completeness

80

Summary

This skill enables users to publish presentations and web content to GitHub Pages in a single operation. It detects the input type (HTML, PPTX, PDF, or Google Slides), converts it to an interactive HTML presentation if needed, creates a GitHub repository, and deploys it with GitHub Pages enabled. The skill includes intelligent file handling for large presentations (external assets mode) and comprehensive error messaging.

Static Analysis Findings

1 finding

Patterns detected by deterministic static analysis before AI scoring. Hover over any finding code for detailed information and remediation guidance.

Destructive Operation
SEC-001Recursive DeletionMax: B

Recursive deletion pattern (rm -rf)

scripts/publish.shrm -rf

Detected Capabilities

file readfile writeshell command executiongit operationsGitHub API callsHTTP request (Google Slides download)Python script executiontemporary directory creationimage encoding (base64)

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

publish to github pagesdeploy presentationshare pptx onlineconvert slides to webgithub pages deployment

Risk Signals

WARNING

Recursive deletion with rm -rf in cleanup

scripts/publish.sh:54

Referenced Domains

External domains referenced in skill content, detected by static analysis.

$username.github.iocli.github.comdocs.google.comgithub.comschemas.openxmlformats.orgusername.github.io

Use Cases

  • Publish a PowerPoint presentation as a live shareable URL
  • Convert and deploy PDF slides to GitHub Pages
  • Share Google Slides publicly via GitHub Pages
  • Create an instant web version of presentation content
  • Deploy HTML presentations with automatic repo setup

Quality Notes

  • Clear input detection logic with table mapping file types to detection methods
  • Comprehensive error handling for all conversion scenarios with specific remediation steps
  • Intelligent auto-detection of large files with fallback behavior documented
  • Well-organized workflow: prerequisites → detection → conversion → publishing → output
  • Good security boundary: uses temporary directories for intermediate work, cleaned up after use
  • External assets mode documentation explains file size thresholds (20MB) and image count limits (50)
  • Scripts include proper error handling with informative messages (e.g., missing python-pptx)
  • HTML output includes keyboard navigation, touch gestures, and responsive scaling for presentations
Model: claude-haiku-4-5-20251001Analyzed: Jun 26, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Use github/publish-to-pages in your dev environment

Command Palette

Search for a command to run...