notebooklm-pyは、Google NotebookLMをPythonコードやCLIから操作できる非公式OSSライブラリだ。GitHubで10.4kスター・1.4kフォーク(2026年4月時点)を獲得しており、v0.3.4(2026年3月12日リリース)が最新版となっている。MITライセンスで公開されており、Python 3.10〜3.14に対応している。
大量のPDFや技術ドキュメントを処理する際の前段階としてExtractousでマルチフォーマットのテキスト抽出を一元化する方法を組み合わせると、より効率的なパイプラインを構築できる。
この記事ではRAGに特化して解説します。RAG全般は RAGとは?仕組み・構築・ベクトルDB選定まで【2026年完全ガイド】 をご覧ください。
NotebookLM Pythonライブラリ「notebooklm-py」とは:コードからNotebookLMを自動化
notebooklm-pyはGoogleのNotebookLMが内部で使用する非公開APIにアクセスし、Webブラウザを経由せずにPythonコードやCLIからNotebookLMの全機能を制御できるライブラリだ。
非公式ライブラリに関する重要な注意事項:notebooklm-pyはGoogleの未公開・非公式APIを使用するコミュニティプロジェクトであり、Googleとは一切関係がない。使用するAPIは予告なく変更される可能性があり、動作が突然停止するリスクがある。本番環境での利用は推奨されず、プロトタイプ・研究・個人用途での活用が適している。
このライブラリが実現することは大きく4つに整理できる:
- ソース管理の自動化:URL、YouTube動画、PDF、テキスト、Markdown、Wordドキュメント、音声・動画ファイル、Google Driveなど多様な形式をプログラムから一括取り込み
- コンテンツ生成の自動化:音声概要(ポッドキャスト形式)、動画概要、スライドデッキ、クイズ、フラッシュカード、インフォグラフィック、マインドマップ、データテーブルを生成
- 成果物のダウンロード:MP3/MP4/PDF/PPTX/PNG/CSV/JSONなどをローカルに一括保存
- AIエージェント連携:Claude Code、Codexなどのエージェントへのツールとしての組み込み
RAGFlowで本格的な検索システムを構築する場合とは異なり、notebooklm-pyはGoogleのサービスをそのままバックエンドとして活用できるため、インフラ構築のコストが大幅に削減できる。
NotebookLM Pythonのインストールとセットアップ:pip一発で始められる導入手順
インストールは2ステップで完了する。
# 基本インストール
pip install notebooklm-py
# ブラウザ認証サポートを含む場合(初回ログイン時に必要)
pip install "notebooklm-py[browser]"
playwright install chromium
# 最新開発版をインストールする場合
pip install git+https://github.com/teng-lin/notebooklm-py@main
notebooklm-py[browser]はPlaywrightを使ったGoogleアカウント認証に使用する。初回ログイン後は認証情報がローカルに保存され、以降はブラウザなしで動作する仕組みになっている。開発版のmainブランチには未安定な変更が含まれる可能性があるため、安定版を使うにはPyPI経由のインストールを選ぶこと。
インストール後、まず認証を実行する:
# ブラウザが開いてGoogleアカウントでログインする
notebooklm login
# Microsoft EdgeのSSO環境(企業向け)の場合
notebooklm login --browser msedge
# 認証状態の診断
notebooklm auth check --test
認証情報はローカルストレージに保存され、PythonのNotebookLMClient.from_storage()から参照される。
CLIコマンドでNotebookLMを自動化する:シェルスクリプト・CI/CD向けの使い方
CLIはシェルスクリプトやCI/CDパイプラインへの組み込みに適している。基本的なワークフローは以下のとおりだ:
# ノートブック作成とソース追加
notebooklm create "My Research"
notebooklm use <notebook_id>
notebooklm source add "https://example.com/research-paper"
notebooklm source add "./paper.pdf"
# チャットでソースに質問
notebooklm ask "このドキュメントの主なテーマを要約してください"
# 音声概要の生成(--wait で完了まで待機)
notebooklm generate audio "engaging and concise" --wait
# 動画概要の生成(ホワイトボードスタイル)
notebooklm generate video --style whiteboard --wait
# クイズ・フラッシュカード・各種コンテンツ生成
notebooklm generate quiz --difficulty hard
notebooklm generate flashcards --quantity more
notebooklm generate slide-deck
notebooklm generate infographic --orientation portrait
notebooklm generate mind-map
notebooklm generate data-table "key concepts comparison"
# 成果物をローカルにダウンロード
notebooklm download audio ./podcast.mp3
notebooklm download video ./overview.mp4
notebooklm download quiz --format json ./quiz.json
notebooklm download quiz --format markdown ./quiz.md
notebooklm download flashcards --format html ./cards.html
notebooklm download slide-deck ./slides.pdf
notebooklm download mind-map ./mindmap.json
notebooklm download data-table ./data.csv
その他の便利なCLIコマンド:notebooklm metadata --jsonでノートブックのメタデータをJSON形式で出力できる。notebooklm language listで音声概要の対応言語(50言語以上)を確認できる。notebooklm share statusで共有設定の現在状態を確認できる。
NotebookLM Python APIで自動化パイプラインを構築する:asyncioベースの非同期処理
Python APIは非同期(asyncio)ベースで設計されており、複数ノートブックの並列処理やアプリケーション組み込みに向いている。
import asyncio
from notebooklm import NotebookLMClient
async def main():
async with await NotebookLMClient.from_storage() as client:
# ノートブック作成とURLソース追加
nb = await client.notebooks.create("Research Pipeline")
await client.sources.add_url(
nb.id,
"https://example.com/paper",
wait=True # ソースの取り込み完了まで待機
)
# チャットで質問
result = await client.chat.ask(nb.id, "このドキュメントを要約してください")
print(result.answer)
# 音声概要(ポッドキャスト形式)を生成してダウンロード
status = await client.artifacts.generate_audio(
nb.id,
instructions="engaging and concise"
)
await client.artifacts.wait_for_completion(nb.id, status.task_id)
await client.artifacts.download_audio(nb.id, "podcast.mp3")
# クイズを生成してJSON形式で保存
await client.artifacts.generate_quiz(nb.id)
await client.artifacts.download_quiz(
nb.id, "quiz.json", output_format="json"
)
# マインドマップをJSONで抽出
await client.artifacts.generate_mind_map(nb.id)
await client.artifacts.download_mind_map(nb.id, "mindmap.json")
asyncio.run(main())
LangChainでLLMパイプラインを構築する場合は独自のRAGシステムを構築するが、notebooklm-pyはGoogleのNotebookLMをそのまま使うため、LLM・ベクターDB・チャンキング設定などの管理が不要になる。用途に応じて使い分けるとよい。
Web UIでは使えないNotebookLM Python API専用機能
notebooklm-pyの最大の特徴は、Google NotebookLMのWebブラウザUIでは公開されていない機能をAPIから利用できる点だ。通常のWebブラウザ操作では不可能な操作が、CLIやPythonコードから実行できるようになる。
| 機能 | Web UI | API/CLI |
|---|---|---|
| クイズのJSON・Markdown・HTML出力 | ❌ | ✅ |
| フラッシュカードのJSON・Markdown・HTML出力 | ❌ | ✅ |
| マインドマップのJSON抽出 | ❌ | ✅ |
| データテーブルのCSVダウンロード | ❌ | ✅ |
| スライドデッキのPPTX形式ダウンロード | ❌ | ✅ |
| 個別スライドの自然言語による修正 | ❌ | ✅ |
| 成果物の一括ダウンロード | ❌ | ✅ |
| ソース全文テキストの取得 | ❌ | ✅ |
| プログラムからの共有設定変更 | ❌ | ✅ |
| チャット履歴をノートに保存 | ❌ | ✅ |
| Webリサーチエージェントの実行 | ✅ | ✅ |
| 音声概要の生成 | ✅ | ✅ |
| スライドデッキ生成 | ✅ | ✅ |
特にクイズ・フラッシュカードのJSON出力は、社内研修システムや学習管理システム(LMS)との連携に有用だ。WebブラウザではインタラクティブなUI上でしか閲覧できない内容を、構造化データとして取得してそのまま別システムに流し込める。
PPTXダウンロードはWeb UIではPDFしか提供されていないスライドデッキを、編集可能なPowerPoint形式で保存できる機能だ。自動生成したスライドを後から人手で編集するワークフローに対応できる。
AIエージェント連携:Claude CodeやCodexのツールとして組み込む
notebooklm-pyはAIエージェントのツールとして利用することを明示的に想定した設計になっている。Claude Code、Codex、その他のLLMエージェントへのインストール手順が公式にサポートされている。
# Claude CodeへのNotebookLMスキルインストール
notebooklm skill install
# ~/.claude/skills/notebooklm にインストールされる
# npxを使ったインストール(skills ecosystemから)
npx skills add teng-lin/notebooklm-py
# インストール状態の確認
notebooklm skill status
# Claude Code向けスキルテンプレートを表示
notebooklm agent show claude
# Codex向けエージェント指示を表示
notebooklm agent show codex
Claude Codeにnotebooklm-pyスキルをインストールすると、自然言語でNotebookLMのコンテンツ生成・ソース管理を指示できるようになる。「この論文3本をNotebookLMに追加してポッドキャスト形式の音声概要を生成して」といった指示をClaude Codeに与えるだけで、ライブラリが自動的に処理を実行する。
notebooklm-pyの全体ワークフロー
PDF / URL / YouTube
Google Drive / テキスト"] --> B["notebooklm-py
Python API / CLI"] B --> C["Googleの認証・API"] C --> D["Google NotebookLM
(クラウド処理)"] D --> E["コンテンツ生成エンジン"] E --> F["音声概要
MP3 / MP4"] E --> G["スライドデッキ
PDF / PPTX"] E --> H["クイズ・フラッシュカード
JSON / Markdown / HTML"] E --> I["マインドマップ
JSON"] E --> J["インフォグラフィック
PNG"] B --> K["AIエージェント
Claude Code / Codex"] K --> B
利用シーン別の活用方法:研究・コンテンツ制作・学習支援
研究者・アナリスト向け
論文やレポートの一括処理パイプラインに使える。例えば、特定テーマの論文PDFを複数まとめてソースとして追加し、音声概要を自動生成して移動中にリサーチ内容を把握するといったワークフローが構築できる。音声概要は50言語以上に対応しており、英語論文を日本語でポッドキャスト生成することも可能だ。
コンテンツ制作者向け
スライドデッキやインフォグラフィックの自動生成が有用だ。PPTX形式でのダウンロードに対応しているため、テンプレートとして生成したスライドをあとから編集するハイブリッドなワークフローが組める。動画概要はホワイトボードスタイル、インフォグラフィックは縦横の向きを指定できる。
開発者・エンジニア向け
CI/CDパイプラインへの組み込みやAPIレスポンスの構造化に使える。クイズやフラッシュカードのJSON出力は、社内研修システムや学習管理システムへの自動連携に活用できる。マインドマップのJSON出力は独自のビジュアライゼーションツールへのデータ供給に使える。
学習支援向け
テキスト教材からのクイズ・フラッシュカード自動生成が使える。Web UIのインタラクティブな表示に縛られず、任意の形式(JSON/Markdown/HTML)で出力できるため、Ankiなどのスペーシングリピーティションツールとの連携も視野に入る。
notebooklm-pyはGoogleの非公式APIを利用するため、APIの仕様変更によって予告なく動作しなくなる可能性がある。重要なワークフローや本番システムへの組み込みは推奨されない。プロトタイプや研究・個人用途での活用に留めること。
サポート環境と対応状況
| プラットフォーム | サポート状況 | 備考 |
|---|---|---|
| macOS | ✅ 動作確認済み | 主要開発環境 |
| Linux | ✅ 動作確認済み | CIで検証済み |
| Windows | ✅ 動作確認済み | CIで検証済み |
| Python 3.10 | ✅ | |
| Python 3.11 | ✅ | |
| Python 3.12 | ✅ | |
| Python 3.13 | ✅ | |
| Python 3.14 | ✅ |
NotebookLM Pythonライブラリの類似ツール比較
NotebookLM Pythonライブラリとして利用できるnotebooklm-pyの代替・類似ツールとの比較を整理する。
| 項目 | notebooklm-py | Google公式API | LangChain + RAG | Dify |
|---|---|---|---|---|
| NotebookLM連携 | 直接操作 | 未提供 | 非対応 | 非対応 |
| インストール | pip install | N/A | pip install | Docker |
| 音声生成 | ✅ | N/A | 外部API必要 | 外部API必要 |
| クイズ生成 | ✅ | N/A | プロンプト設計必要 | ワークフロー構築必要 |
| Python対応 | 3.10〜3.14 | N/A | 3.9+ | REST API |
| ライセンス | MIT | N/A | MIT | Apache 2.0 |
| 安定性 | 非公式API依存 | N/A | 安定 | 安定 |
| 学習コスト | 低 | N/A | 中〜高 | 低(GUI) |
notebooklm-pyの最大の強みは、Google NotebookLMの全機能をPythonから直接操作できる唯一のライブラリである点。ただし非公式APIに依存するため、安定性を重視する場合はLangChainでRAGシステムを構築するか、Difyでノーコードワークフローを構築するアプローチも検討に値する。
関連記事: RAGとは?仕組み・構築・ベクトルDB選定まで【2026年完全ガイド】