How to Use Zotero with Obsidian (Guest Article)

Zotero is great for managing your literature. However, if you want a better overview of your notes or want to work with highlights and comments, you will quickly reach the limits of Zotero. The solution: Import your Zotero notes into Obsidian. With the Zotero-Obsidian integration, you can seamlessly integrate your literature research into your note system. This works via a plugin that allows you to link Zotero and Obsidian. I'll explain how to do this in this article.

The ‘Obsidian-Zotero-Integration’ plugin

In principle, there are several plugins enable a Zotero-Obsidian link. I use the plugin ’Obsidian-Zotero-Integration".

With the plugin, you can import your Zotero entries into Obsidian and edit them there or use the notes. Both notes and annotations that you have made directly in PDF documents within Zotero can be imported. This means that you can make markups in an attached PDF, add comments or annotations to the markups and both will end up in Obsidian when you transfer them. Tags are also transferred. 

The nice thing is that you not only transfer the notes, but they are also directly linked - if you click on the link in Obsidian, the PDF opens in Zotero at the respective note. So you can check everything again or read it in more detail.

Technical requirements

  • In Zotero: You need the "Better BibTeX for Zotero"-Plugin in Zotero. Installation is possible either directly via the page linked above or via Zotero. To do this, select ‘Tools -> Plug-ins -> Download plug-ins from the Zotero plug-in directory’ in Zotero. Then scroll through the page to the Better BibTeX plug-in and follow the installation steps.
  • In the Obsidian settings: External extensions must be allowed (i.e. Restricted mode is switched off). Then click on the browse button under ‘Community extensions’ and search for the plugin ‘Zotero Integration’ by mgmeyers.
Obsidian Plugin Einstellungen

In the Obsidian settings under ‘External extensions’ you will find the option to search through all plugins. Here you can search for and install the Zotero Integration plugin.

  • Once you have found the plugin, you can install and activate it.

The settings

The settings for this plugin are somewhat more extensive and you can configure a few things here.

That's why I'm describing the simple version here; you can always go into more detail later. Leave all options not mentioned in the default status.

  • PDF Utility: I recommend the download. You can do this directly via the button.
  • Note Import Location: Here you enter the folder into which the notes are to be imported.
  • Öffnen Sie die erstellte(n) oder aktualisierte(n) Notiz(en) nach dem Import: Aktivieren
  • Citation Formats: You must now create a format here. Click on ‘Add Citation Format’. You can then select your CSL style from the drop-down menu. Important: The desired style must be installed in Zotero.
  • Import Formats: This is where you create an import format. This is the place where you have the most options. Use the explanations below the fields as a guide when making your entries. You should adjust the output path and the image output path by inserting your folders for the Zotero imports and Zotero attachments. You should also select your citation style and your ‘Template File’ (= your template note) again.

Your template

You need a template file (you can find out how to create them here).

You have quite a few options here. I have my settings from various forum posts and have briefly listed them here so that you have a starting point:


  • Metadata: this box contains data about your entry from Zotero, e.g. title and author, and you can assign your own tag. I use a separate tag for each writing project.

> [!note] Metadata

> type:: "{{itemType}}"{% for type, creators in creators | groupby("creatorType") -%}{% if loop.first %}

> {% endif %}{{type | replace("interviewee", "author") | replace("director", "author") | replace("presenter", "author") | replace("podcaster", "author") | replace("programmer", "author") | replace("cartographer", "author") | replace("inventor", "author") | replace("sponsor", "author") | replace("performer", "author") | replace("artist", "author")}}:: "{%- for creator in creators -%}{%- if creator.name %}{{creator.name}}{%- else %}{{creator.lastName}}, {{creator.firstName}}{%- endif %}{% if not loop.last %}; {% endif %}{% endfor %}"{% if not loop.last %}

> {% endif %}{%- endfor %}{% if title %}

> title:: "{{title}}"{% endif %}{% if publicationTitle %}

> publication:: "{{publicationTitle}}"{% endif %}{% if date %}

> date:: {{date | format("YYYY-MM-DD")}}{% endif %}{% if archive %}

> archive:: "{{archive}}"{% endif %}{% if archiveLocation %}

> archive-location:: "{{archiveLocation}}"{% endif %}

> citekey:: {{citekey}}

> tags:: #hiervergibstdueinenTag

  • Info box: Contains direct links, as well as further information such as the abstract text and tags from Zotero, provided the fields there are filled.

> [!info]

> **Links**

> [online]({{uri}}) [local]({{desktopURI}}) {%- for attachment in attachments | filterby("path", "endswith", ".pdf") %} [pdf](file://{{attachment.path | replace(" ", "%20")}})

> {% if loop.last %} 

> {% endif %}{%- endfor %}

**Cite Key:** [[@{{citekey}}]] {%- for attachment in attachments | filterby("path", "endswith", ".pdf") %} 

> **Link:** [{{attachment.title}}](file://{{attachment.path | replace(" ", "%20")}}) {%- endfor -%} {%- if abstractNote %}

> **Abstract:** {{abstractNote}} {%- endif -%} {%- if bibliography %} 

> **Bibliography:** {{bibliography}} {%- endif %} {%- if hashTags %} 

> **Tags:** {{hashTags}} {%- endif %}

  • Annotations and notes: With this setting, both annotations in PDF documents and added notes from Zotero are adopted. Colour formatting is also used if you make a colour distinction for the highlights in Zotero.

## Annotations

{% macro heading(color) -%}

{%- if color == "#5fb236" -%}

💡 Main ideas, contributions and conclusions

{%- endif -%}

{%- if color == "#2ea8e5" -%}

❔ Questions

{%- endif -%}

{%- if color == "#ffd400" -%}

⭐ Important

{%- endif -%}

{%- if color == "#a28ae5" -%}

🧩 Definitions and concepts

{%- endif -%}

{%- if color == "#ff6666" -%}

⛔ Weaknesses and caveats

{%- endif -%}

{%- endmacro -%}


{% persist "annotations" %}

{% set annotations = annotations | filterby("date", "dateafter", lastImportDate) -%}

{% if annotations.length > 0 %}


*Imported on {{importDate | format("YYYY-MM-DD HH:mm")}}*


{% for color, annotations in annotations | groupby("color") -%}


### {{heading(color)}}


{%- for annotation in annotations -%}

{%- if annotation.imageRelativePath %}

![[{{annotation.imageRelativePath}}]]

{%- endif %}

{%- if annotation.comment %}

- **{{annotation.comment}}:**

- =={{annotation.annotatedText | nl2br}}== [(p. {{annotation.pageLabel}})](zotero://open-pdf/library/items/{{annotation.attachment.itemKey}}?page={{annotation.pageLabel}}&annotation={{annotation.id}}) {% if annotation.hashTags %}{{annotation.hashTags}}{% endif %}

{%- elif annotation.annotatedText %}

- =={{annotation.annotatedText | nl2br}}== [(p. {{annotation.pageLabel}})](zotero://open-pdf/library/items/{{annotation.attachment.itemKey}}?page={{annotation.pageLabel}}&annotation={{annotation.id}}) {% if annotation.hashTags %}{{annotation.hashTags}}{% endif %}

{%- endif -%}{%- endfor %}


{% endfor -%}

{% endif %}

{% endpersist %}


# Notes

{% if markdownNotes %}  

{{markdownNotes}}

{{markdownNote.hashTags}}

{% endif %}


 %%Ende %%

How to use it

  • In Obsidian, use Ctrl + P and then select Zotero Integration: Import ... (select the name you have given to your import format).
  • The Zotero window opens and you can search for the entry you want to transfer (note that this only works if you have Zotero open in parallel).
  • A new note is automatically created for the Zotero entry and also opened directly.

Conclusion

Convinced? Then why not try out the integration of Zotero and Obsidian for yourself! You'll be surprised how much time and effort you can save.The top Zotero extensions I can't live without".

Little Sticky - Martina Klinkowski

Her blog is all about digital note-taking, learning and personal knowledge management, especially with tools like Obsidian. In addition to practical tips on how to structure and use information efficiently, you will find detailed instructions on how to use Obsidian. If you're looking for digital solutions for your knowledge management, you've come to the right place.


Further reading

About the popularity of citation software. Trends over the last 20 years.
About the popularity of citation software. Trends over the last 20 years.
Comparison of citation software: Which tool is the best for your academic work? We analyse the development of Zotero, Mendeley, EndNote, JabRef and Citavi and show you which program is currently in vogue.
Wie richtige Zitierweise finden | citationstyler.com
How do I find the correct citation style?
Citation styles under control: Your comprehensive guide to academic references and citation styles
Blog - Connect Zotero citations and Word - Citation Styler
How to link Zotero citations in Word to the bibliography and make them clickable
Link Zotero citations in Word with the bibliography: The ZoteroLinkCitation macro makes your academic work more interactive and clearer.
Blog - Zoplicate plugin für verbesserte Duplikat Identifizierung
Zoplicate: The easy way to recognise and delete duplicates in Zotero
Zoplicate is a powerful Zotero plugin that efficiently recognises and merges duplicate entries. It offers advanced duplicate detection and saves time when managing large literature databases.

© Citation Styler. All rights reserved. 2025