Skip to main content

Content Management - NotebookLM MCP

Add sources and generate audio overviews (podcasts)


Overview

The Content Management module enables you to:

  1. Add Sources - Upload documents, URLs, text, YouTube videos to notebooks
  2. Delete Sources - Remove sources from notebooks
  3. Generate Audio Overview - Create podcast-style audio discussions (REAL NotebookLM feature)
  4. Download Audio - Save generated audio files locally
  5. Create Notes - Add user-created annotations to notebooks
  6. List Content - View sources and generated content

Important: What We Actually Support

REAL NotebookLM Features (fully integrated):

  • Audio Overview generation — NotebookLM's actual podcast feature
  • Video generation — brief + explainer with 6 visual styles (classroom, documentary, animated, corporate, cinematic, minimalist)
  • Infographic generation — horizontal and vertical layouts
  • Report / Presentation / Data Table — text-based content returned in the API response
  • Download artifacts — WAV audio, MP4 video, PNG infographics
  • Source management — add files, URLs, text, YouTube videos, Google Drive
  • Q&A with citations — DOM-extracted source names and excerpts

Prompt-based content (use ask_question directly):

For content types that NotebookLM doesn't expose as first-class studio outputs — briefing docs, study guides, FAQ, timelines, tables of contents — call ask_question with a custom prompt (e.g. "Create a study guide from these sources"). These are regular chat responses, not separate NotebookLM integrations.


Quick Start

Add a URL Source

curl -X POST http://localhost:3000/content/sources \
-H "Content-Type: application/json" \
-d '{
"source_type": "url",
"url": "https://example.com/article"
}'

Generate Audio Overview

curl -X POST http://localhost:3000/content/generate \
-H "Content-Type: application/json" \
-d '{
"content_type": "audio_overview",
"custom_instructions": "Focus on practical tips"
}'

Download Audio

curl "http://localhost:3000/content/download?content_type=audio_overview"

Source Types

TypeDescriptionRequired Field
fileLocal file uploadfile_path
urlWeb page URLurl
textPlain text / pasted contenttext
youtubeYouTube video URLurl
google_driveGoogle Drive document linkurl

Examples

Upload a local file:

curl -X POST http://localhost:3000/content/sources \
-H "Content-Type: application/json" \
-d '{
"source_type": "file",
"file_path": "/path/to/document.pdf",
"title": "My PDF Document"
}'

Add pasted text:

curl -X POST http://localhost:3000/content/sources \
-H "Content-Type: application/json" \
-d '{
"source_type": "text",
"text": "Your document content here...",
"title": "Research Notes"
}'

Add YouTube video:

curl -X POST http://localhost:3000/content/sources \
-H "Content-Type: application/json" \
-d '{
"source_type": "youtube",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}'

Deleting Sources

Remove sources from notebooks using the delete endpoint.

Delete by ID

curl -X DELETE "http://localhost:3000/content/sources/source-123"

Delete by Name

curl -X DELETE "http://localhost:3000/content/sources?source_name=My%20Document"

Response:

{
"success": true,
"data": {
"success": true,
"sourceId": "source-123",
"sourceName": "My Document"
}
}

Notes:

  • Use list_content first to find source IDs and names
  • Source names support partial matching (case-insensitive)
  • This action is irreversible - sources are permanently deleted

Audio Overview (Podcast)

The audio overview creates a podcast-style discussion between two AI hosts about your notebook content. This is a REAL NotebookLM feature that generates actual audio.

Generate Audio

curl -X POST http://localhost:3000/content/generate \
-H "Content-Type: application/json" \
-d '{
"content_type": "audio_overview",
"custom_instructions": "Focus on key concepts for beginners, use simple language"
}'

Custom Instructions Ideas:

  • "Focus on practical applications"
  • "Emphasize the historical context"
  • "Make it accessible to students"
  • "Highlight the key takeaways"

Note: Audio generation takes 5-10 minutes. The API will wait for completion.

Download Audio

# Get audio file
curl "http://localhost:3000/content/download?content_type=audio_overview"

# Save to specific path
curl "http://localhost:3000/content/download?content_type=audio_overview&output_path=/downloads/podcast.mp3"

Response:

{
"success": true,
"filePath": "/downloads/podcast.wav",
"mimeType": "audio/wav"
}

Create Notes

Notes are user-created annotations that appear in the NotebookLM Studio panel. They allow you to save research findings, summaries, key insights, or any custom content alongside your sources.

Create a Note

curl -X POST http://localhost:3000/content/notes \
-H "Content-Type: application/json" \
-d '{
"title": "Key Findings Summary",
"content": "## Main Points\n\n1. First important finding\n2. Second key insight\n3. Conclusion and next steps"
}'

Response:

{
"success": true,
"data": {
"success": true,
"noteTitle": "Key Findings Summary",
"status": "created"
}
}

Parameters:

ParameterTypeRequiredDescription
titlestringYesTitle of the note
contentstringYesContent/body of the note (supports markdown)
notebook_urlstringNoTarget notebook URL
session_idstringNoReuse existing session

Use Cases:

  • Save research summaries from NotebookLM conversations
  • Create custom annotations for specific sections
  • Store key quotes and references
  • Build a structured outline from notebook content

MCP Tool Usage

If using Claude Code or Claude Desktop:

create_note(title="My Research Note", content="Key findings from the analysis...")

Listing Content

View all sources and generated content in a notebook:

curl http://localhost:3000/content

Response:

{
"success": true,
"sources": [
{
"id": "source-1",
"name": "Introduction.pdf",
"type": "document",
"status": "ready"
},
{
"id": "source-2",
"name": "https://example.com",
"type": "url",
"status": "ready"
}
],
"generatedContent": [
{
"id": "audio-overview",
"type": "audio_overview",
"name": "Audio Overview",
"status": "ready",
"createdAt": "2025-12-24T10:30:00Z"
}
],
"sourceCount": 2,
"hasAudioOverview": true
}

MCP Tool Usage

If using Claude Code or Claude Desktop:

Add Source

add_source(source_type="url", url="https://example.com")

Delete Source

delete_source(source_name="My Document")

or

delete_source(source_id="source-123")

Generate Audio

generate_content(content_type="audio_overview", custom_instructions="Focus on key points")

List Content

list_content()

Download Audio

download_content(content_type="audio_overview", output_path="/path/to/save.mp3")

Workflow Example

Research Workflow

  1. Add multiple sources:

    # Add primary source
    curl -X POST http://localhost:3000/content/sources \
    -d '{"source_type":"url","url":"https://research-paper.com"}'

    # Add supporting document
    curl -X POST http://localhost:3000/content/sources \
    -d '{"source_type":"file","file_path":"/docs/notes.pdf"}'
  2. Generate audio overview:

    curl -X POST http://localhost:3000/content/generate \
    -d '{"content_type":"audio_overview","custom_instructions":"Summarize key findings for researchers"}'
  3. Download for offline listening:

    curl "http://localhost:3000/content/download?content_type=audio_overview&output_path=research.mp3"

Error Handling

Common Errors

ErrorCauseSolution
"Source type required"Missing source_typeAdd the source_type parameter
"File not found"Invalid file_pathCheck file path exists
"Audio not ready"Audio still generatingWait and retry
"No sources in notebook"Empty notebookAdd sources first

Timeout Handling

Audio generation can take 5-10 minutes. The API will wait up to 10 minutes for completion. For long operations, consider:

  1. Using session_id to maintain context
  2. Polling list_content to check status
  3. Setting appropriate client timeouts

Best Practices

  1. Add sources before generating audio - Ensure your notebook has sources before attempting to generate audio.

  2. Use custom instructions - Tailor the audio by providing clear custom instructions.

  3. Reuse sessions - Pass session_id to avoid creating new browser sessions for each request.

  4. Check content list - Use list_content to verify what's already generated before creating duplicates.

  5. Handle timeouts gracefully - Audio generation is slow; implement appropriate retry logic.


Version History

VersionChanges
1.5.x2026 UI selectors, re-added video/infographic/presentation/report/data_table
1.4.2Removed fake content generation (FAQ, etc.) — re-added later as real studio outputs
1.4.0Added content management module
1.3.7Source citation extraction

Complete Content Management Documentation!