◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/高度な活用
⬡ 高度な活用/2026-03-24上級

NotebookLM API × Gemini API — 研究・分析ワークフローをPythonで自動化する

NotebookLM Enterprise API と Gemini API を Python で連携させ、論文収集・要約・ポッドキャスト生成・レポート作成までを自動化するワークフローを構築します。実際に動作するコード例付き。

NotebookLM5Gemini API248Python51自動化28ワークフロー5上級

取り組みの背景 — 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ステップです。

  1. 収集 — Web 上の論文・記事を Gemini API で検索・選別
  2. 蓄積 — 選別した資料を NotebookLM Enterprise API でノートブックに追加
  3. 分析 — NotebookLM のノートブックに対して Gemini API で質問・要約を生成
  4. 出力 — ポッドキャスト(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.yyyyy

NotebookLM 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 ロールを付与
ResourceExhaustedAPI クォータ超過レート制限を実装(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 実践ガイド」もあわせてご覧ください。

シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⬡ 高度な活用2026-09-24
Gemini に「合っていますか」と聞くのをやめ、答えを伏せたまま分類し直してもらう設計に変えました
自分で付けたラベルの確認を Gemini に頼むと、頷く答えが返りがちです。確認型・反論指示型・伏せ型の三つを比べて伏せ型を選んだ理由と、答えが漏れる経路の塞ぎ方、食い違いだけを人が見る振り分けのコードまで書き残します。
⬡ 高度な活用2026-09-17
Gemini の色判定が同じ壁紙で入れ替わったのは、モデルではなく渡し方の側でした
同じ壁紙を渡しているのに色名の判定が入れ替わる原因を、書き出し5通りで数えた記録です。色空間を先に決め、閉じた語彙と機械側の基準値で検算するところまでまとめました。
⬡ 高度な活用2026-09-14
BLOCK_NONE を入れても結果が変わらないとき — Gemini のブロックを閾値で動かせるかどうかの見分け方
安全フィルタで止まったとき、閾値を緩めて直る場合と、何をしても直らない場合があります。返ってきたレスポンスのどこを見て、その境目を先に判定するかをまとめました。