AI Radio DJ Control Panel

BS Net Trading AI Agent Services

Dashboard Overview

Live Shows
0
Scheduled Shows
0
Available Presenters
15
Scripts Generated
0
πŸ“‘
Station Control
Impact Digital Radio β€” Live Status
Refreshing…
OFFLINE
Liquidsoap: β€”
Checking… β–Ό
Service Health
β™ͺ Now Playing
β€”
πŸ“… Current Show
β€”
⚠️
Suspend Broadcast?
This will stop Liquidsoap immediately.
The live stream will go silent for all listeners.

Are you sure?

Quick Actions

✨
Generate Script
Create presenter voiceover
πŸ“…
Create Show
Schedule a new program
πŸ‘₯
Manage Presenters
View all AI characters

Your AI Presenters (15 Total)

Track Weight Manager

β€”
β˜…β˜…β˜… Hot (weight 1)
β€”
β˜…β˜… Mid (weight 2)
β€”
β˜… Archive (weight 3)
Title Artist Weight Change
Loading tracks...

Live Control Panel

SYSTEM ONLINE

πŸ“» NOW ON AIR

00:00:00

⏭️ UP NEXT

πŸ“ˆ TODAY'S STATS

Shows Aired
0
Scripts Used
0
Active Listeners
0
Uptime
00:00:00

⚑ QUICK ACTIONS

πŸ“‹ ACTIVITY LOG

Dashboardβ€ΊAI Presenters

AI Presenters (15 Agents)

Dashboardβ€ΊCreate New Presenter

Create New Presenter

Basic Information

Voice Settings

Character Profile

Dashboardβ€ΊSchedule

Show Schedule

Dashboardβ€ΊScript Generator

πŸ“ Script Builder

πŸ“„ Script Preview

πŸ“

No script generated yet

βš–οΈ Compliance

βš–οΈ

Generate script first

Dashboardβ€ΊVoice Output Manager

Voice Output Manager

Total Generated
0
Processing
0
Ready to Export
0
Failed
0
Dashboardβ€ΊPrompt Engine

Prompt Engine

⚑ LIVE MODE β€” Scripts generated by Claude AI

πŸ“‘ Layer 1 β€” Station DNA

GLOBAL

This block applies to every script generated on Impact Digital Radio.

🎭 Layer 2 β€” Character Sheet

PER PRESENTER

Auto-assembled from each presenter's profile.

Select a presenter to load their character sheet...

πŸ”— Composed Prompt Preview

πŸ”—Select a presenter and script type in the Script Builder to see the full composed prompt here.

πŸ“¦ Demo Script Output Log

Demo outputs will appear here as scripts are generated

πŸ“’ Live Widget Messages

Add up to 10 messages. Each fades in for 20 seconds on the homepage widget. Choose a colour per message.

Dashboardβ€ΊSettings

System Settings

Checking services...
πŸ›‘οΈ Backend Proxy
🧠 AI Script Engine
πŸŽ™οΈ ElevenLabs TTS
☁️ Azure TTS
πŸ—„οΈ DynamoDB
πŸ—ΊοΈ Voice ID Mapping

πŸ›‘οΈ Backend Proxy

All secrets live exclusively on your AWS backend. This frontend never sees or transmits them.

πŸ”’
Architecture: Your proxy server fetches secrets at runtime from AWS Secrets Manager.
🌐 Proxy Base URL
Not connected
πŸ”‘ Frontend Auth Token
JWT Β· short-lived Β· auto-refresh
πŸ“‹ Proxy Endpoints
POST/proxy/ai/generateClaude script gen
POST/proxy/tts/elevenlabsElevenLabs render
POST/proxy/tts/azureAzure TTS render
GET/proxy/db/character/:idSingle character
GET/proxy/db/charactersFull sync
GET/proxy/healthLiveness check

🧠 AI Script Engine

The Anthropic API key never leaves your backend. Requests route through /proxy/ai/generate.

πŸ€– Model & Budget
Demo mode

πŸŽ™οΈ ElevenLabs TTS

Handles voice rendering for 11 presenters. API key stays on backend.

πŸŽ›οΈ Quality & Format
Not tested

☁️ Azure Cognitive TTS

Handles voice rendering for 5 presenters: Abby, Jody, Angie, Cindy, Tony.

πŸŽ›οΈ Region & Format
Not tested

πŸ—„οΈ DynamoDB

Stores backstories and character records. AWS credentials stay on the backend.

πŸ“¦ Table & Region
Not tested

πŸ—ΊοΈ Voice ID Mapping

Maps each presenter to their voice ID on ElevenLabs or Azure.

πŸŽ™οΈ ElevenLabs β€” 11 Presenters
☁️ Azure TTS β€” 5 Presenters

Create New Show

Hold Ctrl/Cmd to select multiple days

0 / 300

Impact Digital Radio
Staff Portal

AI DJ Control Panel

Authorised staff only. Enter your staff password to continue.

Redirecting to homepage in
30
seconds
πŸ”’ Secure Β· Impact Digital Radio Staff Portal
Dashboardβ€ΊAuto Script Generator
🎡 Upcoming Tracks
🎡

Select a show and click Load Tracks

πŸ“ Generated Scripts
πŸ“

Scripts appear here once generated

πŸ“‹ Activity Log
Waiting…
Dashboardβ€ΊBulk Script Generator

πŸŽ™ Bulk Auto Script Generator

Configuration

Scripts are generated in one Claude batch call for uniqueness, then each is TTS'd and saved directly to the show's auto-scripts/ folder. The state file is cleared so Liquidsoap picks them up immediately.

Live Progress

Waiting to start…

πŸ“£ Advertising Sales

Register new advertising clients and view all signed agreements.

πŸ‘€ Sales Staff
🏒 Client Details
πŸ“¦ Package Selection
πŸ₯‡
Gold
Β£400
100 advertisements
πŸ₯ˆ
Silver
Β£300
70 advertisements
πŸ₯‰
Bronze
Β£225
50 advertisements
πŸŽ™ Ad Production Details
✍️ Agreement
I confirm that the client has agreed to the advertising terms and conditions of Impact Digital Radio, that the information above is accurate, and that I am authorised to submit this agreement on behalf of the station.
Submission sends an automatic notification to william@impactdigitalradio.com and saves a record to the database.

All Advertising Clients

# Date Business Contact Package Total Payment Status
Loading…
πŸ‘€ Sales Staff
🏒 Sponsor Business Details
πŸ“¦ Sponsorship Package

Select one or more show slots. Enter the number of weeks for each. Then choose your booking duration below for the applicable discount.

πŸŒ…
Morning Show
Β£100 / week
Peak breakfast & mid-morning audience
weeks
β˜€οΈ
Afternoon Show
Β£50 / week
Daytime audience
weeks
πŸŒ™
Evening Show
Β£30 / week
Evening audience
weeks
⏱ Booking Duration
πŸ’° Live Pricing
Weekly rate Β£0.00 / week
Γ— 1 week(s) = Β£0.00
Total Β£0.00
πŸŽ™ Sponsorship Details
✍️ Agreement
I confirm that the sponsor has agreed to the programme sponsorship terms and conditions of Impact Digital Radio, that the information above is accurate, and that I am authorised to submit this agreement on behalf of the station.
Submission sends an automatic notification to william@impactdigitalradio.com and saves a record to the database.

All Programme Sponsorship Bookings

# Date Business Slots Booked Weeks Discount Total Payment Status
Loading…

🎬 Commercial Ad Playout

Manage advertiser spots, track campaign performance, and view proof-of-play reports.

β€”
Active Spots
β€”
Plays Today
β€”
Plays This Week
β€”
Peak Plays Today
β€”
Off-Peak Today
Package Breakdown β€” Today
Spot NameAdvertiserPackageCampaign TodayThis WeekTotalLast PlayedActions
Loading…
All registered advertisers.
CompanyContactEmailPhoneSpotsStatusActions
Loading…
Upload a Commercial Spot
🎡
Click to select MP3 or drag and drop here
0 words
Voice & Generate
DateDayTime (BST)Time BandCampaign WeekDuration
Select an advertiser and spot above.

Edit the rules for each advertising package. Changes take effect immediately.

Add Advertiser

πŸ“§ Comms Centre

Manage email templates, compose AI-assisted campaigns, maintain your contact list, and review sent emails.

Email templates with AI-fillable placeholders.
NameCategorySubjectCreatedActions
Loading…

Step 1 β€” Choose Template

Completed, filled-in emails saved for quick retrieval.
NameBased OnSavedActions
Loading…
NameEmailGroupNotesActions
Loading…
Showing last 200 emails, 20 per page.
Date/TimeTemplateSubjectRecipientsGroups
Loading…
Dashboard β€Ί Social Media Manager

πŸ“± Social Media Manager

Post to Facebook, Instagram, X and LinkedIn β€” compose, schedule and track.

Target Platforms

Only connected platforms will accept posts. Disconnected platforms will fail.

Post Content
0 / 280 for Twitter
✨ AI Content Generator
Scheduled Posts

Loading…

Post History
Date / TimePlatformStatusContentLink
Loading…
𝐟
Facebook
Not connected

How to get a Facebook Page Access Token

  1. Go to developers.facebook.com β†’ My Apps β†’ Create App (Business type)
  2. Add the Pages product, then use Graph API Explorer
  3. Select your app, click Generate Access Token, choose your page
  4. Grant permissions: pages_manage_posts, pages_read_engagement
  5. Exchange for a long-lived token via: GET /oauth/access_token?grant_type=fb_exchange_token&…
  6. Your Page ID is in your page's About section or via Graph API GET /me?fields=id
πŸ“·
Instagram
Not connected

⚠️ Instagram feed posts require an image URL. Text-only posts are not supported by the API.

How to get Instagram API credentials

  1. Instagram must be a Business or Creator account linked to a Facebook Page
  2. In Graph API Explorer, get your Facebook Page token (same as above)
  3. Find your IG Business Account ID: GET /{page-id}?fields=instagram_business_account
  4. Use that ID and the same Page Access Token for the fields above
𝕏
X / Twitter
Not connected

How to get Twitter / X API credentials

  1. Go to developer.twitter.com β†’ Developer Portal β†’ Projects & Apps
  2. Create a new app, set App permissions to Read and Write
  3. Under Keys and Tokens: copy API Key and API Key Secret
  4. Click Generate Access Token and Secret β€” copy both values
  5. Ensure the account that generated the tokens is the one you want to post from
in
LinkedIn
Not connected

How to get LinkedIn API credentials

  1. Go to developer.linkedin.com β†’ My Apps β†’ Create App
  2. Under Products, request access to: Share on LinkedIn, Sign In with LinkedIn
  3. Under Auth tab, generate an OAuth 2.0 token with scopes: w_member_social
  4. Get your Person URN via: GET https://api.linkedin.com/v2/me β€” use the id field
  5. Paste the Access Token and Person URN (as User ID) into the fields above
🎡
TikTok
Not connected

⚠️ TikTok feed posts require an image or video URL. Text-only posts are not supported by the TikTok API.

How to get TikTok API credentials

  1. Go to developers.tiktok.com and create a developer account
  2. Create a new app and request the Content Posting API product
  3. API access requires approval β€” apply early as it can take several days
  4. Once approved, generate an Access Token with scopes: video.publish, video.upload
  5. Get your open_id from the /v2/user/info/ endpoint after OAuth
  6. Paste the Access Token and open_id (as User ID) into the fields above
Dashboard β€Ί Live Context

🌐 Live Context Engine

Real-time contextual scripts generated from live weather, On This Day, and local event data.

βš™οΈ Engine Settings

Configure when and how often the Live Context Engine generates scripts.

Live Context Engine
OFF
Engine is disabled β€” no live context scripts will be generated
Scripts Per Show
Number of live context scripts generated per show. Set to 0 to pause without disabling the engine.
Active Shows
Select which shows will receive live context scripts. All shows are unchecked by default.
Loading shows…

Test Output

Loading…

Fetching recent engine runs…

Engine Details

Module
live_context_engine.js
AI Model
deepseek/deepseek-chat
TTS
Google Cloud Neural2
Context Sources
Weather Β· On This Day Β· Events
Log File
live_context_log.json
Status
βœ“ Isolated test mode
πŸ”„ Track Join Refresh β€” Global Settings
Enable automatic refresh
Joins per show (global)
2
Track-join intros generated per show per run
Refresh interval (global, days)
1
How many days between refreshes per show
Max TTS calls per run
10
⚠ Hard safety cap β€” run aborts if total calls would exceed this
Last run: β€”
πŸ“‹ Show Selection
Show Presenter Voice Enable Joins Override Interval Override (days) Last Refreshed Tracks Used Run
Loading…
Dashboard β€Ί Live Playout Monitor

πŸ“Ί Live Playout Monitor

Last 50 segments β€” auto-refreshes every 10 seconds. Music tracks cannot be deleted.

Loading…
Time (BST) Presenter Type Name Actions
Loading…
Dashboard β€Ί Remote DJ Connect

πŸŽ™ Remote DJ Connect

Broadcast live to Impact Digital Radio from any location using your own software.

Icecast mount not yet configured

πŸ”Œ Connection Credentials

Enter these details into your streaming software. All connections must use MP3 format at 128 kbps or higher.

🌐 Server Address radio.impactdigitalradio.com
πŸ”’ Port 8000
πŸ“‚ Mount Point /remotedj
πŸ”‘ Source Password β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’β€’
🎡 Stream Format MP3 128kbps or higher

πŸ“– Software Setup Guide

Use any Icecast-compatible broadcasting software. Enter the credentials above exactly as shown. All three apps below are free or offer free tiers.

πŸ”Š BUTT β€” Broadcast Using This Tool Free Β· Windows / Mac / Linux
1. Open BUTT β†’ click Settings β†’ Main tab β†’ ADD server
2. Type: Icecast  |  Server: radio.impactdigitalradio.com  |  Port: 8000
3. Password: [your source password]  |  IceCast mountpoint: /remotedj
4. Audio tab β†’ Format: MP3 β†’ Bitrate: 128 or higher
5. Click ADD to save. Press the play button in the main window to go live.
πŸŽ› Mixxx Free Β· Windows / Mac / Linux
1. Open Mixxx β†’ Preferences β†’ Live Broadcasting
2. Type: Icecast2  |  Host: radio.impactdigitalradio.com  |  Port: 8000
3. Mount: /remotedj  |  Login: source  |  Password: [your source password]
4. Encoding: MP3 β†’ Bitrate: 128 kbps or higher
5. Click OK. Enable broadcasting from the toolbar microphone icon.
πŸ“» SAM Broadcaster Windows
1. In SAM β†’ Tools β†’ Encoders β†’ click + to add encoder
2. Type: Icecast 2  |  Server IP: radio.impactdigitalradio.com  |  Port: 8000
3. Password: [your source password]  |  Mount Point: /remotedj
4. Format: MP3 β†’ Bitrate: 128 kbps or higher
5. Click OK then double-click the encoder row to connect.

πŸ“‘ Connection Status

βš™οΈ
Not yet configured
The /remotedj Icecast mount point has not been set up yet.
Once the Icecast mount is configured, this panel will show live connection status, bit rate, and listener count for the remote DJ feed.
Dashboard β€Ί Content Review

🎧 Content Review

0
files shown
0 staged

Staged files awaiting human approval. Pass moves the file to the live rotation. Fail deletes it permanently. On first load, orphaned files are detected and moved into staging automatically.

Loading…
Show / Folder Presenter Type Status Filename Actions
Loading…

πŸ“¬ Listener Requests Queue

Auto-Mode: OFF
β†Ί Refresh
β€”Today
β€”Pending
β€”Approved
β€”Scripted
β€”Played
β€”
Time Listener Request Source Sanitisation Status Actions
Loading…