Hi!
I’ve created yet another Zotero plugin
- this one leverages the Zotero Web Sync API to make your entire Zotero library available 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.
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 plugin may be useful if you are interested in natively [[linking]] to and searching through Zotero items right from within Obsidian.
One other noteworthy thing is that you have full control over the template generation using JavaScript. Checkout the video demo here.
I haven’t submitted the plugin to the plugin directory yet since I’d like to test it a bit more. If you are interested, I recommend installing the preview via the Beta Reviewer’s Auto-Update Tool (BRAT) using the repo URL https://github.com/frthjf/obsidian-zotero-sync-client
. Do not test this preview release in your production vault!
Feel free to checkout the plugin Github page here and please let me know if you encounter issues.
Thanks!
3 Likes
Conceptually, this plug-in is, in my opinion, the best approach to create a solution to synch zotero data into obsidian: Connect obsidian directly to Zotero’s web api. I will give it a try.
Does the plug-in synch the pdf annotations ?
1 Like
Thanks for giving it a try! Let me know if you encounter any issues.
The plugin is now available directly via the community plugins.
As for the PDF annotations, they should become available under the ‘children’ key although the default template does not incorporate this at the minute. In any case, you can explore the raw data that is available in the settings (Select a note and ‘View JSON’).
1 Like
This looks quite interesting!
I have some questions:
- Is it possible to limit the sync to certain collections, or items with certain tags in a certain collection?
- What limits the plugin to desktop only?
- Would you consider some POST requests to modify the Zotero items? For example, making tags sync both ways based on the yaml / Properties or some other conditional parameter, such as which heading an embed is under.
- Or can’t you do that since
retorquere/zotero-sync
is one-way? There is also the zotero-api-client.
1 Like
Thanks for your interest @Feralflora!
Is it possible to limit the sync to certain collections, or items with certain tags in a certain collection?
You can limit the sync to some degree by choosing the API key scope when generating it on the Zotero website. Independent of what is synced, you have full control over what will actually appear in your vault. In the template settings, you can return an empty filename for any file you like to exclude. For example, you could exclude any items that are part of a collection (and their subcollections) like this:
if (data.collections && !data.super_collections.includes('FF7BIJJP')) {
return;
}
It may be a bit of a hurdle because you need to know some JavaScript, but the upside is full flexibility.
What limits the plugin to desktop only?
Currently, just the fact that I am using fs
for filesystem operations etc. I don’t think there are any principle reasons why this couldn’t be made to work on mobile. Since I am using Obsidian Sync, I don’t really have a need to run this on the phone since the Zotero Notes are being synced either way, but if somebody would like to work on it making it mobile ready that would be great.
Would you consider some POST requests to modify the Zotero items? For example, making tags sync both ways based on the yaml / Properties or some other conditional parameter, such as which heading an embed is under.
I am not opposed to that either but it would likely be quite a large undertaking to make work reliably. I am currently not in a position to work on such a feature but if somebody steps up to implement such a thing I’d be more than happy to support 
1 Like