NotebookLM RPC Method IDs for Notebook Operations: Create, Rename, and Delete
NotebookLM's unofficial Python client uses three specific obfuscated RPC method IDs—CCqFvf for create, s0tc2d for rename, and WWINqb for delete—to execute notebook operations against Google's internal batchexecute endpoint.
The teng-lin/notebooklm-py repository implements an async Python interface to Google NotebookLM by reverse-engineering the internal RPC protocol. At the core of every notebook manipulation are hardcoded RPC method IDs defined in the RPCMethod enum that translate high-level Python calls into low-level Google API requests.
The Three RPC Method IDs for Notebook Operations
According to the source code in src/notebooklm/rpc/types.py (lines 18-24), the notebook-level actions map to the following obfuscated identifiers:
CCqFvf– Mapped viaRPCMethod.CREATE_NOTEBOOKfor instantiating new notebooks.s0tc2d– Mapped viaRPCMethod.RENAME_NOTEBOOKfor updating notebook titles.WWINqb– Mapped viaRPCMethod.DELETE_NOTEBOOKfor permanent notebook removal.
These IDs represent the single source of truth for the batchexecute RPC protocol. If Google changes their internal API contract, these enum values in src/notebooklm/rpc/types.py must be updated to maintain functionality.
Implementation in the Notebook API
The high-level NotebooksAPI class in src/notebooklm/_notebooks.py wraps these raw IDs into user-friendly async methods, while the ClientCore in src/notebooklm/_core.py handles the actual batchexecute request serialization.
Creating Notebooks with CCqFvf
When you call client.notebooks.create(), the library invokes RPCMethod.CREATE_NOTEBOOK (ID: CCqFvf) via the core RPC helper. The implementation in src/notebooklm/_notebooks.py (lines 49-62) constructs the parameter array and delegates to self._core.rpc_call(RPCMethod.CREATE_NOTEBOOK, params).
Renaming Notebooks with s0tc2d
The rename operation uses RPCMethod.RENAME_NOTEBOOK (ID: s0tc2d). In src/notebooklm/_notebooks.py (lines 98-118), the rename() method packages the notebook ID and new title into the RPC parameter structure before calling self._core.rpc_call(RPCMethod.RENAME_NOTEBOOK, params, ...).
Deleting Notebooks with WWINqb
For deletion, the client sends RPCMethod.DELETE_NOTEBOOK (ID: WWINqb). The implementation at src/notebooklm/_notebooks.py (lines 84-96) calls self._core.rpc_call(RPCMethod.DELETE_NOTEBOOK, params) with the target notebook identifier.
Practical Usage Examples
These RPC method IDs are handled automatically when using the high-level client:
import asyncio
from notebooklm import NotebookLMClient
async def notebook_demo():
# Load client (authentication handled internally)
async with await NotebookLMClient.from_storage() as client:
# 1️⃣ Create a notebook
nb = await client.notebooks.create("My Research Notebook")
print(f"Created notebook ID: {nb.id}")
# 2️⃣ Rename the notebook
renamed_nb = await client.notebooks.rename(nb.id, "Renamed Research Notebook")
print(f"Renamed to: {renamed_nb.title}")
# 3️⃣ Delete the notebook
success = await client.notebooks.delete(nb.id)
print(f"Deletion successful: {success}")
asyncio.run(notebook_demo())
For debugging or advanced use cases, you can invoke the RPC methods directly through the core layer:
from notebooklm._core import ClientCore
from notebooklm.rpc import RPCMethod
core = ClientCore(...)
# Create notebook (raw RPC)
result = await core.rpc_call(RPCMethod.CREATE_NOTEBOOK, ["Demo", None, None, [2], [1]])
print(result)
Summary
- Create operations use the RPC method ID
CCqFvfdefined asRPCMethod.CREATE_NOTEBOOKinsrc/notebooklm/rpc/types.py. - Rename operations use the RPC method ID
s0tc2ddefined asRPCMethod.RENAME_NOTEBOOK. - Delete operations use the RPC method ID
WWINqbdefined asRPCMethod.DELETE_NOTEBOOK. - All three methods are implemented in
src/notebooklm/_notebooks.pyand transmitted viaClientCore.rpc_call()to Google's batchexecute endpoint.
Frequently Asked Questions
What is the RPC method ID for creating a notebook in NotebookLM?
The creation operation uses the method ID CCqFvf, referenced in code as RPCMethod.CREATE_NOTEBOOK. This identifier is passed to the batchexecute endpoint via src/notebooklm/_notebooks.py when calling client.notebooks.create().
How does the rename operation work at the RPC level?
Renaming utilizes the method ID s0tc2d (RPCMethod.RENAME_NOTEBOOK). The NotebooksAPI.rename() method in src/notebooklm/_notebooks.py (lines 98-118) packages the notebook ID and new title into a parameter list before invoking self._core.rpc_call() with this specific ID.
Where are these RPC method IDs defined in the source code?
All notebook operation IDs are declared in src/notebooklm/rpc/types.py (lines 18-24) within the RPCMethod enum. This file serves as the registry mapping Pythonic enum members to Google's obfuscated batchexecute method strings.
Can I invoke these RPC methods directly without the high-level API?
Yes. You can bypass the NotebooksAPI wrapper and call RPCMethod.CREATE_NOTEBOOK, RPCMethod.RENAME_NOTEBOOK, or RPCMethod.DELETE_NOTEBOOK directly through ClientCore.rpc_call() in src/notebooklm/_core.py, though you must manually construct the correct parameter arrays expected by Google's internal API.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →