Communityコーディング&開発github.com

blog-notebooklm

Claude CodeからGoogle NotebookLMノートブックに直接問い合わせ、アップロードされたドキュメントに基づいた引用付き回答をGeminiから取得します。

blog-notebooklm とは?

このスキルは、Claude CodeなどのAIエージェントがGoogle NotebookLMのノートブックを直接クエリし、ユーザー自身がアップロードした一次資料に基づく、幻覚リスクゼロの高品質な回答を得るためのツールです。主な機能として、ノートブックへの質問(ask)、URLからのコンテンツ自動発見(discover)、ライブラリ管理(追加・検索・削除・一覧表示)を提供します。ヘッドレスブラウザ経由でNotebookLMにアクセスし、毎回新しいセッションで動作するため、セッションの永続性はありません。認証には一度だけGoogleログインが必要で、ハイブリッドな方法(ブラウザプロファイル+クッキー注入)で状態が維持されます。内部APIとして、blog-writeやblog-researcherからのサブエージェント呼び出しに対応し、認証がない場合やエラー時には静かにフォールバックするため、メインの執筆ワークフローをブロックしません。

対応✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-notebooklm

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Blog NotebookLM -- 文書に基づいた引用付きリサーチ

Claude Codeから直接Google NotebookLMノートブックに問い合わせ、アップロードされた文書のみに基づく引用付き回答をGeminiから取得します。各質問ごとにヘッドレスブラウザセッションを開き、回答を取得して閉じます。回答はTier 1品質(ユーザー自身の一次資料)であり、幻覚リスクはゼロです。

クイックリファレンス

コマンド説明
/blog notebooklm ask <質問>ノートブックに問い合わせ、文書に基づいた回答を取得
/blog notebooklm discover <URL>ノートブックの内容をスマートに発見してからカタログ化
/blog notebooklm library listライブラリ内の全ノートブックを一覧表示
/blog notebooklm library add <URL>ノートブックをライブラリに追加
/blog notebooklm library search <クエリ>キーワードでノートブックを検索
/blog notebooklm library remove <ID>ノートブックをライブラリから削除
/blog notebooklm setup一度だけのGoogle認証(ブラウザ表示)
/blog notebooklm status認証状態を確認
/blog notebooklm cleanupブラウザ状態をクリーンアップ(ライブラリは維持)

前提条件

  • Googleアカウント(NotebookLMアクセス権限あり)
  • Python 3.11以上(run.pyが自動的にvenvを管理)
  • Google Chrome(初回実行時にPatchright経由で自動インストール)
  • 一度だけの認証設定(インタラクティブなGoogleログインを表示ブラウザで実行)

必ずrun.pyラッパーを使用すること

スクリプトを直接呼び出さないでください。常に python3 scripts/run.py [スクリプト] を使用してください:

# 正しい:
python3 scripts/run.py auth_manager.py status
python3 scripts/run.py ask_question.py --question "..."

# 間違い -- venvなしでは失敗:
python3 scripts/auth_manager.py status

run.pyラッパーは、.venvの自動作成、依存関係のインストール、Chromeのセットアップ、およびターゲットスクリプトの実行を行います。

認証確認(ゲートパターン)

クエリ操作の前に、認証状態を確認してください:

python3 scripts/run.py auth_manager.py status
  • 認証済みの場合: クエリを実行
  • 未認証の場合: ユーザーに通知し、セットアップを案内: "NotebookLMにはGoogleログインが必要です。/blog notebooklm setupを実行して認証してください。"
  • 内部から呼び出された場合(blog-writeやblog-researcherからの場合): 認証されていなくても、静かに何も返さずエラーも出さない。執筆ワークフローをブロックしないこと。

セットアップワークフロー

/blog notebooklm setup の場合:

# 手動でGoogleログインするための表示ブラウザを開く(一度だけ)
python3 scripts/run.py auth_manager.py setup

ユーザーに伝える: 「ブラウザウィンドウが開きます。Googleアカウントにログインしてください。」 認証はブラウザプロファイルとクッキー注入のハイブリッドアプローチで維持されます。

その他の認証コマンド:

python3 scripts/run.py auth_manager.py status   # 認証確認
python3 scripts/run.py auth_manager.py reauth   # 再認証
python3 scripts/run.py auth_manager.py clear     # 全認証データを消去

クエリワークフロー

/blog notebooklm ask <質問> の場合:

ステップ1: 認証確認

認証確認を実行(上記のゲートパターンを参照)。認証されていない場合はセットアップに案内。

ステップ2: ノートブックの特定

どのノートブックに問い合わせるかを決定:

  • --notebook-url が指定されている場合: 直接使用
  • --notebook-id が指定されている場合: ライブラリから検索
  • どちらもない場合: ライブラリのアクティブノートブックを使用
  • アクティブノートブックがない場合: ライブラリを表示し、ユーザーに選択を促す

ステップ3: 質問

# 基本クエリ(アクティブノートブックを使用)
python3 scripts/run.py ask_question.py --question "質問をここに"

# 特定のノートブックIDを指定してクエリ
python3 scripts/run.py ask_question.py --question "..." --notebook-id notebook-id

# URLを直接指定してクエリ
python3 scripts/run.py ask_question.py --question "..." --notebook-url "https://..."

# JSON出力(内部・プログラムからの使用向け)
python3 scripts/run.py ask_question.py --question "..." --json

# デバッグ用にブラウザを表示
python3 scripts/run.py ask_question.py --question "..." --show-browser

ステップ4: 分析とフォローアップ

すべての応答はフォローアッププロンプトで終わります。必須の動作:

  1. 停止 -- すぐにユーザーに応答しない
  2. 分析 -- 回答をユーザーの元のリクエストと比較する
  3. ギャップの特定 -- さらに情報が必要か判断する
  4. フォローアップ質問 -- ギャップがあれば、すぐにフォローアップ質問をする
  5. 繰り返し -- 情報が完全になるまで続ける
  6. 統合 -- ユーザーに応答する前にすべての回答をまとめる

スマートディスカバリーワークフロー

/blog notebooklm discover <URL> の場合:

内容が不明なノートブックを追加する際は、まずクエリを実行:

# ステップ1: 内容を発見
python3 scripts/run.py ask_question.py \
  --question "このノートブックの内容は何ですか?どのようなトピックが含まれていますか?簡潔に完全な概要を提供してください" \
  --notebook-url "<URL>"

# ステップ2: 発見したメタデータとともに追加
python3 scripts/run.py notebook_manager.py add \
  --url "<URL>" \
  --name "<内容に基づく名前>" \
  --description "<内容に基づく説明>" \
  --topics "<抽出したトピック>"

絶対に推測したり汎用的な説明を使用しないでください。 常に発見するかユーザーに確認してください。

ライブラリ管理

# 全ノートブックを一覧表示
python3 scripts/run.py notebook_manager.py list

# ノートブックを追加(すべてのパラメータ必須 -- 発見するかユーザーに確認!)
python3 scripts/run.py notebook_manager.py add \
  --url "https://notebooklm.google.com/notebook/..." \
  --name "説明的な名前" \
  --description "このノートブックに含まれる内容" \
  --topics "トピック1,トピック2,トピック3"

# キーワードで検索
python3 scripts/run.py notebook_manager.py search --query "キーワード"

# アクティブノートブックを設定
python3 scripts/run.py notebook_manager.py activate --id notebook-id

# ノートブックを削除
python3 scripts/run.py notebook_manager.py remove --id notebook-id

# ライブラリ統計情報
python3 scripts/run.py notebook_manager.py stats

内部API(blog-write / blog-researcher向け)

blog-writeやblog-researcherからTaskサブエージェントとして呼び出された場合:

入力(呼び出し元スキルから提供):

  • question: ブログトピックに関連するリサーチ質問
  • notebook_id または notebook_url: クエリ対象のノートブック
  • context: "internal"(優雅なフォールバックモードを示す)

処理:

  1. 認証状態を確認 -- 認証されていない場合は、静かに空の結果を返す
  2. リサーチ質問でノートブックをクエリ
  3. 構造化された応答を解析して返す

出力(呼び出し元スキルに返される):

### NotebookLMリサーチ
- **ソース:** [ノートブック名]
- **質問:** [質問内容]
- **回答:** [ユーザーの文書に基づく引用付き応答]
- **ソース品質:** Tier 1(ユーザーアップロードの一次文書)

優雅なフォールバック: 認証がないかクエリが失敗した場合、すぐにエラーなしで戻ります。呼び出し元のワークフローはWebSearchベースのリサーチを続行します。NotebookLMが利用不可でも、blog-writeやblog-rewriteをブロックしないでください。

データ保存

すべてのデータはスキルディレクトリ内に保存:

  • scripts/data/library.json -- ノートブックのメタデータとライブラリ
  • scripts/data/auth_info.json -- 認証状態
  • scripts/data/browser_state/ -- クッキーを含むChromeプロファイル

セキュリティ: すべてのデータディレクトリはgitignoreされています。認証情報やブラウザ状態をコミットしないでください。

エラーハンドリング

エラー解決方法
認証されていない/blog notebooklm setup を実行
ModuleNotFoundError常に run.py ラッパーを使用
ブラウザクラッシュcleanup_manager.py --confirm --preserve-library を実行後、再認証
レート制限(1日50回)午前0時(PST)まで待つか、Googleアカウントを切り替える
ノートブックが見つからないnotebook_manager.py list で確認
クエリタイムアウト(120秒)より単純な質問で再試行するか、--show-browser でデバッグ
MCP利用不可(内部呼び出し)静かに戻る -- 執筆ワークフローはWebSearchを使用

制限事項

  • セッションの永続性なし(各質問 = 新しいブラウザセッション)
  • 無料Googleアカウントのレート制限(1日50クエリ)
  • 手動アップロードが必要(ユーザーはNotebookLM Web UIに文書を追加する必要あり)
  • ブラウザのオーバーヘッド(起動と終了に毎回数秒)
  • ローカルClaude Codeのみ(Web UIでは利用不可)

リファレンスドキュメント

オンデマンドで読み込む -- 起動時にすべてをロードしない:

  • references/commands.md -- 完全なCLIコマンド、パラメータ、ワークフローパターン
  • references/troubleshooting.md -- エラー解決、復旧手順、デバッグ

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

関連スキル