Originally published on eve.gd on 23 June 2026.
Read this post on the web (with images, PDF and citation details)
This is a quick “how-to” post because I learned something about Zotero. I want the posts on this site to be easily citeable. The name of the site that I would like in citations is “eve.gd: Martin Paul Eve”. But here’s the problem: when you put that as a Blog Title (or Website Title) and then go to cite it in a document, the CSL reformats it to the ugly “Eve.Gd: Martin Paul Eve”. Anyway, I found how to fix this! You simply encode it thus:
<span class="nocase">eve.gd</span>: Martin Paul Eve
Then the CSL will preserve your original case. <span class="nocase">bell hooks</span> might have found this useful, as might <span class="nocase">andré carrington</span>.
Mind you, those two are jokes only, as Zotero automatically preserves the casing of author names.
The next challenge that I faced was: how do you get an item into Zotero with the “Blog Post” type when you are running a static-site generator? Well, obviously, you have to embed meta tags, but which ones?
Genre/OpenGraph hints alone are unreliable — prism.genre=blogentry is supposed to map to Blog Post, but in practice Zotero kept importing posts as Web Page (the OpenGraph default won). The dependable fix is Zotero’s own RDFa override, zotero:itemType, which is read first in the translator’s type precedence (t.zotero || t.bib || t.prism || … || t.og || … in RDF.js) and beats everything else.
Two parts are required, because zotero is not a built-in prefix in the translator (only the short z is), so it must be declared:
1. Declare the prefix on the <html> element (the translator’s getPrefixes reads the prefix attribute of <html> and <head>): <html lang="en" prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article# zotero: http://www.zotero.org/namespaces/export#">
2. Emit the override (note property=, not name=): <meta property="zotero:itemType" content="blogPost">
The prefix value is RDFa syntax: prefix: uri pairs separated by spaces (a space after each colon is required by the parser’s (\w+):\s+(\S+) regex).
Tag | Value | Effect
<html prefix="…zotero: http://www.zotero.org/namespaces/export#"> | (declaration) | Registers the zotero prefix so the next tag is understood.
zotero:itemType (property) | blogPost | Forces item type → Blog Post. Highest-priority signal.
prism.publicationName | <span class="nocase">eve.gd</span>: Martin Paul Eve | Blog Title. Read before og:site_name. The <span class="nocase"> is CSL markup so styles don’t title-case eve.gd into Eve.Gd.
og:title | post title | Title. Use OpenGraph/dc.title, not citation_title (see below).
citation_author | Eve, Martin Paul | Author (Last, First; repeat for multiple).
citation_publication_date | 2022/07/26 | Date (YYYY/MM/DD).
citation_doi | 10.59348/kv1zh-wn208 | DOI (bare, not a URL).
citation_public_url | https://eve.gd/2022/07/26/.../ | URL (absolute).
citation_language | en | Language.
Tag | Purpose
prism.genre = blogentry | Secondary type hint (kept in case zotero:itemType is ever ignored).
dc.title / dc.creator / dc.date / dc.language | Dublin Core fallbacks for other reference tools.
Tag | Problem
citation_journal_title | Forces the journalArticle type.
citation_title | Makes the translator guess journalArticle. Supply the title via og:title / dc.title instead.
So this should now work!
I must also add my thanks to Tom Elliott, whose own blog post on this subject gave me the information I needed to get the Blog Post type working. It is a shame that he stopped posting on his blog in 2020. I hope all is OK with him, but there are lots of interesting digital humanities posts on his site, on eclectic topics.
This reference list has been generated, in many cases, through an automated process and may therefore contain errors or incomplete metadata. It is provided purely as assistance for finding the items mentioned within this post.
1. Elliott, Tom, ‘Zotero-Nikola Harmony (One Simple Trick)’, paregorios.org, 8 May 2018 <https://paregorios.org/posts/2018/05/zotero_nikola_harmony/>