# VideoStyle Options for Video Generation in NotebookLM: Complete Guide

> Explore NotebookLM's 10 VideoStyle options for video generation. This guide details each aesthetic from AUTO_SELECT to PAPER_CRAFT to enhance your creations.

- Repository: [Teng Lin/notebooklm-py](https://github.com/teng-lin/notebooklm-py)
- Tags: how-to-guide
- Published: 2026-03-09

---

**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`](https://github.com/teng-lin/notebooklm-py/blob/main/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`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/cli/generate.py)** (lines 52-62). The CLI `style_map` supports nine of the ten options:

```bash

# 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`:

```bash

# 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()`:

```python
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`](https://github.com/teng-lin/notebooklm-py/blob/main/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`:

```python
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`, and `PAPER_CRAFT` defined in [`src/notebooklm/rpc/types.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py).
- **CLI access**: Nine styles are exposed via string arguments in [`src/notebooklm/cli/generate.py`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/cli/generate.py), excluding `CUSTOM`.
- **Backend transmission**: All styles resolve to integer codes (1-10) sent in the RPC payload via [`src/notebooklm/_artifacts.py`](https://github.com/teng-lin/notebooklm-py/blob/main/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`](https://github.com/teng-lin/notebooklm-py/blob/main/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`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/rpc/types.py)) to get the integer code, then injects it into the RPC request payload in [`src/notebooklm/_artifacts.py`](https://github.com/teng-lin/notebooklm-py/blob/main/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`](https://github.com/teng-lin/notebooklm-py/blob/main/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`](https://github.com/teng-lin/notebooklm-py/blob/main/src/notebooklm/cli/generate.py) are derived from this definition but exclude the `CUSTOM` option.