Repository for the IT Guy Show
Find a file
2026-08-19 12:01:01 -05:00
.forgejo/workflows importing backlog 2026-07-17 16:59:25 -05:00
_to_delete episode guide cleanup 2026-08-19 09:52:30 -05:00
graphics episode guide cleanup 2026-08-19 09:52:30 -05:00
scripts script fix 2026-08-19 12:01:01 -05:00
.gitattributes Scaffold show ops repo: episode guides, graphics, scripts, CI plan 2026-07-17 15:49:48 -05:00
.gitignore Scaffold show ops repo: episode guides, graphics, scripts, CI plan 2026-07-17 15:49:48 -05:00
PRODUCTION-PLAYBOOK.md playbook creation 2026-08-19 09:19:04 -05:00
README.md Scaffold show ops repo: episode guides, graphics, scripts, CI plan 2026-07-17 15:49:48 -05:00
WORKFLOW.md itg027 2026-07-27 19:58:11 -05:00

itg-show

Operations repo for The IT Guy Show. This is the single source of truth for each episode: the guide I record from, the data that drives the graphics, and the copy that gets published everywhere else. Everything downstream (the Hugo companion post, the YouTube and Fireside titles, the NextGenerator thumbnail) is derived from the files in here.

Why this exists: the show notes used to live in Google Docs and the graphics data in a CSV on Google Drive. Both are painful to automate against. Plain text in git is not.

Layout

  • episodes/ - one markdown file per episode, the source of truth. _TEMPLATE.md is the starting point for a new episode.
  • graphics/ - NextGenerator SVG templates and the title CSVs that feed them, plus the source images the templates pull in.
  • scripts/ - small tools that turn an episode file into what I publish.
  • .forgejo/workflows/ - runner automation (thumbnails, video) as it comes online.

The two-title model

Every episode carries two titles on purpose:

  • short_title goes on the banner and thumbnail. Keep it short or it runs off the template. Example: "Open Source Passwords?"
  • full_title goes on YouTube, Fireside, Castopod, and the blog. It can be long. Example: "Open Source Password Manager?! | The IT Guy Show 026"

short_title is what lands in graphics/ITG_titles.csv for NextGenerator. full_title is what the platforms and the blog post use.

Graphics

NextGenerator (Inkscape extension) reads graphics/ITG_titles.csv plus one SVG template, swaps the %VAR_*% placeholders per row, and exports PNGs.

Point NextGenerator at:

  • CSV: graphics/ITG_titles.csv
  • Template: graphics/ITG_title_template.svg (video) or graphics/audio-cover.svg (audio)
  • Non-text values to replace: {"Headshot": "default.png"}

The templates reference default.png for the photo, and the Headshot column swaps in the real image at render time. The source images need to sit next to the templates. Copy them in once (run on your Mac, not through the bridge):

cp "$HOME/Library/CloudStorage/GoogleDrive-eric@hendricks.life/My Drive/Documents/podcasts/IT Guy Show/assets/"{host.png,default.png,it_guy_show_logo.png,icon-circle-color.png} graphics/

Publishing an episode

  1. Copy episodes/_TEMPLATE.md to episodes/ITG0XX-slug.md and fill it in.
  2. Record from the guide.
  3. Refresh the thumbnail CSV: python scripts/build-csv.py
  4. Generate the Hugo companion post (see scripts/).
  5. Run NextGenerator for the thumbnail and audio cover.

Roadmap

  • Forgejo Actions runner to render thumbnails on push (Inkscape CLI or resvg).
  • ffmpeg step to assemble hook + intro + episode + outro, with fades.
  • Castopod migration: only the platform URLs in the Hugo data/podcasts.yaml change, not the posts.