notebooklm について
notebooklmは、CLIを通じてGoogle NotebookLMを操作するスキルです。ノートブックやソースの管理、質問、成果物の生成を行い、資料を回答やポッドキャスト、クイズなどにまとめる調査ワークフローに向いています。
主な機能
- 01ノートブックの作成と管理
- 02文書、URL、YouTubeの追加
- 03ソース参照付きの質問
- 04調査成果物の生成とダウンロード
- 05JSON出力と並列ワークフロー
活用シーン
- 01ノートブックに調査ソースを集約
- 02文書への質問と引用箇所の確認
- 03調査内容からポッドキャストやレポートを作成
- 04CI/CDでNotebookLMのタスクを自動化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oldwinter/ skills --skill notebooklmインストール後、Claude Code で/notebooklmを入力して読み込まれたか確認します。
詳細
NotebookLM 自動化
Google NotebookLM を自動化します。ノートブックの作成、ソースの追加、コンテンツとのチャット、成果物(ポッドキャスト、動画、クイズ)の生成、結果のダウンロードができます。
インストール
PyPI から(推奨):
pip install notebooklm-py
GitHub から(最新のリリースタグを使用し、main ブランチは使用しないでください):
# Get the latest release tag (using curl)
LATEST_TAG=$(curl -s https://api.github.com/repos/teng-lin/notebooklm-py/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
pip install "git+https://github.com/teng-lin/notebooklm-py@${LATEST_TAG}"
⚠️ main ブランチからインストールしないでください(pip install git+https://github.com/teng-lin/notebooklm-py)。main ブランチには、未リリースまたは不安定な変更が含まれている場合があります。未リリースの機能をテストする場合を除き、必ず PyPI または特定のリリースタグを使用してください。
インストール後、Claude Code スキルをインストールします。
notebooklm skill install
前提条件
重要: コマンドを使用する前に、必ず認証してください。
notebooklm login # Opens browser for Google OAuth
notebooklm list # Verify authentication works
認証エラーでコマンドが失敗する場合は、notebooklm login を再実行してください。
CI/CD、複数アカウント、並列エージェント
自動化された環境、複数のアカウント、または並列エージェントのワークフローで使用する場合:
| 変数 | 用途 |
|---|---|
NOTEBOOKLM_HOME | カスタム設定ディレクトリ(デフォルト:~/.notebooklm) |
NOTEBOOKLM_AUTH_JSON | インライン認証 JSON。ファイルへの書き込みは不要です |
CI/CD の設定: storage_state.json の内容を含むシークレットから NOTEBOOKLM_AUTH_JSON を設定します。
複数アカウント: アカウントごとに異なる NOTEBOOKLM_HOME ディレクトリを使用します。
並列エージェント: CLI はノートブックのコンテキストを共有ファイル(~/.notebooklm/context.json)に保存します。複数のエージェントが同時に notebooklm use を実行すると、互いのコンテキストを上書きする可能性があります。
並列ワークフローでの解決策:
- 常に明示的なノートブック ID を使用する(推奨):
useに依存する代わりに、-n <notebook_id>(wait/downloadコマンドの場合)または--notebook <notebook_id>(その他のコマンドの場合)を渡します - エージェントごとに分離する: エージェントごとに一意の
NOTEBOOKLM_HOMEを設定します:export NOTEBOOKLM_HOME=/tmp/agent-$ID - 完全な UUID を使用する: 自動化では部分 ID の使用を避けます(曖昧になる可能性があります)
エージェントのセットアップ確認
ワークフローを開始する前に、CLI の準備ができていることを確認します。
notebooklm status→ 「Authenticated as: email@...」と表示されることnotebooklm list --json→ 有効な JSON が返されること(ノートブック一覧が空の場合も含む)- どちらかが失敗した場合 →
notebooklm loginを実行します
このスキルが有効になる場合
明示的な指定: ユーザーが「/notebooklm」「use notebooklm」と言うか、ツール名を挙げた場合
意図の検出: 次のようなリクエストを認識します。
- 「[topic] についてのポッドキャストを作成して」
- 「これらの URL/ドキュメントを要約して」
- 「自分の調査内容からクイズを生成して」
- 「これを音声概要にして」
- 「これらのソースを NotebookLM に追加して」
自律実行のルール
自動で実行する(確認不要):
notebooklm status- コンテキストを確認notebooklm auth check- 認証の問題を診断notebooklm list- ノートブックを一覧表示notebooklm source list- ソースを一覧表示notebooklm artifact list- 成果物を一覧表示notebooklm artifact wait- 成果物の完了を待機(サブエージェントのコンテキスト内)notebooklm source wait- ソースの処理を待機(サブエージェントのコンテキスト内)notebooklm research status- 調査の状態を確認notebooklm research wait- 調査の完了を待機(サブエージェントのコンテキスト内)notebooklm use <id>- コンテキストを設定(⚠️ 単一エージェントの場合のみ。並列ワークフローでは-nフラグを使用)notebooklm create- ノートブックを作成notebooklm ask "..."- チャットで質問notebooklm source add- ソースを追加
実行前に確認する:
notebooklm delete- 破壊的な操作notebooklm generate *- 長時間かかる場合があり、失敗する可能性がありますnotebooklm download *- ファイルシステムに書き込みますnotebooklm artifact wait- 長時間かかる操作(メインの会話内の場合)notebooklm source wait- 長時間かかる操作(メインの会話内の場合)notebooklm research wait- 長時間かかる操作(メインの会話内の場合)
クイックリファレンス
| タスク | コマンド |
|---|---|
| 認証する | notebooklm login |
| 認証の問題を診断する | notebooklm auth check |
| 認証を診断する(完全版) | notebooklm auth check --test |
| ノートブックを一覧表示する | notebooklm list |
| ノートブックを作成する | notebooklm create "Title" |
| コンテキストを設定する | notebooklm use <notebook_id> |
| コンテキストを表示する | notebooklm status |
| URL ソースを追加する | notebooklm source add "https://..." |
| ファイルを追加する | notebooklm source add ./file.pdf |
| YouTube を追加する | notebooklm source add "https://youtube.com/..." |
| ソースを一覧表示する | notebooklm source list |
| ソースの処理完了を待つ | notebooklm source wait <source_id> |
| ウェブ調査(高速) | notebooklm source add-research "query" |
| ウェブ調査(詳細) | notebooklm source add-research "query" --mode deep --no-wait |
| 調査状況を確認する | notebooklm research status |
| 調査の完了を待つ | notebooklm research wait --import-all |
| チャットする | notebooklm ask "question" |
| チャットする(新しい会話) | notebooklm ask "question" --new |
| チャットする(特定のソース) | notebooklm ask "question" -s src_id1 -s src_id2 |
| チャットする(参照付き) | notebooklm ask "question" --json |
| ソースの全文を取得する | notebooklm source fulltext <source_id> |
| ソースのガイドを取得する | notebooklm source guide <source_id> |
| ポッドキャストを生成する | notebooklm generate audio "instructions" |
| ポッドキャストを生成する(JSON) | notebooklm generate audio --json |
| ポッドキャストを生成する(特定のソース) | notebooklm generate audio -s src_id1 -s src_id2 |
| 動画を生成する | notebooklm generate video "instructions" |
| クイズを生成する | notebooklm generate quiz |
| アーティファクトの状態を確認する | notebooklm artifact list |
| 完了を待つ | notebooklm artifact wait <artifact_id> |
| 音声をダウンロードする | notebooklm download audio ./output.mp3 |
| 動画をダウンロードする | notebooklm download video ./output.mp4 |
| レポートをダウンロードする | notebooklm download report ./report.md |
| マインドマップをダウンロードする | notebooklm download mind-map ./map.json |
| データテーブルをダウンロードする | notebooklm download data-table ./data.csv |
| クイズをダウンロードする | notebooklm download quiz quiz.json |
| クイズをダウンロードする(Markdown) | notebooklm download quiz --format markdown quiz.md |
| フラッシュカードをダウンロードする | notebooklm download flashcards cards.json |
| フラッシュカードをダウンロードする(Markdown) | notebooklm download flashcards --format markdown cards.md |
| ノートブックを削除する | notebooklm notebook delete <id> |
並列実行時の安全性: 並列ワークフローでは、明示的なノートブック ID を使用してください。-n の短縮形に対応するコマンド:artifact wait、source wait、research wait/status、download *。ダウンロードコマンドは -a/--artifact にも対応しています。その他のコマンドでは --notebook を使用します。チャットでは、会話 ID の競合を避けるため、--new を使って新しい会話を開始してください。
部分 ID: UUID の先頭 6 文字以上を使用します。一意のプレフィックスである必要があります(曖昧な場合は失敗します)。use、delete、wait コマンドで使用できます。自動化では、曖昧さを避けるため完全な UUID の使用を推奨します。
コマンドの出力形式
--json を指定するコマンドは、解析用の構造化データを返します。
ノートブックの作成:
$ notebooklm create "Research" --json
{"id": "abc123de-...", "title": "Research"}
ソースの追加:
$ notebooklm source add "https://example.com" --json
{"source_id": "def456...", "title": "Example", "status": "processing"}
アーティファクトの生成:
$ notebooklm generate audio "Focus on key points" --json
{"task_id": "xyz789...", "status": "pending"}
参照付きのチャット:
$ notebooklm ask "What is X?" --json
{"answer": "X is... [1] [2]", "conversation_id": "...", "turn_number": 1, "is_follow_up": false, "references": [{"source_id": "abc123...", "citation_number": 1, "cited_text": "Relevant passage from source..."}, {"source_id": "def456...", "citation_number": 2, "cited_text": "Another passage..."}]}
ソースの全文(インデックス化されたコンテンツの取得):
$ notebooklm source fulltext <source_id> --json
{"source_id": "...", "title": "...", "char_count": 12345, "content": "Full indexed text..."}
引用の理解: 参照内の cited_text は、多くの場合、引用箇所の全文ではなく、抜粋またはセクション見出しです。start_char/end_char の位置は、生の全文ではなく、NotebookLM の内部のチャンク化されたインデックスを参照します。引用箇所を特定するには、SourceFulltext.find_citation_context() を使用してください。
fulltext = await client.sources.get_fulltext(notebook_id, ref.source_id)
matches = fulltext.find_citation_context(ref.cited_text) # Returns list[(context, position)]
if matches:
context, pos = matches[0] # First match; check len(matches) > 1 for duplicates
ID の抽出: JSON 出力から id、source_id、または task_id フィールドを解析します。
生成タイプ
すべての生成コマンドで、次のオプションを使用できます。
-s, --source:すべてのソースではなく、特定のソースを使用します--json:機械可読形式で出力します(task_idとstatusを返します)
| タイプ | コマンド | ダウンロード可能 |
|---|---|---|
| ポッドキャスト | generate audio | はい(.mp3) |
| 動画 | generate video | はい(.mp4) |
| スライド | generate slide-deck | はい(.pdf) |
| インフォグラフィック | generate infographic | はい(.png) |
| レポート | generate report | はい(.md) |
| マインドマップ | generate mind-map | はい(.json) |
| データテーブル | generate data-table | はい(.csv) |
| クイズ | generate quiz | はい(.json/.md/.html) |
| フラッシュカード | generate flashcards | はい(.json/.md/.html) |
一般的なワークフロー
リサーチからポッドキャストを作成(対話形式)
所要時間: 合計5~10分
notebooklm create "Research: [topic]"— 失敗した場合:notebooklm loginで認証を確認します- URL/ドキュメントごとに
notebooklm source addを実行します — 失敗したものがあれば、警告を記録してほかのソースの処理を続けます - ソースがすべて READY になるまで待ちます:
notebooklm source list --json— 生成前に必須です notebooklm generate audio "Focus on [specific angle]"を実行します(確認を求められたら承認します) — レート制限された場合:5分待ってから1回だけ再試行します- 返されたアーティファクト ID を記録します
- 後で
notebooklm artifact listを実行し、ステータスを確認します - 完了したら
notebooklm download audio ./podcast.mp3を実行します(確認を求められたら承認します)
リサーチからポッドキャストを作成(サブエージェントで自動化)
所要時間: 5~10分ですが、バックグラウンドで処理が続きます
ユーザーが完全な自動化(準備完了時に生成してダウンロード)を希望する場合:
- 通常どおりノートブックを作成し、ソースを追加します
- ソースの準備ができるまで待ちます(
source waitを使うか、source list --jsonで確認します) notebooklm generate audio "..." --jsonを実行し、出力からartifact_idを解析します- Task ツールを使って、バックグラウンドエージェントを起動します:
Task( prompt="Wait for artifact {artifact_id} in notebook {notebook_id} to complete, then download. Use: notebooklm artifact wait {artifact_id} -n {notebook_id} --timeout 600 Then: notebooklm download audio ./podcast.mp3 -a {artifact_id} -n {notebook_id}", subagent_type="general-purpose" ) - エージェントが待機している間も、メインの会話を続けられます
サブエージェントでのエラー処理:
artifact waitが終了コード2(タイムアウト)を返した場合:タイムアウトを報告し、artifact listでの確認を提案します- ダウンロードに失敗した場合:まずアーティファクトのステータスが COMPLETED か確認します
メリット: 処理をブロックせず、ユーザーはほかの作業を進められ、完了時に自動でダウンロードできます
ドキュメント分析
所要時間: 1~2分
notebooklm create "Analysis: [project]"notebooklm source add ./doc.pdf(または URL)を実行しますnotebooklm ask "Summarize the key points"を実行しますnotebooklm ask "What are the main arguments?"を実行します- 必要に応じて会話を続けます
一括インポート
所要時間: ソース数によって異なります
notebooklm create "Collection: [name]"- 複数のソースを追加します:
notebooklm source add "https://url1.com" notebooklm source add "https://url2.com" notebooklm source add ./local-file.pdf notebooklm source listを実行して確認します
ソースの上限: ノートブックあたり最大50件 対応形式: PDF、YouTube URL、ウェブ URL、Google Docs、テキストファイル
ソースの待機を伴う一括インポート(サブエージェントパターン)
所要時間: ソース数によって異なります
複数のソースを追加し、チャットや生成の前に処理完了を待つ必要がある場合:
--jsonを指定してソースを追加し、ID を取得します:notebooklm source add "https://url1.com" --json # → {"source_id": "abc..."} notebooklm source add "https://url2.com" --json # → {"source_id": "def..."}- すべてのソースを待機するバックグラウンドエージェントを起動します:
Task( prompt="Wait for sources {source_ids} in notebook {notebook_id} to be ready. For each: notebooklm source wait {id} -n {notebook_id} --timeout 120 Report when all ready or if any fail.", subagent_type="general-purpose" ) - エージェントが待機している間も、メインの会話を続けられます
- ソースの準備ができたら、チャットまたは生成に進みます
ソースを待つ理由: チャットや生成の前に、ソースのインデックス作成が必要です。ソースごとに10~60秒かかります
ディープウェブリサーチ(サブエージェントパターン)
所要時間: 2〜5 分、バックグラウンドで実行
ディープリサーチでは、あるトピックについてウェブ上の情報源を見つけて分析します。
- ノートブックを作成します:
notebooklm create "Research: [topic]" - ディープリサーチを開始します(ノンブロッキング):
notebooklm source add-research "topic query" --mode deep --no-wait - バックグラウンドエージェントを起動して、完了を待ってからインポートします:
Task( prompt="Wait for research in notebook {notebook_id} to complete and import sources. Use: notebooklm research wait -n {notebook_id} --import-all --timeout 300 Report how many sources were imported.", subagent_type="general-purpose" ) - エージェントが待機している間、メインの会話を続けます
- エージェントが完了すると、情報源が自動的にインポートされます
代替方法(ブロッキング): 簡単なケースでは、--no-wait を省略します:
notebooklm source add-research "topic" --mode deep --import-all
# Blocks for up to 5 minutes
モードの使い分け:
--mode fast:特定のトピックについて、概要をすばやく把握したい場合(5〜10 件の情報源、数秒)--mode deep:幅広いトピックについて、包括的な分析が必要な場合(20 件以上、2〜5 分)
リサーチの情報源:
--from web:ウェブを検索します(デフォルト)--from drive:Google Drive を検索します
出力スタイル
進捗の更新: 各ステップの状況を簡潔に伝えます
- 「ノートブック『Research: AI』を作成しています……」
- 「情報源を追加しています:https://example.com...」
- 「音声生成を開始しています……(タスク ID:abc123)」
時間のかかる処理は、開始して結果を待たずに戻ります:
- 生成を開始し、アーティファクト ID をすぐに返します
- メインの会話ではポーリングや待機を行いません。生成には 5〜45 分かかります(所要時間の表を参照)
- ユーザーが手動でステータスを確認するか、
artifact waitを使うサブエージェントを使用します
JSON 出力: 機械可読な出力には --json フラグを使用します:
notebooklm list --json
notebooklm auth check --json
notebooklm source list --json
notebooklm artifact list --json
JSON スキーマ(主なフィールド):
notebooklm list --json:
{"notebooks": [{"id": "...", "title": "...", "created_at": "..."}]}
notebooklm auth check --json:
{"checks": {"storage_exists": true, "json_valid": true, "cookies_present": true, "sid_cookie": true, "token_fetch": true}, "details": {"storage_path": "...", "auth_source": "file", "cookies_found": ["SID", "HSID", "..."], "cookie_domains": [".google.com"]}}
notebooklm source list --json:
{"sources": [{"id": "...", "title": "...", "status": "ready|processing|error"}]}
notebooklm artifact list --json:
{"artifacts": [{"id": "...", "title": "...", "type": "Audio Overview", "status": "in_progress|pending|completed|unknown"}]}
ステータス値:
- 情報源:
processing→ready(またはerror) - アーティファクト:
pendingまたはin_progress→completed(またはunknown)
エラー処理
失敗した場合は、ユーザーに次の選択肢を提示します:
- 操作を再試行する
- スキップして別の作業を続ける
- エラーを調査する
エラーの判断フロー:
| エラー | 原因 | 対処 |
|---|---|---|
| 認証/Cookie エラー | セッションの有効期限切れ | notebooklm auth check を実行し、その後 notebooklm login を実行します |
| "No notebook context" | コンテキストが設定されていない | -n <id> または --notebook <id> フラグを使用します(並列実行の場合)。単一エージェントの場合は notebooklm use <id> を使用します |
| "No result found for RPC ID" | レート制限 | 5〜10 分待ってから再試行します |
GENERATION_FAILED | Google のレート制限 | 後で再試行します |
| ダウンロード失敗 | 生成が未完了 | artifact list でステータスを確認します |
| 無効なノートブック/情報源 ID | ID が間違っている | notebooklm list を実行して確認します |
| RPC プロトコルエラー | Google が API を変更した | CLI の更新が必要な場合があります |
終了コード
すべてのコマンドで一貫した終了コードを使用します:
| コード | 意味 | 対処 |
|---|---|---|
| 0 | 成功 | 続行します |
| 1 | エラー(見つからない、処理に失敗) | 標準エラー出力を確認し、「エラー処理」を参照します |
| 2 | タイムアウト(wait コマンドのみ) | タイムアウトを延長するか、手動でステータスを確認します |
例:
source waitは、情報源が見つからない場合、または処理に失敗した場合に 1 を返しますartifact waitは、完了前にタイムアウトした場合に 2 を返しますgenerateは、レート制限に達した場合に 1 を返します(詳細は標準エラー出力を確認します)
既知の制限事項
レート制限: 音声、動画、クイズ、フラッシュカード、インフォグラフィック、スライドの生成は、Google のレート制限により失敗することがあります。これは API の制限であり、バグではありません。
安定して動作する操作: 以下は常に動作します。
- ノートブック(一覧表示、作成、削除、名前変更)
- ソース(追加、一覧表示、削除)
- チャット/クエリ
- マインドマップ、学習ガイド、FAQ、データテーブルの生成
不安定な操作: 以下はレート制限により失敗することがあります。
- 音声(ポッドキャスト)の生成
- 動画の生成
- クイズとフラッシュカードの生成
- インフォグラフィックとスライドの生成
回避策: 生成に失敗した場合:
- 状態を確認します:
notebooklm artifact list - 5~10 分後に再試行します
- 代替手段として NotebookLM のウェブ UI を使用します
処理時間は大きく異なります。 時間のかかる操作にはサブエージェントのパターンを使用してください。
| 操作 | 標準的な時間 | 推奨タイムアウト |
|---|---|---|
| ソースの処理 | 30s - 10 min | 600s |
| リサーチ(高速) | 30s - 2 min | 180s |
| リサーチ(詳細) | 15 - 30+ min | 1800s |
| メモ | 即時 | n/a |
| マインドマップ | 即時(同期) | n/a |
| クイズ、フラッシュカード | 5 - 15 min | 900s |
| レポート、データテーブル | 5 - 15 min | 900s |
| 音声の生成 | 10 - 20 min | 1200s |
| 動画の生成 | 15 - 45 min | 2700s |
ポーリング間隔: 状態を手動で確認する場合は、API 呼び出しの過剰を避けるため、15~30 秒ごとにポーリングしてください。
トラブルシューティング
notebooklm --help # Main commands
notebooklm auth check # Diagnose auth issues
notebooklm auth check --test # Full auth validation with network test
notebooklm notebook --help # Notebook management
notebooklm source --help # Source management
notebooklm research --help # Research status/wait
notebooklm generate --help # Content generation
notebooklm artifact --help # Artifact management
notebooklm download --help # Download content
認証の診断: notebooklm auth check - Cookie のドメイン、ストレージパス、検証状態を表示します
再認証: notebooklm login
バージョンの確認: notebooklm --version
スキルの更新: notebooklm skill install