{"id":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","shortId":"D9uawJ","kind":"skill","title":"Publish To Pages","tagline":"Awesome Copilot skill by Github","description":"# publish-to-pages\n\nPublish any presentation or web content to GitHub Pages in one shot.\n\n## 1. Prerequisites Check\n\nRun these silently. Only surface errors:\n\n```bash\ncommand -v gh >/dev/null || echo \"MISSING: gh CLI — install from https://cli.github.com\"\ngh auth status &>/dev/null || echo \"MISSING: gh not authenticated — run 'gh auth login'\"\ncommand -v python3 >/dev/null || echo \"MISSING: python3 (needed for PPTX conversion)\"\n```\n\n`poppler-utils` is optional (PDF conversion via `pdftoppm`). Don't block on it.\n\n## 2. Input Detection\n\nDetermine input type from what the user provides:\n\n| Input | Detection |\n|-------|-----------|\n| HTML file | Extension `.html` or `.htm` |\n| PPTX file | Extension `.pptx` |\n| PDF file | Extension `.pdf` |\n| Google Slides URL | URL contains `docs.google.com/presentation` |\n\nAsk the user for a **repo name** if not provided. Default: filename without extension.\n\n## 3. Conversion\n\n### Large File Handling\n\nBoth conversion scripts automatically detect large files and switch to **external assets mode**:\n- **PPTX:** Files >20MB or with >50 images → images saved as separate files in `assets/`\n- **PDF:** Files >20MB or with >50 pages → page PNGs saved in `assets/`\n- Files >150MB print a warning (PPTX suggests PDF path instead)\n\nThis keeps individual files well under GitHub's 100MB limit. Small files still produce a single self-contained HTML.\n\nYou can force the behavior with `--external-assets` or `--no-external-assets`.\n\n### HTML\nNo conversion needed. Use the file directly as `index.html`.\n\n### PPTX\nRun the conversion script:\n```bash\npython3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html\n# For large files, force external assets:\npython3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html --external-assets\n```\nIf `python-pptx` is missing, tell the user: `pip install python-pptx`\n\n### PDF\nConvert with the included script (requires `poppler-utils` for `pdftoppm`):\n```bash\npython3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html\n# For large files, force external assets:\npython3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html --external-assets\n```\nEach page is rendered as a PNG and embedded into HTML with slide navigation.\nIf `pdftoppm` is missing, tell the user: `apt install poppler-utils` (or `brew install poppler` on macOS).\n\n### Google Slides\n1. Extract the presentation ID from the URL (the long string between `/d/` and `/`)\n2. Download as PPTX:\n```bash\ncurl -L \"https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx\" -o /tmp/slides.pptx\n```\n3. Then convert the PPTX using the convert script above.\n\n## 4. Publishing\n\n### Visibility\nRepos 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.\n\n### Publish\n```bash\nbash SKILL_DIR/scripts/publish.sh /path/to/index.html REPO_NAME public \"Description\"\n```\n\nPass `private` instead of `public` if the user requests it.\n\nThe script creates the repo, pushes `index.html` (plus `assets/` if present), and enables GitHub Pages.\n\n**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.\n\n## 5. Output\n\nTell the user:\n- **Repository:** `https://github.com/USERNAME/REPO_NAME`\n- **Live URL:** `https://USERNAME.github.io/REPO_NAME/`\n- **Note:** Pages takes 1-2 minutes to go live.\n\n## Error Handling\n\n- **Repo already exists:** Suggest appending a number (`my-slides-2`) or a date (`my-slides-2026`).\n- **Pages enablement fails:** Still return the repo URL. User can enable Pages manually in repo Settings.\n- **PPTX conversion fails:** Tell user to run `pip install python-pptx`.\n- **PDF conversion fails:** Suggest installing `poppler-utils` (`apt install poppler-utils` or `brew install poppler`).\n- **Google Slides download fails:** The presentation may not be publicly accessible. Ask user to make it viewable or download the PPTX manually.","tags":["publish","pages","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/publish-to-pages","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T05:40:31.472Z","embedding":null,"createdAt":"2026-04-18T20:31:00.600Z","updatedAt":"2026-04-22T05:40:31.472Z","lastSeenAt":"2026-04-22T05:40:31.472Z","tsv":"'-2':508 '/d':352 '/dev/null':38,49,62 '/path/to/index.html':417 '/presentation':118 '/presentation/d/presentation_id/export/pptx':363 '/repo_name/':503 '/tmp/output.html':242,254,290,302 '/tmp/slides.pptx':365 '/username/repo_name':498 '1':25,340,507 '100mb':195 '150mb':178 '2':84,354,525 '2026':532 '20mb':153,167 '3':133,366 '4':376 '5':490 '50':156,170 'access':588 'alongsid':471 'alreadi':516 'append':519 'apt':327,569 'ask':119,589 'asset':149,164,176,215,220,248,257,296,305,440,450,460,469,482 'auth':47,57 'authent':54 'automat':141,464 'awesom':4 'bash':34,236,284,358,413,414 'behavior':211 'block':81 'brew':333,575 'category-awesome-copilot' 'check':27 'cli':42 'cli.github.com':45 'command':35,59 'contain':115,205 'content':18 'convers':69,76,134,139,223,234,550,562 'convert':273,368,373 'copi':467 'copilot':5 'creat':381,434 'curl':359 'date':528 'default':129,384 'descript':421 'detect':86,96,142,465 'determin':87 'dir/scripts/convert-pdf.py':287,299 'dir/scripts/convert-pptx.py':239,251 'dir/scripts/publish.sh':416 'direct':228 'directori':470,483,489 'docs.google.com':117,362 'docs.google.com/presentation':116 'docs.google.com/presentation/d/presentation_id/export/pptx':361 'download':355,580,596 'echo':39,50,63 'embed':314 'enabl':444,534,543 'enterpris':410 'error':33,513 'exist':517 'extens':99,105,109,132 'extern':148,214,219,247,256,295,304,449 'external-asset':213,255,303 'extract':341 'fail':535,551,563,581 'file':98,104,108,136,144,152,162,166,177,190,198,227,241,245,253,289,293,301,458,474,479 'filenam':130 'forc':209,246,294 'gh':37,41,46,52,56 'github':8,20,193,400,445 'github.com':497 'github.com/username/repo_name':496 'go':511 'googl':111,338,578 'handl':137,514 'htm':102 'html':97,100,206,221,316,456,473,478 'id':344 'imag':157,158 'includ':276 'index.html':230,438 'individu':189 'input':85,88,95,240,252,288,300 'instal':43,268,328,334,557,565,570,576 'instead':186,424 'keep':188 'l':360 'larg':135,143,244,292 'limit':196 'live':499,512 'login':58 'long':349 'maco':337 'make':475,592 'manual':545,599 'may':584 'minut':509 'miss':40,51,64,263,323 'mode':150,451 'my-slid':522,529 'name':125,419 'navig':319 'need':66,224 'no-external-asset':217 'note':398,447,504 'number':521 'o':364 'one':23 'option':74 'output':455,491 'page':3,12,21,171,172,307,401,446,505,533,544 'parent':488 'pass':422 'path':185 'pdf':75,107,110,165,184,272,561 'pdftoppm':78,283,321 'pip':267,556 'plan':411 'plus':439 'png':312 'pngs':173 'poppler':71,280,330,335,567,572,577 'poppler-util':70,279,329,566,571 'pptx':68,103,106,151,182,231,261,271,357,370,549,560,598 'prerequisit':26 'present':15,343,442,583 'print':179 'privat':389,393,396,403,423 'pro':407 'produc':200 'provid':94,128 'public':382,420,426,587 'publish':1,10,13,377,412,462 'publish-to-pag':9 'push':437 'python':260,270,559 'python-pptx':259,269,558 'python3':61,65,237,249,285,297 'refer':457 'render':309 'repo':124,379,394,404,418,436,515,539,547 'repositori':495 'request':430 'requir':278,405 'return':537 'run':28,55,232,555 'save':159,174 'script':140,235,277,374,433,463 'self':204 'self-contain':203 'separ':161 'set':548 'shot':24 'silent':30 'singl':202 'skill':6,238,250,286,298,415 'slide':112,318,339,524,531,579 'small':197 'source-github' 'specifi':388 'status':48 'still':199,536 'string':350 'suggest':183,518,564 'sure':476 'surfac':32 'switch':146 'take':506 'team':408 'tell':264,324,492,552 'type':89 'url':113,114,347,500,540 'use':225,371,395,453 'user':93,121,266,326,387,429,494,541,553,590 'username.github.io':502 'username.github.io/repo_name/':501 'util':72,281,331,568,573 'v':36,60 'via':77 'viewabl':594 'visibl':378 'want':391 'warn':181 'web':17 'well':191 'without':131","prices":[{"id":"80e3d85d-a164-4163-95a2-fc0a6ede8f03","listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:31:00.600Z"}],"sources":[{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","source":"github","sourceId":"github/awesome-copilot/publish-to-pages","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/publish-to-pages","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:42.530Z","lastSeenAt":"2026-04-22T00:52:15.115Z"},{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","source":"skills_sh","sourceId":"github/awesome-copilot/publish-to-pages","sourceUrl":"https://skills.sh/github/awesome-copilot/publish-to-pages","isPrimary":true,"firstSeenAt":"2026-04-18T20:31:00.600Z","lastSeenAt":"2026-04-22T05:40:31.472Z"}],"details":{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"publish-to-pages","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/publish-to-pages"},"updatedAt":"2026-04-22T05:40:31.472Z"}}