Zotero referencing and annotations using Obsidian + Logseq

Since there's been a lot a talk recently about Zotero referencing in Logseq, I'll share my current method I'm using to solve this till the Zotero (version 6) integration is again solved in Logseq.

First, let me preface what this workflow accomplishes for the impatient:

  • Zotero entries importer
  • Customizable properties template
  • Annotations import
  • Updating all imported entries
  • Preserve manual edits done to existing entries when updating all entries
  • Leverage colour highlights custom tagging or automatic task creation

Secondly, I could only achieve this by using a plugin for Obsidian (sadly). Nevertheless, since I installed Obsidian with Flatpak I removed its permissions for network access.
The plugin used is the following: https://github.com/stefanopagliari/bibnotes

I'll now guide you through the steps of configuring the plugin to work nicely with Logseq:

  1. Install the plugin on Obsidian
  2. Export your Zotero library (or a specific collection), select BetterBibtex JSON, Export Notes and Keep updated
  3. Place the exported JSON file (in this example will be PhD.json) at the root of you Logseq folder
  4. Add your Logseq folder to Obsidian It's also wise to automatically pin you Zotero citekeys using the Zotfile plugin.

Now we're going to configure the Bibnotes plugin on Obsidian:

  1. Bibtex file will be our export Zotero file: PhD.json
  2. Export path (if you use other folder for your Logseq pages, change appropriately): pages
  3. Notetile: @{{citeKey}}
  4. Select template: Custom Template (We'll use a custom template I created to be able to use the imported entries in Logseq + a few more goodies)
  5. Custom template
title:: {{title}}
alias:: @{{citekey}}
Authors:: {{author}}
date:: {{year}} 
DOI:: {{DOI}}
item-type:: {{itemType}}
tags:: {{keywordsAll}}
Collections:: {{collectionsParent}}

## Abstract

## Files and Links
        - **Url**: {{url}}
        - **File**: !{{file}}
        - **Local Library**: {{localLibrary}}

## Comments
        - {{UserNotes}}

- [[Highlights]]
       - {{PDFNotes}}

By using a custom template, we can personalise the properties of each article and prevent the huge cluttering of our graph with irrelevant imported metadata which happens when using the built-in Logseq implementation. Feel free to change the template to your liking, since this is a very basic iteration I'm posting here to please everyone.

  1. Missing fields: Remove (entire row) Personal preference to not have empty properties or fields.
  2. Multiple entries divider: ,
  3. Format Names: {{firstName}} {{lastName}}
  4. Save manual edits: Save entire note This is to prevent changes made to be overwritten when we later update the articles. This way, the plugin checks if the length of a given imported annotation was changed (highlights, added tags, etc) and does not import that specific annotation but imports all the rest of the annotations of that article
  5. Update library: Only existing notes Personal preference, but I prefer to import as needed vs having all articles in Logseq already

Format Annotations: Please follow this section with care because its the crux of a good compatibility with Logseq:

  1. End of highlight citation format: Only page number
  2. Create link to the highlight page in the pdf: On
  3. Highlights (only the ones that are toogled): Double spaced, Quotation marks, Italic You can change to your liking any of the 3. but do not change the following: Custom text before all highlights: - This will ensure that each annotation from a given article is imported as a block annotations and sits properly indented under the Annotations parent block ! 4.Comments: Bold, Blockquote

Additional transformations: here comes the additional goodies I talked about. In this section we can do text transformation to our annotations relying on certain characters or single words (like TODO). For the heading options, leave as default.
The Bibnote plugin also does some really cool transformations (which you can see more here: https://github.com/stefanopagliari/bibnotes#additional-highlight-formatting), as for example using + to Append highlight to the previous one (e.g. to merge paragraph across two pages)..
These are the default ones that come with the Bibnotes plugin, now I'm going to show you the custom ones I created as an example of possible workflows:

  1. Transform the highlight/comment into a task: TODO
  2. Yellow: {{highlight}}
  3. Red: [[Important]] {{highlight}}
  4. Green: TODO #litreview {{highlight}}
  5. Blue: [[Idea]] {{highlight}}
  6. Purple: [[Critique]] {{highlight}}

As such, by defining this transformation for these colours, if for example I highlight with colour red a certain paragraph, its annotation will be imported as a task to Logseq with the tag litreview.
Adjust this to your liking and please share the workflows you created !


  1. Zotero local folder: /Your/path/to/Zotero/storage
  2. Import images: True
  3. Position of a comment to an image: Above the image

Finally, do not forget to extract annotations in Zotero after each new annotation you make !
I'm including here an example of how annotation in Zotero pdf viewer is rendered on Logseq using this workflow. Also included some screenshots of the relevant parts of the Bibnotes configuration.

Please feel free to ask me anything about this workflow or share a better implementation or tip !