system design — an agentic AI pipeline
Every morning at 7:00 AM, an automated pipeline:
fetches real emails → pulls live AI news → reads reminders
↓
GPT-4o generates a John Oliver-style monologue
↓
OpenAI TTS converts it to audio (fable voice)
↓
published to blog → Vercel auto-deploys → live in <2 min
↓
Kling v3 generates a video version (optional) emails AgentMail inbox (supersalt6@agentmail.to) important emails forwarded here fetched via AgentMail SDK AI news RSS feeds — parsed with feedparser · The Verge / AI · VentureBeat / AI · Hacker News (AI, 100+ points) reminders Agent River tasks gym, appointments, one-off reminders set manually or via Agent River API
model gpt-4o
prompt John Oliver — Last Week Tonight style
rules · open with date observation
· treat emails like geopolitical crises
· mock AI news with genuine incredulity
· end with exhausted pep talk
· never mention DSA or interview prep
· 150-200 words, punchy sentences
· [PAUSE] markers for TTS pacing
output full script + clean TTS version
(bracket markers stripped for audio) primary OpenAI TTS model: tts-1-hd | voice: fable streams MP3 directly to file fallback ElevenLabs REST API voice: Daniel (onwK4e9ZLuTAKqWW03F9) model: eleven_turbo_v2_5 publish.py 1. generate_audio() → briefing_YYYY-MM-DD.mp3 2. copy mp3 to blog → public/audio/ 3. update briefings.json → adds date, label, transcript 4. git commit + push → Vercel deploys automatically
framework Astro (static site generator)
host Vercel (auto-deploy on push)
briefings.json src/data/briefings.json
[
{
"date": "2026-03-13",
"label": "Friday, March 13, 2026",
"audio": "/audio/briefing-2026-03-13.mp3",
"transcript": "Good morning, Rahul..."
}
]
page /projects/daily-media-update
→ audio player per entry
→ collapsible transcript 1. script GPT-4o (tighter prompt — 120-150 words) SCENE_PREFIX prepended to each chunk "Late-night studio, British anchor..." 2. split split into 25-word chunks each chunk → 1 Kling clip word count → clip duration (5s or 10s) 3. Kling POST /v1/videos/text2video model_name: kling-v3 mode: pro | sound: on | 16:9 4. concat ffmpeg -f concat -c copy all clips → briefing_final_YYYY-MM-DD.mp4
Agent River personal OpenClaw dashboard
REST API at localhost:3999
morning briefing task
schedule: 0 7 * * * (7am daily)
type: recurring
command: python3 .../morning-briefing/publish.py
assignee: main (OpenClaw agent)
other tasks
gym session 0 7 10 * 1-5 (weekdays 7:10am)
book flight one-time Mar 15 9am
brother's birthday one-time Mar 16 10am