A Zotero add-on that scans your Markdown reading notes, tags the associated Zotero items, and lets you open notes for the Zotero items in Obsidian.

Overview

Zotero Obsidian Citations

  • Adds colored tags to Zotero items that have associated Markdown notes stored in an external folder.
  • Open an associated Markdown note from the contextual menu of a Zotero item.

ZoteroObsidianCitationsScreenshot

This is an add-on for Zotero, a research source management tool. The ZoteroObsidianCitations add-on finds files marked with BibTeX keys in an external folder and adds a colored tag to the corresponding Zotero items.

Currently this add-on is primarily designed to be a minimal companion to the obsidian-citation-plugin, a plugin for Obsidian Markdown editor, but it can be adapted to other workflows and databases used to store reading notes outside of Zotero.

Please post any bugs, questions, or feature requests in the Github repository.

Plugin Functions

Adds a colored tag to Zotero items for which there are associated reading notes in an external folder.

Opens an existing Markdown note in Obsidian from the contextual menu of a Zotero item.

ZoteroObsidianCitationsMenu

Instalation

  • Download the add-on (the .xpi file) from the latest release: https://github.com/daeh/zotero-obsidian-citations/releases
  • To download the .xpi file, right click it and select 'Save link as'
  • Run Zotero (version 5.x)
  • Go to Tools -> Add-ons
  • Install Add-on From File
  • Choose the file zotero-obsidian-citations-0.0.11.xpi
  • Restart Zotero

Setup

ZoteroObsidianCitations can map Markdown files to Zotero items either by identifying Better BibTex citekeys in the Markdown filenames/metadata, or by identifying Zotero-Item-Keys in the file contents.

  1. Using Better BibTex citekeys.

    • This is recommended if you created the Markdown notes using obsidian-citation-plugin.

    • The Markdown file names should start with @mycitekey but can include extra information after it (e.g. a reading note might have the file name @shepard1987science.md or @shepard1987science Toward a universal law of generalization for psychological science.md, where shepard1987science is the BetterBibTex citekey).

  2. Using Zotero Item Keys.

    • This is recommended if you created the Markdown notes using the Export Note feature of Zotero.

    • The Markdown file names should start with @ and the file contents should include the Zotero-Item-Key in a consistent format (Zotero automatically generates Item Keys; they take the form of ABCD1234, as in zotero://select/library/items/ABCD1234).

Option 1: Using BetterBibTex citekeys

If your Markdown notes contain the Better BibTex citekeys, ZoteroObsidianCitations can match the notes to the associated Zotero items by extracting the citekey from the note filenames or the yaml metadata.

  • In ZoteroObsidianCitations Preferences... (under the Tools menu),

    • Specify the location of the folder that contains your Markdown reading notes (e.g. /Users/me/Documents/ObsVault/ReadingNotes/). The ZoteroObsidianCitations add-on will recursively search this path for Markdown files beginning with @.

    • Select the Match notes based on BetterBibTex citekey option.

      • ZoteroObsidianCitations expects that the filenames of your Markdown reading note files begin with @mycitekey but can include extra information after it (e.g. a reading note might have the file name @shepard1987science.md or @shepard1987science Toward a universal law of generalization for psychological science.md, where shepard1987science is the BetterBibTex citekey).
    • Optionally, you can have ZoteroObsidianCitations read the metadata of your Markdown notes and extract the citekey from one of the fields. To enable this, specify the metadata ID (citekey is a common value).

      • This is necessary if the file names do not begin with the correct citekey, which may happen if the citekeys include special characters (e.g. if a citekey contains :, it will probably need to be taken from the yaml metadata rather than the filename).
  • Run the synchronization function from Tools -> ZoteroObsidianCitations Sync Tags.

  • This will add a tag (ObsCite) to every Zotero item for which there exists a reading note in the external folder you specified.

  • In the Tags plane of Zotero, right-click on the ObsCite tag and assign it a color, which will mark the tagged items in the preview plane of Zotero.

Option 2: Using Zotero Item Keys

If your Markdown notes contain the Zotero-Item-Keys, you can specify a RegEx pattern to extract the key from the file contents. Zotero automatically generates Item Keys under the hood; they take the form of ABCD1234, as in zotero://select/library/items/ABCD1234. NB this is not the same as the BetterBibTex citekey you assigned an item (e.g. mycitekey in zotero://select/items/@mycitekey).

  • In ZoteroObsidianCitations Preferences... (under the Tools menu),

    • Specify the location of the folder that contains your Markdown reading notes (e.g. /Users/me/Documents/ObsVault/ReadingNotes/). The ZoteroObsidianCitations add-on will recursively search this path for Markdown files beginning with @.

    • Select the Match notes based on Zotero-Item-Key option.

    • Specify a RegEx pattern to extract the Zotero-Item-Key from the Markdown contents.

      E.g. if your note has the line

      - local:: [local zotero](zotero://select/library/items/GZ9DQ2AM)

      you could extract the Zotero key (GZ9DQ2AM) using this RegEx pattern:

      ^- local::.+\/items\/(\w+)\)

  • Run the synchronization function from Tools -> ZoteroObsidianCitations Sync Tags.

  • This will add a tag (ObsCite) to every Zotero item for which there exists a reading note in the external folder you specified.

  • In the Tags plane of Zotero, right-click on the ObsCite tag and assign it a color, which will mark the tagged items in the preview plane of Zotero.

Notes

GitHub: Source code repository

Code for this extension is based on ZotFile and Zotero Citationcounts (which is based on Zotero DOI Manager, which is based in part on Zotero Google Scholar Citations).

License

Distributed under the MIT License.

Comments
  • Problems with the configuration of the plugin

    Problems with the configuration of the plugin

    Hi @daeh thank you so much for your support.

    According to your request in the forum, I am attaching two MD files from my obsidian notes. One of them (the first one) is an old file, created from notes generated with Acrobat reader some months ago. The other is a newly created one with the latest beta version of Zotero (63).

    @nimmoDielsAlderClick2011.md

    @lindenmeyerSelfhealingBehaviourFuran2020.md

    I am almost sure that this is probably a mistake from my side configuring the setup.

    Thank you!

    question 
    opened by WMAM 20
  • Allow matching to notes not beginning with @

    Allow matching to notes not beginning with @

    Loving the concept behind this plugin, anything that gets the Zotero+Obsidian bond stronger is amazing. Thank you!

    I'm not sure the feasibility of this request, but is it possible to remove the limitation of .md notes starting with a '@'? I'm sure it would allow this plug-in to integrate with a broader array of workflows.

    enhancement 
    opened by TakuanPickle 16
  • Locating MD Files is not  working

    Locating MD Files is not working

    The Choose botton of Folder Containg Markdown Reading Note is not working. Nothing show up after I click the Choose botton. And I copy the file path of md notes in the text box, but the pulug in still can not find md nites.

    bug 
    opened by Litt7e 11
  • Zotero crashing

    Zotero crashing

    Hello and thank you for a very needed add-on!

    I have been using this add-on for a while, and it has been working perfectly. But recently Zotero crashed every time I tried to open it, and through some debugging with the people at the Zotero forum we finally found that the bug was within this add-on. When i removed it, Zotero could open again. I'm no programmer so will not give any tips on what needs to be done, but in the forum thread there was an advice for a line that should be removed. For further explanation see the thread here: https://forums.zotero.org/discussion/comment/417064#Comment_417064

    bug 
    opened by Kullenej 11
  • bug at startup of Zotero

    bug at startup of Zotero

    Hi @daeh ! Just to report a minor bug. When launching Zotero, the following message appears: imagen

    After that, no other issue, the plugin continues to work fine

    bug 
    opened by WMAM 10
  • plugin cannot find notes in Obsidian folder

    plugin cannot find notes in Obsidian folder

    So I linked the plugin to a folder in Obsidian "~/obsidian/cinema-project/1. Notes" but when I restart Zotero the message I get "no notes found." Is that because there is a space in the name of the folder? Thanks!

    opened by erazlogo 8
  • Bug with the last update!!!

    Bug with the last update!!!

    Zotero auto-updated the add-on, and after rebooting:

    1. I can't enter into the Tools>Add-ons (no action!)
    2. Looks like the BBT plugin is not working anymore
    3. Your plugin does not update new notes from Obsidian

    Zotero has no update, so it should not be a bug from their side.

    EDIT: As the command menu "Add-ons" does not work, I can't even uninstall it.

    bug 
    opened by WMAM 8
  • Sync won't parse

    Sync won't parse

    Running the sync can't match items or parse items even though yaml citekey is present and custom filter set to .+.md$ Any help would be immensely appreciated.

    I get this in the report:

    [ { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "holbraad_ruptures_2019", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/holbraad_ruptures_2019.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "powers_anthropology_2019", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/powers_anthropology_2019.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "forbes_meaning_2007", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/forbes_meaning_2007.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "irvine_deep_2014", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/irvine_deep_2014.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "demossier_beyond_2011", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/demossier_beyond_2011.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "janowski_reading_2012", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/janowski_reading_2012.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "walter_uncertain_2006", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/walter_uncertain_2006.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "fabian_if_2005", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/fabian_if_2005.md" }, { "citekey": null, "citekey_metadata": null, "citekey_title": null, "zotkeys": [], "zotids": [], "name": "stensrud_climate_2019", "path": "/Users/binou/switchdrive/Thèse/Thoughts/Research Annotations/stensrud_climate_2019.md" } ]

    opened by cordovero 7
  • Support logseq as MD editor

    Support logseq as MD editor

    open logseq issue for global URI: https://github.com/logseq/logseq/issues/2890#issuecomment-939699032

    related forum post: https://discuss.logseq.com/t/deep-linking-or-url-scheme-allow-linking-to-logseq-pages-from-outside-the-app/3146/20

    original request for ZotObsCite support: https://twitter.com/DavidJaggi/status/1484130826635853825

    enhancement 
    opened by daeh 6
  • Option to change tag name

    Option to change tag name

    Hi, is there a possibility to change the tag ObsCite attaches to the Zotero items?

    Use case: I use the coloured tags in Zotero to indicate the status of the item. It moves from red="to read" or "to skim" to orange="read" and eventually green="finished notes" or violet="worth a second look". It would be really nice if it was possible to integrate the ObsCite tag into that workflow smoothly :)

    Thank you!

    enhancement 
    opened by halloichbingunnar 6
  • sync with mdnotes-Addon Output

    sync with mdnotes-Addon Output

    I had this post also on obsidian-Forum as Reply:

    I find your addon SUPER, even if it has not yet led to the goal or success with me.

    I export Zotero items that I want to work with in Obsidian with the Zotero addon "mdnotes". This creates Markdown files with the title "@CITEKEY.md" (example: "@Akal_ea_2018_DistributedSensing.md").

    These are located in the Obsidian Vault in a folder. The files also contain the additional Zotero link with the Zotero ID as the metadata field:

    ...
    - title:: A Distributed Sensing Approach for Single Platform Image-Based Localization
    - local:: [local zotero](zotero://select/items/1_4AYCPGBV)
    - cloud:: http://zotero.org/users/4847583/items/4AYCPGBV
    ...
    

    Example file: @Akal_ea_2018_DistributedSensing.md

    The corresponding Zotero items should now get a tag "ObsCite". In my case, there is NO exported JSON file of all Zotero items. Your addon aborts the sync with the error message "BBT JSON Library not found". What is the purpose of the BBT JSON Library? Surely the information is directly accessible to the addon in Zotero? My Zotero contains about 80000 entries. If I would set an auto-export, every time I make a change in Zotero, the whole database would be exported.

    In my opinion, this file is not necessary:

    • Search Obsidian folder
    • each file starting with "@" is a citekey probably present in Zotero
    • Search this citekey in the Zotero database
    • if found, then assign tag "ObsCite
    • if not found (e.g. because deleted in Zotero in the meantime but still present in Obsidian), then write to a "missing entry" list
    • Write the list with the missing entries:
      • as a Zotero note or
      • write it as a Markdown file into the specified folder with the citekeys
      • Suggested name: "zotero-obsidian-citations missing-entries.md".

    Is there a reason for needing the BBT JSON library that I'm just not seeing?

    enhancement 
    opened by benpla 6
  • Support matching via filename without @

    Support matching via filename without @

    Currently, matching via filename requires either @ at the beginning of the file or the citekey present in the yaml frontmatter. I'd like to match via filenames without @ and without a specific yaml frontmatter. Just via a filename in this format: citekey.md

    opened by tim-hilde 0
  • Add option to use Obsidian Advanced URI

    Add option to use Obsidian Advanced URI

    Please add an option in the "MarkDBConnect Preferences" to open the MD files in Obsidian using the Obsidian Advanced URI instead of the default one. The main issue with using the default Obsidian URI is replacing the currently open tab instead of creating a new one.

    Keep up the excellent work!

    enhancement 
    opened by andrefpina 2
  • Removes tags of files not found

    Removes tags of files not found

    I have to use two separate Obsidian vaults (work and personal) but one Zotero Library (one account). The issue is that tags are removed from Zotero items when Obsidian Vault files are not found, which occurs when I switch between work and personal Vaults. This seems reasonable behavior to clean up tags, but of course causes problems across multiple vaults.

    Perhaps a workaround could be, 1) option for tags be not removed at all, and/or 2) tags searched for items only in specific collections.

    enhancement 
    opened by jakepog 2
  • matching via filename (without @) does not work for me

    matching via filename (without @) does not work for me

    Dear @daeh,

    for some reason the plugin won't work for me. The correct md files get picked up by the regex, and the corresponding citekeys are given to the plugin by bbt, but the don't get matched. Am I doing something wrong or is this a bug?

    MarkDBConnect-debug.txt

    Kind regards fruchtblase

    opened by fruchtblase 7
  • notes list incomplete in context menu

    notes list incomplete in context menu

    Hi there! Thanks for this plugin. I find, however, that when I right-click in Zotero on an Obsidian-Zotero synced item and point to "Open ObsidianMD Note" or "Show Markdown File" I only get a list that seems limited to 16 Obsidian notes although I may have many more notes with the relevant Zotero itemkey. I cannot seem to find any button to scroll down to see other notes or some other means to see them. Is this perhaps by design, or is it a bug? Or am I doing something wrong?

    I could not find any thread on this issue and decided to submit it as a new one. I am sorry if I missed an already-existing thread on it. Thanks for your help

    opened by osaze-nosaze 3
Releases(v0.0.20)
Owner
Dae
Dae
Easily open daily notes and periodic notes in new pane; customize periodic notes background; quick append new line to daily notes.

Obsidian daily notes opener This plugin adds a command for opening daily notes in a new pane (so that a keyboard shortcut could be used!) and gives ex

Xiao Meng 16 Dec 26, 2022
A service for sharing encrypted Markdown notes from Obsidian. Notes are end-to-end-encrypted and are only stored temporarily.

?? Noteshare.space Noteshare.space is a service for sharing encrypted Markdown notes from Obsidian. Notes are end-to-end-encrypted and are only stored

Maxime Cannoodt 56 Dec 26, 2022
This project scans yandex disk folders that are open to public sharing and allows you to download their contents.

kitapbar.com Development start mongodb server docker-compose -f docker-compose.dev.yaml up -d yandex service cd services/yandex create a .env file by

Xinor 14 Oct 15, 2022
Read without losing the plot. Well Read helps you organize your notes about books you're reading, so you're never lost when starting a new volume.

Well Read Well Read is a website for tracking your reading of long book series. I made this to track how many pages I read in a session and to better

null 3 Dec 15, 2022
An Obsidian plugin that lets you browse the web within Obsidian.

Obsidian Web Browser An Obsidian plugin that allows you to browse the web within Obsidian using v1.0 tabs. The core functionality of the plugin, rende

Dion Tryban 102 Dec 28, 2022
Firefox Extension for Smart Reading - Bionic Reading

Smart Reader - Bionic Reading Smart Reader or Bionic reading is a way to keep our focus on the web. The fact that the beginnings of words are bolded,

Poucous 27 Dec 17, 2022
The app helps you to add todo items to your list, mark completed ones and also delete finished items. Its a handy tool for your day today activies. Check out the live demo.

Todo List App The app helps you to add todo items to your list, mark completed ones and also delete finished items. Its a handy tool for your day toda

Atugonza ( Billions ) Joel 14 Apr 22, 2022
Obsidian Web: Connect your browser with your Obsidian notes

Obsidian Web: Connect your browser with your Obsidian notes This is an unofficial Chrome extension for Obsidian that lets you send content from the we

Adam Coddington 97 Jan 3, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Scans your computer for node modules that are potentially vulnerable to supply chain attacks

Scans your computer for node modules that are potentially vulnerable to supply chain attacks. You still need to review the code of modules that are not vulnerable, but this helps.

Brandon Nozaki Miller 4 Apr 11, 2022
An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

Obsidian Publish This plugin cloud upload all local images embedded in markdown to specified remote image store (support imgur only, currently) and ex

Addo.Zhang 7 Dec 13, 2022
A plugin for the Obsidian markdown note application, adding functionality to render markdown documents with multiple columns of text.

Multi-Column Markdown Take your boring markdown document and add some columns to it! With Multi Column Markdown rather than limiting your document lay

Cameron Robinson 91 Jan 2, 2023
Automaticly parses known pocket ips patch resources, scans folders or zip files for matching roms and applies the patches.

Pocket Automaton Automaticly parses known pocket ips patch resources, scans folders or zip files for matching roms and applies the patches. Usage pock

null 3 Nov 27, 2022
A UI for burning Solana NFTs and geting back $SOL from the associated token account

A UI for burning Solana NFTs and geting back $SOL from the associated token account

null 14 Oct 9, 2022
Lets you add a character to Hacker News links to add social media and OpenGraph previews for sharing on things like Slack or Twitter.

news.ycombinator1.com Lets you add a character to Hacker News links to add social media and OpenGraph previews for sharing on things like Slack or Dis

Ian Langworth ☠ 38 Sep 18, 2022
Minty is an example of how to mint non-fungible tokens (NFTs) while storing the associated data on IPFS

Minty is an example of how to mint non-fungible tokens (NFTs) while storing the associated data on IPFS. You can also use Minty to pin your data on an IPFS pinning service such as nft.storage and Pinata.

One & Zeros 10 Nov 12, 2022
Easily publish notes to the web This plugin integrates with obsius.site to publish markdown notes on the web.

Obsius Publish Easily publish notes to the web This plugin integrates with obsius.site to publish markdown notes on the web. Limitations The type of c

Jon Grythe Stødle 66 Dec 20, 2022