# Notebooklm Audio Generator

> Automates uploading multiple sources (files, URLs, YouTube, Drive, text) to a NotebookLM notebook, generating a deep dive audio overview in a preferred language, and downloading the result. It guides the user through notebook management, source addition, audio generation, and downloading using the notebooklm-mcp-cli.

- Skill: `dvcrn/notebooklm-audio-generator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/notebooklm-audio-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/notebooklm-audio-generator/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/notebooklm-audio-generator

---


# NotebookLM Audio Generator Skill

This skill automates the process of using Google's NotebookLM to generate a deep-dive audio overview from various sources and download it to a specified directory.

## Prerequisites

This skill relies on the `notebooklm-mcp-cli` package and the `epub2txt` utility for `.epub` support. Before proceeding, ensure the user has them installed and authenticated.

### Installation & Setup

If the user has not set up the CLI or the conversion tool, instruct them to do so first:

1. **Install the NotebookLM CLI:**
   ```bash
   uv tool install notebooklm-mcp-cli
   # OR
   pip install notebooklm-mcp-cli
   ```
2. **Authenticate:**
   ```bash
   nlm login
   ```
3. **Install epub2txt (for .epub support):**
   The skill expects `epub2txt` to be installed in your programs directory. Clone and initialize it using the following commands:
   ```bash
   mkdir -p ~/Programs
   cd ~/Programs
   git clone https://github.com/SPACESODA/epub2txt.git
   cd epub2txt
   chmod +x run.sh
   ./run.sh  # This initializes the virtual environment
   ```

## Workflow

When activated, follow these steps **strictly** in order. Do not skip steps.

### Step 1: Gather Information

Ask the user for the following information one by one to prepare for the generation:
1. Ask for a desired name for the new notebook. If not provided, use the default name "Audio Overview Notebook".
2. **Source Selection:** Ask the user to select their sources from the following options:
   - **Local Files:** `.pdf`, `.txt`, and `.epub` (which will be automatically converted). Use GUI pickers:
     - **macOS:** `osascript -e "set theFiles to choose file with prompt \"Select your source file(s):\" multiple selections allowed true" ...`
     - **Linux:** `zenity --file-selection --multiple ...`
     - **Windows:** PowerShell `OpenFileDialog`.
   - **Web/Video URLs:** Ask the user to provide any website or YouTube URLs.
   - **Google Drive:** Ask for Google Drive Document IDs.
3. **Preferred Language:** Ask the user for the preferred output language (BCP-47 code).
   - **Options:** Provide common choices: `en` (English - default), `zh` (Chinese), `ja` (Japanese), `es` (Spanish), `fr` (French), `de` (German).
4. **Download Destination:** Use a GUI directory picker to select where the audio file should be saved.

**Crucial:** Ask the user interactively to confirm they have provided/selected all the sources they wish to include before proceeding.

### Step 2: Create a New Notebook

Use the `notebook_create` tool to create a new notebook with the provided name. Keep track of the `notebook_id`.

### Step 3: Upload Sources

- Loop through all gathered sources:
  - **EPUB Files:** Convert to `.txt` first: `cd ~/Programs/epub2txt && ./run.sh "<path>"`. Use the new `.txt` path.
  - **Other Files:** Use `source_add(source_type="file", file_path="...")`.
  - **URLs/YouTube:** Use `source_add(source_type="url", url="...")`.
  - **Drive:** Use `source_add(source_type="drive", document_id="...")`.
- Always set `wait=true` to ensure sources are processed.

### Step 4: Generate Audio Overview

- Use the `studio_create` tool to start the audio generation.
  - Set `notebook_id` to the ID.
  - Set `artifact_type` to `audio`.
  - Set `audio_format` to `deep_dive`.
  - Set `audio_length` to `long`.
  - **Language:** Use the user's selected BCP-47 code (e.g., `zh`).
  - **Custom Prompt:** If the selected language is NOT English (`en`), you MUST provide the following `focus_prompt` to encourage a longer, more detailed output:
    > "Please provide an extremely detailed deep dive. Analyze each source file thoroughly without omitting any details. The conversation should be as long as possible, aiming for over 40 minutes."
  - Set `confirm` to `true`.

### Step 5: Monitor Generation Status

- **Inform the user:** Explicitly tell the user that generating a long, deep-dive audio overview can take 5 to 15 minutes.
- Use the `studio_status` tool with `action: status` in a polling loop (using `run_shell_command` with `sleep 300` between checks) until the `status` becomes `completed`.
- Note the `audio_url` and `artifact_id` when finished. **Crucial:** If there are multiple audio artifacts returned in the status, always identify and note the **latest one** (the one with the most recent `created_at` timestamp).

### Step 6: Download the Audio

- Using the `artifact_id` of the latest audio, try using the `download_artifact` tool first to save the audio to the destination path with an `.mp3` extension.

### Step 7: Final Verification

- Verify the downloaded file using `file <output_path>`.
- Inform the user that the process is complete.
