Build Your Own

Paste this into your agentic coding tool of choice to set up a personal blog deployed to GitHub Pages.

What you’ll get

  • A Hugo static site using the Weaver theme (IndieWeb-friendly)
  • GitHub Pages deployment via GitHub Actions
  • A ready-to-write blog with posts, an about page, and navigation

Prerequisites

  • Git installed
  • A GitHub account with a repo created (can be empty)
  • Hugo extended installed locally (for previewing)
  • GitHub CLI (gh) installed and authenticated

Prompt

Copy everything below this line and paste it into your LLM coding tool, replacing the placeholder values with your own.


I want you to set up a Hugo blog deployed to GitHub Pages. Here’s my info:

  • GitHub username: YOUR_USERNAME
  • Repo name: YOUR_REPO (already created on GitHub)
  • Site title: YOUR_SITE_TITLE
  • Author name: YOUR_NAME
  • Author bio: A SHORT BIO
  • Location: YOUR_LOCATION (optional)

Do the following steps in order:

1. Initialize the Hugo site

hugo new site . --force

2. Add the Weaver theme as a git submodule

git submodule add https://github.com/highb/weaver.git themes/weaver

3. Configure hugo.toml

Set it up with these values:

baseURL = "https://YOUR_USERNAME.github.io/YOUR_REPO"
languageCode = "en-us"
title = "YOUR_SITE_TITLE"
theme = "weaver"

[params]
  defaultTheme = ""

  [params.author]
    name = "YOUR_NAME"
    bio = "YOUR_BIO"
    url = "https://YOUR_USERNAME.github.io/YOUR_REPO"

[menu]
  [[menu.main]]
    name = "Home"
    url = "/"
    weight = 1

  [[menu.main]]
    name = "Posts"
    url = "/posts/"
    weight = 2

  [[menu.main]]
    name = "About"
    url = "/about/"
    weight = 3

Add any social links you want under [[params.social]] with name and url fields.

4. Create a .gitignore

public/
resources/_gen/
.hugo_build.lock
.DS_Store
Thumbs.db

5. Create an about page at content/about.md

Write a short about page with my info. Set draft = false.

6. Create a first blog post at content/posts/

Pick any topic I’ve mentioned or write a short intro post. Set draft = false and today’s date.

7. Set up GitHub Pages deployment

Create .github/workflows/hugo.yml with a workflow that:

  • Triggers on push to main
  • Installs Hugo extended
  • Checks out the repo with submodules
  • Builds with hugo --gc --minify
  • Deploys to GitHub Pages using actions/deploy-pages@v4

Then enable GitHub Pages on the repo to use GitHub Actions as the build source:

gh api repos/YOUR_USERNAME/YOUR_REPO/pages -X PUT -f build_type=workflow -f source.branch=main -f source.path="/"

8. Commit and push

Commit everything and push to origin main.

9. Writing new posts

After setup, I can create new posts by asking:

Write a new blog post about TOPIC

Posts go in content/posts/ as markdown files with this front matter:

+++
date = 'YYYY-MM-DD'
draft = false
title = 'Post Title'
+++

To preview locally before pushing: hugo server -D


That’s it. After the push, the site will be live at https://YOUR_USERNAME.github.io/YOUR_REPO/ once the Actions workflow completes.