Turn any YouTube playlist into a structured email course — delivered daily.
MindOS extracts transcripts from YouTube videos, uses AI to generate learning-focused emails, and delivers them on a schedule you choose. Each video becomes 1–5 emails per day depending on your frequency setting.
YouTube Playlist → Transcript Extraction → AI Processing → Scheduled Email Delivery
- Paste a YouTube playlist URL
- Choose your schedule (1x, 2x, 3x, or 5x daily), tone, and depth
- MindOS extracts transcripts, processes them through an LLM, and emails you throughout the day
- Flexible frequency: 1x to 5x emails per video per day
- Depth control: TL;DR → Standard → Deep Dive
- Tone options: Casual, Direct, Academic, ELI5, Witty
- Transcript publishing: Auto-publishes full transcripts via Telegraph/paste.rs
- Course management: Create, track, and cancel courses
- Background scheduler: Automated email delivery via cron-style scheduler
- Frontend: Streamlit
- Backend: Google Sheets (via gspread)
- AI: OpenRouter (Gemini Flash)
- Email: Gmail SMTP
- Transcripts: youtube-transcript-api + yt-dlp
git clone https://github.com/howwohmm/mindos.git
cd mindos
pip install -r requirements.txtcp .env.example .env
# Edit .env with your credentialsRequired keys:
GMAIL_USER— your Gmail addressGMAIL_APP_PASSWORD— Gmail App Password (not your regular password)OPENROUTER_API_KEY— free key from OpenRouter
You need a Google Service Account with access to a Google Spreadsheet:
- Create a service account at Google Cloud Console
- Download the credentials JSON and save as
credentials.json - Create a Google Spreadsheet and share it with the service account email
- The app will auto-create the required sheets (Courses, Queue, Users)
streamlit run app.py├── app.py # Streamlit UI
├── mindos.py # Core backend (Google Sheets DB)
├── process_email.py # LLM prompt engine
├── mailer_utils.py # Email sending logic
├── frequency_config.py # Frequency → email parts mapping
├── get_transcript.py # YouTube transcript extraction
├── telegraph_utils.py # Transcript publishing (Telegraph/paste.rs)
├── scheduler.py # Background email scheduler
├── reset_db.py # Database reset utility
├── requirements.txt
├── .env.example
└── legacy/ # Old POC files (Telegram flow)
For automated delivery, run the scheduler alongside the Streamlit app:
python scheduler.pyIt checks the queue every hour and sends any due emails.
MIT