mcpField
B
blog-notebooklm

blog-notebooklm

github.com/infrasity-labs生産性15094 回インストール18 週間前に更新
リポジトリ

blog-notebooklm について

blog-notebooklmは、Claude CodeからGoogle NotebookLMのノートブック内のアップロード済み文書を検索するスキルです。ノートブックのライブラリ管理や認証コマンドも備えています。

主な機能

  1. 01自然言語の質問でノートブックを検索
  2. 02登録前にノートブックの内容を調査
  3. 03ノートブックライブラリの管理
  4. 04Google認証の設定と状態確認
  5. 05出典に基づく調査回答の取得

活用シーン

  1. 01NotebookLMにアップロードした文書から根拠を探す
  2. 02ノートブック内の資料を使ってブログのテーマを調査
  3. 03ノートブックの一覧を整理して検索

MCP 対応

READMEではMCPが利用できない場合について触れていますが、このスキルをMCPサーバーまたはクライアントとは説明していません。NotebookLMにはヘッドレスブラウザーセッションでアクセスします。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill blog-notebooklm

インストール後、Claude Code で/blog-notebooklmを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
commands.md
troubleshooting.md
scripts/
__init__.py
ask_question.py
auth_manager.py
browser_session.py
browser_utils.py
cleanup_manager.py
config.py
notebook_manager.py
requirements.lock
requirements.txt
run.py
setup_environment.py

詳細

Blog NotebookLM:ドキュメントに基づくリサーチ

Claude Code から Google NotebookLM のノートブックに直接クエリを送信し、Gemini から出典に基づいた回答を取得します。質問するたびにヘッドレスブラウザーセッションを開始し、アップロードされたドキュメントのみを情報源として回答を取得した後、セッションを終了します。回答の品質は Tier 1(ユーザー自身の一次資料)であり、ハルシネーションのリスクはありません。回答は FLOW の証拠の三要件を満たします。インライン引用には返された出典タイトルを使用し、参考文献にはノートブックの URL と取得日を記載します。これは、統計を公開する前に FLOW が求める「検証済みソース」の基準を満たす、最も信頼性の高い方法です。

クイックリファレンス

コマンド機能
/blog notebooklm ask <question>ノートブックにクエリを送信し、出典に基づいた回答を取得します
/blog notebooklm discover <url>カタログに追加する前にノートブックの内容をスマート検出します
/blog notebooklm library listライブラリ内のすべてのノートブックを一覧表示します
/blog notebooklm library add <url>ノートブックをライブラリに追加します
/blog notebooklm library search <query>キーワードでノートブックを検索します
/blog notebooklm library remove <id>ノートブックをライブラリから削除します
/blog notebooklm setupGoogle 認証を一度だけ行います(ブラウザーを表示)
/blog notebooklm status認証状態を確認します
/blog notebooklm cleanupブラウザーの状態をクリーンアップします(ライブラリは保持)

前提条件

  • NotebookLM にアクセスできる Google アカウント
  • Python 3.11 以降(run.py が仮想環境を自動管理します)
  • Google Chrome(初回実行時に Patchright 経由で自動インストールされます)
  • 初回の認証設定(ブラウザーを表示した状態で Google にログインします)

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

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

# CORRECT:
python3 scripts/run.py auth_manager.py status
python3 scripts/run.py ask_question.py --question "..."

# WRONG -- fails without 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 の場合:

# Opens a visible browser for manual Google login (one-time)
python3 scripts/run.py auth_manager.py setup

ユーザーに伝えます:「ブラウザーウィンドウが開きます。Google アカウントにログインしてください。」 認証状態は、ブラウザープロファイルと Cookie の注入を組み合わせたハイブリッド方式で保持されます。

その他の認証コマンド:

python3 scripts/run.py auth_manager.py status   # Check auth
python3 scripts/run.py auth_manager.py reauth   # Re-authenticate
python3 scripts/run.py auth_manager.py clear     # Clear all auth data

クエリのワークフロー

/blog notebooklm ask <question> の場合:

手順 1:認証を確認する

認証チェックを実行します(上記のゲートパターンを参照)。未認証の場合は、セットアップを案内します。

手順 2:ノートブックを特定する

クエリを送信するノートブックを決定します。

  • --notebook-url が指定されている場合:その URL を直接使用します
  • --notebook-id が指定されている場合:ライブラリで検索します
  • どちらも指定されていない場合:ライブラリのアクティブなノートブックを使用します
  • アクティブなノートブックがない場合:ライブラリを表示し、ユーザーに選択を求めます
手順 3:質問する
# Basic query (uses active notebook)
python3 scripts/run.py ask_question.py --question "Your question here"

# Query specific notebook by ID
python3 scripts/run.py ask_question.py --question "..." --notebook-id notebook-id

# Query by URL directly
python3 scripts/run.py ask_question.py --question "..." --notebook-url "https://..."

# JSON output (for internal/programmatic use)
python3 scripts/run.py ask_question.py --question "..." --json

# Show browser for debugging
python3 scripts/run.py ask_question.py --question "..." --show-browser
手順 4:分析し、追加の質問をする

すべての回答の末尾には、追加の質問を促すプロンプトが含まれます。以下の動作が必須です。

  1. 停止:すぐにユーザーへ回答しないでください
  2. 分析:回答とユーザーの元の依頼を比較します
  3. 不足点を特定:追加情報が必要かどうかを判断します
  4. 追加の質問:不足がある場合は、すぐに追加の質問をします
  5. 繰り返し:必要な情報がそろうまで続けます
  6. 統合:ユーザーに回答する前に、すべての回答をまとめます

スマート検出のワークフロー

/blog notebooklm discover <url> の場合:

内容が分からないノートブックを追加するときは、まずクエリを送信します。

# Step 1: Discover content
python3 scripts/run.py ask_question.py \
  --question "What is the content of this notebook? What topics are covered? Provide a complete overview briefly and concisely" \
  --notebook-url "<URL>"

# Step 2: Add with discovered metadata
python3 scripts/run.py notebook_manager.py add \
  --url "<URL>" \
  --name "<Based on content>" \
  --description "<Based on content>" \
  --topics "<Extracted topics>"

**推測したり、汎用的な説明を使ったりしないでください。**必ず内容を調べるか、ユーザーに確認してください。

ライブラリの管理

# List all notebooks
python3 scripts/run.py notebook_manager.py list

# Add notebook (all params required -- discover or ask user!)
python3 scripts/run.py notebook_manager.py add \
  --url "https://notebooklm.google.com/notebook/..." \
  --name "Descriptive Name" \
  --description "What this notebook contains" \
  --topics "topic1,topic2,topic3"

# Search by keyword
python3 scripts/run.py notebook_manager.py search --query "keyword"

# Set active notebook
python3 scripts/run.py notebook_manager.py activate --id notebook-id

# Remove notebook
python3 scripts/run.py notebook_manager.py remove --id notebook-id

# Library statistics
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 Research
- **Source:** [Notebook name]
- **Question:** [What was asked]
- **Answer:** [Source-grounded response from user's documents]
- **Source Quality:** Tier 1 (user-uploaded primary documents)

適切なフォールバック: 認証情報がない場合、またはクエリに失敗した場合は、エラーを返さずに直ちに終了します。呼び出し元のワークフローは、WebSearch を使った調査を続行します。NotebookLM を利用できないことを理由に、blog-write や blog-rewrite を決して停止させないでください。

データストレージ

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

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

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

エラー処理

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

制限事項

  • セッションは保持されません(質問ごとに新しいブラウザーセッションが開始されます)
  • 無料の Google アカウントにはレート制限があります(1 日 50 件のクエリ)
  • 手動でのアップロードが必要です(ユーザーが NotebookLM のウェブ UI にドキュメントを追加する必要があります)
  • ブラウザーのオーバーヘッドがあります(起動と終了に質問ごとに数秒かかります)
  • ローカルの Claude Code でのみ利用できます(ウェブ UI では利用できません)

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

必要に応じて読み込みます。起動時にすべて読み込まないでください:

  • references/commands.md:CLI コマンド、パラメーター、ワークフローのパターンの全一覧
  • references/troubleshooting.md:エラーの解決方法、復旧手順、デバッグ

コメント