v1.0.0 Mayx07
Daily AI Audio Briefing
Automated daily tech briefing — multi-source collection → knowledge-base deduplication → AI summarization → TTS speech synthesis, generating MP3 audio briefings
View source0 downloads
briefingttsnews-aggregationcron-automationknowledge-basespeech-synthesis
Daily AI Audio Briefing#
Automatically collect, deduplicate, summarize, and synthesize a daily tech briefing as a warm-voiced MP3 every morning.
Workspace#
- Collection script + summarization/TTS script
- Output:
briefing/YYYY-MM-DD.mp3+.txt - Knowledge base:
brain/news/YYYY-MM-DD/ - Schedule: cron (recommended 8:30 AM)
Workflow#
- Collect — Scrape GitHub trending/rising, HN top/show/new, arXiv latest AI papers, weather
- Deduplicate — Compare against
brain/news/existing entries- New project → mark
is_new - Growth >30% → mark
is_update - Otherwise → discard
- New project → mark
- Ingest — Write new entries to
brain/news/YYYY-MM-DD/ - Summarize — AI composes briefing script from filtered JSON
- Synthesize — TTS API → MP3 file
- Cleanup — Delete briefings older than 7 days
Rules#
- Don't use shell-level file deletion (
find -delete) — may trigger security scanners; use PythonPath.unlink() - Don't assume cron environment has API keys loaded — export them before running scripts
- Don't use inline
python3 -cor heredocs in agent/cron mode — write to.pyfiles first - Don't trust agent-reported "MP3 generated" — verify mtime with
statafter TTS step - Don't let each source exceed 8 items — keeps briefing concise
Validation#
- Collection script runs successfully, all sources return data
- After dedup, filtered items ≥ 3
- Generated briefing text contains correct date (no placeholders)
- MP3 mtime matches current time (TTS actually ran)
Pitfalls#
Date placeholders not replaced (Fixed: 2026-05-12)#
- Symptom: Briefing shows "Year X Month X" instead of actual date
- Root cause: Prompt didn't inject real date, AI made it up
- Fix: Inject
datetime.date.today()into summarization prompt
Wrong weather source (Fixed: 2026-05-12)#
- Symptom: Always reports wrong city/temperature format
- Root cause: Source only provided real-time temp, no high/low
- Fix: Switch to structured weather API with high/low temp
Cron security scanner false positives#
- Symptom: Prompt blocked by exfil_curl pattern
- Fix: Mark trusted cron job with
skip_injection_scan: true
Cron environment missing .env#
- Symptom: TTS fails with "Missing credentials"
- Fix: Export API keys before script execution
Model reasoning field empty content#
- Symptom: Reasoning model puts output in
reasoningfield,contentis empty - Fix: Set generous
max_tokens+ retry with assistant message on empty content
TTS text length limit#
- Symptom: Long text causes unstable TTS output
- Fix: Auto-truncate at safe threshold (~3000 chars)
References#
references/weather-api.md— Weather data source and formatreferences/dedup-rules.md— Deduplication strategy and thresholdsreferences/tts-config.md— TTS model and parametersreferences/cron-prompt-template.md— Cron job prompt template
More in Automation
View all →Automationv1.0.0
Shell Scripting
Master shell scripting best practices, error handling, portability, debugging, and performance optimization for reliable automation scripts
shell-scriptingbashposix
Automationv1.0.0
Workflow Automation
Master workflow design, n8n patterns, automation triggers, error handling, and monitoring for reliable business process automation
workflow-automationn8ntriggers
Automationv1.0.0
X/Twitter Automation
Design safe X/Twitter automation workflows for tweet search, reply reads, monitoring, posting, and agent-operated social media actions
x-twittersocial-mediatweet-search