How To Use Zotero INSIDE Roam Research
Based on Cortex Futura's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Roam can pull citation metadata from Zotero using a JavaScript integration that requires a Zotero API key and a user ID embedded in a data URI.
Briefing
Zotero can be wired directly into Roam Research so that every citation in a Zotero library—authors, titles, publication details, tags, and automatically generated site keys—appears inside Roam exactly when writing needs it. The payoff is practical: Roam pages get populated with metadata on demand, and site keys can be copied into Roam text to later produce properly formatted references without manual re-entry.
The setup starts inside a Roam graph by adding a JavaScript “Zotero integration” block. That block pulls in an extension script (sourced from the extension’s documentation) and requires three key inputs: a Zotero API key, a Zotero user ID embedded into a “data URI,” and an optional params field. Leaving params empty is the crucial choice—it instructs the integration to fetch the entire Zotero library rather than a filtered subset. The extension also needs a “private key” generated in Roam so the integration can authenticate to the graph.
Getting the Zotero API key and user ID comes from Zotero itself. After logging into Zotero online, the user ID is found under the account’s Settings → Feeds API page, then copied into the Roam integration’s data URI field. The API key is created from the same feeds interface via a new saved key; it should be treated as secret because anyone with it can read the associated library data. The transcript emphasizes that the integration is read-only by default—permissions can be limited to reading, with no write access to the Zotero library.
A major dependency is site keys. The integration relies on Better BibTeX’s “auto pinning” so each Zotero item gets a stable, memorable site key that can be transported to Zotero online and then retrieved by Roam. That requires installing Better BibTeX in Zotero, then enabling Zotero’s Advanced Config Editor setting for auto pin extension and setting an auto pin delay (e.g., a few seconds). If a site key isn’t generated as desired, the workflow includes unpinning and repinning the Better BibTeX key for that item until the site key is correct.
Once the JavaScript integration is enabled in Roam (via the “I know what I’m doing” confirmation), a book icon appears. Clicking it downloads the Zotero library metadata into the Roam graph background; the integration turns green when the data is ready, and the data must be refreshed after reloading Roam.
Using it is centered on two Roam shortcuts: a search panel and a quick copy panel. On macOS and some international keyboard layouts, the transcript notes that “Alt + P” may register differently, so the shortcut configuration may need adjustment (e.g., entering “pi” instead of “p,” and handling special characters like “c” with a tail). With the search panel, users can find a paper by title/author, import metadata into a Roam page, and open the local Zotero entry or PDF with one click. Quick copy lets users retrieve a site key directly while writing, enabling Roam to format references later.
Finally, there’s room for customization: metadata can be mapped differently in Roam—for example, placing publication names on their own pages to group papers by journal. The transcript points to additional documentation, a help/community page, and a follow-up blog post for deeper control over how metadata lands in the graph.
Cornell Notes
The integration connects Zotero to Roam Research so Roam can pull in citation metadata—title, authors, publication info, tags, and Zotero site keys—directly from a Zotero library. Setup requires a Roam JavaScript integration block plus a Zotero API key and user ID (from Zotero’s Feeds API settings). A key prerequisite is Better BibTeX with auto pinning enabled, so each Zotero item gets a site key that can be transported to Zotero online and then retrieved by Roam. After enabling the integration, a book icon downloads the library into Roam on demand, and Roam shortcuts provide search and quick-copy of site keys for later reference formatting. The workflow is read-focused: it populates Roam pages and helps writing, without writing back to Zotero.
What inputs does the Roam–Zotero integration need, and where do they come from?
Why is Better BibTeX “auto pinning” essential for this workflow?
How does the integration bring Zotero items into Roam, and when does it refresh?
What can users do once the Zotero metadata is available inside Roam?
How do site keys speed up writing in Roam?
Why might keyboard shortcuts need special handling on macOS or international layouts?
Review Questions
- What exact Zotero settings and extensions must be in place to ensure site keys exist and can be retrieved by Roam?
- How does leaving the params field empty change what the Roam integration fetches from Zotero?
- After enabling the integration, what steps confirm that Zotero data is ready inside Roam, and what happens after reloading Roam?
Key Points
- 1
Roam can pull citation metadata from Zotero using a JavaScript integration that requires a Zotero API key and a user ID embedded in a data URI.
- 2
Leaving the integration’s params field empty fetches the entire Zotero library into Roam rather than a filtered subset.
- 3
Better BibTeX with auto pinning is required so each Zotero item has a pinned site key that the Roam extension can retrieve.
- 4
Site keys can be copied quickly during writing and later converted into formatted references inside Roam.
- 5
The integration is read-focused: it populates Roam pages and provides links to Zotero items without writing back to the Zotero library.
- 6
Roam needs a manual refresh: the Zotero library download via the book icon must be repeated after reloading the Roam graph.
- 7
Shortcut configuration may need adjustment on macOS or international keyboards because key combinations can register as different characters.