jpskill.com
✍️ ライティング コミュニティ

blog-notebooklm

Google NotebookLMのノートブックから、アップロードされた文書に基づいた根拠のある回答を引用付きで提供し、ノートブックライブラリの管理や認証、スマートな情報発見を支援するSkill。

📜 元の英語説明(参考)

Query Google NotebookLM notebooks for source-grounded, citation-backed answers from user-uploaded documents. Manages notebook library, handles Google authentication, and supports smart discovery. Works standalone via /blog notebooklm or internally from blog-write and blog-researcher for Tier 1 research data. Falls back gracefully when not configured. Use when user says "notebooklm", "notebook", "query notebook", "ask notebook", "notebook research", "source grounded research", "document query", "notebook library".

🇯🇵 日本人クリエイター向け解説

一言でいうと

Google NotebookLMのノートブックから、アップロードされた文書に基づいた根拠のある回答を引用付きで提供し、ノートブックライブラリの管理や認証、スマートな情報発見を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o blog-notebooklm.zip https://jpskill.com/download/10526.zip && unzip -o blog-notebooklm.zip && rm blog-notebooklm.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10526.zip -OutFile "$d\blog-notebooklm.zip"; Expand-Archive "$d\blog-notebooklm.zip" -DestinationPath $d -Force; ri "$d\blog-notebooklm.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して blog-notebooklm.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → blog-notebooklm フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Blog NotebookLM -- ドキュメントからのソースに基づいたリサーチ

Geminiからの引用に基づいた回答を得るために、Claude Codeから直接Google NotebookLMノートブックにクエリを実行します。各質問はヘッドレスブラウザセッションを開き、アップロードされたドキュメントからのみ回答を取得し、閉じます。応答はTier 1品質(ユーザー自身の主要なソース)であり、ハルシネーションのリスクはゼロです。

クイックリファレンス

コマンド 動作
/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 1回限りのGoogle認証(ブラウザが表示される)
/blog notebooklm status 認証ステータスを確認する
/blog notebooklm cleanup ブラウザの状態をクリーンアップする(ライブラリは保持される)

前提条件

  • NotebookLMにアクセスできるGoogleアカウント
  • Python 3.11+ (run.pyによって自動的に管理されるvenv)
  • Google Chrome (初回実行時にPatchright経由で自動的にインストールされる)
  • 1回限りの認証設定(表示されるブラウザでのインタラクティブなGoogleログイン)

常に run.py ラッパーを使用する

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

# 正しい例:
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ログインするための表示可能なブラウザを開きます(1回限り)
python3 scripts/run.py auth_manager.py setup

ユーザーに伝えます: "ブラウザウィンドウが開きます。Googleアカウントにログインしてください。" 認証は、ブラウザプロファイル+ Cookieインジェクション(ハイブリッドアプローチ)によって永続化されます。

その他の認証コマンド:

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 <question> の場合:

ステップ 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 "topic1,topic2,topic3"

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

# アクティブなノートブックを設定
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 または
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Blog NotebookLM -- Source-Grounded Research from Your Documents

Query Google NotebookLM notebooks directly from Claude Code for citation-backed answers from Gemini. Each question opens a headless browser session, retrieves the answer exclusively from your uploaded documents, and closes. Responses are Tier 1 quality (user's own primary sources) -- zero hallucination risk.

Quick Reference

Command What it does
/blog notebooklm ask <question> Query a notebook for source-grounded answers
/blog notebooklm discover <url> Smart-discover notebook content before cataloging
/blog notebooklm library list List all notebooks in library
/blog notebooklm library add <url> Add a notebook to library
/blog notebooklm library search <query> Search notebooks by keyword
/blog notebooklm library remove <id> Remove a notebook from library
/blog notebooklm setup One-time Google authentication (browser visible)
/blog notebooklm status Check authentication status
/blog notebooklm cleanup Clean browser state (preserves library)

Prerequisites

  • Google account with NotebookLM access
  • Python 3.11+ (venv managed automatically by run.py)
  • Google Chrome (installed automatically on first run via Patchright)
  • One-time authentication setup (interactive Google login in visible browser)

Always Use run.py Wrapper

NEVER call scripts directly. ALWAYS use 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

The run.py wrapper automatically creates .venv, installs dependencies, sets up Chrome, and executes the target script.

Auth Check (Gate Pattern)

Before any query operation, check authentication:

python3 scripts/run.py auth_manager.py status
  • If authenticated: proceed with the query
  • If not authenticated: inform user and guide to setup: "NotebookLM requires Google login. Run /blog notebooklm setup to authenticate."
  • When called internally (from blog-write or blog-researcher): return silently with no error if not authenticated. Never block the writing workflow.

Setup Workflow

For /blog notebooklm setup:

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

Tell the user: "A browser window will open. Please log in to your Google account." Authentication persists via browser profile + cookie injection (hybrid approach).

Other auth commands:

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

Query Workflow

For /blog notebooklm ask <question>:

Step 1: Check Auth

Run auth check (see gate pattern above). If not authenticated, guide to setup.

Step 2: Resolve Notebook

Determine which notebook to query:

  • If --notebook-url provided: use directly
  • If --notebook-id provided: look up in library
  • If neither: use active notebook from library
  • If no active notebook: show library and ask user to select

Step 3: Ask the Question

# 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

Step 4: Analyze and Follow Up

Every response ends with a follow-up prompt. Required behavior:

  1. STOP -- do not immediately respond to the user
  2. ANALYZE -- compare the answer to the user's original request
  3. IDENTIFY GAPS -- determine if more information is needed
  4. ASK FOLLOW-UP -- if gaps exist, immediately ask a follow-up question
  5. REPEAT -- continue until information is complete
  6. SYNTHESIZE -- combine all answers before responding to the user

Smart Discovery Workflow

For /blog notebooklm discover <url>:

When adding a notebook without knowing its content, query it first:

# 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>"

NEVER guess or use generic descriptions. Always discover or ask the user.

Library Management

# 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

Internal API (for blog-write / blog-researcher)

When invoked as a Task subagent from blog-write or blog-researcher:

Input (provided by calling skill):

  • question: Research question relevant to the blog topic
  • notebook_id or notebook_url: Which notebook to query
  • context: "internal" (signals graceful fallback mode)

Process:

  1. Check auth status -- if not authenticated, return empty result silently
  2. Query the notebook with the research question
  3. Parse and return structured response

Output (returned to calling skill):

### 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)

Graceful fallback: If auth is missing or query fails, return immediately with no error. The calling workflow continues with WebSearch-based research. Never block blog-write or blog-rewrite because NotebookLM is unavailable.

Data Storage

All data stored inside the skill directory:

  • scripts/data/library.json -- Notebook metadata and library
  • scripts/data/auth_info.json -- Authentication status
  • scripts/data/browser_state/ -- Chrome profile with cookies

Security: All data directories are gitignored. Never commit auth or browser state.

Error Handling

Error Resolution
Not authenticated Run /blog notebooklm setup
ModuleNotFoundError Always use run.py wrapper
Browser crash cleanup_manager.py --confirm --preserve-library, then re-auth
Rate limit (50/day) Wait until midnight PST or switch Google account
Notebook not found Check with notebook_manager.py list
Query timeout (120s) Retry with simpler question or --show-browser to debug
MCP unavailable (internal) Return silently -- writing workflow uses WebSearch

Limitations

  • No session persistence (each question = new browser session)
  • Rate limits on free Google accounts (50 queries/day)
  • Manual upload required (user must add docs to NotebookLM web UI)
  • Browser overhead (few seconds per question for launch + teardown)
  • Local Claude Code only (not available in web UI)

Reference Documentation

Load on-demand -- do NOT load all at startup:

  • references/commands.md -- Full CLI commands, parameters, and workflow patterns
  • references/troubleshooting.md -- Error solutions, recovery procedures, debugging