- Python 100%
| .forgejo/workflows | ||
| _to_delete | ||
| graphics | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| PRODUCTION-PLAYBOOK.md | ||
| README.md | ||
| WORKFLOW.md | ||
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.mdis 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_titlegoes on the banner and thumbnail. Keep it short or it runs off the template. Example: "Open Source Passwords?"full_titlegoes 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) orgraphics/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
- Copy
episodes/_TEMPLATE.mdtoepisodes/ITG0XX-slug.mdand fill it in. - Record from the guide.
- Refresh the thumbnail CSV:
python scripts/build-csv.py - Generate the Hugo companion post (see
scripts/). - 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.yamlchange, not the posts.