Server side javascript browser for Zotero to make doing interesting stuff with zotero easier
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Zotero Browser

IMPORTANT This currently will only work in Firefox 3.5 (3.5.9 is the most recent version and will be supported with security fixes until August 2009) due to upstream bugs with the POW web server. You can obtain it from Here.

This is a web based browser for the Zotero bibliographic software (

The idea is basically to provide an easy to hack environment for producing custom reports and other useful things for people who want to use Zotero's excellent data models for building other useful tools. While this is possible by creating a new Firefox extension to interact with Zotero directly, in a lot of situations this is just far too much trouble.


Fortunately the "Plain old Webserver" Firefox extension gives us full access to Firefox's internals including the Zotero API. You will need to install this into the same Firefox profile as your Zotero library. It's available from here:

Once POW is up and running, you can just put the files in this distribution in a subdirectory in POW's htdocs directory, visit relevant page (e.g. http://localhost:6670/zotero-browser/) and you're good to go.


At the moment, all the included scripts is:

  • list the collections in your library.
  • A rather basic report of each question. The report uses the jqote2 client side javascript template library ( which makes writing out data super easy if you have basic knowledge of HTML.

Next Step: Write an annotated bibliography browser. Features are:

  • Create annotated bibliography from collection and/or 1 or more tags. DONE
  • List abstracts, notes and related items under each bibliographic entry. DONE
  • List what each item has been tagged with.
  • List what collections the item belongs in.
  • Jquery magic to make these various lists hide/show for space efficiency.
  • Clickable link for each item to highlight the relevant part of the zotero collection pane (like provided in the timeline view from within zotero).

There's lots of potential for doing other interesting stuff - tagclouds based on the content of the fulltext stored for each item, a fulltext based browsable index, getting a JSON based web service up and running to distribute information about your bibliographies. The possibilities are endless.

Tips and Tricks

See annotated/index.sjs and annotated/lib/get_results.js for an implementation designed to get around the fact that POW doesn't pass arrays from GET requests properly.

You can get Native JSON support through firefox. Here's the code required:

var thing = {"this":"that","something":"else"} var json = Components.classes[";1"].createInstance(Components.interfaces.nsIJSON); var json_thing = json.encode(thing); var other_thing = json.decode(json_thing);

Some of the markup in zotero is not terribly valid (I'm looking at you TinyMCE!). This can cause havoc with the templating system jqote2. To deal with any issues arising from this, you should escape(html) on the server, and unescape(html) on the client side in the template.

Source and contributions

This is open source software, and your contribution is encouraged. You can fork the git repository at

Bear in mind that the Zotero API documentation is also rather sparse, and working out how to work with Zotero requires significant javascript skills and quite a bit of source diving at this stage, so if you work on this, please consider also contributing to the API documentation at .


Keep backups of your Zotero library - messing around with the Zotero API could cause you to inadvertently modify or destroy your collection!


Kieren Diment


This software can be distributed under the same terms as Zotero.