podcast_llm.config
Configuration module for podcast generation.
This module provides configuration management for the podcast generation system through the PodcastConfig class. It handles loading and validating configuration from environment variables and YAML files, setting defaults, and providing a clean interface for accessing configuration values throughout the application.
The configuration covers all aspects of podcast generation including: - API credentials for various services (OpenAI, ElevenLabs, Google, etc.) - LLM provider settings for different use cases - Text-to-speech configuration and voice mappings - Output format and directory management - Rate limiting parameters - Podcast metadata and episode structure
Example
config = PodcastConfig.load(‘config.yaml’) print(config.podcast_name) print(config.tts_provider)
The module uses environment variables for sensitive values like API keys and a YAML file for general configuration settings. It provides smart defaults while allowing full customization of all parameters.
- class podcast_llm.config.config.PodcastConfig(google_api_key: str, elevenlabs_api_key: str, openai_api_key: str, tavily_api_key: str, anthropic_api_key: str, fast_llm_provider: str, long_context_llm_provider: str, embeddings_model: str, tts_provider: str, tts_settings: Dict, output_format: str, temp_audio_dir: str, output_dir: str, rate_limits: Dict, checkpoint_dir: str, podcast_name: str, intro: str, outro: str, episode_structure: List)[source]
 Bases:
objectConfiguration class for podcast generation.
Holds all configuration parameters needed for generating podcast content, including: - API keys for various services (OpenAI, ElevenLabs, etc.) - LLM provider settings for different use cases - Text-to-speech configuration - Output format and directory settings - Rate limiting parameters - Podcast metadata and structure
The configuration can be loaded from environment variables and an optional YAML file using the load() class method.
- google_api_key
 API key for Google services
- Type:
 str
- elevenlabs_api_key
 API key for ElevenLabs TTS
- Type:
 str
- openai_api_key
 API key for OpenAI services
- Type:
 str
- tavily_api_key
 API key for Tavily search
- Type:
 str
- anthropic_api_key
 API key for Anthropic services
- Type:
 str
- fast_llm_provider
 Provider to use for quick LLM operations
- Type:
 str
- long_context_llm_provider
 Provider to use for long context operations
- Type:
 str
- tts_provider
 Text-to-speech service provider
- Type:
 str
- tts_settings
 Configuration settings for TTS
- Type:
 Dict
- output_format
 Format for output audio files
- Type:
 str
- temp_audio_dir
 Directory for temporary audio files
- Type:
 str
- output_dir
 Directory for final output files
- Type:
 str
- rate_limits
 Rate limiting settings for API calls
- Type:
 Dict
- checkpoint_dir
 Directory for saving checkpoints
- Type:
 str
- podcast_name
 Name of the podcast
- Type:
 str
- intro
 Template for podcast intro
- Type:
 str
- outro
 Template for podcast outro
- Type:
 str
- episode_structure
 Structure template for podcast episodes
- Type:
 List
- anthropic_api_key: str
 
- checkpoint_dir: str
 
- elevenlabs_api_key: str
 
- embeddings_model: str
 
- episode_structure: List
 
- property episode_structure_for_prompt
 Format the episode structure as a string for use in prompts.
Converts the episode_structure list into a newline-separated string with bullet points, suitable for inclusion in LLM prompts. Each section is prefixed with a hyphen for consistent formatting.
- Returns:
 Bullet-pointed string representation of the episode structure
- Return type:
 str
- fast_llm_provider: str
 
- google_api_key: str
 
- intro: str
 
- classmethod load(yaml_path: str | None = None) PodcastConfig[source]
 Load configuration from .env and optional yaml file
- Parameters:
 yaml_path – Optional path to yaml config file
- Returns:
 Loaded configuration object
- Return type:
 
- long_context_llm_provider: str
 
- openai_api_key: str
 
- output_dir: str
 
- output_format: str
 
- outro: str
 
- podcast_name: str
 
- rate_limits: Dict
 
- tavily_api_key: str
 
- temp_audio_dir: str
 
- tts_provider: str
 
- tts_settings: Dict