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 GitHu
By github · 1,880 installs
npx skills add github/awesome-copilot --skill publish-to-pages
Source repository · Upstream listing
publish to pages
Publish any presentation or web content to GitHub Pages in one shot.
1. Prerequisites Check
Run these silently. Only surface errors:
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:
If python pptx is missing, tell the user: pip install python pptx
PDF
Convert with the included script (requires poppler utils for pdftoppm ):
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:
3. 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
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.