Podcast Metadata Generator

The episode is done. The label isn’t.

Podcast Metadata Generator reads your transcript, video, or audio file and writes the titles, descriptions, YouTube chapters, and subtitles for it.

Have .NET 10? Run this

dnx PodcastMetadataGenerator
New to this? Start the install guide

What it writes for you

Example episode, made up for this page

File in
spare-room-radio-031.mp3
Length
42:18
Title
Four Episodes in One Day: Does Batch Recording Work?
Style

Tick a style and the title is retyped.

Description short
We tried recording a full month of episodes in a single day to see whether batch recording saves time or just wears you out. Here is how we planned the day, where our energy dipped, the episode we nearly scrapped, and the schedule we are keeping from now on.
Chapters
  1. 00:00 Welcome and the plan
  2. 02:45 Why we wanted to batch
  3. 09:30 Prepping four outlines
  4. 17:05 Hour six: the energy dip
  5. 26:40 The episode we nearly scrapped
  6. 34:15 What we would change
  7. 40:02 Our new schedule
Subtitles .srt

1
00:00:00,000 --> 00:00:04,200
Welcome back to Spare Room Radio.

  • Runs on Windows, macOS, Linux
  • Needs .NET 10 and GitHub Copilot
  • Copilot plan Free is enough
  • Transcribes on your own computer

Side A: Install it

Four steps, and you only do them once. You do not need to have used a terminal before: every command is written out in full, ready to copy.

Your computer
  1. A1

    Open a terminal

    A terminal is a window where you type a command and press Enter. You only need it to start the app. After that you move around with the arrow keys.

    Windows: press the Windows key, type Terminal, and press Enter. On older Windows 10, type PowerShell instead.

    macOS: press Command + Space, type Terminal, and press Return.

    Linux: press Ctrl + Alt + T, or search your apps for Terminal.

  2. A2

    Install .NET 10

    The app runs on .NET, a free toolkit from Microsoft. You need version 10 or later.

    Download the .NET 10 SDK

    Choose the SDK installer for your computer and run it. Then close the terminal, open it again, and check that it worked:

    dotnet --version

    You should see a number that starts with 10. If you see “command not found”, close and reopen the terminal and try once more.

  3. A3

    Sign in to GitHub Copilot

    GitHub Copilot does the writing, so you need a GitHub account with Copilot. The free Copilot plan works. You do not need a paid subscription. See the Copilot plans.

    Install the Copilot command-line app. The app uses it to reach Copilot, and it is how you sign in:

    Windows

    winget install GitHub.Copilot

    macOS

    curl -fsSL https://gh.io/copilot-install | bash

    Use Homebrew? brew install copilot-cli does the same job.

    Linux

    curl -fsSL https://gh.io/copilot-install | bash

    Then sign in and follow the prompts to approve it in your browser:

    copilot login

    You can also start copilot and type /login. Have Node.js 22 or later? npm install -g @github/copilot installs it on any computer.

  4. A4

    Run it

    dnx PodcastMetadataGenerator

    dnx comes with .NET 10. It fetches the latest version and starts it, with nothing left to maintain. If it asks whether to download the package, answer yes.

    You should see the app’s banner, then a Copilot status table ending in Copilot runtime is ready to use!

    Prefer to keep it installed?

    dotnet tool install -g PodcastMetadataGenerator

    From then on, start it with:

    podcast-metadata-generator

    Update later with dotnet tool update -g PodcastMetadataGenerator.

  5. Bonus

    ffmpeg, for video and audio

    Skip this if you already have a transcript. ffmpeg is a free tool that pulls the sound out of a video or audio file so the app can transcribe it.

    Windows

    winget install ffmpeg

    macOS, with Homebrew

    brew install ffmpeg

    Linux, Debian or Ubuntu

    sudo apt install ffmpeg

    Other ways to get it are on the ffmpeg download page. If ffmpeg ends up somewhere unusual, point the app at it under Settings.

Side B: Use it

The app is a set of menus. Move with the arrow keys and press Enter to choose. There are no commands to memorize.

  1. B1

    Load your episode

    Start the app, choose Load Transcript, Video, or Audio, then say which kind of file you have. Browse for file lets you walk your folders with the arrow keys. Type or paste path also accepts a file dragged onto the terminal window.

    Or hand it the file as you start:

    dnx PodcastMetadataGenerator "my episode.mp3"
    Transcripts
    Zencastr, time-range, SRT, or plain text. See the formats.
    Video
    .mp4 .mov .mkv .avi .webm .m4v .wmv .mpeg .mpg
    Audio
    .mp3 .wav
  2. B2

    Video or audio? Pick a speech model once

    Your recording is transcribed on your own computer with Whisper, so the app needs a speech model first. It offers to open the right screen the first time you load a video or audio file. You can also go to Settings, then Transcription Settings, choose a model, and download it.

    ModelDownloadGood for
    Tiny75 MiBFastest, lowest accuracy
    Base142 MiBThe default. Balanced for most machines
    Small466 MiBBetter accuracy, slower
    Large v3 Turbo1.5 GiBFast and highly accurate
    Large v32.9 GiBHighest accuracy, heaviest

    Twelve models are offered in all. The ones marked English only understand English; the rest are multilingual.

    The app asks where to save the transcript as an .srt file, shows progress while it listens, then carries on as if you had loaded that transcript. Ctrl + C cancels.

  3. B3

    Generate

    The main menu once a file is loaded. A sketch of the real screen, not a screenshot.

    Generate All Metadata writes titles, descriptions, chapters, and subtitles in one pass. It asks which title style you want, lets you pick your favorite title, and shows the text as it is written. Or run any one of them on its own.

    The nine title styles

    Balanced
    Engaging, descriptive, and SEO-friendly
    Descriptive
    Clear and straightforward, no hype
    Curiosity Hook
    Teases a hook that makes people want to listen
    Question
    Phrased as a question the episode answers
    How-To / Educational
    Outcome-focused: how-to, guide, lessons learned
    Playful
    Witty, with wordplay or humor
    Professional
    Polished and authoritative
    SEO Keywords
    Leads with the terms people search for
    Mixed Variety
    A different style for each title

    Chapters and subtitles need a transcript with timestamps. Plain text still gets titles and descriptions.

  4. B4

    Copy or save

    When a generation finishes, Copy to Clipboard offers the selected title, all titles, each description, the chapters, or everything at once. Paste straight into YouTube or your podcast host.

    Save Results asks for a folder and writes these files, named after your episode file:

    FileWhat is in it
    my-episode_titles.txtYour title suggestions
    my-episode_description_short.txtAbout 50 words
    my-episode_description_medium.txtAbout 150 words
    my-episode_description_long.txtAbout 300 words
    my-episode_chapters.txtChapter markers, ready for YouTube
    my-episode.srtSubtitles
    my-episode_manifest.jsonEverything in one file, for other tools

    Linux: copying to the clipboard needs xsel installed.

Liner notes

Transcript formats it reads

The app works out which format you have. These are the four it knows.

Zencastr

00:00.00 Speaker 1: Hello and welcome to the show.
00:15.50 Speaker 2: Thanks for having me!

Time range

00:00:00 - 00:00:15
Hello and welcome to the show.

00:00:15 - 00:00:30
Thanks for having me!

SRT

1
00:00:00,000 --> 00:00:15,000
Hello and welcome to the show.

2
00:00:15,000 --> 00:00:30,000
Thanks for having me!

Plain text

Hello and welcome to the show.
Thanks for having me!

No timestamps, so no chapters or subtitles. Titles and descriptions still work.

Settings worth a look

Open Settings from the main menu. Your choices are remembered in ~/.podcast-metadata-generator/settings.json.

SettingStarts at
Titles per run5
Longest title10 words
Title styleBalanced
Description lengths50, 150, 300 words
Chapters3 to 12
Chapters per 30 minutes5
Longest chapter title8 words

Filling in Podcast Name, Host Names, and Episode Context (guests, topics) gives Copilot more to work with. You can also change the AI model and where files are saved.

If something goes wrong

“command not found” for dnx or dotnet
.NET 10 is missing, or the terminal was open while you installed it. Close it, open it again, and repeat step A2.
The status table says “Not Authenticated”
You are not signed in to Copilot yet. A free Copilot account is enough. Run copilot login from step A3, then start the app again.
A video or audio file will not load
ffmpeg is missing or cannot be found. Install it from the bonus track, or set its location under Settings.
No chapters or subtitles came out
The transcript has no timestamps. Use a timestamped format, or start from the video or audio file instead.
Still stuck?
Open an issue on GitHub and say what you typed and what you saw.