Communitygithub.com

Zotero-to-Notebooklm

Zotero コレクションのローカル添付ファイルを NotebookLM にインポートする Codex スキル。自動ログイン、タイトルフィルタリング、対応フォーマット検証、50 ファイル単位のシャーディングに対応。

Zotero-to-Notebooklm とは?

このスキルは、Zotero のローカル添付ファイル(主に PDF)を NotebookLM のノートブックに自動インポートするためのツールです。ユーザーは `uv run` でスクリプトを実行するだけで、Zotero SQLite データベースからコレクションを名前で解決し、添付ファイルを実ファイルに解決し、NotebookLM がサポートするローカルアップロード形式(PDF, DOCX, TXT, MD, CSV, PPTX, EPUB など)か検証した上で、最大 50 ファイルずつノートブックにアップロードします。スクリプトは `nlm login --check` で認証状態を自動チェックし、セッションがない場合や期限切れの場合は自動でログインを実行します。また、同一タイトルのノートブックが一意の場合に限り既存ノートブックを再利用し、既にアップロード済みのファイルはスキップするため、再実行しても安全です。このスキルは Codex 環境向けに設計されていますが、`nlm` CLI と Zotero がローカルにインストールされていれば、任意の開発環境で使用できます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add HaoboYang0327/Zotero-to-Notebooklm

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

NotebookLM Zotero Import

Zotero コレクションのローカル添付ファイルを NotebookLM にインポートします。決定論的な命名、再実行安全性、デフォルトの PDF フィルタリングに対応しています。

ワークフローをインラインで再実装するのではなく、付属のスクリプトを使用してください。

前提条件

インポートを実行する前に、以下を確認してください。

  • nlm がインストールされ、PATH が通っていること
  • Zotero データがローカルに存在すること(通常は ~/Zotero/zotero.sqlite と ~/Zotero/storage)

通常の使用では、認証を手動で事前確認しないでください。スクリプトは常に最初に nlm login --check を実行し、セッションがない場合や期限切れの場合は自動的に nlm login を起動します。

ワークフロー

  1. uv run でインポーターを実行します。
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --notebook-base "LOB_TTT"
  1. スクリプトに完全なワークフローを任せます。
  • nlm のログイン状態を確認し、必要に応じて nlm login を実行
  • Zotero SQLite を読み取り専用のイミュータブルモードで開く
  • コレクションを完全一致で解決
  • 子コレクションを再帰的に走査
  • オプションで --title-match により正規化されたタイトルの部分文字列で Zotero アイテムを絞り込み
  • 各添付ファイルを Zotero ストレージ内の実ファイルに解決
  • NotebookLM がサポートするローカルアップロード拡張子のみを保持(デフォルトは pdf)
  • アップロードを最大 50 ファイルのノートブックシャードに分割
  • 同一名のノートブックが一意な場合、既存のものを再利用
  • 正規化されたタイトルとファイル名に基づき、対象ノートブックに既に存在するファイルをスキップ
  • nlm source add --file ... --wait で不足ファイルをアップロード

スクリプトは、NotebookLM の公式ローカルアップロードリストにない拡張子を検出すると即座にエラー終了します。2026年4月21日時点でのリストは以下の通りです。

  • ドキュメント: pdf, docx, txt, md, csv, pptx, epub
  • 画像: avif, bmp, gif, heic, heif, ico, jp2, jpe, jpeg, jpg, png, tif, tiff, webp
  • 音声・メディア: 3g2, 3gp, aac, aif, aifc, aiff, amr, au, avi, cda, m4a, mid, mp3, mp4, mpeg, ogg, opus, ra, ram, snd, wav, wma

mlx など、この範囲外の拡張子はアップロード前にローカルで拒否されます。

  1. 最終サマリーを確認してください。
  • 操作したノートブック
  • アップロードしたファイル
  • 既に存在するためスキップしたファイル
  • エラー(ある場合)

命名ルール

  • コレクションが 1 つのノートブックに収まる場合は、ベース名をそのまま使用します。
  • コレクションに複数のノートブックが必要な場合は、_01, _02, ... のサフィックスを追加します。
  • ターゲットタイトルに一致するノートブックがちょうど 1 つだけの場合に限り、既存のノートブックを再利用します。
  • Zotero のコレクション名が曖昧な場合や、複数のノートブックが同じタイトルを共有している場合は、推測せずにエラー終了します。

一般的なコマンド

コレクション内のデフォルトの PDF マッチをすべてインポート:

uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --notebook-base "LOB_TTT"

コレクションから特定の論文の PDF をインポート:

uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --title-match "LiT: limit order book transformer" \
  --notebook-base "LOB_TTT_single"

特定のアイテムの PDF と別の対応フォーマットをインポート:

uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "SGN.300" \
  --title-match "Homework_4" \
  --extension pdf \
  --extension md \
  --notebook-base "SGN300_hw4"

mlx など未対応のローカルフォーマットを指定した場合、スクリプトは明確な検証エラーで即座に停止します。

デフォルト以外の NotebookLM プロファイルを使用:

uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --title-match "DeepLOB" \
  --notebook-base "LOB_TTT_deeplob" \
  --profile default

ローカルの Zotero パスを上書き:

uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --notebook-base "LOB_TTT" \
  --zotero-db ~/Zotero/zotero.sqlite \
  --zotero-storage ~/Zotero/storage

リソース

  • scripts/import_zotero_to_notebooklm.py: エンドツーエンドのインポーター
  • references/workflow.md: 動作の詳細、マッチングルール、エラー条件

関連スキル