GeminiDesktop GeminiDesktop
Guides

Your Daily AI Podcast: Turning Yesterday's Notes Into a NotebookLM-Style Two-Host Show

Published · By GeminiDesktop Team

Your Daily AI Podcast: Turning Yesterday’s Notes Into a NotebookLM-Style Two-Host Show

Bottom line: NotebookLM’s Audio Overview works because it compresses documents into a Speaker1 / Speaker2 conversation. But it’s a one-off, lives in a browser tab, and never reads your local notes. GeminiDesktop 4.4 ships Daily Brief — a background job that scans the note folder you pick, asks Gemini 2.5 Flash to write a two-host script, synthesizes it with Gemini TTS multi-speaker, and drops a local WAV at the time you leave home.

One-liner: NotebookLM Audio Overview = the occasional deep-dive; GeminiDesktop Daily Brief = the 07:30 recap that lands in your ears before the subway does.

The Forgetting Curve Meets the Commute Window

Ebbinghaus: you forget 50% inside 20 minutes and 70% inside a day. For knowledge workers, yesterday’s meeting notes, this morning’s paper highlights, or the Obsidian daily note you closed last night are already fuzzy by tomorrow’s standup.

Traditional recap loops have three problems:

  1. Text review has too much friction — you won’t open Obsidian on the train
  2. No trigger for active recall — no Anki card means no review happens
  3. Screen fatigue — after a full day of monitors, your eyes want a break

But the 15-30 minute commute is a perfect audio window: headphones are already on, phone is in your pocket, attention budget is free. If that slot auto-plays “a conversation about yesterday’s notes,” the forgetting curve flattens.

That’s exactly why daily beats on-demand. NotebookLM’s Audio Overview is powerful but you won’t remember to click Generate every day. A scheduled, local, automatic loop is the only sustainable version.

How It Differs From NotebookLM Audio Overview

Dimension NotebookLM Audio Overview GeminiDesktop Daily Brief
Trigger Click to generate Same time every day, automatic
Source Files uploaded into a notebook Local folder (Obsidian vault, ~/Notes, iCloud folder, etc.)
Privacy Files uploaded to Google cloud Only text goes through the API; files stay on your machine
Language Primarily English, rolling out others zh / en / ja / ko out of the box
Playback Browser web player Local WAV, airdrop to Apple Podcasts / any player
Duration Fixed long (10-15 min) Choose 3 / 5 / 8 minutes
Notes integration None Embeds audio back into your Obsidian daily note

NotebookLM’s Audio Overview is the weekend deep-dive. Daily Brief is a background cron — the goal is that you never have to remember.

Three-Step Setup: Folder → Time → Toggle

Open GeminiDesktop, go to Settings → Daily Brief:

Step 1: Pick the source folder

Click “Pick folder.” The three common picks:

  • The Daily/ subfolder inside your Obsidian vault
  • ~/Notes synced via iCloud Drive
  • A disposable ~/dump/ where you toss markdown all day

By default Daily Brief scans only .md files modified yesterday (your local timezone). Flip it to “Last 7 days” for a weekly roll-up.

Step 2: Set the schedule

Default 07:30. Other common slots: 06:45 (wake-up), 08:15 (before the office), 21:00 (evening recap of the day you just finished). Scheduling runs inside the GeminiDesktop process — as long as the app is open (tray / background counts), it fires.

Step 3: Flip the toggle

“Enable Daily Brief” is the master switch. Below it:

  • Speaker language — zh-CN / en-US / ja-JP / ko-KR
  • Length — short (3) / medium (5) / long (8) minutes
  • Output folder — defaults to ~/GeminiDesktop/daily-brief/, can be redirected to your Obsidian Audio/ subfolder (see Section 5)

Under the Hood: Gemini 2.5 Flash Writes the Script, Gemini TTS Voices It

When the scheduled moment arrives (or you hit Run Now):

  1. Scan — sweep the source folder, filter markdown modified in the target window, merge into a context blob (< 60k tokens)
  2. Script — call Gemini 2.5 Flash with a prompt that forces Speaker1: / Speaker2: alternation, with real questioning and callbacks between yesterday’s notes
  3. Voice map — map the two speakers to Gemini TTS voices by language (en-US defaults to Puck + Kore, zh-CN to Achernar + Rasalgethi)
  4. TTS — call the multi-speaker endpoint segment by segment, receive WAV chunks
  5. Merge — concatenate with ffmpeg-wasm, insert 0.5s silence for pacing
  6. Notify — macOS notification: “Daily Brief ready · 5:12”, click to open in the default player

The whole pipeline takes 30-90 seconds. By March 2026, Gemini TTS can produce believable breath and intonation, not the robotic reading of older voices.

Obsidian Bonus: The Audio Lands Back in Your Daily Note

If the source folder is your Obsidian Daily/, turn on “Embed into Daily Note”:

  • The WAV is written to attachments/daily-brief/2026-04-18.wav
  • Today’s Daily/2026-04-18.md gets this prepended:
## Daily Brief (5:12)

![[attachments/daily-brief/2026-04-18.wav]]

> Generated 07:30 · covered 7 notes from yesterday

Obsidian natively plays ![[xxx.wav]] embeds inline. Click once, listen, done. That’s where this connects to the full Obsidian + Gemini two-way sync — the audio is yesterday’s distillation, and the player sits right inside today’s entry.

Real Demo: A Week of Work Notes → Friday Morning’s 5-Minute Podcast

Concrete scenario: Monday through Thursday I write daily notes in Obsidian — meetings, papers I read, random ideas.

Friday 07:30, Daily Brief fires:

  • Source folder: ~/Obsidian/Work/Daily/
  • Time window: Last 7 days
  • Length: 5 min

The resulting 2026-04-18.wav opens like this (excerpt):

Speaker1: You spent the week wrestling with the pricing experiment. Tuesday’s note said A/B was only 3% apart, but Wednesday you added “downstream LTV diverges by 15%.”

Speaker2: Right — those are two different stories. Short-term conversion is basically tied, long-term value isn’t. Which is exactly why Thursday’s TODO says “only looking at first payment is wrong.”

Speaker1: Yeah. And the Patrick McKenzie piece on pricing power you read Wednesday — it maps cleanly onto what you’re observing here…

That stitching of scattered notes into a narrative is the real value. Manually re-reading seven daily notes is 15 minutes. Listening to this is 5.

To see every Daily Brief ever generated in a proper timeline, open geminidesktop.app/notebooks.

Design Trade-Off: Why Not launchd?

Users have asked: “Why not use macOS launchd or Windows Task Scheduler so it runs even when the app is closed?” We intentionally skipped it for v1:

  1. Permission complexity — launchd agents need background run permission, notarization, and manual user approval post-Catalina. Install friction spikes
  2. Key management — a background daemon needs its own Gemini API key stored in keychain or plaintext — new attack surface
  3. Black-box debugging — when a cron job silently fails, users only have logs. Keeping it inside a visible app window makes failures obvious

Current strategy: keep GeminiDesktop open (tray / background is fine), the scheduler fires from the app. A MacBook on AC power with the lid closed keeps the background alive 98% of the time. A launchd opt-in is on the 1.0 roadmap, just not the default.

What’s Next: Siri Shortcut, iOS Sync, AirPods Auto-Queue

Daily Brief is desktop-only today, but obviously that’s not the endpoint. On the roadmap:

  • Siri Shortcut — “Hey Siri, play today’s brief” triggers the latest WAV
  • iOS sync — push the daily audio to Apple Podcasts as a local subscription via iCloud Drive or self-hosted feed
  • AirPods auto-queue — detect AirPods connection within the commute window, auto-add to Now Playing
  • Weekly catch-up — binge 5 briefs on Saturday, segmented by day
  • Voice feedback — “note this” mid-listen, fed back into today’s daily note

If you’re already an Obsidian user, start with the full Obsidian + GeminiDesktop two-way sync guide — Daily Brief is one node in a bigger loop. If you landed here looking for a NotebookLM replacement in general, also see Why GeminiDesktop is the offline NotebookLM alternative.

FAQ

Q1: Are my notes uploaded to Google?

A: Only text is sent through the Gemini API (required for script generation and TTS). The original markdown files never leave your machine, and nothing passes through BibiGPT servers. The API key goes Google-direct — same trust boundary as using Gemini Web.

Q2: What if my machine is off at trigger time?

A: It skips. Next launch, you can hit “Run now (catch up)” to backfill the most recent missed window.

Q3: Can I change the host persona?

A: Settings → Daily Brief → Style prompt accepts a one-liner (“two serious HBR editors” or “two engineers chatting over lunch”). It gets prepended to the default prompt.

Q4: Does it support video transcripts as a source?

A: Daily Brief currently scans .md and .txt. But if you use BibiGPT’s YouTube-to-Obsidian-notes flow, the generated markdown lands straight into the watched folder — our recommended combo: BibiGPT as the video front-end, GeminiDesktop as the local recap layer.

Wrap-Up

Daily Brief isn’t feature bloat. It’s a rebuild of what “AI helps knowledge workers actually recap each day” should look like. NotebookLM proved the two-host format works; GeminiDesktop turns it into an always-on local pipeline. For anyone on Obsidian, Logseq, or any markdown-based system, it’s the lowest-friction way to let yesterday tell today what happened.

Try the Daily Brief now: