DEV Community

xinran hou
xinran hou

Posted on

How I made Zotero actually remind me to review my library items

Zotero is great at storing references — papers, textbook notes, my ever-growing "wrong-answer book". What it never did was nudge me to re-read the things I'd flagged. So I wrote zotero-review-reminder, a small plugin that turns Zotero into a spaced-repetition study partner.

The problem

I read a paper, flag it for review, then... never look at it again. Self-discipline is a terrible reminder system. I wanted something that would:

  1. Pop a reminder on a schedule (every 7 days by default, at 09:00 — all configurable).
  2. Surface items whose Next Review Date has already passed.
  3. Let me update review-related dates in one click.
  4. Work in batches across many selected items.

How it works

  • Dates live in the item's Extra field as plain key: value lines — Next Review Date: 2026-08-28. No hidden database, no separate state. The data stays readable, editable, syncable, and survives export/migration.
  • The timer belongs to the plugin, not to whichever window happened to load first. This was a real bug: in multi-window Zotero, a timer bound to a window gets silently killed when that window closes. Owning it in onStartup and clearing it in onShutdown fixed it.
  • Day math is DST-safe: I compare dates as UTC calendar days (Date.UTC(y,m,d) / 86400000), so a 23-hour or 25-hour day doesn't shift a "due today" item by a day.
  • Reproducible build: python3 build.py produces a byte-identical .xpi (fixed timestamps, deterministic zip order) — nice for review and distribution.

Install

Grab the .xpi from the release page, then in Zotero: Tools → Plugins → ⚙️ → Install Plugin From File.

Works on Zotero 7/8/9. MIT licensed.

Repo: https://github.com/18126295767-cell/zotero-review-reminder

Feedback very welcome — v0.1.0.

Top comments (0)