publish-to-pages
github/awesome-copilot
Publish presentations and web content to GitHub Pages with automatic format conversion.
What is publish-to-pages?
Converts PPTX, PDF, HTML, or Google Slides to a live GitHub Pages URL in one command. Handles repository creation, file conversion, and Pages enablement automatically. Use this when you need to share or deploy a presentation or web content publicly.
- Converts PPTX, PDF, HTML, and Google Slides to GitHub Pages-hosted content
- Automatically detects input format and handles large files with external assets mode
- Creates public or private GitHub repositories and enables Pages
- Returns live GitHub Pages URL (https://USERNAME.github.io/REPO_NAME/)
- Handles file conversion with python-pptx for PPTX and pdftoppm for PDF
- Manages assets directory for presentations with multiple images or pages
How to install publish-to-pages
npx skills add https://github.com/github/awesome-copilot --skill publish-to-pages- GitHub CLI (gh) installed and authenticated
- Python 3 (for PPTX and PDF conversion)
- poppler-utils optional (for PDF conversion; install via apt or brew)
- python-pptx package (installed via pip if missing)
How to use publish-to-pages
- 1.Prepare your input file (PPTX, PDF, HTML) or Google Slides URL
- 2.Run the skill and provide the file path or URL when prompted
- 3.Optionally specify a custom repository name (defaults to filename)
- 4.Choose public or private visibility (public by default)
- 5.Wait 1-2 minutes for GitHub Pages to go live
- 6.Share the returned live URL (https://USERNAME.github.io/REPO_NAME/)
Use cases
- Share a PowerPoint presentation as a live web URL without manual conversion
- Deploy a PDF document as an interactive HTML slideshow
- Publish an HTML file to GitHub Pages with one command
- Convert Google Slides to a standalone GitHub Pages site
- Host large presentations by automatically splitting assets into separate files
- Presenters sharing slides with teams or audiences
- Content creators publishing web-based presentations
- Developers deploying documentation or HTML content
- Anyone needing a quick public URL for presentations
publish-to-pages FAQ
PPTX, PDF, HTML, and Google Slides URLs. HTML files are used directly; others are converted to HTML automatically.
Files over 20MB or with many images/pages automatically use external assets mode, storing images or page PNGs in an assets/ directory to stay under GitHub's 100MB limit.
Yes, specify private visibility, but note that GitHub Pages on private repos requires a Pro, Team, or Enterprise plan.
GitHub Pages typically takes 1-2 minutes to deploy after the repository is created and enabled.
The skill will suggest appending a number (e.g., my-slides-2) or a date (e.g., my-slides-2026) to create a unique name.
Full instructions (SKILL.md)
Source of truth, from github/awesome-copilot.
name: publish-to-pages description: '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.'
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
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
- Extract the presentation ID from the URL (the long string between
/d/and/) - Download as PPTX:
curl -L "https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx" -o /tmp/slides.pptx
- 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-utilsorbrew install poppler). - Google Slides download fails: The presentation may not be publicly accessible. Ask user to make it viewable or download the PPTX manually.
Related skills
More from github/awesome-copilot and the wider catalog.

pytest-coverage
Run pytest with coverage analysis and incrementally increase test coverage to 100%.

python-mcp-server-generator
Generate a complete, production-ready MCP server in Python with tools, resources, and proper configuration.

python-pypi-package-builder
End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptools+setuptools_scm, hatchling, flit, poetry), PEP 440 versioning, semantic versioning, dynamic git-tag versioning, OOP/SOLID design, type hints (PEP 484/526/544/561), Trusted Publishing (OIDC), and the full PyPA packaging flow. Use for: creating Python packages, pip-installable SDKs, CLI tools, framework plugins, pyproject.toml setup, py.typed, setuptools_scm, semver, mypy, pre-commit, GitHub Actions CI/CD, or PyPI publishing.

quality-playbook
Complete quality engineering audit: derives requirements, generates tests, runs multi-pass code review, executes spec audit, produces bug report with patches.

quasi-coder
Turns shorthand, pseudo-code, and rough natural-language descriptions into production-quality code.

react-audit-grep-patterns
Provides the complete, verified grep scan command library for auditing React codebases before a React 18.3.1 or React 19 upgrade. Use this skill whenever running a migration audit - for both the react18-auditor and react19-auditor agents. Contains every grep pattern needed to find deprecated APIs, removed APIs, unsafe lifecycle methods, batching vulnerabilities, test file issues, dependency conflicts, and React 19 specific removals. Always use this skill when writing audit scan commands - do not rely on memory for grep syntax, especially for the multi-line async setState patterns which require context flags.