Metadata-Version: 2.4
Name: notebooklm-skill
Version: 1.3.0
Summary: NotebookLM research automation — CLI, MCP server, and Claude Code Skill
Author-email: Claude World <hello@claude-world.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/claude-world/notebooklm-skill
Project-URL: Repository, https://github.com/claude-world/notebooklm-skill
Project-URL: Issues, https://github.com/claude-world/notebooklm-skill/issues
Keywords: notebooklm,mcp,claude,research,ai
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: notebooklm-py[browser]<0.8,>=0.7.3
Requires-Dist: fastmcp<4,>=2.13.1
Requires-Dist: python-dotenv<2,>=1.0
Requires-Dist: httpx<1,>=0.27
Requires-Dist: feedparser<7,>=6
Provides-Extra: dev
Requires-Dist: build<2,>=1.2; extra == "dev"
Requires-Dist: mypy<2,>=1.15; extra == "dev"
Requires-Dist: pytest<10,>=8; extra == "dev"
Requires-Dist: pytest-asyncio<2,>=0.24; extra == "dev"
Requires-Dist: pytest-cov<8,>=6; extra == "dev"
Requires-Dist: ruff<1,>=0.11; extra == "dev"
Requires-Dist: twine<7,>=6; extra == "dev"
Dynamic: license-file

# notebooklm-skill

> Source-grounded NotebookLM automation for terminals and AI agents.

[![CI](https://github.com/claude-world/notebooklm-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/claude-world/notebooklm-skill/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/notebooklm-skill)](https://pypi.org/project/notebooklm-skill/)
[![Python](https://img.shields.io/pypi/pyversions/notebooklm-skill)](https://pypi.org/project/notebooklm-skill/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

[繁體中文](README.zh-TW.md)

`notebooklm-skill` gives humans and MCP clients one consistent interface for Google
NotebookLM. It creates notebooks from URLs, raw text, and local files; asks grounded
questions with citation metadata; completes fast or deep web research; and generates
or downloads NotebookLM artifacts.

The project is built around `notebooklm-py` 0.7.x and includes:

- a JSON-first core CLI;
- five end-to-end research pipelines;
- a 13-tool FastMCP server;
- profile-aware authentication and Skill installers;
- one shared compatibility layer, so CLI, pipelines, and MCP use the same behavior.

> This is an unofficial integration with NotebookLM's web API. Google can change the
> service, availability, quotas, or artifact behavior without notice.

## Quick start

### Isolated source install

The installer creates a dedicated virtual environment, installs Chromium, links five
commands into `~/.local/bin`, and installs the Claude Code Skill using the standard
directory layout.

```bash
git clone https://github.com/claude-world/notebooklm-skill.git
cd notebooklm-skill
./install.sh

notebooklm-auth setup
notebooklm-skill list
```

Ensure `~/.local/bin` is on `PATH`.

### PyPI or uvx

```bash
# Persistent virtual environment
python3 -m venv .venv
source .venv/bin/activate
python -m pip install notebooklm-skill
python -m playwright install chromium
notebooklm-auth setup

# Or run without a persistent install
uvx --from notebooklm-skill notebooklm-auth setup
uvx --from notebooklm-skill notebooklm-skill list
```

Direct upstream login is also available:

```bash
uvx --from notebooklm-py notebooklm login
```

Sessions are profile-aware. Select one with `--profile NAME` before a CLI
subcommand, or set `NOTEBOOKLM_PROFILE`.

To use the locally installed Google Chrome instead of bundled Chromium:

```bash
notebooklm-auth setup --browser chrome --fresh
```

## Core CLI

All successful commands print structured JSON to stdout. Diagnostics go to stderr;
authentication errors return exit code 4 and argument errors return exit code 2.

```bash
# Mixed-source ingestion with truthful per-source outcomes
notebooklm-skill create \
  --title "Research" \
  --sources https://example.com/article \
  --files ./paper.pdf \
  --text-sources "Interview notes" \
  --strict

notebooklm-skill ask \
  --notebook "Research" \
  --query "Which conclusions have the strongest evidence?"

notebooklm-skill research \
  --notebook "Research" \
  --query "Recent independent evaluations" \
  --mode deep --max-sources 10

notebooklm-skill generate \
  --notebook "Research" \
  --type slides --lang zh-TW \
  --output ./output/deck.pptx --output-format pptx

notebooklm-skill list-artifacts --notebook "Research" --type slides
```

Commands resolve an exact ID, unique title, or unique title substring. Use IDs for
repeatable automation. Deletes require `--yes`; downloads refuse existing files or
symlinks unless an explicit safe overwrite is requested with `--force`.

### Artifact types

| Type | Default download | Notes |
|---|---:|---|
| `audio` | M4A | deep-dive, brief, critique, or debate |
| `video` | MP4 | explainer/brief and multiple visual styles |
| `cinematic` | MP4 | cinematic video workflow |
| `slides` | PDF | PDF or PPTX |
| `report` | Markdown | briefing, study guide, blog, or custom |
| `study-guide` | Markdown | report shortcut |
| `quiz` | JSON | JSON, Markdown, or HTML |
| `flashcards` | JSON | JSON, Markdown, or HTML |
| `mind-map` | JSON | immediate generation result |
| `infographic` | PNG | orientation, detail, and style options |
| `data-table` | CSV | structured extraction |

Use `notebooklm-skill generate --help` for the live option matrix. Long-running
generations support `--no-wait`, and later downloads can select `--artifact-id`.

## Pipelines

```bash
notebooklm-pipeline research-to-article \
  --sources https://example.com/a https://example.com/b \
  --title "Evidence review" --audience "engineers"

notebooklm-pipeline research-to-social \
  --files ./brief.pdf --platform linkedin --variants 3

notebooklm-pipeline batch-digest \
  --rss https://example.com/feed.xml --max-entries 20 --qa-count 5

notebooklm-pipeline generate-all \
  --files ./paper.pdf --types audio slides report mind-map \
  --output-dir ./output --artifact-concurrency 2
```

`trend-to-content` requires the optional `trend-pulse` command. Pipelines return
drafts and local artifacts; they do not publish to social platforms or remote CMSs.

## MCP server

The default stdio transport is suitable for Claude Code, Cursor, and other MCP
clients:

```json
{
  "mcpServers": {
    "notebooklm": {
      "command": "uvx",
      "args": ["--from", "notebooklm-skill", "notebooklm-mcp"]
    }
  }
}
```

The 13 tools cover notebook CRUD, mixed sources, grounded chat, summaries, artifact
generation/list/download, full research lifecycles, research pipelines, and trend
research. Notebook deletion requires `confirm=true`.

Optional HTTP mode is deliberately loopback-only:

```bash
notebooklm-mcp --http --host 127.0.0.1 --port 8765
```

Do not expose it directly to a network. See [SECURITY.md](SECURITY.md).

## Additional commands

| Command | Purpose |
|---|---|
| `notebooklm-auth` | Setup, verify, or clear a selected auth profile |
| `notebooklm-install-skill` | Install `SKILL.md` for a user or project, with safe backups |

```bash
notebooklm-install-skill --scope project
notebooklm-auth --profile work verify
```

## Development

```bash
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
ruff check .
ruff format --check .
mypy scripts mcp_server
pytest --cov --cov-report=term-missing
python -m build
twine check dist/*
```

More detail: [setup guide](docs/SETUP.md), [Skill instructions](SKILL.md),
[API compatibility notes](references/api_surface.md), and [changelog](CHANGELOG.md).

## License

[MIT](LICENSE)
