Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Zotero Sync

frthjffrthjf9k downloads

Zotero API client to sync your Zotero library into your vault.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates17

This plugin leverages the Zotero Sync API to mirror your Zotero library as markdown files within Obsidian.

Zotero does not have to be installed since the data is directly obtained from Zotero's web API - all you need is an Zotero API key and internet connection when syncing. Alternatively, you can enable synchronization with your locally installed Zotero App.

Note that, by design, the synchronization is read-only and does not modify your Zotero library. Any changes to the markdown files will be lost and not synced back into Zotero. The rationale is to enable seamless Zotero integration via note linking and search while keeping all literature data within Zotero.

Alternatives

This plugin is for you if you are interested in linking to and searching through a read-only version of your Zotero library within Obsidian. Check out the following alternatives if you are interested in:

  • Taking notes directly within Zotero (with two-way sync to Obsidian): Zotero Better Notes
  • Importing citations on-demand into Obsidian: Obsidian Zotero Integration or Obsidian Citation Plugin
  • Integrating with Zotero via the ZotServer API: Zotero Bridge
  • Suggest other alternatives ...

Usage

Install the plugin and enable it in the settings. Generate a Zotero API key and fill it in the plugin settings. Alternatively, you can enable the local API in your Zotero App and enable local sync (Zotero > Settings > Advanced > Allow other applications on this computer to communicate with Zotero).

The plugin will sync and cache all Zotero data incremently to minimize API usage.

After initial synchronization (which may take a while), all Zotero notes should appear in the configured vault folder.

Mobile devices

While this plugin is only available on desktop, any generated Zotero markdown files will be synced to connected mobile clients just like any other file.

Custom templates

By default, the markdown files are generated using a standard template which can be previewed and modified in the settings, giving you full control over the file generation.

https://github.com/frthjf/obsidian-zotero-sync-client/assets/5411942/81a58562-af7a-4d74-a1c8-459dc78e116f

During template generation, you can access the item data as well as the global $collections and $items mapping which contains all collections and items. Furthermore, the library information is available in the $library variable.

Example template

let n = '';

// generate properties
n += '---\n';
n += 'Tags:\n';
n += data.tags.map(t => {
    // remove spaces around hyphens and replace other spaces with underscores
    let formattedTag = t.tag.replace(/\s*-\s*/g, '-').replace(/\s+/g, '_');
    return '- "' + formattedTag + '"';
}).join('\n');

n += '\n';
n += 'Collections:\n'
if (data.super_collections) {
  console.log(data.super_collections)
  n += data.super_collections.map(k => '- ' + $collections.get(k).name).join('\n');
}
n += '\n';
n += 'Library: ' + $library.name;
n += '\n';
n += 'Authors: \n';
if (data.creators) {
    data.creators.forEach(author => {
    n += '- "[[People/' + author.firstName + ' ' + author.lastName + ']]"\n'; 
    });
}
"\"\n";
n += '---\n';

// generate content
n += data.marker;
n += '\n\n';
n += '## Abstract ' + '\n' + data.abstractNote + '\n\n';
n += '\n\n';
if (data.children) {
    const notes = data.children.filter(
        c => c.itemType.toLowerCase() == 'note'
    )
    notes.forEach(c => {
        n += c.note_markdown + '\n\n';
    });
}
return n;

Acknowledgements

This plugin uses the excellent retorquere/zotero-sync package for the Zotero API integration.

64%
HealthGood
ReviewRisks
About
Mirror your Zotero library as Markdown files in Obsidian via the Zotero web API (API key) or a local Zotero connection. Keep a read-only, incrementally cached copy for linking and search without modifying your Zotero library. Sync generated files to mobile like any other vault content.
IntegrationsResearchPDF
Details
Current version
1.4.0
Last updated
10 months ago
Created
3 years ago
Updates
17 releases
Downloads
9k
Compatible with
Obsidian 0.15.0+
Platforms
Desktop only
License
AGPL-3.0
Report bugRequest featureReport plugin
Author
frthjffrthjf
frthjf.com
GitHubfrthjf
  1. Community
  2. Plugins
  3. Integrations
  4. Zotero Sync

Related plugins

Self-hosted LiveSync

Sync vaults securely to self-hosted servers or WEBRTC.

Zotero Integration

Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.

ZotLit

Integrate with Zotero, create literature notes, and insert citations from a Zotero library.

Local REST API & MCP Server

Unlock your automation needs by interacting with your notes over a secure REST API.

BRAT

Easily install a beta version of a plugin for testing.

Maps

Adds a map layout to bases so you can display notes as an interactive map view.

Readwise Official

Sync highlights from Readwise to your vault.

Agent Client

Chat with Claude Code, Codex, Gemini CLI, and more via the Agent Client Protocol — right from your vault.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Text Extractor

A (companion) plugin to facilitate the extraction of text from images (OCR) and PDFs.