Template data
Every property available on the zt variable, organized by template type.
This page lists every property available on zt in each template type. Use the Template Data Explorer against your own library to discover values interactively.
Item fields
All Zotero item fields are available as flat properties on zt. The canonical Zotero field name is the primary accessor. Two fields carry CSL-inspired renames (both the rename and the original work):
| Property | Zotero canonical | Notes |
|---|---|---|
zt.abstract | abstractNote | Both zt.abstract and zt.abstractNote work |
zt.containerTitle | publicationTitle | Both names work |
zt.citekey | citationKey | Both zt.citekey and zt.citationKey work |
Common fields
| Property | Type | Description |
|---|---|---|
zt.key | string | Zotero item key (e.g. "ABC12345") |
zt.libraryID | number | Library ID |
zt.groupID | number | null | Group library ID; null for the personal library |
zt.indexedKey | string | KEY for the user library, KEYgGROUPID for groups |
zt.itemType | string | Zotero item type (e.g. "journalArticle", "book") |
zt.title | string | null | Item title |
zt.citationKey | string | null | Citation key (Better BibTeX or native) |
zt.citekey | string | null | Alias for citationKey |
zt.abstract | string | null | Abstract text |
zt.containerTitle | string | null | Journal or container title |
zt.DOI | string | null | Digital Object Identifier |
zt.url | string | null | URL |
zt.volume | string | null | Volume |
zt.issue | string | null | Issue |
zt.pages | string | null | Pages |
zt.date | ItemDate | null | Publication date (parsed; see Date format) |
zt.publisher | string | null | Publisher |
zt.place | string | null | Place of publication |
zt.edition | string | null | Edition |
zt.ISBN | string | null | ISBN |
zt.ISSN | string | null | ISSN |
zt.language | string | null | Language |
zt.shortTitle | string | null | Short title |
zt.extra | ItemExtra | null | Parsed Extra field (see Extra field) |
zt.dateAdded | Temporal.Instant | When the item was added to Zotero. Renders as the local date (e.g. 2026-06-21) in {{ }} output |
zt.dateModified | Temporal.Instant | When the item was last modified. Renders as the local date in {{ }} output |
Item-type-specific fields (e.g. zt.reportNumber, zt.thesisType, zt.conferenceName) are available by their Zotero canonical name. Type-specific aliases are normalized to the canonical base field: access them through the base name (e.g. blogTitle becomes zt.publicationTitle, studio becomes zt.publisher). The type-specific spelling is not available on zt.
Timestamp precision
Timestamp fields (zt.dateAdded, zt.dateModified) are second-precision.
Zotero stores them as UTC strings with no sub-second component.
Note and content templates
The note template (zotlit-note.liquid.md) and the content template (zotlit-content.liquid.md) share the same zt context. All item fields above are available, plus the following:
| Property | Type | Description |
|---|---|---|
zt.backlink | string | Zotero deep link (zotero://select/...) |
zt.annotations | array | All annotations across all attachments (see Annotation template) |
zt.attachments | array | All attachments (see Attachments) |
zt.authors | array | Creators filtered to the item's primary creator type. All creators when none matches. Coerce to fullName in string contexts |
zt.authorsShort | string | Formatted short author string (e.g. "Smith et al.") |
zt.relatedItems | array | Items from Zotero's Related panel, sorted by title (see Related items) |
zt.notes | array | Child notes from Zotero (see Notes) |
zt.collections | array | Zotero collections this item belongs to, sorted by name (see Collections) |
zt.notePath | string | null | Full vault-relative literature note path (including .md); null when unresolvable |
zt.noteLink | link property | Wiki-link to this item's literature note. Renders on plain access; pipe through note_link to override alias or subpath |
Filename template
The filename template (zotlit-filename.liquid.md) receives item-level fields only. The richer context assembled for the note body is not available.
Available: all item fields, plus zt.creators, zt.tags, and zt.collections.
Not available: zt.backlink, zt.annotations, zt.attachments, zt.relatedItems, zt.authors, zt.authorsShort, zt.notes.
zt.notePath and zt.noteLink exist but always resolve empty, because a note has no path until it is named.
Annotation template
The annotation template (zotlit-annotation.liquid.md) receives a single annotation as zt.
| Property | Type | Description |
|---|---|---|
zt.key | string | Annotation item key |
zt.libraryID | number | Library ID |
zt.type | string | "highlight", "note", "image", "ink", "underline", or "text" |
zt.text | string | null | Highlighted or annotation text |
zt.comment | string | null | User comment, converted to Markdown; null when absent |
zt.commentHtml | string | null | Raw comment HTML as stored by Zotero; null when absent |
zt.colorHex | string | null | Hex color (e.g. "#ffd400") |
zt.colorName | string | null | Palette name: "yellow", "red", "green", "blue", "purple", "magenta", "orange", "gray", or "plum"; null for custom colors outside the palette |
zt.pageLabel | string | null | Page label as shown in the document (e.g. "42", "iv") |
zt.page | number | null | 1-based page number from the PDF position; null for EPUB/snapshot annotations |
zt.tags | array | Tags on this annotation (same shape as Tags) |
zt.authorName | string | null | Annotation author |
zt.isExternal | boolean | Whether the annotation is external |
zt.dateAdded | Temporal.Instant | When the annotation was created |
zt.dateModified | Temporal.Instant | When the annotation was last modified |
zt.imgLink | link property | Wiki-link to the excerpt image. Pipe through embed for an Obsidian embed. Resolves empty for annotations without an image |
zt.fileLink | link property | Wiki-link to the parent attachment, anchored to this annotation's page |
zt.backlink | string | Zotero deep link to this annotation |
zt.parentItem | object | null | The parent literature item (all item fields). null for annotations on standalone attachments. parentItem.collections is populated when the annotation renders as part of a note; in standalone renders (annotation view drag/insert, note import) collections are absent; read them via zt.collections on the note context instead |
zt.parentAttachment | object | The parent attachment (see Attachments) |
zt.citation | string | null | Page-pinned citation rendered through your cite template with the annotation's pageLabel as locator. null when there is no parent item or no citation key |
Citation templates
Both citation templates (zotlit-cite.liquid.md and zotlit-cite2.liquid.md) receive the same zt object with two parallel arrays:
| Property | Type | Description |
|---|---|---|
zt.citations | array | Citation items: each pairs the cited item with citation-scoped properties |
zt.items | array | The same cited items bare. zt.items[i] is zt.citations[i].item |
Citation item
Each entry in zt.citations:
| Property | Type | Description |
|---|---|---|
item | object | The cited item's data (see Cited item fields). Never null: unresolved references become a stub with every field null |
locator | string | null | Pinpoint reference (e.g. "62"); null when absent |
label | string | null | CSL locator label (e.g. "page", "chapter"); null when absent |
labelShort | string | Pandoc abbreviation of the label (e.g. "p.", "chap."). Absent or unrecognized labels (including "page") yield "p." |
suppressAuthor | boolean | Whether the author is suppressed; default false |
prefix | string | null | Text before the citation |
suffix | string | null | Text after the citation |
Cited item fields
A cited item uses the same field vocabulary as the note template, narrowed to fields both a live Zotero item and an embedded-data snapshot can supply:
| Property | Type |
|---|---|
item.itemType | string | null |
item.title | string | null |
item.creators | array (see Creators) |
item.primaryCreatorType | string | null |
item.date | ItemDate | null |
item.citationKey | string | null |
item.citekey | string | null |
item.abstract | string | null |
item.containerTitle | string | null |
item.shortTitle | string | null |
item.DOI | string | null |
item.url | string | null |
item.ISBN | string | null |
item.ISSN | string | null |
item.volume | string | null |
item.issue | string | null |
item.pages | string | null |
item.publisher | string | null |
item.place | string | null |
item.edition | string | null |
item.language | string | null |
item.extra | string | null |
Note-tier fields (key, libraryID, indexedKey, tags, dateAdded, dateModified, collections, backlink, annotations, attachments, authors, authorsShort, relatedItems, notes, notePath, noteLink) are not available on cited items.
extra is a raw string here
In the citation context, item.extra is a raw string | null. It is not the
parsed ItemExtra object available in note templates.
Locator label abbreviations
labelShort maps the CSL label to its Pandoc locator term. Any label not listed (including "page") yields "p.".
label | labelShort |
|---|---|
book | bk. |
chapter | chap. |
column | col. |
figure | fig. |
folio | fol. |
issue | no. |
line | l. |
note | n. |
opus | op. |
paragraph | para. |
part | pt. |
section | sec. |
sub-verbo | s.v. |
verse | v. |
volume | vol. |
Creators
zt.creators is an array of all creators for the item.
| Property | Type | Description |
|---|---|---|
family | string | Family/last name |
given | string | Given/first name |
literal | string | null | Single-field name (institutional authors); null for personal names |
role | string | Creator type: "author", "editor", "translator", etc. |
fullName | string | literal for institutional creators; "given family" for personal names |
Institutional creators (Zotero fieldMode=1) set literal and have empty family/given. Creators coerce to fullName in string contexts.
zt.primaryCreatorType (string | null) identifies the primary creator role for this item type (e.g. "author" for journal articles, "director" for films).
Tags
zt.tags is an array of tag objects.
| Property | Type | Description |
|---|---|---|
name | string | Tag name |
type | string | "manual" (user-added), "auto" (added by a Zotero plugin), or "unknown" |
Tags coerce to name in string contexts, so {{ zt.tags \| join: ", " }} renders tag names directly.
Collections
zt.collections is an array of the Zotero collections the item belongs to, sorted by name. Trashed collections are excluded.
| Property | Type | Description |
|---|---|---|
key | string | Zotero collection key |
name | string | Collection name |
path | readonly string[] | Ancestor chain from root to this collection. path[0] is the top-level ancestor; the last element is this collection |
Collections coerce to name in string contexts. Use the collection_paths filter to render the full ancestor path joined by a separator ("/" by default).
Date format
zt.date is a parsed date object with four variants:
kind | year | month | day | value | String rendering |
|---|---|---|---|---|---|
"date" | number | number (1-12) | number | Temporal.PlainDate | ISO date (e.g. 2023-06-15) |
"yearMonth" | number | number (1-12) | null | Temporal.PlainYearMonth | ISO year-month (e.g. 2023-06) |
"year" | number | null | null | null | Bare year (e.g. 2023) |
"text" | number | null | null | null | null | Raw user text (e.g. "submitted") |
All variants share uniform accessors:
| Property | Type | Description |
|---|---|---|
year | number | null | Numeric year; extracted from the text when a 4-digit year is present ("text" kind), otherwise null for "text" kind |
month | number | null | Month (1-12); available for "date" and "yearMonth" |
day | number | null | Day of month; available for "date" only |
value | Temporal.PlainDate | Temporal.PlainYearMonth | null | Precise temporal value; null for "year" and "text" |
raw | string | Original Zotero string verbatim |
kind | string | Discriminator |
{{ zt.date }} outputs the string rendering from the table above. Use {{ zt.date \| date: "%Y-%m-%d" }} for explicit formatting with strftime tokens. A "text" date renders its raw text unchanged regardless of the format string.
Extra field
zt.extra is a parsed view of Zotero's free-text Extra field. When empty or absent, zt.extra is null.
| Property | Type | Description |
|---|---|---|
raw | string | Original field text verbatim |
fields | object | First value per key (e.g. zt.extra.fields["tex.mendeley-tags"]) |
lines | array | Every source row in order |
Each entry in lines:
| Property | Type | Description |
|---|---|---|
raw | string | Verbatim source line |
key | string | null | Parsed key; null for non-pair lines |
value | string | Parsed value (pair rows only) |
Parsing rules: Lines split on the first : or =. A key must start with a letter and contain only letters, digits, spaces, dots, hyphens, and underscores. Lines not matching become text rows (key: null). Empty values produce text rows. fields is first-wins: repeated keys use the first occurrence.
{{ zt.extra }} renders the raw field text (its toString() returns raw).
Attachments
Used in zt.attachments and zt.parentAttachment:
| Property | Type | Description |
|---|---|---|
key | string | Attachment item key |
filename | string | null | Filename; null for URL/unknown links |
contentType | string | null | MIME type (e.g. "application/pdf") |
linkMode | string | "imported_file", "imported_url", "linked_file", "linked_url", "embedded_image", or "unknown" |
filePath | string | null | Absolute on-disk path; null for URL links or unparseable paths |
fileLink | link property | Wiki-link to the attachment file. Pipe through file_link to override alias or subpath |
Related items
zt.relatedItems mirrors Zotero's Related panel, sorted by title. Each entry carries all standard item fields, creators, tags, and aliases, plus:
| Property | Type | Description |
|---|---|---|
backlink | string | Zotero deep link to the related item |
authors | array | Primary authors |
authorsShort | string | Formatted short author string |
collections | array | Collections the related item belongs to |
notePath | string | null | Vault path to the related item's literature note |
noteLink | link property | Wiki-link to the related item's literature note |
Related items are depth-1: their own annotations, attachments, and relatedItems are absent.
Notes
zt.notes lists an item's child notes. Each entry is link-only: the note body is not exposed.
| Property | Type | Description |
|---|---|---|
key | string | Zotero item key of the child note |
title | string | null | Note title |
noteLink | link property | Wiki-link to the imported child-note file. Rendering this property queues the child note for import |
Accessing noteLink triggers import: if the link is never rendered, no file is created. Already-imported notes link to the existing file without re-importing. See Import Zotero notes for the import workflow.
Imported note frontmatter
Each imported child-note file carries three frontmatter fields:
| Field | Description |
|---|---|
date | When the note was added to Zotero. Local datetime with offset at second precision (e.g. 2025-03-15T10:30:00-04:00) |
zotero-note-key | Identity key matching the imported file to the Zotero note. For group libraries, this is the indexed key (KEYgGROUPID) |
zotero-lastmod | Source note's dateModified timestamp (same format as date). Used by batch re-import to skip unchanged notes |