Back to skills
SkillHub ClubShip Full StackFull StackIntegration
notebooklm
Imported from https://github.com/jongwony/cc-plugin.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Stars
1
Hot score
77
Updated
March 20, 2026
Overall rating
C2.8
Composite score
2.8
Best-practice grade
B82.7
Install command
npx @skill-hub/cli install jongwony-cc-plugin-notebooklm
Repository
jongwony/cc-plugin
Skill path: google/skills/notebooklm
Imported from https://github.com/jongwony/cc-plugin.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack, Integration.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: jongwony.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install notebooklm into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/jongwony/cc-plugin before adding notebooklm to shared team environments
- Use notebooklm for development workflows
Works across
Claude CodeCodex CLIGemini CLIOpenCode
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: notebooklm
description: NotebookLM Enterprise API
---
# NotebookLM Enterprise API Skill
Programmatically manage NotebookLM Enterprise notebooks and data sources via the Discovery Engine REST API.
## Prerequisites
Before using this skill:
1. Set up NotebookLM Enterprise in Google Cloud project
2. Obtain NotebookLM Enterprise license
3. Authenticate via `gcloud auth print-access-token`
4. For Google Drive sources: run `gcloud auth login --enable-gdrive-access`
## Core Concepts
### Endpoint Structure
```
https://{ENDPOINT_LOCATION}-discoveryengine.googleapis.com/v1alpha/projects/{PROJECT_NUMBER}/locations/{LOCATION}/...
```
| Parameter | Description | Values |
|-----------|-------------|--------|
| `ENDPOINT_LOCATION` | Multi-region prefix | `us-`, `eu-`, `global-` |
| `PROJECT_NUMBER` | GCP project number | Numeric ID |
| `LOCATION` | Data store location | `global`, `us`, `eu` |
### Resource Names
- **Notebook**: `projects/{PROJECT}/locations/{LOCATION}/notebooks/{NOTEBOOK_ID}`
- **Source**: `projects/{PROJECT}/locations/{LOCATION}/notebooks/{NOTEBOOK_ID}/sources/{SOURCE_ID}`
## Workflow Overview
### 1. Create Notebook
```bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://global-discoveryengine.googleapis.com/v1alpha/projects/${PROJECT_NUMBER}/locations/global/notebooks" \
-d '{"title": "My Notebook"}'
```
Response includes `notebookId` for subsequent operations.
### 2. Add Sources
Sources can be added via `sources:batchCreate`:
| Source Type | Key Fields |
|-------------|------------|
| Google Docs/Slides | `googleDriveContent.documentId`, `mimeType` |
| Raw Text | `textContent.content`, `sourceName` |
| Web URL | `webContent.url`, `sourceName` |
| YouTube | `videoContent.url` |
For file uploads, use `sources:uploadFile` with multipart form data.
**Supported File Types:**
- Documents: `.pdf`, `.txt`, `.md`, `.docx`, `.pptx`, `.xlsx`
- Audio: `.mp3`, `.wav`, `.m4a`, `.ogg`, etc.
- Images: `.png`, `.jpg`, `.jpeg`
### 3. Manage Notebooks
| Operation | Method | Endpoint |
|-----------|--------|----------|
| Get | GET | `/notebooks/{id}` |
| List Recent | GET | `/notebooks:listRecentlyViewed` |
| Delete | POST | `/notebooks:batchDelete` |
| Share | POST | `/notebooks/{id}:share` |
### 4. Audio Overview (Preview)
Generate AI-powered audio summaries:
- `CreateAudioOverview` - Generate audio overview
- `DeleteAudioOverview` - Remove audio overview
## Usage Patterns
### Quick Notebook Creation
```bash
# Set environment variables
export PROJECT_NUMBER="123456789"
export LOCATION="global"
export ENDPOINT="global-discoveryengine.googleapis.com"
# Create notebook
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT}/v1alpha/projects/${PROJECT_NUMBER}/locations/${LOCATION}/notebooks" \
-d '{"title": "Research Notes"}'
```
### Add Web Source
```bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT}/v1alpha/projects/${PROJECT_NUMBER}/locations/${LOCATION}/notebooks/${NOTEBOOK_ID}/sources:batchCreate" \
-d '{
"userContents": [{
"webContent": {
"url": "https://example.com/article",
"sourceName": "Example Article"
}
}]
}'
```
### Upload Local File
```bash
curl -X POST \
--data-binary "@/path/to/document.pdf" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-Upload-File-Name: My Document" \
-H "X-Goog-Upload-Protocol: raw" \
-H "Content-Type: application/pdf" \
"https://${ENDPOINT}/upload/v1alpha/projects/${PROJECT_NUMBER}/locations/${LOCATION}/notebooks/${NOTEBOOK_ID}/sources:uploadFile"
```
### Share Notebook
```bash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT}/v1alpha/projects/${PROJECT_NUMBER}/locations/${LOCATION}/notebooks/${NOTEBOOK_ID}:share" \
-d '{
"accountAndRoles": [
{"email": "[email protected]", "role": "PROJECT_ROLE_WRITER"}
]
}'
```
**Roles:** `PROJECT_ROLE_OWNER`, `PROJECT_ROLE_WRITER`, `PROJECT_ROLE_READER`, `PROJECT_ROLE_NOT_SHARED`
## Helper Script
Use `@scripts/notebooklm-api.sh` for common operations:
```bash
# Create notebook
./notebooklm-api.sh create "My Notebook"
# Add web source
./notebooklm-api.sh add-web <notebook_id> "https://example.com" "Source Name"
# Upload file
./notebooklm-api.sh upload <notebook_id> /path/to/file.pdf
# List notebooks
./notebooklm-api.sh list
# Share notebook
./notebooklm-api.sh share <notebook_id> [email protected] writer
```
## Error Handling
- **401 Unauthorized**: Refresh token with `gcloud auth print-access-token`
- **403 Forbidden**: Check IAM permissions (Cloud NotebookLM User role)
- **404 Not Found**: Verify notebook/source ID and location
- **Google Drive 403**: Run `gcloud auth login --enable-gdrive-access`
## Additional Resources
### Reference Files
For detailed API specifications:
- **`references/notebooks-api.md`** - Complete notebooks API reference
- **`references/sources-api.md`** - Sources management API details
- **`references/supported-formats.md`** - Supported file types and MIME types
### External Links
- [NotebookLM Enterprise Docs](https://docs.cloud.google.com/gemini/enterprise/notebooklm-enterprise/docs)
- [API Reference](https://docs.cloud.google.com/gemini/enterprise/docs/reference/rest/v1alpha/projects.locations.notebooks)
## Environment Setup
Before executing API calls, confirm required variables:
```bash
# Required environment variables
echo "PROJECT_NUMBER: ${PROJECT_NUMBER:-NOT SET}"
echo "LOCATION: ${LOCATION:-global}"
# Test authentication
gcloud auth print-access-token > /dev/null && echo "Auth: OK" || echo "Auth: FAILED"
```
When variables are missing, use `AskUserQuestion` to gather project configuration.