CommunityVídeo e Animaçãogithub.com

HaoboYang0327/Zotero-to-Notebooklm

Codex skill for importing local Zotero attachments into NotebookLM with auto-login, title filtering, supported-format validation, and 50-source sharding.

Funciona com~Claude CodeCodex CLI~Cursor
npx skills add HaoboYang0327/Zotero-to-Notebooklm

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentação

NotebookLM Zotero Import

Import a Zotero collection's local attachments into NotebookLM with deterministic naming, rerun-safe behavior, and default PDF filtering.

Use the bundled script instead of reimplementing the workflow in-line.

Prerequisites

Verify these before running the import:

  • nlm is installed and on PATH
  • Zotero data exists locally, usually at ~/Zotero/zotero.sqlite and ~/Zotero/storage

Do not manually pre-check auth in normal use. The script always runs nlm login --check first and launches nlm login automatically when the session is missing or expired.

Workflow

  1. Run the importer with uv run.
uv run ~/.codex/skills/notebooklm-zotero-import/scripts/import_zotero_to_notebooklm.py \
  --collection "Limit Order Book" \
  --notebook-base "LOB_TTT"
  1. Let the script do the full workflow:
  • check nlm login state and run nlm login when required
  • open Zotero SQLite in read-only immutable mode
  • resolve the collection by exact name
  • walk descendant collections
  • optionally narrow Zotero items by normalized title substring with --title-match
  • resolve each attachment to a real file under Zotero storage
  • keep only requested NotebookLM-supported local upload extensions; default pdf
  • split uploads into notebook shards of at most 50 files
  • reuse an existing same-name notebook when it is unique
  • skip files already present in the target notebook based on normalized titles and filenames
  • upload missing files through nlm source add --file ... --wait

The script fails fast on extensions that are not in NotebookLM's official local-upload list. As of April 21, 2026, that list includes:

  • documents: pdf, docx, txt, md, csv, pptx, epub
  • images: avif, bmp, gif, heic, heif, ico, jp2, jpe, jpeg, jpg, png, tif, tiff, webp
  • audio and media: 3g2, 3gp, aac, aif, aifc, aiff, amr, au, avi, cda, m4a, mid, mp3, mp4, mpeg, ogg, opus, ra, ram, snd, wav, wma

Extensions outside that set, such as mlx, are rejected locally before upload.

  1. Read the final summary for:
  • notebooks touched
  • files uploaded
  • files skipped as already present
  • failures, if any

Naming Rules

  • Use the base name unchanged when the collection fits in one notebook.
  • Use _01, _02, ... suffixes when the collection needs multiple notebooks.
  • Reuse an existing notebook only when exactly one notebook has the target title.
  • Fail instead of guessing when the Zotero collection name is ambiguous or multiple notebooks share the same title.

Common Commands

Import all default-PDF matches in a collection:

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

Import a named paper's PDF from a collection:

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"

Import a named item's PDF and another supported attachment type:

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"

If you request an unsupported local format such as mlx, the script stops immediately with a clear validation error.

Use a non-default NotebookLM profile:

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

Override local Zotero paths:

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

Resources

  • scripts/import_zotero_to_notebooklm.py: end-to-end importer
  • references/workflow.md: behavior details, matching rules, and failure conditions

Habilidades Relacionadas

jakubkrehel/make-interfaces-feel-better

Design engineering principles for making interfaces feel polished. Use when building UI components, reviewing frontend code, implementing animations, hover states, shadows, borders, typography, micro-interactions, enter/exit animations, or any visual detail work. Triggers on UI polish, design details, "make it feel better", "feels off", stagger animations, border radius, optical alignment, font smoothing, tabular numbers, image outlines, box shadows.

community

ur-grue/autopunk-media-skills

394 free, quality-tested Claude skills for TV producers, journalists, podcasters, YouTubers & media professionals.

community

marswaveai/explainer

Create explainer videos with narration and AI-generated visuals. Triggers on: "解说视频", "explainer video", "explain this as a video", "tutorial video", "introduce X (video)", "解释一下XX(视频形式)".

community

serpdownloaders/erome-downloader

Download Erome albums and videos with privacy protection and bulk support

community

serpdownloaders/xhamster-video-downloader

Download xHamster videos including VR and premium content

community

freshtechbro/motion-framer

Modern animation library for React and JavaScript. Create smooth, production-ready animations with motion components, variants, gestures (hover/tap/drag), layout animations, AnimatePresence exit animations, spring physics, and scroll-based effects. Use when building interactive UI components, micro-interactions, page transitions, or complex animation sequences.

community