Zotero-IIIF
2022-12-23 ~ code repo
This site is an attempt to meet the need to integrate IIIF manifest handling into Zotero. After some experimentation, this easy method seems to be the best for now. It assumes you will store the URI of a IIIF manifest in the ‘Loc. in Archive’ field of your Zotero records.
Lookup Engine
To install the lookup engine, copy the JSON configuration into your
engines.json
. Instructions can be found in the Zotero
documentation under
“Managing Lookup Engines”.
Restart Zotero.
{
"_name": "IIIF",
"_alias": "IIIF",
"_description": "Render IIIF Manifest from 'Loc. in Archive'",
"_icon": "https://iiif.io/assets/favicon.ico",
"_hidden": false,
"_urlTemplate": "https://pbinkley.github.io/zotero-iiif/mirador.html?manifest={z:archiveLocation}",
"_urlParams": [],
"_urlNamespaces": {
"z": "http://www.zotero.org/namespaces/openSearch#",
"": "http://a9.com/-/spec/opensearch/1.1/"
},
"_iconSourceURI": "https://iiif.io/assets/favicon.ico"
}
Storing Manifest URIs
The lookup engine expects to find IIIF manifests in the “Loc. in Archive” field. Simply copy the whole uri there. For items that have a value in that field, there will be a “IIIF” link in the locate menu (the green arrow above the item display), like this:
Customizing
If you would prefer to use a different field to store IIIF Manifests,
you can edit the lookup engine configuration (above): simply change
the _urlTemplate
line, replacing z:archivelocation
with
the key for the field you want to use. (See this list of field
names.)
Edit the _urlTemplate
line if you would prefer to open the
manifest in some other IIIF viewer instance. For example, to use the
Universal Viewer demo instance you would use this template:
https://uv-v4.netlify.app/#?manifest={z:archiveLocation}
Future Work
It would be better if we could follow Zotero’s convention for new
fields
and store the manifest URI in the Extra
field, with a prefix:
IIIF: <manifest uri>
I haven’t found a way to extract such a value and use it in a lookup engine configuration, but perhaps it’s possible – let me know!