Export Zotero to a web site
This project exports your local Zotero library to a usable HTML website. This generated website has the following features:
- Easily access your papers, site snapshots, notes from a navigation tree.
- Provides metadata from collections and attachments (i.e. referenes etc).
- Display PDF papers and website snapshot (the latter as framed).
- Method to navigate to/view the paper/website snapshot directly.
Table of Contents
- Sample Site
- Command Line Help
- Zotero Plugin Listing
The easist way to install the command line program is via the
pip install zensols.zotsite
Binaries are also available on pypi.
See the live demo, which provides a variety of resources found in my own library. Note: To my knowledge, all of these resources are free to distribute and violate no laws. If I've missed one, please create an issue.
Important: You must shut down Zotero before you invoking this script. Nothing goes wrong when you don't. However, the script uses an SQLite file that the program (pessimistically) locks.
The program has two modes: show configuration (a good first step) and create the web site.
You can see what the program is parsing from your Zotero library:
Run the program (without the angle brackets):
zotsite export -o <sitedir>
After the program runs,
sitedir will be where the tool creates/generates the
the new site. Note you can also give a
--datadir to tell the program where
your Zotero library is. This can also be configured in
The website will work as served from either a website or from the local file
system. You can pass
levels as a URL encoded parameter to produce the number
of levels when the page is loaded.
On the left you can click on the tree to select collections or attachments. You have to drill all the way down to the leaf level in the tree to get at your attachements and notes. At the leaf level you can select and unselect a node but all other nodes are note selectable.
By clicking on a non-leaf node it expands or collapses everything and gives the meta data for that collection. Note that this behavior was decided more by the way Tree View works more than anything else since it is designed to show the entire tree list at once.
The folder directory structure in Zotero are called collections. You can
export only collections given a regular expression with the
All command line parameters you provide can also be given in a
configuration file, for example:
tells the program where the Zotero data directory is located in the user's
home directory with name
.zotero (this defaults to the Zotero default).
You can indicate where the program configuration file is with the
environment variable or use the
--config command line program.
The tool does the following:
- Exports the meta data (directory structure, references, notes, etc) from your Zotero library. On MacOS, this is done by querying the file system SQLite DB files.
- Copies a static site that enables traversal of the exported data.
- Copies your Zotero stored papers, snapshot (sites) etc.
- Generates a navigation tree to easily find your papers/content.
Keeping the Website In Sync With Zotero
Currently there is no way to do this (contributions are welcome). However there is a script I use to do this when I know I'm going to need to use the site, which is here.
This project uses the SQLite Python library and should run on other platforms but assumes a directory structure that's been tested on OSX.
Command Line Help
Command line usage as provided with the
Usage: usage: zotsite <list|export|print> [options] Options: --version show program's version number and exit -h, --help show this help message and exit -w NUMBER, --whine=NUMBER add verbosity to logging -c FILE, --config=FILE configuration file Actions: export Export -d, --datadir <string> the location of the Zotero data directory -o, --outputdir <string> the directory to output the website --collection <string> regular expression to match collections --staticdirs <string> comma separated directories to static files print Print structure -d, --datadir <string> the location of the Zotero data directory --collection <string> SQL like pattern to match collections
This software uses:
Also see the live demo.
mins are added in the distribution to same directory as the main navigation/content file.
- Add functionality to the disabled View button that drills down in a paper and finds a PDF or site to view withouth the user having to do this.
- Use something like zotxt to make this work with a plugin rather than directly against the SQLite DB.
Zotero Plugin Listing
This is listed as a plugin on the Zotero site.
An extensive changelog is available here.
Copyright © 2018 Paul Landes
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.