blog-notebooklm について
blog-notebooklmは、Claude CodeからGoogle NotebookLMのノートブック内のアップロード済み文書を検索するスキルです。ノートブックのライブラリ管理や認証コマンドも備えています。
主な機能
- 01自然言語の質問でノートブックを検索
- 02登録前にノートブックの内容を調査
- 03ノートブックライブラリの管理
- 04Google認証の設定と状態確認
- 05出典に基づく調査回答の取得
活用シーン
- 01NotebookLMにアップロードした文書から根拠を探す
- 02ノートブック内の資料を使ってブログのテーマを調査
- 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.mdtroubleshooting.mdscripts/__init__.pyask_question.pyauth_manager.pybrowser_session.pybrowser_utils.pycleanup_manager.pyconfig.pynotebook_manager.pyrequirements.lockrequirements.txtrun.pysetup_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 setup | Google 認証を一度だけ行います(ブラウザーを表示) |
/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:分析し、追加の質問をする
すべての回答の末尾には、追加の質問を促すプロンプトが含まれます。以下の動作が必須です。
- 停止:すぐにユーザーへ回答しないでください
- 分析:回答とユーザーの元の依頼を比較します
- 不足点を特定:追加情報が必要かどうかを判断します
- 追加の質問:不足がある場合は、すぐに追加の質問をします
- 繰り返し:必要な情報がそろうまで続けます
- 統合:ユーザーに回答する前に、すべての回答をまとめます
スマート検出のワークフロー
/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」(フォールバックを適切に行うモードを示します)
処理:
- 認証状態を確認します:認証されていない場合は、何も返さずに終了します
- 調査の質問でノートブックにクエリを実行します
- 構造化された応答を解析して返します
出力(呼び出し元のスキルに返される):
### 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:エラーの解決方法、復旧手順、デバッグ