open-notebook/.claude/sessions/podcast_page/requirements.txt
Luis Novo d7b0fff954
Api podcast migration (#93)
Creates the API layer for Open Notebook
Creates a services API gateway for the Streamlit front-end
Migrates the SurrealDB SDK to the official one
Change all database calls to async
New podcast framework supporting multiple speaker configurations
Implement the surreal-commands library for async processing
Improve docker image and docker-compose configurations
2025-07-17 08:36:11 -03:00

56 lines
2.1 KiB
Text

When you look at the Podcast page, you'll see we have a tab for managign speaker_profiles and another for managing episode_prfiles.
The idea was to reuse speaker profiles for different episodes. But this ended up making the interface a bit complex and making our users confused.
People don't understand they should do speakers before episode profiles.
So I am wondering if we can't keep this relationship between speaker profiles and episode profiles, but solve it in a single page.
My initial though is to have the episode profiles and, when working on the episode profile, open the speaker config through a dialog using st.dialog.
If my profile is not there, I can ask to create one, which also happens inside the dialog.
There will also be a list of speaker profiles in a different column in case I want to duplicate, delete or edit it.
Editing also happens on a st.dialog so we dont make the page too complex.
This page should also have a header paragraph explaining how the whole thing works so people understand the relationship between episode profiles and speaker profiles.
This is an example of a speaker profile:
{
description: 'Single expert for educational content',
name: 'solo_expert',
speakers: [
{
backstory: 'Distinguished professor and researcher. Has a gift for making complex topics accessible to broad audiences.',
name: 'Professor Sarah Kim',
personality: 'Patient teacher, uses analogies and examples, breaks down complex concepts step by step',
voice_id: 'nova'
}
],
tts_model: 'tts-1',
tts_provider: 'openai',
}
And this is an example for the episode profile
{
default_briefing: 'Analyze the provided content from a business perspective. Discuss market implications, strategic insights, competitive advantages, and actionable business intelligence.',
description: 'Business-focused analysis and discussion',
name: 'business_analysis',
num_segments: 6,
outline_model: 'gpt-4o-mini',
outline_provider: 'openai',
speaker_config: 'business_panel',
transcript_model: 'gpt-4o-mini',
transcript_provider: 'openai',
}