Content Management - NotebookLM MCP
Add sources and generate audio overviews (podcasts)
Overview
The Content Management module enables you to:
- Add Sources - Upload documents, URLs, text, YouTube videos to notebooks
- Delete Sources - Remove sources from notebooks
- Generate Audio Overview - Create podcast-style audio discussions (REAL NotebookLM feature)
- Download Audio - Save generated audio files locally
- Create Notes - Add user-created annotations to notebooks
- 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
| Type | Description | Required Field |
|---|---|---|
file | Local file upload | file_path |
url | Web page URL | url |
text | Plain text / pasted content | text |
youtube | YouTube video URL | url |
google_drive | Google Drive document link | url |
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_contentfirst 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Title of the note |
content | string | Yes | Content/body of the note (supports markdown) |
notebook_url | string | No | Target notebook URL |
session_id | string | No | Reuse 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
-
Add multiple sources:
# Add primary sourcecurl -X POST http://localhost:3000/content/sources \-d '{"source_type":"url","url":"https://research-paper.com"}'# Add supporting documentcurl -X POST http://localhost:3000/content/sources \-d '{"source_type":"file","file_path":"/docs/notes.pdf"}' -
Generate audio overview:
curl -X POST http://localhost:3000/content/generate \-d '{"content_type":"audio_overview","custom_instructions":"Summarize key findings for researchers"}' -
Download for offline listening:
curl "http://localhost:3000/content/download?content_type=audio_overview&output_path=research.mp3"
Error Handling
Common Errors
| Error | Cause | Solution |
|---|---|---|
| "Source type required" | Missing source_type | Add the source_type parameter |
| "File not found" | Invalid file_path | Check file path exists |
| "Audio not ready" | Audio still generating | Wait and retry |
| "No sources in notebook" | Empty notebook | Add 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:
- Using
session_idto maintain context - Polling
list_contentto check status - Setting appropriate client timeouts
Best Practices
-
Add sources before generating audio - Ensure your notebook has sources before attempting to generate audio.
-
Use custom instructions - Tailor the audio by providing clear custom instructions.
-
Reuse sessions - Pass
session_idto avoid creating new browser sessions for each request. -
Check content list - Use
list_contentto verify what's already generated before creating duplicates. -
Handle timeouts gracefully - Audio generation is slow; implement appropriate retry logic.
Version History
| Version | Changes |
|---|---|
| 1.5.x | 2026 UI selectors, re-added video/infographic/presentation/report/data_table |
| 1.4.2 | Removed fake content generation (FAQ, etc.) — re-added later as real studio outputs |
| 1.4.0 | Added content management module |
| 1.3.7 | Source citation extraction |
Complete Content Management Documentation!