No description
- Python 76.5%
- Shell 23.5%
| .gitignore | ||
| daily-briefing.py | ||
| daily-briefing.sh | ||
| quotes.txt | ||
| README.md | ||
| setup.sh | ||
| test-media.sh | ||
daily-briefing
A personal morning briefing script that assembles weather, news, and media download summaries into a spoken TTS audio clip and pushes everything to ntfy.
What it does
Each run:
- Weather — fetches current conditions and today's forecast from open-meteo, then generates a conversational report via Ollama
- News — pulls yesterday's unread articles from FreshRSS (per category/label), summarises each category using a local Ollama model, and assembles a conversational spoken summary
- Media — checks Sonarr and Radarr history for TV episodes and movies downloaded yesterday
- Thought for the day — picks a quote from
quotes.txt, rotating through the full list without repeating until all have been used - TTS — generates a WAV file using pocket-tts cloned from a Fern Brady voice sample
- ntfy — sends a markdown text notification and a separate audio file attachment to the
dailybriefingtopic
Requirements
- Python 3.13
curl,jq- A running Ollama instance with a suitable model (default:
qwen3.5:122b) - A running FreshRSS instance with the Google Reader API enabled
- Running Sonarr and Radarr instances
- An ntfy server
Setup
./setup.sh
This creates a venv/, installs pocket-tts, and checks for required env files and the voice sample.
Voice sample
Place a WAV voice sample at:
voice_samples/fern_brady.wav
Environment file
Create a single briefing.env file in the project directory:
# ntfy
NTFY_BASE_URL=https://ntfy.example.com
NTFY_API_KEY=your-api-key
# Weather (open-meteo)
WEATHER_POSTCODE=SW1A1AA
WEATHER_LAT=51.5074
WEATHER_LON=-0.1278
# FreshRSS
FRESHRSS_URL=https://freshrss.example.com
FRESHRSS_USER=your-username
FRESHRSS_PASS=your-password
# Sonarr / Radarr
SONARR_URL=http://192.168.x.x:8989
SONARR_API_KEY=your-sonarr-api-key
RADARR_URL=http://192.168.x.x:7878
RADARR_API_KEY=your-radarr-api-key
# Ollama (optional overrides)
# OLLAMA_URL=http://192.168.x.x:11434
# OLLAMA_MODEL=qwen3.5:122b
Running
./daily-briefing.sh
Typically scheduled as a cron job or systemd timer each morning.
Files
| File | Description |
|---|---|
daily-briefing.py |
Main script |
daily-briefing.sh |
Wrapper that runs the script inside the venv |
setup.sh |
One-time setup script |
test-media.sh |
Standalone test for Sonarr/Radarr fetching |
quotes.txt |
Pool of quotes for "thought of the day" |
unused_quotes.txt |
Remaining quotes not yet used (auto-managed) |
quote_history.json |
Log of which quote was used on which date (auto-managed) |
voice_samples/ |
Voice WAV samples for pocket-tts |