mcpbeat

Daily Briefing

cosmicstack-labs/daily-briefing

Automated daily tech briefing — multi-source collection → knowledge-base deduplication → AI summarization → TTS speech synthesis, generating MP3 audio briefings

837 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
365
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/cosmicstack-labs/mercury-agent-skills --skill daily-briefing

The instruction itself

13 sections, as written by the author

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
  • 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 Python Path.unlink()
  • Don't assume cron environment has API keys loaded — export them before running scripts
  • Don't use inline python3 -c or heredocs in agent/cron mode — write to .py files first
  • Don't trust agent-reported "MP3 generated" — verify mtime with stat after 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 reasoning field, content is 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 format
  • references/dedup-rules.md — Deduplication strategy and thresholds
  • references/tts-config.md — TTS model and parameters
  • references/cron-prompt-template.md — Cron job prompt template

How to use it

Copy the folder

Take cosmicstack-labs/daily-briefing from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.