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の全体ワークフロー

flowchart TD A["入力ソース
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年完全ガイド】

参照ソース