How debanjan110d/youtube-stream-automator works
OmniStream Automator is a creator-facing livestream scheduler that prepares a broadcast once and publishes it to YouTube, with optional Kick and Twitch metadata synchronization. The main workflow runs from the dashboard’s template and stream inputs through the create-stream API to scheduling, thumbnail upload, and ingest binding; connected platforms use encrypted session credentials. Account linking, previous-stream reuse, analytics, and MCP scheduling are separate product branches. The README documents several dashboard capabilities whose detailed wiring is not present in the sampled source, so those links are shown only at the documented feature level.
Main entry points: page.tsx Dashboard · create-stream/route.ts Schedule API · session.ts Encrypted session · previous-stream/route.ts Previous stream
Components 26
Creator dashboard
- Dashboard
app/dashboard/page.tsx - Template import
components/MarkdownUploader.tsx - Tag editor
components/TagManager.tsx - Thumbnail upload
components/ThumbnailUploader.tsx - Guided tour
components/InteractiveTour.ts
Broadcast publishing
- Schedule API
app/api/create-stream/route.ts - YouTube client
lib/youtube.ts
Accounts and sessions
- Encrypted session
lib/session.ts - YouTube OAuth
app/api/auth/login/route.ts - YouTube callback
app/api/auth/callback/route.ts - Kick OAuth
app/api/auth/login/kick/route.ts - Kick callback
app/api/auth/callback/kick/route.ts - Twitch OAuth
app/api/auth/login/twitch/route.ts - Twitch callback
app/api/auth/callback/twitch/route.ts - Connection status
app/api/auth/status/route.ts
Analytics and reuse
- Previous stream
app/api/previous-stream/route.ts - Analytics API
app/api/analytics/route.ts - Analytics view
app/analytics/page.tsx - Analytics log
AI automation
- MCP server
mcp/server.ts
Other components
- Creator
- YouTube Live
- Kick API
- Twitch API
- AI assistant
- Next.js APIs
Connections 38
- Creator → Dashboard: uses
- Dashboard → Template import: imports templates
- Dashboard → Tag editor: edits tags
- Dashboard → Thumbnail upload: uploads image
- Dashboard → Guided tour: starts tour
- Dashboard → Schedule API: submits schedule
- Schedule API → Encrypted session: reads credentials
- Schedule API → YouTube client: requests client
- YouTube client → Encrypted session: reads credentials
- Schedule API → YouTube Live: schedules and binds
- Schedule API → YouTube Live: uploads thumbnail
- Schedule API → Kick API: syncs channel
- Schedule API → Twitch API: syncs channel
- YouTube OAuth → YouTube callback: OAuth redirect
- YouTube OAuth → YouTube Live: authorizes
- YouTube callback → YouTube Live: exchanges code
- YouTube callback → Encrypted session: stores credentials
- Kick OAuth → Kick callback: OAuth redirect
- Kick callback → Kick API: exchanges code
- Kick callback → Encrypted session: stores credentials
- Twitch OAuth → Twitch callback: OAuth redirect
- Twitch callback → Twitch API: exchanges code
- Twitch callback → Encrypted session: stores credentials
- Connection status → Encrypted session: reads session
- Dashboard → Connection status: checks connections
- Dashboard → Previous stream: loads previous stream
- Previous stream → YouTube client: requests client
- Previous stream → YouTube Live: reads broadcast details
- Dashboard → Analytics view: opens analytics
- Analytics view → Analytics API: requests history
- Analytics API → Encrypted session: checks access
- Analytics API → Analytics log: reads log
- Schedule API → Analytics log: writes log
- AI assistant → MCP server: invokes tools
- MCP server → Next.js APIs: calls APIs
- Next.js APIs → Schedule API: routes schedule request
- Next.js APIs → Analytics API: routes log request
- MCP server → Previous stream: checks template connection