isite

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2026 License: Apache-2.0

README

isite

Go

Convert GitHub issues to a website.

Features

  • use GitHub issues as the source of truth
  • generate posts from the issues with issue comments and reactions
  • allow GFM with restricted HTML support

Examples

Installation

Usage

isite generate --help

By default, isite generate uses Hugo with the PaperMod theme. After generating the site, build it with Hugo or explicitly select another supported engine.

Hugo and Zola theme clones are cached in ~/.cache/isite/themes for seven days. Remove expired caches with:

isite prune

Engines

Hugo (default)
isite generate --base-url https://example.github.io/repository
cd output
hugo

OG metadata and images are enabled in production. Preview locally with:

hugo server --baseURL http://localhost:1313/ --appendPort=false

The output is output/public; posts are in content/posts/.

Astro
isite generate --engine astro --base-url https://example.github.io/repository
cd output
npm install
npm run build

The output is output/dist. Astro themes must be AstroPaper-compatible.

GitHub Actions

[!IMPORTANT] Please remember to enable the GitHub Pages with GitHub Actions as the source.

You can audit and apply the following GitHub Actions workflow to deploy the static content generated by isite to GitHub Pages.

name: Deploy static content to Pages

on:
  issues:
    types:
      - opened
      - edited
      - closed
      - reopened
      - labeled
      - unlabeled
  issue_comment:
    types:
      - created
      - edited
      - deleted
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: ${{ github.workflow }}
  cancel-in-progress: true

jobs:
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    env:
      GH_TOKEN: ${{ github.token }}
      # bump the versions here
      ISITE_VERSION: v0.4.0
      HUGO_VERSION: v0.165.0
      USER: ${{ github.repository_owner }}
      REPO: ${{ github.event.repository.name }}
      # change this to your custom domain name
      BASE_URL: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}
    steps:
      - name: Checkout
        uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Generate markdown
        run: |
          gh release download $ISITE_VERSION --repo kemingy/isite -p '*linux_amd64*' -O- \
            | tar -xz -C /usr/local/bin isite
          isite generate --user $USER --repo $REPO --base-url $BASE_URL
          HUGO_ASSET="hugo_extended_${HUGO_VERSION#v}_linux-amd64.tar.gz"
          gh release download $HUGO_VERSION --repo gohugoio/hugo \
            -p "$HUGO_ASSET" -O- | tar -xz -C /usr/local/bin hugo
          hugo --source output --destination public --baseURL $BASE_URL
      - name: Setup Pages
        uses: actions/configure-pages@v6
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: 'output/public'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v5
Deploy with Astro

Replace the Hugo generation/build step with:

      - name: Generate Astro site
        run: |
          gh release download $ISITE_VERSION --repo kemingy/isite -p '*linux_amd64*' -O- \
            | tar -xz -C /usr/local/bin isite
          isite generate --engine astro --user $USER --repo $REPO --base-url $BASE_URL
          npm install --prefix output
          npm run build --prefix output
      - name: Upload Astro artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: 'output/dist'
Deploy with Zola
      - name: Generate Zola site
        env:
          ZOLA_VERSION: v0.23.4
        run: |
          gh release download $ISITE_VERSION --repo kemingy/isite -p '*linux_amd64*' -O- \
            | tar -xz -C /usr/local/bin isite
          gh release download $ZOLA_VERSION --repo getzola/zola \
            -p '*x86_64-unknown-linux-gnu*' -O- | tar -xz -C /usr/local/bin zola
          isite generate --engine zola --user $USER --repo $REPO --base-url $BASE_URL
          (cd output && zola build --base-url $BASE_URL)
      - name: Upload Zola artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: 'output/public'

Customization

Domain name

Change the BASE_URL in the GitHub Actions workflow to your custom domain name.

Other themes
isite generate --theme <theme_name> --theme-repo <user/repo>

For Astro, use an AstroPaper-compatible repository with --engine astro.

Zola
isite generate --engine zola --base-url https://example.github.io/repository
cd output
zola build --base-url https://example.github.io/repository
Backup Markdown files to the Repo
- name: backup markdown files
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    git config user.name "GitHub Actions Bot"
    git config user.email "github-actions@users.noreply.github.com"
    git checkout -b backup
    git add output/content
    git commit -m "Backup markdown files"
    git push --force origin backup

Directories

Path Synopsis
cmd
isite command
pkg
cli
ssg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL