publish-to-pages — GitHub Copilot skill: publish to Pages
Publishes presentations and HTML content to GitHub Pages by creating a repository and returning a live page address. Use it when files need to be shared as a web page.
npx skills add github/awesome-copilot --skill publish-to-pagesWhat publish-to-pages does
The skill accepts HTML, PPTX, PDF, or a Google Slides link. It uses an HTML file as index.html; PPTX goes through convert-pptx.py, while convert-pdf.py renders PDF pages as PNGs in an HTML slide viewer. For Google Slides, it downloads a PPTX first and then runs the presentation converter.
It checks for gh, GitHub authentication, and python3 before publishing. The publish.sh script creates a repository, pushes the generated HTML, and enables GitHub Pages. Large PPTX or PDF inputs can place images in assets/ to stay below GitHub's 100MB file limit. PPTX conversion needs python-pptx; PDF conversion needs poppler-utils with pdftoppm.
Repositories are public by default. Private Pages repositories require a Pro, Team, or Enterprise plan, so check that before using private visibility. Install this skill if GitHub Pages is your publishing path; skip it when you want to configure a site by hand.
What it helps with
- publish an HTML file through GitHub Pages
- convert a PPTX into a slide web page
- turn a PDF into navigable HTML slides
- export Google Slides for Pages publishing
- move large-file resources into
assets/
Example prompts for the agent
- “Publish `demo.pptx` to GitHub Pages in a repository named `demo-slides`.”
- “Put `report.pdf` online as a public GitHub Pages site.”
- “Download this Google Slides presentation and publish it to the private `team-deck` repository.”
How to install publish-to-pages
1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill publish-to-pages2GitHub CLI
gh skill install github/awesome-copilot publish-to-pages3Manually: put the files in place
.github/skills/publish-to-pages/SKILL.md1Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill publish-to-pages -a claude-code2Manually: put the files in place
~/.claude/skills/publish-to-pages/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/publish-to-pages/
Manually: put the files in place
.agents/skills/publish-to-pages/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/publish-to-pages/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
Platform CLI
gemini skills install https://github.com/github/awesome-copilot --path skills/publish-to-pagesManually: put the files in place
.devin/skills/publish-to-pages/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set554
The whole set →Similar
Questions about publish-to-pages
How do I install publish-to-pages in GitHub Copilot?
Run npx skills add github/awesome-copilot --skill publish-to-pages. You can also use gh skill install github/awesome-copilot publish-to-pages.
What does publish-to-pages do?
It prepares HTML, PPTX, PDF, and Google Slides content for GitHub Pages. The skill creates a repository, pushes the output, enables Pages, and returns the published page address.
What is required to convert PPTX and PDF files?
PPTX conversion needs python3 and python-pptx, installable with pip install python-pptx. PDF conversion requires poppler-utils, which provides pdftoppm.
Source text
SKILL.md · MIT
--- 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: ```bash 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: ```bash 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`): ```bash 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: ```bash curl -L "https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx" -o /tmp/slides.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 ```bash 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.
© github · MIT · github/awesome-copilot