mcpField
N
notebooklm

notebooklm

github.com/oldwinter生産性1039 回インストール1 週間前に更新
リポジトリ

notebooklm について

notebooklmは、CLIを通じてGoogle NotebookLMを操作するスキルです。ノートブックやソースの管理、質問、成果物の生成を行い、資料を回答やポッドキャスト、クイズなどにまとめる調査ワークフローに向いています。

主な機能

  1. 01ノートブックの作成と管理
  2. 02文書、URL、YouTubeの追加
  3. 03ソース参照付きの質問
  4. 04調査成果物の生成とダウンロード
  5. 05JSON出力と並列ワークフロー

活用シーン

  1. 01ノートブックに調査ソースを集約
  2. 02文書への質問と引用箇所の確認
  3. 03調査内容からポッドキャストやレポートを作成
  4. 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 を実行すると、互いのコンテキストを上書きする可能性があります。

並列ワークフローでの解決策:

  1. 常に明示的なノートブック ID を使用する(推奨): use に依存する代わりに、-n <notebook_id>(wait/download コマンドの場合)または --notebook <notebook_id>(その他のコマンドの場合)を渡します
  2. エージェントごとに分離する: エージェントごとに一意の NOTEBOOKLM_HOME を設定します:export NOTEBOOKLM_HOME=/tmp/agent-$ID
  3. 完全な UUID を使用する: 自動化では部分 ID の使用を避けます(曖昧になる可能性があります)

エージェントのセットアップ確認

ワークフローを開始する前に、CLI の準備ができていることを確認します。

  1. notebooklm status → 「Authenticated as: email@...」と表示されること
  2. notebooklm list --json → 有効な JSON が返されること(ノートブック一覧が空の場合も含む)
  3. どちらかが失敗した場合 → 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分

  1. notebooklm create "Research: [topic]" — 失敗した場合:notebooklm login で認証を確認します
  2. URL/ドキュメントごとに notebooklm source add を実行します — 失敗したものがあれば、警告を記録してほかのソースの処理を続けます
  3. ソースがすべて READY になるまで待ちます:notebooklm source list --json — 生成前に必須です
  4. notebooklm generate audio "Focus on [specific angle]" を実行します(確認を求められたら承認します) — レート制限された場合:5分待ってから1回だけ再試行します
  5. 返されたアーティファクト ID を記録します
  6. 後で notebooklm artifact list を実行し、ステータスを確認します
  7. 完了したら notebooklm download audio ./podcast.mp3 を実行します(確認を求められたら承認します)
リサーチからポッドキャストを作成(サブエージェントで自動化)

所要時間: 5~10分ですが、バックグラウンドで処理が続きます

ユーザーが完全な自動化(準備完了時に生成してダウンロード)を希望する場合:

  1. 通常どおりノートブックを作成し、ソースを追加します
  2. ソースの準備ができるまで待ちます(source wait を使うか、source list --json で確認します)
  3. notebooklm generate audio "..." --json を実行し、出力から artifact_id を解析します
  4. 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"
    )
    
  5. エージェントが待機している間も、メインの会話を続けられます

サブエージェントでのエラー処理:

  • artifact wait が終了コード2(タイムアウト)を返した場合:タイムアウトを報告し、artifact list での確認を提案します
  • ダウンロードに失敗した場合:まずアーティファクトのステータスが COMPLETED か確認します

メリット: 処理をブロックせず、ユーザーはほかの作業を進められ、完了時に自動でダウンロードできます

ドキュメント分析

所要時間: 1~2分

  1. notebooklm create "Analysis: [project]"
  2. notebooklm source add ./doc.pdf(または URL)を実行します
  3. notebooklm ask "Summarize the key points" を実行します
  4. notebooklm ask "What are the main arguments?" を実行します
  5. 必要に応じて会話を続けます
一括インポート

所要時間: ソース数によって異なります

  1. notebooklm create "Collection: [name]"
  2. 複数のソースを追加します:
    notebooklm source add "https://url1.com"
    notebooklm source add "https://url2.com"
    notebooklm source add ./local-file.pdf
    
  3. notebooklm source list を実行して確認します

ソースの上限: ノートブックあたり最大50件 対応形式: PDF、YouTube URL、ウェブ URL、Google Docs、テキストファイル

ソースの待機を伴う一括インポート(サブエージェントパターン)

所要時間: ソース数によって異なります

複数のソースを追加し、チャットや生成の前に処理完了を待つ必要がある場合:

  1. --json を指定してソースを追加し、ID を取得します:
    notebooklm source add "https://url1.com" --json  # → {"source_id": "abc..."}
    notebooklm source add "https://url2.com" --json  # → {"source_id": "def..."}
    
  2. すべてのソースを待機するバックグラウンドエージェントを起動します:
    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"
    )
    
  3. エージェントが待機している間も、メインの会話を続けられます
  4. ソースの準備ができたら、チャットまたは生成に進みます

ソースを待つ理由: チャットや生成の前に、ソースのインデックス作成が必要です。ソースごとに10~60秒かかります

ディープウェブリサーチ(サブエージェントパターン)

所要時間: 2〜5 分、バックグラウンドで実行

ディープリサーチでは、あるトピックについてウェブ上の情報源を見つけて分析します。

  1. ノートブックを作成します:notebooklm create "Research: [topic]"
  2. ディープリサーチを開始します(ノンブロッキング):
    notebooklm source add-research "topic query" --mode deep --no-wait
    
  3. バックグラウンドエージェントを起動して、完了を待ってからインポートします:
    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"
    )
    
  4. エージェントが待機している間、メインの会話を続けます
  5. エージェントが完了すると、情報源が自動的にインポートされます

代替方法(ブロッキング): 簡単なケースでは、--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)

エラー処理

失敗した場合は、ユーザーに次の選択肢を提示します:

  1. 操作を再試行する
  2. スキップして別の作業を続ける
  3. エラーを調査する

エラーの判断フロー:

エラー原因対処
認証/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_FAILEDGoogle のレート制限後で再試行します
ダウンロード失敗生成が未完了artifact list でステータスを確認します
無効なノートブック/情報源 IDID が間違っているnotebooklm list を実行して確認します
RPC プロトコルエラーGoogle が API を変更したCLI の更新が必要な場合があります

終了コード

すべてのコマンドで一貫した終了コードを使用します:

コード意味対処
0成功続行します
1エラー(見つからない、処理に失敗)標準エラー出力を確認し、「エラー処理」を参照します
2タイムアウト(wait コマンドのみ)タイムアウトを延長するか、手動でステータスを確認します

例:

  • source wait は、情報源が見つからない場合、または処理に失敗した場合に 1 を返します
  • artifact wait は、完了前にタイムアウトした場合に 2 を返します
  • generate は、レート制限に達した場合に 1 を返します(詳細は標準エラー出力を確認します)

既知の制限事項

レート制限: 音声、動画、クイズ、フラッシュカード、インフォグラフィック、スライドの生成は、Google のレート制限により失敗することがあります。これは API の制限であり、バグではありません。

安定して動作する操作: 以下は常に動作します。

  • ノートブック(一覧表示、作成、削除、名前変更)
  • ソース(追加、一覧表示、削除)
  • チャット/クエリ
  • マインドマップ、学習ガイド、FAQ、データテーブルの生成

不安定な操作: 以下はレート制限により失敗することがあります。

  • 音声(ポッドキャスト)の生成
  • 動画の生成
  • クイズとフラッシュカードの生成
  • インフォグラフィックとスライドの生成

回避策: 生成に失敗した場合:

  1. 状態を確認します:notebooklm artifact list
  2. 5~10 分後に再試行します
  3. 代替手段として NotebookLM のウェブ UI を使用します

処理時間は大きく異なります。 時間のかかる操作にはサブエージェントのパターンを使用してください。

操作標準的な時間推奨タイムアウト
ソースの処理30s - 10 min600s
リサーチ(高速)30s - 2 min180s
リサーチ(詳細)15 - 30+ min1800s
メモ即時n/a
マインドマップ即時(同期)n/a
クイズ、フラッシュカード5 - 15 min900s
レポート、データテーブル5 - 15 min900s
音声の生成10 - 20 min1200s
動画の生成15 - 45 min2700s

ポーリング間隔: 状態を手動で確認する場合は、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

コメント