Daily AI Audio Briefing
Automated daily tech briefing — multi-source collection → knowledge-base deduplication → AI summarization → TTS speech synthesis, generating MP3 audio briefings
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 →Screenshot Skill
Capture high-fidelity screenshots of any website using Playwright — supports custom viewports, dark/light mode, mobile/tablet/desktop presets, split-screen, element-based capture by CSS selector, and text-based area capture. Integrates with Telegram or any output channel for delivery.
Shell Scripting
Master shell scripting best practices, error handling, portability, debugging, and performance optimization for reliable automation scripts
Twitter Account Manager 🧪
EDUCATIONAL / RESEARCH ONLY — Single-account always-on Twitter/X manager driven by cookies + headless Playwright. Runs a 10-minute scheduler that drafts posts, engages with timeline/search results, and queues anything risky for Telegram human approval. Hard daily ceilings, structural prompt-injection defenses, and DM auto-reply permanently disabled. Accounts WILL be terminated — we do not encourage use.