Skip to content

About

Website for Another Thing, a podcast by Jamie Thingelstad — an Eleventy static site (a publishing surface of the Studio brain).

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

another.thingelstad.com

The home for Another Thing, a podcast by Jamie Thingelstad. Built with Eleventy and deployed to GitHub Pages.

Adding a new episode

  1. Drop the MP3 into uploads/YYYY/.

  2. Create one markdown file in content/episodes/, named like 00N-slug.md:

    ---
    title: How do you start a podcast?
    number: 1
    slug: how-do-you-start-a
    date: 2025-10-05T18:48:44-05:00
    audio: /uploads/2025/another-thing-1.mp3
    transcript: 001-how-do-you-start-a-podcast.txt
    summary: Stepping into podcasting and trying my hand at something new.
    guid: https://another.thingelstad.com/2025/10/05/how-do-you-start-a.html
    guidIsPermalink: true
    ---
    
    Show notes go here as normal markdown.
  3. Optionally drop a transcript text file alongside the markdown (referenced by transcript: in the frontmatter). Paragraphs are separated by blank lines.

  4. Commit and push. GitHub Actions builds and deploys to Pages.

Duration and file size are read from the MP3 automatically at build time. The episode's permalink is computed from the publish date and slug (/YYYY/MM/DD/slug.html); the guid frontmatter field locks the RSS GUID independently so subscriptions stay valid even if a slug is later edited.

librarian-thing imports these episode markdown/transcript files into data/podcast/another-thing/episodes/ for the Librarian podcast corpus. Another remains the publishing surface; the Librarian owns Thingy's searchable corpus.

Local development

Use Node 24.

npm install
npm run serve

Open http://localhost:8080.

Build

npm run build

Runs Eleventy, then builds the Pagefind search index over the output in _site/.

npm test

Runs the node --test suite: the docs check, the sites strip on the built pages, and whether the vendored src/_data/sites.json still matches ../shared/sites.json (skipped when that sibling folder is not checked out, as in CI).

Architecture

  • Eleventy 3 with Nunjucks templates; ESM project ("type": "module").
  • Node 24 for local builds and GitHub Pages deploys.
  • Markdown-per-episode, one file in content/episodes/, with auto-derived audio metadata via music-metadata. No central JSON database.
  • Transcripts inline on each episode page, below the show notes.
  • Pagefind client-side search, indexed once per episode and reachable from /search/.
  • Jamie's sites strip at the top of every page, the same strip as on Jamie's other sites. It renders at build time from src/_data/sites.json, a vendored copy of thingelstad.com/shared/sites.json: edit the shared file, then run npm run sites:sync (and npm run sites:check to confirm). The markup and colours are the shared contract in thingelstad.com/AGENTS.md.
  • Tinylytics for privacy-friendly analytics, per-episode kudos buttons, visitor country flags, and a play-event custom event fired the first time each episode is played.
  • GitHub Pages with custom domain via CNAME. Deploy workflow at .github/workflows/deploy.yml.

Feeds and machine-readable indexes

The site publishes the same content in several formats:

URL Format Purpose
/podcast.xml RSS 2.0 + iTunes + Podcast Index Podcast directories and apps
/feed.xml RSS 2.0 + content:encoded Plain feed readers
/index.json JSON Programmatic catalog of episodes
/llms.txt Markdown llms.txt index for LLMs
/YYYY/MM/DD/slug.txt Markdown Per-episode plain-text companion (show notes + full transcript)
/sitemap.xml XML Standard sitemap

Each new episode automatically appears in all of these on the next build.

URL preservation

The site replaces a previous micro.blog deployment at the same domain. The following URLs are preserved exactly to keep podcast directory subscriptions valid:

  • /podcast.xml — canonical podcast RSS feed (Apple, Spotify, Overcast, etc. poll this URL)
  • /YYYY/MM/DD/slug.html — episode permalinks and RSS <guid> values
  • /uploads/YYYY/*.mp3 — episode audio enclosures
  • /uploads/2025/another-thing-3000.png — channel cover art

Permalink shape and GUID handling live in lib/loadEpisodes.js.

Deploy

Pushes to main trigger .github/workflows/deploy.yml, which runs npm ci, npm test and npm run build and publishes _site/ to GitHub Pages. The custom domain is set via the CNAME file at the repo root.

About

Website for Another Thing, a podcast by Jamie Thingelstad — an Eleventy static site (a publishing surface of the Studio brain).

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages