notebooklm-skill
A skill and MCP server for Claude Code that drives Google NotebookLM: notebooks from links and files, cited answers, podcasts, slides and quizzes
- 480 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The skill keeps your Google account session in storage_state.json and acts as you in NotebookLM
- The agent creates and deletes notebooks, and sources and files go to Google
- A browser and the unofficial web API make network requests that Google may restrict
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/notebooklm-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The skill keeps your Google account session in storage_state.json and acts as you in NotebookLM
- The agent creates and deletes notebooks, and sources and files go to Google
- A browser and the unofficial web API make network requests that Google may restrict
This is third-party code. Review the repository files before installing.
What it does
The project connects an agent to Google NotebookLM through a browser session and the unofficial web API that the notebooklm-py library relies on. The agent builds a notebook from links, raw text and local files, asks questions over the sources and gets answers with citation metadata. Web research runs in fast or deep mode, and the sources it finds can go straight into the notebook. Generation covers eleven kinds of material: audio, video, cinematic video, slides, report, study guide, quiz, flashcards, mind map, infographic and data table. Slides save as PDF or PPTX, quizzes and flashcards as JSON, Markdown or HTML. Long jobs start with --no-wait, and the finished file is downloaded later by ID. Five pipelines ship with it: an article from sources, social posts, an RSS digest, batch generation of materials, and a trends variant that needs the separate trend-pulse tool. Pipelines return drafts and local files and never publish to social networks or a CMS. A FastMCP server with 13 tools exposes the same features.
Who it is for. For researchers, editors and teachers who collect material in NotebookLM and want to drive notebooks from Claude Code or Cursor instead of the web interface.
Good fit when
- You want to load a dozen links, PDFs and notes into one notebook and ask which conclusions have the strongest evidence
- A set of sources has to become an article draft with citations you can check, written for an engineering audience
- A lecture or article should turn into an M4A podcast, a PPTX deck or a set of review flashcards
- You need a weekly digest of an RSS feed with quiz questions for each entry
- Several Google accounts need separate session profiles so work and personal notebooks stay apart
Not a fit when
- You need a stable contract: the integration uses NotebookLM's web API with no guarantees, and Google may change the service, quotas or artifact behavior without notice
- You need finished text posted to a blog or newsletter: you would carry the draft onward by hand
- Company policy forbids sending sources to Google: files and links go to NotebookLM
- You need to run with no browser and no Google sign-in: authentication goes through a Chromium or Chrome session
- The base library is enough: you can sign in through notebooklm-py directly with uvx --from notebooklm-py notebooklm login
Example request
Create a notebook called "Research review" from these three links and the PDF, run deep web research for recent independent evaluations and build a PPTX deck from themLimitations
The integration is unofficial: Google promises no availability for the web API, no quotas and no generation time. The project is built around notebooklm-py 0.7.x, so a change inside NotebookLM can break commands until an update ships.
Sign-in needs a Google account and a browser: the installer sets up Chromium, and the --browser chrome flag switches to the locally installed Google Chrome. The session lives in ~/.notebooklm/profiles/<profile>/storage_state.json, a file you must not copy, print or commit. The optional HTTP mode of the server listens only on the loopback address 127.0.0.1 and must not be exposed to a network.
The trend-to-content pipeline works only when the trend-pulse tool is installed. The author does not say whether NotebookLM is reachable from Russia, so do not count on it without checking.
How to disable. Remove the server from your MCP configuration and delete the installed skill. To clear the Google sign-in, wipe the selected profile with notebooklm-auth, whose commands are covered in SETUP.md. Notebooks stay in NotebookLM itself; delete them in the web interface or with a command that carries the --yes flag.
FAQ
How do I connect NotebookLM to Claude Code?
Clone the repository and run ./install.sh: the script creates a dedicated virtual environment, installs Chromium, links five commands into ~/.local/bin and installs the Claude Code skill. Then run notebooklm-auth setup and sign in to Google. Without cloning, pip install notebooklm-skill or a uvx run works.
Which materials can NotebookLM create through this skill?
Eleven types: audio, video, cinematic video, slides, report, study guide, quiz, flashcards, mind map, infographic and data table. Slides download as PDF or PPTX, quizzes and flashcards as JSON, Markdown or HTML, audio as M4A and video as MP4.
How does notebooklm-skill differ from notebooklm-py?
notebooklm-py is the foundation: a Python library and CLI for NotebookLM. notebooklm-skill builds on its 0.7.x line and adds a JSON-first CLI, five pipelines, an MCP server with 13 tools, authentication profiles and skill installers.
Can the MCP server run as an HTTP service?
Yes, with notebooklm-mcp --http --host 127.0.0.1 --port 8765, but the mode is meant for the loopback address only. The author forbids exposing it to a network; details are in SECURITY.md. The default mode runs over stdio.
Will a pipeline publish the article by itself?
No. The research-to-article and research-to-social pipelines return drafts and local files, and publishing to social networks or a remote CMS is not built in.
Discussion
No questions or reviews yet.
Related
SkillsUnofficial Python API, CLI and agent skill for Google Gemini Notebook (NotebookLM): sources, cited answers, and generation of podcasts, videos and reports
Programmatic access to Gemini Notebook (formerly NotebookLM) via CLI and MCP: notebooks, sources, podcasts, video, reports and research from an agent
The author's personal skills for reading papers and books, dissecting concepts, writing and PNG cards; instructions in Chinese, installed via skills CLI
Awesome NotebookLM Prompts
awesome-notebooklm-prompts
A set of the strongest prompts for slides in Google NotebookLM from notes, blogs, WeChat, RED and X, with a source on each example
ai-labs-claude-skills installs 24 Claude skills through one npm package: SEO reports, Docker, CI/CD, CSV analysis, resumes, pitch decks and more
Slack MCP and Skills Plugin: the official Slack plugin
Slack MCP and Skills Plugin
Slack skills and MCP in one plugin: Claude Code, Cursor and Codex get search, messaging, Block Kit and nine skills for building Slack apps
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Repository stars | Main difference |
|---|---|---|---|
| notebooklm-skill (this entry) | no | 480 | |
| NotebookLM skill for Claude Code | no | 7,782 | a skill that questions your existing notebooks and answers only from the documents loaded into them |
| notebooklm-py | no | 19,842 | the base library and CLI this project builds on, with no pipelines or MCP server |
| Learn from materials | no | 1,050 | a skill that turns books |
README in short
The root document covers installation, the core commands, a table of material types with download formats, the pipelines and the MCP server. Separate guides cover setup, output formats and pipeline recipes. Every successful command prints JSON to stdout, with diagnostics on stderr. An authentication error returns exit code 4 and an argument error code 2. Deletion requires the --yes flag, and downloads do not overwrite existing files without --force.
README badge
Original SKILL.md
--- name: notebooklm-research description: > Automate source-grounded research with Google NotebookLM. Create notebooks from URLs, text, or local files; ask cited questions; run fast or deep web research; create articles and social drafts; and generate or download audio, video, cinematic video, slides, reports, study guides, quizzes, flashcards, mind maps, infographics, and data tables. Use when a user asks for NotebookLM, cited source analysis, research-to-content workflows, podcasts, slides, study material, artifact generation, RSS digests, or trend research. --- # NotebookLM Research Use the installed commands or the 13 MCP tools to turn user-provided sources into grounded answers and NotebookLM artifacts. Commands emit JSON on stdout and progress or diagnostics on stderr, so preserve stdout when another tool will consume it. This integration uses NotebookLM's browser session and unofficial web API through `notebooklm-py`. Do not promise that Google-side availability, quotas, or generation time are stable. ## Authentication Prefer the profile-aware helper: ```bash notebooklm-auth setup notebooklm-auth verify ``` Use `notebooklm-auth setup --browser chrome --fresh` when the user explicitly wants the locally installed Google Chrome instead of bundled Chromium. For a zero-install login: ```bash uvx --from notebooklm-py notebooklm login ``` Profiles are supported through `--profile NAME` before the subcommand or through `NOTEBOOKLM_PROFILE`. Current sessions are normally stored below `~/.notebooklm/profiles/<profile>/storage_state.json`; never read, print, copy, or commit that file. If authentication expires, run setup again. ## Core CLI Create a notebook from mixed sources: ```bash notebooklm-skill create \ --title "AI safety evidence" \ --sources https://example.com/article https://youtu.be/example \ --files ./paper.pdf \ --text-sources "A user-supplied observation" \ --strict ```