VideoStyle Options for Video Generation in NotebookLM: Complete Guide
NotebookLM supports 10 distinct video styles ranging from AUTO_SELECT to PAPER_CRAFT, controlled via the VideoStyle enumeration in the RPC layer that maps each aesthetic to an integer backend code.
The teng-lin/notebooklm-py library exposes these visual presets through both its CLI and Python API, allowing you to customize the look of generated explainer videos. When you specify a VideoStyle, the library translates your selection into a numeric style_code that the NotebookLM backend uses to render the final video.
Complete List of VideoStyle Options
The canonical definition lives in src/notebooklm/rpc/types.py (lines 171-184), where the VideoStyle enum assigns integer values to each aesthetic option:
| Style | Integer | Description |
|---|---|---|
AUTO_SELECT |
1 | AI chooses the most appropriate style automatically (default). |
CUSTOM |
2 | Reserved for explicit custom presets (programmatic use only). |
CLASSIC |
3 | Traditional presentation visuals with clean layouts. |
WHITEBOARD |
4 | Hand-drawn whiteboard animation aesthetic. |
KAWAII |
5 | Cute, Japanese-anime-inspired character design. |
ANIME |
6 | Full anime visual treatment with stylized graphics. |
WATERCOLOR |
7 | Soft, painterly watercolor textures. |
RETRO_PRINT |
8 | Vintage printed-paper look with aged textures. |
HERITAGE |
9 | Historical, heritage-style visual design. |
PAPER_CRAFT |
10 | Paper cut-out collage aesthetic with depth layers. |
Note that CUSTOM (value 2) is intentionally excluded from the CLI mapping and requires direct API access with backend-configured presets.
How VideoStyle Maps to CLI Arguments
When using the command-line interface, string arguments are converted to enum members in src/notebooklm/cli/generate.py (lines 52-62). The CLI style_map supports nine of the ten options:
# Available CLI string mappings
auto → VideoStyle.AUTO_SELECT
classic → VideoStyle.CLASSIC
whiteboard → VideoStyle.WHITEBOARD
kawaii → VideoStyle.KAWAII
anime → VideoStyle.ANIME
watercolor → VideoStyle.WATERCOLOR
retro-print → VideoStyle.RETRO_PRINT
heritage → VideoStyle.HERITAGE
paper-craft → VideoStyle.PAPER_CRAFT
The CUSTOM option is omitted from this mapping because it requires pre-configured backend presets that cannot be defined through command-line arguments alone.
Generating Videos with Specific Styles
CLI Usage
Pass the style string via the --style flag when running notebooklm generate video:
# Classic business presentation aesthetic
notebooklm generate video "Quarterly Financial Review" --style classic
# Whiteboard explainer for educational content
notebooklm generate video "Introduction to Photosynthesis" --style whiteboard
# Let the AI select the best visual approach (default behavior)
notebooklm generate video "Machine Learning Basics"
Python API Usage
For programmatic control, import VideoStyle from the package and pass the enum directly to generate_video():
import asyncio
from notebooklm import NotebookLMClient, VideoStyle, VideoFormat
async def create_kawaii_video():
async with await NotebookLMClient.from_storage() as client:
result = await client.artifacts.generate_video(
notebook_id="nb_12345",
video_format=VideoFormat.EXPLAINER,
video_style=VideoStyle.KAWAII, # Explicit enum selection
language="en",
instructions="Explain photosynthesis with cute plant characters."
)
print(f"Task ID: {result.task_id}")
asyncio.run(create_kawaii_video())
When the request is constructed in src/notebooklm/_artifacts.py (lines 37-44), the library extracts the integer value via video_style.value and injects it into the RPC payload as style_code:
format_code = video_format.value if video_format else None
style_code = video_style.value if video_style else None
This integer is what the NotebookLM backend consumes to determine rendering parameters.
Summary
- Ten styles available:
AUTO_SELECT,CUSTOM,CLASSIC,WHITEBOARD,KAWAII,ANIME,WATERCOLOR,RETRO_PRINT,HERITAGE, andPAPER_CRAFTdefined insrc/notebooklm/rpc/types.py. - CLI access: Nine styles are exposed via string arguments in
src/notebooklm/cli/generate.py, excludingCUSTOM. - Backend transmission: All styles resolve to integer codes (1-10) sent in the RPC payload via
src/notebooklm/_artifacts.py. - Default behavior:
AUTO_SELECT(value 1) lets the AI determine the optimal visual style when you don't specify one.
Frequently Asked Questions
What is the default VideoStyle if I don't specify one?
AUTO_SELECT is the default. When you omit the --style flag in the CLI or pass None in the Python API, the backend receives integer value 1, which instructs the AI to choose the most appropriate visual style based on your content and instructions.
Can I use the CUSTOM style from the command line?
No, CUSTOM is API-only. This style (integer value 2) is excluded from the CLI mapping in src/notebooklm/cli/generate.py because it requires pre-defined visual presets on the backend that cannot be configured through command-line arguments. Use the Python API and pass VideoStyle.CUSTOM directly if you have backend access to custom presets.
How does the library convert style names to backend codes?
Through enum value extraction. When you call generate_video(), the library accesses video_style.value (defined in src/notebooklm/rpc/types.py) to get the integer code, then injects it into the RPC request payload in src/notebooklm/_artifacts.py as the style_code field that the NotebookLM service expects.
Which source file should I check for the complete list of styles?
Refer to src/notebooklm/rpc/types.py between lines 171-184. This file contains the single source of truth for the VideoStyle enumeration. The CLI mappings in src/notebooklm/cli/generate.py are derived from this definition but exclude the CUSTOM option.
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 →