Skip to content
Automation
Command

/zotero-notes

Note format (summary/detailed/comparison)

From plugin
claude-scholar
5.1k65 skills6 agents65 commands5 hooks
Install
> /plugin marketplace add Galaxy-Dawn/claude-scholar
> /plugin install claude-scholar@claude-scholar

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/zotero-notes

Context preview

What this command does when you run it.

Note format (summary/detailed/comparison)

Command definition

zotero-notes.md
name: zotero-notes
description: Batch read papers from Zotero and create/update detailed reading notes, preferably inside the bound Obsidian project knowledge base
args:
  - name: collection
    description: Zotero collection name or keyword
    required: true
  - name: format
    description: Note format (summary/detailed/comparison)
    required: false
    default: detailed
tags: [Research, Zotero, Obsidian, Reading Notes, Paper Analysis]

/zotero-notes - Zotero to Obsidian Reading Notes

Read papers from the Zotero collection "$collection" and create or update detailed reading notes.

Default target

  • **Preferred target**: the bound Obsidian project knowledge base (`Sources/Papers/*.md`)
  • **Fallback target**: `reading-notes-{collection}.md` in the working directory if the current repo is not bound to Obsidian

Workflow

Step 0: Resolve whether the current repo is Obsidian-bound

1. If `.claude/project-memory/registry.yaml` exists for the current repo, treat the bound vault as the primary output target. 2. If the repo is a research project but not yet bound, bootstrap it first. 3. If there is no bound project context, fall back to a plain markdown output in the working directory. 4. Treat this command as an explicit agent-first ingestion pass under `$zotero-obsidian-bridge`.

Step 1: Load papers from Zotero

1. Call `mcp__zotero__zotero_get_collections` to find the matching collection. 2. Call `mcp__zotero__zotero_get_collection_items` to list the papers. 3. For each item, call:

  • `mcp__zotero__zotero_get_item_metadata`
  • `mcp__zotero__zotero_get_item_fulltext` when a PDF is available
  • `mcp__zotero__zotero_get_annotations` when helpful
  • `mcp__zotero__zotero_get_notes` when helpful

4. If MCP transport fails but a local `zotero-mcp` checkout is available, use the local Python fallback instead of stopping the pass. 5. Treat Zotero `webpage` items as weak-source inputs unless they clearly expose full paper metadata and useful full text. Abstract-only or placeholder pages must stay `To-Read` and cannot support `Knowledge` or `Writing` claims.

Step 2: Create/update the canonical paper note

If the project is Obsidian-bound, create or update one canonical note per paper under `Sources/Papers/`.

Each detailed note should contain:

  • `Claim`
  • `Research question`
  • `Method`
  • `Evidence`
  • `Strengths`
  • `Limitation`
  • `Direct relevance to repo`
  • `Relation to other papers`
  • `Knowledge links`
  • `Optional downstream hooks`
  • canonical `Evidence Record` with `Source type` and `Claim strength` when the paper has reusable claims

Recommended frontmatter fields:

  • `title`, `authors`, `year`, `venue`, `doi`, `url`, `citekey`, `zotero_key`
  • `keywords`, `concepts`, `methods`
  • `related_papers`, `linked_knowledge`, `argument_claims`, `argument_methods`, `argument_gaps`, `paper_relationships`

Prefer updating the existing note over creating a sibling note.

Step 3: Collection coverage and synthesis

After the paper-note pass:

  • update a collection inventory note when the source is a named collection
  • record item -> canonical note mapping and coverage counts such as `16 / 16`
  • verify coverage against expected Zotero keys, DOI values, or arXiv IDs when the user supplied them
  • label abstract-only and webpage-placeholder items separately in the inventory
  • synthesize durable literature knowledge under `Knowledge/`, for example:
  • `Knowledge/Literature Overview.md`
  • `Knowledge/Method Taxonomy.md`
  • `Knowledge/Research Gaps.md`

Prefer updating existing canonical knowledge notes over creating parallel summaries.

Step 4: Refresh the default literature canvas

After batch note creation or substantial note updates, refresh:

python3 "${CLAUDE_PLUGIN_ROOT}/skills/obsidian-literature-workflow/scripts/build_literature_canvas.py" --cwd "$PWD"

This rebuilds `Maps/literature.canvas` from paper-note and knowledge-note links.

Step 5: Optional synthesis outputs

  • If `format=comparison` and promoted claims pass the evidence gate, also update `Writing/comparison-matrix.md`.
  • If the paper batch already supports a thematic synthesis and promoted claims pass the evidence gate, update `Writing/related-work-draft.md`.

If not, write only a coverage warning or claim map.

Step 6: Minimal write-back

Always update:

  • today's `Daily/YYYY-MM-DD.md`
  • repo-local binding summary when project state changes

Step 7: Final response

Include:

  • collection size and coverage summary
  • created / updated note paths
  • optional `obsidian://open` links
  • optional `obsidian open ...` suggestions when CLI is available

Fallback behavior

If the repo is not bound to Obsidian:

  • create `reading-notes-{collection}.md`
  • if `format=comparison` and promoted claims pass the evidence gate, also create `comparison-matrix.md`

Notes

  • Zotero remains the source of truth for collection structure, metadata, attachments, PDF full text, and annotations.
  • Obsidian remains the durable project knowledge surface for reading notes, project relevance, and cross-note linking.
  • Default bridge targets are `Sources/Papers/` and `Knowledge/`.
  • Do not dump raw full text into Obsidian paper notes.
  • Do not create `Concepts/` or `Datasets/` trees by default.
  • Refresh `Maps/literature.canvas` by default after a substantial Zotero ingestion pass.
  • Treat `Experiments/` and `Results/` as later project workflows, not the default Zotero-import destination.
  • Do not let abstract-only or webpage-placeholder items support durable claims.
Read more
Ships withclaude-scholar

Semi-automated research assistant for academic research and software development. Supports Claude Code, Codex CLI, Kimi Code CLI, and OpenCode across ideation, coding, experiments, writing, and publication.

Get the whole plugin