Obsidian-Zotero integration plugin that provides APIs for other plugins to connect to Zotero.
Enable Local API feature in settings: Settings > Advanced > Allow other applications on this computer to communicate with Zotero
Install Zotero addon ZotServer
The plugin settings screen provides the following options:
Zotero 6 ZotServer Plugin or Zotero 7 Local API (v3)23119; don't change unless you really know what you are doingZotero Bridge provides APIs for other plugins to connect to Zotero.
Example of such consumer plugin is Zotero Link.
APIs of this plugin are published with Obsidian plugin api library and can be used anywhere in Obsidian.
PluginApi.ZoteroBridge.v1().search() opens a search modal and returns a promise that resolves with the selected ZoteroItem. Its getValues() method returns an object with the following properties, ready for use in templates:
key – Zotero item keylibraryUri – library path for zotero:// URIs: groups/<id> for group library items, library for the personal librarytitle – item titleshortTitle – item short titledate – structured date object with year, month and day propertiesauthors – array of authors, each with firstName, lastName and fullNamefirstAuthor – first author of the itemcreatorSummary – creator summary as displayed by Zotero, e.g. "Smith and Jones"Example use of Zotero Bridge APIs in Templater user scripts:
zotero.js user script:
module.exports = async function () {
const item = await PluginApi.ZoteroBridge.v1().search();
return (prop) => dotAccess(prop, item.getValues());
}
function dotAccess(str, obj) {
return str.split('.').reduce((previousValue, currentValue) => previousValue[currentValue], obj);
}
This function can now be used in templates:
(this example is taken from https://github.com/vanakat/zotero-bridge/pull/2)
<%* const zi = await tp.user.zotero() %>
<% zi('firstAuthor.lastName') %><%* if (zi('authors.length') == 2) { %> and <% zi('authors')[1].lastName %><%* } else if (zi('authors.length') > 2) { %> et al.<%* } %> <% zi('date.year') %> <% zi('title') %>
ln -sfn <this-directory> <your-test-vault>/.obsidian/plugins/zotero-bridgenpm install to install all dependenciesnpm run dev will run development servernpm test runs the Jest test suitePlease refer to following helpful resources:
While working on this plugin I found another Zotero integration one called Zotero Integration. If you are looking for a citation/bibliography integration with Zotero it might be a good option for you.
MIT