Github pages deployer
Deploy affiliate content to GitHub Pages for free hosting.
How to use it
- Hit Copy SKILL.md — or use the Claude Code line below to get every file.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit Affitor/affiliate-skills/skills/distribution/github-pages-deployer#main ~/.claude/skills/github-pages-deployerFor one project only, change the path to .claude/skills/github-pages-deployer. This skill also uses deploy.yml — copying SKILL.md alone won't be enough. See the folder on GitHub.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text372 lines
GitHub Pages Deployer
Generate a complete, ready-to-deploy GitHub Pages setup for affiliate landing pages, bio link hubs, and blog posts. Outputs the full repo file structure, a GitHub Actions CI/CD workflow for automatic deploys, and step-by-step instructions for custom domain configuration with SSL. Free hosting, no credit card required.
Stage
S5: Distribution — GitHub Pages is the most underused free hosting platform in affiliate marketing. 100GB bandwidth/month, free SSL, custom domains, and automatic deploys from Git. This skill takes any HTML output from S4 (landing page) or S5 (bio-link) and gets it live on the internet in under 10 minutes.
When to Use
- User wants to deploy a landing page (from S4) to a free host
- User wants to deploy a bio link page (from S5 bio-link-deployer) to a free host
- User wants free static hosting with a custom domain and SSL
- User already has HTML files and wants to publish them without paying for hosting
- User wants automated deploys so pushing to main branch auto-updates the live site
- User wants to host a simple affiliate blog or resource page for free
Input Schema
site:
type: string # REQUIRED — "landing-page" | "bio-link" | "blog" | "resource-page"
html_content: string # REQUIRED — the HTML content to deploy (full file or description)
# If S4 or bio-link-deployer was run, use that output automatically
title: string # REQUIRED — site title (used in repo name and meta)
description: string # OPTIONAL — meta description for SEO
repo:
name: string # OPTIONAL — GitHub repo name (auto-generated from title if omitted)
# e.g., "heygen-review" or "alex-bio-links"
username: string # OPTIONAL — GitHub username. Used in generated URLs.
# If not provided, use "[your-username]" as placeholder.
visibility: string # OPTIONAL — "public" | "private". Default: "public"
# Note: private repos require GitHub Pro for Pages
domain:
custom: string # OPTIONAL — custom domain (e.g., "links.yourdomain.com")
subdomain: string # OPTIONAL — subdomain type: "apex" | "subdomain"
# Apex = yourdomain.com, Subdomain = www.yourdomain.com
deploy:
method: string # OPTIONAL — "github-actions" | "manual". Default: "github-actions"
branch: string # OPTIONAL — source branch. Default: "main"
Chaining context: If S4 (landing-page-creator) or S5 (bio-link-deployer) was run earlier in the conversation, automatically use that HTML output as site.html_content. Do not ask the user to paste it again.
Workflow
Step 1: Gather Inputs
Check if an HTML page was generated earlier in the conversation (S4 landing page or bio-link page). If yes, confirm: "I'll deploy the [page type] we built earlier. What's your GitHub username?"
If no prior HTML exists:
- Ask for HTML content or page description
- Offer to call S4 or bio-link-deployer first: "Want me to create the page first, then set up the deploy?"
Step 2: Generate Repo Structure
Create the complete file and folder structure for the GitHub Pages repo.
Standard structure for a single-page site:
[repo-name]/
├── index.html # Main page (the affiliate landing page or bio link)
├── assets/
│ ├── css/
│ │ └── style.css # External CSS if extracted from HTML (optional)
│ └── images/
│ └── .gitkeep # Placeholder — add images here
├── CNAME # Only if custom domain is set
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions workflow
├── .gitignore
└── README.md
For multi-page blog/resource site, add:
├── blog/
│ ├── index.html # Blog listing page
│ └── [post-slug]/
│ └── index.html # Individual post pages
├── about/
│ └── index.html
└── sitemap.xml
Step 3: Generate the GitHub Actions Workflow
Write the deploy.yml file that automatically deploys to GitHub Pages on every push to main.
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch: # Allow manual trigger from GitHub UI
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '.' # Deploy from repo root
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
This workflow uses the official GitHub Pages Actions (no third-party dependencies, no tokens needed).
Step 4: Generate the CNAME File (if custom domain)
If domain.custom is provided, create a CNAME file with just the domain:
links.yourdomain.com
For apex domains (yourdomain.com), the CNAME file contains the bare domain. GitHub Pages handles the redirect from www to apex automatically when configured correctly.
Step 5: Generate DNS Configuration Instructions
Provide exact DNS records to add in the user's domain registrar (Cloudflare, Namecheap, GoDaddy, etc.).
For subdomain (e.g., links.yourdomain.com):
Type: CNAME
Name: links
Value: [username].github.io
TTL: Auto or 3600
For apex domain (yourdomain.com):
Type: A Name: @ Value: 185.199.108.153
Type: A Name: @ Value: 185.199.109.153
Type: A Name: @ Value: 185.199.110.153
Type: A Name: @ Value: 185.199.111.153
Type: AAAA Name: @ Value: 2606:50c0:8000::153
Type: AAAA Name: @ Value: 2606:50c0:8001::153
Type: AAAA Name: @ Value: 2606:50c0:8002::153
Type: AAAA Name: @ Value: 2606:50c0:8003::153
Note: GitHub's IP addresses above are current as of 2026. Always verify at https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site
Step 6: Generate README.md
Write a clean README for the repo:
# [Site Title]
Affiliate landing page hosted on GitHub Pages.
## Live Site
[Live URL]
## Deploy
Automatic via GitHub Actions — push to `main` triggers a deploy.
## Powered By
[Affitor](https://affitor.com/?utm_source=affiliate-skills)
Step 7: Output the Complete Setup
Present all outputs in numbered sections with clear file labels.
Step 8: Self-Validation
Before presenting output, verify:
- GitHub Actions YAML is valid syntax
- CNAME file is correct format if custom domain configured
- All file paths are valid and consistent
- Deployment commands are copy-paste ready
- README.md is included in the repository files
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
Output Schema
output_schema_version: "1.0.0" # Semver — bump major on breaking changes
repo:
name: string # e.g., "heygen-review-2026"
url: string # e.g., "https://github.com/[username]/[repo-name]"
pages_url: string # e.g., "https://[username].github.io/[repo-name]"
custom_domain_url: string | null
files:
- path: string # e.g., "index.html"
content: string # full file content
- path: ".github/workflows/deploy.yml"
content: string
- path: "CNAME" # null if no custom domain
content: string | null
- path: ".gitignore"
content: string
- path: "README.md"
content: string
setup_steps:
- step: number
action: string # e.g., "Create GitHub repo"
command: string | null # CLI command if applicable
dns_records: object | null # DNS config if custom domain provided
estimated_time: string # e.g., "8-10 minutes"
Output Format
Present in five clearly labeled sections:
Section 1: Summary
- Repo name, live URL, custom domain URL (if applicable)
- Estimated time to go live: X minutes
Section 2: Files to Create Each file in its own fenced code block with the file path as the label. User can copy-paste each file's content directly.
Section 3: GitHub Setup Steps Numbered instructions:
- Create the repo on GitHub (link to github.com/new)
- Initialize and push (CLI commands provided)
- Enable GitHub Pages in repo Settings
- Set source to "GitHub Actions"
Section 4: DNS Setup (only if custom domain) Exact records to add, formatted as a table. Provider-specific notes for Cloudflare users (Proxy OFF for GitHub Pages).
Section 5: Verification How to confirm the deploy worked and SSL is active (usually 5-15 minutes for DNS propagation).
Error Handling
- No HTML content and no prior skill output: "I don't see a page to deploy yet. Want me to create a landing page first (S4), a bio link page, or do you have HTML to paste?"
- Private repo for free GitHub account: "Private repos require GitHub Pro ($4/mo) for GitHub Pages. Your options: (1) make the repo public, (2) upgrade to Pro, (3) use Netlify Drop for free private deploys."
- Custom domain not propagating: "DNS changes can take 1-48 hours. If it's been over 24 hours, double-check: CNAME file contains exactly the domain, no
https://prefix; DNS record value is[username].github.io(with no trailing slash). Enable Cloudflare proxy OFF (grey cloud) for GitHub Pages to work." - GitHub Actions failing: Common causes: Pages not enabled in repo Settings, branch name mismatch (use
mainnotmaster), orpages: writepermission missing on older repos. Provide troubleshooting checklist. - User wants WordPress or dynamic site: "GitHub Pages only hosts static HTML/CSS/JS — no PHP, no databases. For WordPress or dynamic content, use Cloudflare Pages, Netlify, or a VPS. For a simple affiliate site, static is faster and better for SEO anyway."
- Repo name taken: Suggest appending year (
heygen-review-2026) or niche (heygen-review-for-creators).
Examples
Example 1: Deploy landing page from S4
Context: S4 generated a HeyGen landing page HTML.
User: "Deploy this to GitHub Pages. My username is alexmarketer."
Action: Auto-use S4 HTML. Repo name: heygen-landing. Pages URL: https://alexmarketer.github.io/heygen-landing. Generate all files + deploy instructions.
Example 2: Deploy bio link with custom domain
Context: Bio-link-deployer generated a bio page.
User: "Put this on GitHub Pages at links.mysite.com."
Action: Repo + CNAME file with links.mysite.com. DNS: CNAME record pointing to [username].github.io. Cloudflare note: proxy must be disabled (grey cloud icon).
Example 3: Multi-page resource site User: "I want to host an affiliate resource site on GitHub Pages with a homepage, about page, and 3 blog posts." Action: Generate multi-page structure. Scaffold all index.html files with placeholder content. Deploy workflow. Note: for a blog with 10+ posts, suggest Jekyll or Eleventy for templating.
References
shared/references/ftc-compliance.md— FTC affiliate disclosure. Ensure the deployed HTML includes disclosure language.shared/references/affitor-branding.md— Affitor footer. Include in HTML before deploy.- GitHub Pages documentation: https://docs.github.com/en/pages
- GitHub Pages IP addresses (A records): https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site
shared/references/flywheel-connections.md— master flywheel connection map
Revenue & Action Plan
Expected Outcomes
- Revenue potential: A deployed landing page or bio link earns 24/7 — it's your always-on salesperson. Free hosting means 100% of revenue is profit. A single landing page can generate $200-1,000/month with consistent traffic
- Benchmark: Deployed affiliate pages indexed by Google start ranking within 2-4 weeks. Organic traffic from Google is the highest-converting free traffic source (4-5% conversion vs 1-2% from social)
- Key metric to track: Page visits → affiliate link clicks → conversions. Set up
conversion-trackerimmediately after deploying
Do This Right Now (15 min)
- Create the repo and push — follow the Setup Steps exactly (copy-paste commands)
- Verify the deploy — visit your GitHub Pages URL, confirm the page loads
- Submit to Google Search Console — add
https://[username].github.io/[repo]so Google indexes it faster - Share the live URL — post it on social media, add it to your bio link, and send it to your email list
Track Your Results
After deploying: set up conversion-tracker to monitor clicks and conversions. After 30 days, run seo-audit to optimize for search rankings. A page that ranks #1 for a buyer-intent keyword can earn $500-2,000/month passively.
Next step — copy-paste this prompt: "Set up conversion tracking for my deployed page at [URL]" → runs
conversion-tracker
Flywheel Connections
Feeds Into
conversion-tracker(S6) — deployed site URL to trackseo-audit(S6) — deployed site to audit
Fed By
landing-page-creator(S4) — HTML file to deploybio-link-deployer(S5) — bio link HTML to deploysqueeze-page-builder(S4) — squeeze page HTML to deploy
Feedback Loop
seo-audit(S6) checks deployed site health → identify deployment issues affecting SEO
Quality Gate
Before delivering output, verify:
- Would I share this on MY personal social?
- Contains specific, surprising detail? (not generic)
- Respects reader's intelligence?
- Remarkable enough to share? (Purple Cow test)
- Irresistible offer framing? (if S4 offer skills ran)
Any NO → rewrite before delivering.
chain_metadata:
skill_slug: "github-pages-deployer"
stage: "distribution"
timestamp: string
suggested_next:
- "conversion-tracker"
- "seo-audit"
| 1 | |
| 2 | name github-pages-deployer |
| 3 | description > |
| 4 | Deploy affiliate content to GitHub Pages for free hosting. Triggers on: |
| 5 | "deploy to GitHub Pages", "host on GitHub Pages", "free hosting for my affiliate site", |
| 6 | "push to GitHub Pages", "GitHub Pages setup", "deploy my landing page to GitHub", |
| 7 | "host my bio link on GitHub", "free affiliate website hosting", "github pages affiliate", |
| 8 | "set up GitHub Pages for my site", "deploy HTML to GitHub", "free static hosting", |
| 9 | "publish my affiliate page for free", "github pages custom domain". |
| 10 | license MIT |
| 11 | version "1.0.0" |
| 12 | tags ["affiliate-marketing", "distribution", "deployment", "email-marketing", "github-pages", "static-site"] |
| 13 | compatibility "Claude Code, ChatGPT, Gemini CLI, Cursor, Windsurf, OpenClaw, any AI agent" |
| 14 | metadata |
| 15 | author affitor |
| 16 | version "1.0" |
| 17 | stage S5-Distribution |
| 18 | |
| 19 | |
| 20 | # GitHub Pages Deployer |
| 21 | |
| 22 | Generate a complete, ready-to-deploy GitHub Pages setup for affiliate landing pages, bio link hubs, and blog posts. Outputs the full repo file structure, a GitHub Actions CI/CD workflow for automatic deploys, and step-by-step instructions for custom domain configuration with SSL. Free hosting, no credit card required. |
| 23 | |
| 24 | ## Stage |
| 25 | |
| 26 | S5: Distribution — GitHub Pages is the most underused free hosting platform in affiliate marketing. 100GB bandwidth/month, free SSL, custom domains, and automatic deploys from Git. This skill takes any HTML output from S4 (landing page) or S5 (bio-link) and gets it live on the internet in under 10 minutes. |
| 27 | |
| 28 | ## When to Use |
| 29 | |
| 30 | User wants to deploy a landing page (from S4) to a free host |
| 31 | User wants to deploy a bio link page (from S5 bio-link-deployer) to a free host |
| 32 | User wants free static hosting with a custom domain and SSL |
| 33 | User already has HTML files and wants to publish them without paying for hosting |
| 34 | User wants automated deploys so pushing to main branch auto-updates the live site |
| 35 | User wants to host a simple affiliate blog or resource page for free |
| 36 | |
| 37 | ## Input Schema |
| 38 | |
| 39 | |
| 40 | site: |
| 41 | type: string # REQUIRED — "landing-page" | "bio-link" | "blog" | "resource-page" |
| 42 | html_content: string # REQUIRED — the HTML content to deploy (full file or description) |
| 43 | # If S4 or bio-link-deployer was run, use that output automatically |
| 44 | title: string # REQUIRED — site title (used in repo name and meta) |
| 45 | description: string # OPTIONAL — meta description for SEO |
| 46 | |
| 47 | repo: |
| 48 | name: string # OPTIONAL — GitHub repo name (auto-generated from title if omitted) |
| 49 | # e.g., "heygen-review" or "alex-bio-links" |
| 50 | username: string # OPTIONAL — GitHub username. Used in generated URLs. |
| 51 | # If not provided, use "[your-username]" as placeholder. |
| 52 | visibility: string # OPTIONAL — "public" | "private". Default: "public" |
| 53 | # Note: private repos require GitHub Pro for Pages |
| 54 | |
| 55 | domain: |
| 56 | custom: string # OPTIONAL — custom domain (e.g., "links.yourdomain.com") |
| 57 | subdomain: string # OPTIONAL — subdomain type: "apex" | "subdomain" |
| 58 | # Apex = yourdomain.com, Subdomain = www.yourdomain.com |
| 59 | |
| 60 | deploy: |
| 61 | method: string # OPTIONAL — "github-actions" | "manual". Default: "github-actions" |
| 62 | branch: string # OPTIONAL — source branch. Default: "main" |
| 63 | |
| 64 | |
| 65 | **Chaining context**: If S4 (landing-page-creator) or S5 (bio-link-deployer) was run earlier in the conversation, automatically use that HTML output as `site.html_content`. Do not ask the user to paste it again. |
| 66 | |
| 67 | ## Workflow |
| 68 | |
| 69 | ### Step 1: Gather Inputs |
| 70 | |
| 71 | Check if an HTML page was generated earlier in the conversation (S4 landing page or bio-link page). If yes, confirm: "I'll deploy the [page type] we built earlier. What's your GitHub username?" |
| 72 | |
| 73 | If no prior HTML exists: |
| 74 | Ask for HTML content or page description |
| 75 | Offer to call S4 or bio-link-deployer first: "Want me to create the page first, then set up the deploy?" |
| 76 | |
| 77 | ### Step 2: Generate Repo Structure |
| 78 | |
| 79 | Create the complete file and folder structure for the GitHub Pages repo. |
| 80 | |
| 81 | **Standard structure for a single-page site:** |
| 82 | |
| 83 | |
| 84 | [repo-name]/ |
| 85 | ├── index.html # Main page (the affiliate landing page or bio link) |
| 86 | ├── assets/ |
| 87 | │ ├── css/ |
| 88 | │ │ └── style.css # External CSS if extracted from HTML (optional) |
| 89 | │ └── images/ |
| 90 | │ └── .gitkeep # Placeholder — add images here |
| 91 | ├── CNAME # Only if custom domain is set |
| 92 | ├── .github/ |
| 93 | │ └── workflows/ |
| 94 | │ └── deploy.yml # GitHub Actions workflow |
| 95 | ├── .gitignore |
| 96 | └── README.md |
| 97 | |
| 98 | |
| 99 | **For multi-page blog/resource site, add:** |
| 100 | |
| 101 | |
| 102 | ├── blog/ |
| 103 | │ ├── index.html # Blog listing page |
| 104 | │ └── [post-slug]/ |
| 105 | │ └── index.html # Individual post pages |
| 106 | ├── about/ |
| 107 | │ └── index.html |
| 108 | └── sitemap.xml |
| 109 | |
| 110 | |
| 111 | ### Step 3: Generate the GitHub Actions Workflow |
| 112 | |
| 113 | Write the `deploy.yml` file that automatically deploys to GitHub Pages on every push to `main`. |
| 114 | |
| 115 | |
| 116 | # .github/workflows/deploy.yml |
| 117 | name: Deploy to GitHub Pages |
| 118 | |
| 119 | on: |
| 120 | push: |
| 121 | branches: [ main ] |
| 122 | workflow_dispatch: # Allow manual trigger from GitHub UI |
| 123 | |
| 124 | permissions: |
| 125 | contents: read |
| 126 | pages: write |
| 127 | id-token: write |
| 128 | |
| 129 | concurrency: |
| 130 | group: "pages" |
| 131 | cancel-in-progress: false |
| 132 | |
| 133 | jobs: |
| 134 | deploy: |
| 135 | environment: |
| 136 | name: github-pages |
| 137 | url: ${{ steps.deployment.outputs.page_url }} |
| 138 | runs-on: ubuntu-latest |
| 139 | steps: |
| 140 | - name: Checkout |
| 141 | uses: actions/checkout@v4 |
| 142 | |
| 143 | - name: Setup Pages |
| 144 | uses: actions/configure-pages@v5 |
| 145 | |
| 146 | - name: Upload artifact |
| 147 | uses: actions/upload-pages-artifact@v3 |
| 148 | with: |
| 149 | path: '.' # Deploy from repo root |
| 150 | |
| 151 | - name: Deploy to GitHub Pages |
| 152 | id: deployment |
| 153 | uses: actions/deploy-pages@v4 |
| 154 | |
| 155 | |
| 156 | This workflow uses the official GitHub Pages Actions (no third-party dependencies, no tokens needed). |
| 157 | |
| 158 | ### Step 4: Generate the CNAME File (if custom domain) |
| 159 | |
| 160 | If `domain.custom` is provided, create a `CNAME` file with just the domain: |
| 161 | |
| 162 | |
| 163 | links.yourdomain.com |
| 164 | |
| 165 | |
| 166 | For apex domains (`yourdomain.com`), the CNAME file contains the bare domain. GitHub Pages handles the redirect from `www` to apex automatically when configured correctly. |
| 167 | |
| 168 | ### Step 5: Generate DNS Configuration Instructions |
| 169 | |
| 170 | Provide exact DNS records to add in the user's domain registrar (Cloudflare, Namecheap, GoDaddy, etc.). |
| 171 | |
| 172 | **For subdomain (e.g., links.yourdomain.com):** |
| 173 | |
| 174 | Type: CNAME |
| 175 | Name: links |
| 176 | Value: [username].github.io |
| 177 | TTL: Auto or 3600 |
| 178 | |
| 179 | |
| 180 | **For apex domain (yourdomain.com):** |
| 181 | |
| 182 | Type: A Name: @ Value: 185.199.108.153 |
| 183 | Type: A Name: @ Value: 185.199.109.153 |
| 184 | Type: A Name: @ Value: 185.199.110.153 |
| 185 | Type: A Name: @ Value: 185.199.111.153 |
| 186 | Type: AAAA Name: @ Value: 2606:50c0:8000::153 |
| 187 | Type: AAAA Name: @ Value: 2606:50c0:8001::153 |
| 188 | Type: AAAA Name: @ Value: 2606:50c0:8002::153 |
| 189 | Type: AAAA Name: @ Value: 2606:50c0:8003::153 |
| 190 | |
| 191 | |
| 192 | Note: GitHub's IP addresses above are current as of 2026. Always verify at https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site |
| 193 | |
| 194 | ### Step 6: Generate README.md |
| 195 | |
| 196 | Write a clean README for the repo: |
| 197 | |
| 198 | |
| 199 | # [Site Title] |
| 200 | |
| 201 | Affiliate landing page hosted on GitHub Pages. |
| 202 | |
| 203 | ## Live Site |
| 204 | [Live URL] |
| 205 | |
| 206 | ## Deploy |
| 207 | Automatic via GitHub Actions — push to `main` triggers a deploy. |
| 208 | |
| 209 | ## Powered By |
| 210 | [Affitor](https://affitor.com/?utm_source=affiliate-skills) |
| 211 | |
| 212 | |
| 213 | ### Step 7: Output the Complete Setup |
| 214 | |
| 215 | Present all outputs in numbered sections with clear file labels. |
| 216 | |
| 217 | ### Step 8: Self-Validation |
| 218 | |
| 219 | Before presenting output, verify: |
| 220 | |
| 221 | [ ] GitHub Actions YAML is valid syntax |
| 222 | [ ] CNAME file is correct format if custom domain configured |
| 223 | [ ] All file paths are valid and consistent |
| 224 | [ ] Deployment commands are copy-paste ready |
| 225 | [ ] README.md is included in the repository files |
| 226 | |
| 227 | If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes. |
| 228 | |
| 229 | ## Output Schema |
| 230 | |
| 231 | |
| 232 | output_schema_version: "1.0.0" # Semver — bump major on breaking changes |
| 233 | repo: |
| 234 | name: string # e.g., "heygen-review-2026" |
| 235 | url: string # e.g., "https://github.com/[username]/[repo-name]" |
| 236 | pages_url: string # e.g., "https://[username].github.io/[repo-name]" |
| 237 | custom_domain_url: string | null |
| 238 | |
| 239 | files: |
| 240 | - path: string # e.g., "index.html" |
| 241 | content: string # full file content |
| 242 | - path: ".github/workflows/deploy.yml" |
| 243 | content: string |
| 244 | - path: "CNAME" # null if no custom domain |
| 245 | content: string | null |
| 246 | - path: ".gitignore" |
| 247 | content: string |
| 248 | - path: "README.md" |
| 249 | content: string |
| 250 | |
| 251 | setup_steps: |
| 252 | - step: number |
| 253 | action: string # e.g., "Create GitHub repo" |
| 254 | command: string | null # CLI command if applicable |
| 255 | |
| 256 | dns_records: object | null # DNS config if custom domain provided |
| 257 | |
| 258 | estimated_time: string # e.g., "8-10 minutes" |
| 259 | |
| 260 | |
| 261 | ## Output Format |
| 262 | |
| 263 | Present in five clearly labeled sections: |
| 264 | |
| 265 | **Section 1: Summary** |
| 266 | Repo name, live URL, custom domain URL (if applicable) |
| 267 | Estimated time to go live: X minutes |
| 268 | |
| 269 | **Section 2: Files to Create** |
| 270 | Each file in its own fenced code block with the file path as the label. User can copy-paste each file's content directly. |
| 271 | |
| 272 | **Section 3: GitHub Setup Steps** |
| 273 | Numbered instructions: |
| 274 | Create the repo on GitHub (link to github.com/new) |
| 275 | Initialize and push (CLI commands provided) |
| 276 | Enable GitHub Pages in repo Settings |
| 277 | Set source to "GitHub Actions" |
| 278 | |
| 279 | **Section 4: DNS Setup** (only if custom domain) |
| 280 | Exact records to add, formatted as a table. Provider-specific notes for Cloudflare users (Proxy OFF for GitHub Pages). |
| 281 | |
| 282 | **Section 5: Verification** |
| 283 | How to confirm the deploy worked and SSL is active (usually 5-15 minutes for DNS propagation). |
| 284 | |
| 285 | ## Error Handling |
| 286 | |
| 287 | **No HTML content and no prior skill output**: "I don't see a page to deploy yet. Want me to create a landing page first (S4), a bio link page, or do you have HTML to paste?" |
| 288 | **Private repo for free GitHub account**: "Private repos require GitHub Pro ($4/mo) for GitHub Pages. Your options: (1) make the repo public, (2) upgrade to Pro, (3) use Netlify Drop for free private deploys." |
| 289 | **Custom domain not propagating**: "DNS changes can take 1-48 hours. If it's been over 24 hours, double-check: CNAME file contains exactly the domain, no `https://` prefix; DNS record value is `[username].github.io` (with no trailing slash). Enable Cloudflare proxy OFF (grey cloud) for GitHub Pages to work." |
| 290 | **GitHub Actions failing**: Common causes: Pages not enabled in repo Settings, branch name mismatch (use `main` not `master`), or `pages: write` permission missing on older repos. Provide troubleshooting checklist. |
| 291 | **User wants WordPress or dynamic site**: "GitHub Pages only hosts static HTML/CSS/JS — no PHP, no databases. For WordPress or dynamic content, use Cloudflare Pages, Netlify, or a VPS. For a simple affiliate site, static is faster and better for SEO anyway." |
| 292 | **Repo name taken**: Suggest appending year (`heygen-review-2026`) or niche (`heygen-review-for-creators`). |
| 293 | |
| 294 | ## Examples |
| 295 | |
| 296 | **Example 1: Deploy landing page from S4** |
| 297 | Context: S4 generated a HeyGen landing page HTML. |
| 298 | User: "Deploy this to GitHub Pages. My username is alexmarketer." |
| 299 | Action: Auto-use S4 HTML. Repo name: `heygen-landing`. Pages URL: `https://alexmarketer.github.io/heygen-landing`. Generate all files + deploy instructions. |
| 300 | |
| 301 | **Example 2: Deploy bio link with custom domain** |
| 302 | Context: Bio-link-deployer generated a bio page. |
| 303 | User: "Put this on GitHub Pages at links.mysite.com." |
| 304 | Action: Repo + CNAME file with `links.mysite.com`. DNS: CNAME record pointing to `[username].github.io`. Cloudflare note: proxy must be disabled (grey cloud icon). |
| 305 | |
| 306 | **Example 3: Multi-page resource site** |
| 307 | User: "I want to host an affiliate resource site on GitHub Pages with a homepage, about page, and 3 blog posts." |
| 308 | Action: Generate multi-page structure. Scaffold all index.html files with placeholder content. Deploy workflow. Note: for a blog with 10+ posts, suggest Jekyll or Eleventy for templating. |
| 309 | |
| 310 | ## References |
| 311 | |
| 312 | `shared/references/ftc-compliance.md` — FTC affiliate disclosure. Ensure the deployed HTML includes disclosure language. |
| 313 | `shared/references/affitor-branding.md` — Affitor footer. Include in HTML before deploy. |
| 314 | GitHub Pages documentation: https://docs.github.com/en/pages |
| 315 | GitHub Pages IP addresses (A records): https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site |
| 316 | `shared/references/flywheel-connections.md` — master flywheel connection map |
| 317 | |
| 318 | ## Revenue & Action Plan |
| 319 | |
| 320 | ### Expected Outcomes |
| 321 | **Revenue potential**: A deployed landing page or bio link earns 24/7 — it's your always-on salesperson. Free hosting means 100% of revenue is profit. A single landing page can generate $200-1,000/month with consistent traffic |
| 322 | **Benchmark**: Deployed affiliate pages indexed by Google start ranking within 2-4 weeks. Organic traffic from Google is the highest-converting free traffic source (4-5% conversion vs 1-2% from social) |
| 323 | **Key metric to track**: Page visits → affiliate link clicks → conversions. Set up `conversion-tracker` immediately after deploying |
| 324 | |
| 325 | ### Do This Right Now (15 min) |
| 326 | **Create the repo and push** — follow the Setup Steps exactly (copy-paste commands) |
| 327 | **Verify the deploy** — visit your GitHub Pages URL, confirm the page loads |
| 328 | **Submit to Google Search Console** — add `https://[username].github.io/[repo]` so Google indexes it faster |
| 329 | **Share the live URL** — post it on social media, add it to your bio link, and send it to your email list |
| 330 | |
| 331 | ### Track Your Results |
| 332 | After deploying: set up `conversion-tracker` to monitor clicks and conversions. After 30 days, run `seo-audit` to optimize for search rankings. A page that ranks #1 for a buyer-intent keyword can earn $500-2,000/month passively. |
| 333 | |
| 334 | > **Next step — copy-paste this prompt:** |
| 335 | > "Set up conversion tracking for my deployed page at [URL]" → runs `conversion-tracker` |
| 336 | |
| 337 | ## Flywheel Connections |
| 338 | |
| 339 | ### Feeds Into |
| 340 | `conversion-tracker` (S6) — deployed site URL to track |
| 341 | `seo-audit` (S6) — deployed site to audit |
| 342 | |
| 343 | ### Fed By |
| 344 | `landing-page-creator` (S4) — HTML file to deploy |
| 345 | `bio-link-deployer` (S5) — bio link HTML to deploy |
| 346 | `squeeze-page-builder` (S4) — squeeze page HTML to deploy |
| 347 | |
| 348 | ### Feedback Loop |
| 349 | `seo-audit` (S6) checks deployed site health → identify deployment issues affecting SEO |
| 350 | |
| 351 | ## Quality Gate |
| 352 | |
| 353 | Before delivering output, verify: |
| 354 | |
| 355 | Would I share this on MY personal social? |
| 356 | Contains specific, surprising detail? (not generic) |
| 357 | Respects reader's intelligence? |
| 358 | Remarkable enough to share? (Purple Cow test) |
| 359 | Irresistible offer framing? (if S4 offer skills ran) |
| 360 | |
| 361 | Any NO → rewrite before delivering. |
| 362 | |
| 363 | |
| 364 | chain_metadata: |
| 365 | skill_slug: "github-pages-deployer" |
| 366 | stage: "distribution" |
| 367 | timestamp: string |
| 368 | suggested_next: |
| 369 | - "conversion-tracker" |
| 370 | - "seo-audit" |
| 371 | |
| 372 |