取り組みの背景 — API 連携で実現する研究ワークフローの自動化
NotebookLM を GUI で使うだけでも便利ですが、API を活用すれば「資料の追加 → 要約生成 → ポッドキャスト作成 → レポート出力」という一連のワークフローをプログラムで自動化できます。
前提知識・環境準備
必要なもの
自動化ワークフローを構築するためには以下の環境が必要です。
- Google Cloud プロジェクト — NotebookLM Enterprise API を利用するには Google Cloud の設定が必要です
- API キー — Google AI Studio から Gemini API キー、Google Cloud から NotebookLM Enterprise API の認証情報を取得します
- Python 3.10+ — 型ヒントと asyncio を活用するため推奨
- 必要なライブラリ — google-genai、google-cloud-notebooklm
セットアップ
# ライブラリのインストール
# pip install google-genai google-cloud-notebooklm
import os
from google import genai
from google.cloud import notebooklm_v1
# Gemini API クライアントの初期化
gemini_client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
# NotebookLM Enterprise API クライアントの初期化
notebooklm_client = notebooklm_v1.NotebookServiceClient()
print("✅ クライアント初期化完了")
# 期待する出力: ✅ クライアント初期化完了ワークフロー全体像
自動化するワークフローは以下の4ステップです。
- 収集 — Web 上の論文・記事を Gemini API で検索・選別
- 蓄積 — 選別した資料を NotebookLM Enterprise API でノートブックに追加
- 分析 — NotebookLM のノートブックに対して Gemini API で質問・要約を生成
- 出力 — ポッドキャスト(Audio Overview)の自動生成、レポートの整形
それぞれのステップを実装していきましょう。
ステップ1: Gemini API で資料を検索・選別する
まず Gemini API の Grounding with Google Search を使って、特定のテーマに関する最新の論文や記事を検索します。
from google.genai.types import Tool, GoogleSearch
# Google Search Grounding を使ってテーマに関する最新情報を収集
search_tool = Tool(google_search=GoogleSearch())
response = gemini_client.models.generate_content(
model="gemini-2.5-pro",
contents=(
"量子コンピュータの誤り訂正に関する2026年の最新論文を5件リストアップしてください。"
"各論文について、タイトル・著者・URL・概要(3行以内)を記載してください。"
),
config={
"tools": [search_tool],
"temperature": 0.2, # 正確性重視で低めに設定
},
)
print(response.text)
# 期待する出力:
# 1. "Scalable Quantum Error Correction with ..." — Authors: ...
# URL: https://arxiv.org/abs/...
# 概要: ...
# (以下5件分のリスト)Grounding を使うことで、Gemini が Web 検索結果に基づいた最新の情報を返してくれます。Temperature を低めに設定することで、正確性の高い回答が得られます。
ステップ2: NotebookLM Enterprise API でノートブックを管理する
検索で見つけた資料を NotebookLM のノートブックにプログラムで追加します。
# プロジェクト設定
PROJECT_ID = "your-gcp-project-id"
LOCATION = "us" # NotebookLM Enterprise API の利用リージョン
PARENT = f"projects/{PROJECT_ID}/locations/{LOCATION}"
# 新しいノートブックの作成
notebook = notebooklm_client.create_notebook(
parent=PARENT,
notebook=notebooklm_v1.Notebook(
display_name="量子誤り訂正 研究レビュー 2026-03",
),
)
print(f"✅ ノートブック作成: {notebook.name}")
# 期待する出力: ✅ ノートブック作成: projects/.../notebooks/xxxxx
# Web ソースの追加(ステップ1で見つけたURLを追加)
urls = [
"https://arxiv.org/abs/2026.xxxxx",
"https://arxiv.org/abs/2026.yyyyy",
]
for url in urls:
source = notebooklm_client.create_source(
parent=notebook.name,
source=notebooklm_v1.Source(
display_name=url.split("/")[-1],
web_uri=notebooklm_v1.WebUri(uri=url),
),
)
print(f" ソース追加: {source.display_name}")
# 期待する出力:
# ソース追加: 2026.xxxxx
# ソース追加: 2026.yyyyyNotebookLM Enterprise API を使えば、ノートブックの作成からソースの追加までをスクリプトで完結できます。定期的に最新の論文を追加するバッチ処理も簡単に構築できます。
ステップ3: Gemini API でノートブックの内容を分析する
ノートブックに蓄積された情報を Gemini API と連携して分析します。Gemini アプリ上では NotebookLM をソースとして直接参照できますが、API レベルでは NotebookLM のソース内容を取得し、Gemini API のコンテキストとして渡す方法が有効です。
# ノートブック内のソース一覧を取得
sources = notebooklm_client.list_sources(parent=notebook.name)
source_contents = []
for source in sources:
# 各ソースの情報を取得
source_contents.append(f"Source: {source.display_name}")
# Gemini API で横断的な分析を実行
analysis_prompt = f"""
以下のソースを分析し、研究レビューレポートを作成してください。
ソース一覧:
{chr(10).join(source_contents)}
レポートに含める項目:
1. 研究テーマの全体的な動向(300文字)
2. 主要な発見・ブレイクスルー(箇条書き5つ)
3. 今後の課題と展望(200文字)
4. 実務への応用可能性(200文字)
"""
report = gemini_client.models.generate_content(
model="gemini-2.5-pro",
contents=analysis_prompt,
config={
"temperature": 0.3,
"max_output_tokens": 4096,
},
)
print(report.text)
# 期待する出力: 構造化された研究レビューレポートステップ4: ポッドキャストとレポートを自動生成する
NotebookLM Enterprise API の Podcast API を使えば、ノートブックの内容からポッドキャスト音声を自動生成できます。
import time
# ポッドキャスト(Audio Overview)の生成リクエスト
operation = notebooklm_client.generate_podcast(
name=notebook.name,
)
# 非同期処理の完了を待機
while not operation.done():
print("⏳ ポッドキャスト生成中...")
time.sleep(10)
operation = notebooklm_client.get_operation(name=operation.name)
result = operation.result()
print(f"✅ ポッドキャスト生成完了")
print(f" 音声URL: {result.audio_uri}")
# 期待する出力:
# ✅ ポッドキャスト生成完了
# 音声URL: https://storage.googleapis.com/...すべてを統合した自動化スクリプト
上記のステップをまとめて、ワンコマンドで実行できるスクリプトにします。
import asyncio
async def research_automation_pipeline(theme: str) -> dict:
"""研究テーマを入力すると、ノートブック作成→分析→ポッドキャスト生成を自動実行する"""
print(f"🔬 テーマ: {theme}")
# Step 1: Gemini で最新論文を検索
print("📡 Step 1: 論文を検索中...")
search_results = await search_papers(theme)
# Step 2: NotebookLM にノートブック作成 & ソース追加
print("📚 Step 2: ノートブックにソースを追加中...")
notebook_id = await create_and_populate_notebook(theme, search_results)
# Step 3: Gemini で分析レポート生成
print("📊 Step 3: 分析レポートを生成中...")
report = await generate_analysis_report(notebook_id)
# Step 4: ポッドキャスト生成
print("🎙️ Step 4: ポッドキャストを生成中...")
podcast_url = await generate_podcast(notebook_id)
return {
"notebook_id": notebook_id,
"report": report,
"podcast_url": podcast_url,
}
# 実行例
# result = asyncio.run(research_automation_pipeline("量子コンピュータ 誤り訂正 2026"))よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
PermissionDenied | サービスアカウントの権限不足 | IAM で notebooklm.editor ロールを付与 |
ResourceExhausted | API クォータ超過 | レート制限を実装(1秒あたり1リクエスト推奨) |
InvalidArgument | サポートされていないソース形式 | Web URI、PDF、Google Docs のみ対応を確認 |
DeadlineExceeded | ポッドキャスト生成のタイムアウト | タイムアウト値を300秒に延長 |
まとめ — API 連携で研究の生産性を10倍にする
NotebookLM Enterprise API と Gemini API を組み合わせることで、これまで手作業で行っていた「資料収集 → 整理 → 分析 → アウトプット」のサイクル全体を自動化できます。
特に、定期的なリサーチ作業や大量の論文レビューを行う方にとって、本記事で紹介したパイプラインは大きな時間節約になるはずです。まずは小さなテーマで試して、段階的にワークフローを拡張していくことをおすすめします。
NotebookLM Enterprise API のポッドキャスト機能に特化した解説は「NotebookLM Enterprise API でポッドキャスト生成を自動化する」で詳しく紹介しています。Google AI Studio の実践的な使い方については「Google AI Studio 実践ガイド」もあわせてご覧ください。