PodcastMetadataGenerator 1.0.0
dotnet tool install --global PodcastMetadataGenerator --version 1.0.0
dotnet new tool-manifest
dotnet tool install --local PodcastMetadataGenerator --version 1.0.0
#tool dotnet:?package=PodcastMetadataGenerator&version=1.0.0
nuke :add-package PodcastMetadataGenerator --version 1.0.0
🎙️ Podcast Metadata Generator
Generate podcast metadata (titles, descriptions, chapters, SRT subtitles) from transcripts using AI powered by the GitHub Copilot SDK.
✨ Features
- 🎯 Title Generation - Get multiple creative title suggestions for your episode
- 📝 Description Generation - Create short, medium, and long descriptions optimized for different platforms
- 📑 Chapter Generation - Auto-generate YouTube-compatible chapter markers with timestamps
- 🎬 SRT Conversion - Convert transcripts to valid SRT subtitle format
- 🔄 Multiple Transcript Formats - Support for Zencastr, time-range, SRT formats, and plain text
- 📂 File Browser - Built-in file browser or drag-and-drop support
- ⚡ Streaming Responses - Watch AI responses generate in real-time
- 🤖 Model Selection - Choose from multiple AI models (GPT-5, Claude, Gemini)
- ⚙️ Configurable Settings - Customize generation parameters and save preferences
📋 Prerequisites
- .NET 10.0 SDK or later
- GitHub Copilot CLI installed and authenticated
Installing GitHub Copilot CLI
macOS and Linux (Homebrew):
brew install copilot-cli
Windows (WinGet):
winget install GitHub.Copilot
All platforms (npm, requires Node.js 22+):
npm install -g @github/copilot
macOS and Linux (install script):
curl -fsSL https://gh.io/copilot-install | bash
Then authenticate:
copilot
# Type /login and follow the prompts
🚀 Installation
As a .NET Tool (Recommended)
dotnet tool install -g PodcastMetadataGenerator
From Source
git clone https://github.com/jamesmontemagno/podcast-metadata-generator.git
cd podcast-metadata-generator
dotnet build PodcastMetadataGenerator.sln
📖 Usage
Console App - Interactive Mode
# If installed as a tool:
podcast-metadata-generator
# Or from source:
cd src/Console
dotnet run
Console App - With a Transcript File
podcast-metadata-generator /path/to/transcript.txt
# Or from source:
dotnet run -- /path/to/transcript.txt
🌐 Blazor Demo (Local Only)
A web UI demo is included for local development and presentations.
⚠️ Local Use Only: The Blazor app uses your local Copilot authentication and is not designed for deployment or multi-user access.
Running the Blazor Demo
# From repository root
cd src/Blazor
dotnet run
Then open https://localhost:5001 in your browser.
Features
- Drag-and-drop file upload
- Real-time streaming AI output
- Tabbed results view
- Settings persistence via localStorage
🎯 Supported Transcript Formats
Zencastr Format
00:00.00 Speaker 1: Hello and welcome to the show.
00:15.50 Speaker 2: Thanks for having me!
Time-Range Format
00:00:00 - 00:00:15
Hello and welcome to the show.
00:00:15 - 00:00:30
Thanks for having me!
SRT Format
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
Any text file without timestamps will be processed as plain text. Note: Chapter generation and SRT conversion require timestamps.
📁 Output Files
When you save results, the following files are generated:
| File | Description |
|---|---|
titles.txt |
List of generated title suggestions |
description-short.txt |
Short description (~50 words) |
description-medium.txt |
Medium description (~150 words) |
description-long.txt |
Long description (~300 words) |
chapters.txt |
YouTube-compatible chapter markers |
subtitles.srt |
SRT subtitle file |
manifest.json |
JSON manifest with all metadata |
⚙️ Configuration
Access settings from the main menu to configure:
General Settings
- AI Model - Select from available Copilot models (dynamically fetched from CLI)
- Output Directory - Default location for saved files
- Podcast Name - Your podcast name (used in prompts for better context)
- Host Names - Host names (used in prompts)
- Episode Context - Add guest names, topics, or other context to improve generation
Generation Settings
- Title Count - Number of title suggestions to generate (default: 5)
- Title Max Words - Maximum words per title (default: 10)
- Description Lengths - Word counts for short/medium/long descriptions (default: 50/150/300)
- Chapter Range - Min/max chapters to generate (default: 3-12)
- Chapters per 30 min - Target density of chapters (default: 5)
- Chapter Title Words - Max words per chapter title (default: 8)
Settings are automatically saved to ~/.config/podcast-metadata-generator/settings.json.
🏗️ Project Structure
podcast-metadata-generator/
├── PodcastMetadataGenerator.sln # Solution file
├── src/
│ ├── Core/ # Shared class library
│ │ ├── Models/
│ │ │ ├── AppSettings.cs # Configuration and generation settings
│ │ │ ├── GenerationResult.cs # Results container
│ │ │ ├── Manifest.cs # JSON manifest structure
│ │ │ ├── Transcript.cs # Transcript model
│ │ │ └── TranscriptSegment.cs # Segment model
│ │ ├── Services/
│ │ │ ├── CopilotAuthService.cs # CLI authentication checks
│ │ │ ├── MetadataGenerator.cs # AI generation via Copilot SDK
│ │ │ ├── OutputService.cs # File output handling
│ │ │ ├── SettingsService.cs # Settings persistence
│ │ │ ├── SrtConverter.cs # SRT format conversion
│ │ │ └── TranscriptParser.cs # Multi-format transcript parsing
│ │ └── Prompts/
│ │ └── PromptTemplates.cs # AI prompt templates
│ ├── Console/ # Console application
│ │ ├── UI/
│ │ │ ├── AppWorkflow.cs # Main application workflow
│ │ │ └── ConsoleUI.cs # Spectre.Console UI helpers
│ │ └── Program.cs # Console entry point
│ └── Blazor/ # Blazor Server demo (local only)
│ ├── Components/
│ │ ├── Layout/ # MainLayout, NavMenu
│ │ └── Pages/ # Home, Generate, Settings
│ ├── wwwroot/
│ │ └── css/app.css
│ └── Program.cs # Blazor entry point
└── data/ # Sample transcripts
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- GitHub Copilot SDK for AI integration
- Spectre.Console for the beautiful terminal UI
- Inspired by jamesmontemagno/app-podcast-assistant
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.