enrich-zotero-abstracts

enrich-zotero-abstracts is a skill for Claude Code from benjibromberg/zotero-context. It costs 60 tokens per session (848 once invoked), scanned A, original, MIT.

A Zotero maintenance task that finds research items with missing or very short abstracts and suggests fuller abstract text. An abstract is a brief summary of a research paper.

In plain words
What is it for?
Use it to review candidate abstracts, approve replacements, and write the approved text back to Zotero with a record of the update.
Why use it?
It helps make a research library easier to search when important summary information is missing.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the zotero-context plugin — 2 skills shipped together

Good fit Use it to review candidate abstracts, approve replacements, and write the approved text back to Zotero with a record of the update.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/benjibromberg/zotero-context/enrich-zotero-abstracts
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add benjibromberg/zotero-context --skill enrich-zotero-abstracts
Clone the repo
git clone --depth 1 https://github.com/benjibromberg/zotero-context

Made for: Claude Code.

Or install zotero-context, the plugin that ships this one along with the rest of its 2 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for enrich-zotero-abstracts

README.md
[![agentmods](https://agentmods.dev/badge/skills/benjibromberg/zotero-context/enrich-zotero-abstracts/github.svg)](https://agentmods.dev/skills/benjibromberg/zotero-context/enrich-zotero-abstracts)
Your own site
<a href="https://agentmods.dev/skills/benjibromberg/zotero-context/enrich-zotero-abstracts"><img src="https://agentmods.dev/badge/skills/benjibromberg/zotero-context/enrich-zotero-abstracts/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for enrich-zotero-abstracts

Your own site · 80×15
<a href="https://agentmods.dev/skills/benjibromberg/zotero-context/enrich-zotero-abstracts"><img src="https://agentmods.dev/badge/skills/benjibromberg/zotero-context/enrich-zotero-abstracts.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 60 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 848 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00060 $0.00848
Opus 5 $0.00030 $0.00424
Sonnet 5 $0.00012 $0.00170
Haiku 4.5 $0.00006 $0.00085

Measured 12d ago against content hash dc4a76361e0c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

enrich-zotero-abstracts scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/enrich-zotero-abstracts/SKILL.md · 98 lines

How it starts

The opening of the file, as written. The whole thing — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Enrich Zotero Abstracts

Overview

Find Zotero items with empty or short abstracts in the configured libraries, web-search for plausible abstract content, present each candidate to the user for approval, and write back to Zotero with version-conflict protection. Items updated this way receive a claude-enriched-YYYY-MM-DD tag for traceability.

When to Use

  • User says "fix abstracts", "fill missing abstracts", "/zotero-context:enrich-zotero-abstracts"
  • User wants to make a library more useful for downstream search

Prerequisites

  • /zotero-context:setup-zotero-references has been run in this repo (.zotero-context/config.json exists).
  • ZOTERO_API_KEY with write scope is set in .env — the local Zotero API is read-only for item modification.

Workflow

Step 1: List candidates

.zotero-context/bin/search_items.py --no-abstract --limit 50 --output summary

This returns items where abstractNote is missing or shorter than 50 characters, as a JSON summary with title, creators, year, DOI, url, abstract, and tags fields.

Step 2: For each candidate (one at a time)

Show the user:

Title: <title>
Authors: <creators>
Year: <year>
DOI/URL: <doi or url>
Current abstract: <abstractNote, "(empty)" if blank>

Search the web for an abstract? [y/n/skip-rest]

If yes, web-search using DOI > URL > "title authors year" as the anchor. Quote a candidate abstract back to the user (clearly attributed to the source).

Proposed abstract (from <source URL>):

<text>

Apply this to the Zotero item? [y/edit/n]

If edit, let the user revise inline. If y, proceed to Step 3.

Step 3: Apply

.zotero-context/bin/enrich_abstract.py \
    --key <key> \
    --abstract "<text>" \
    --lib <library id> \
    --type {user|group}

Watch for the result:

  • {"status":"ok",...} — success.
  • {"status":"conflict",...} — the item changed in Zotero between scan and PATCH. Refetch and ask the user whether to retry with the latest data.

Read the full file on GitHub · 98 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 98 lines · 60 tokens per session scan A dc4a76361e0c

Subscribe to this mod's changes

enrich-zotero-abstracts is a skill published in the GitHub repository benjibromberg/zotero-context (1 stars, last pushed 4mo ago), licensed MIT. It adds 60 tokens to every session and 848 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

meta-tags-optimizer

Optimize title tags, meta descriptions, Open Graph, and Twitter cards for maximum click-through rate. Generates multiple A/B test variations with character counting and SERP preview. Use when asked to "optimize title tag", "write meta description", "improve CTR", "Open Graph tags", "fix my meta tags", "social media…

nowork-studio/notfair-plugin · 91 tokens

google-ads-audit

Google Ads account audit and business context setup. Use for account-health audits and business-context setup. Trigger on "audit my ads", "ads audit", "set up my ads", "onboard", "account overview", "how's my account", "ads health check", "what should I fix in my ads", or when the user is new to NotFair and hasn't run…

nowork-studio/notfair-plugin · 86 tokens

sxo

Search Experience Optimization (SXO) — the bridge between SEO and UX/CRO. Audits the full journey from the SERP click to the on-page goal: SERP click-through factors (title/meta/rich results that win the click), then post-click experience signals that keep users and drive conversions — above-the-fold relevance and…

nowork-studio/notfair-plugin · 235 tokens

critical-code-reviewer

Rigorously review code or pull requests for correctness, security, accessibility, maintainability, tests, and edge cases. Use when users request a critical code review, want a guided walkthrough of findings, need implementer-facing feedback, or want to prepare, create, or submit a GitHub pull request review.

posit-dev/skills · 67 tokens

shiny-bslib

Build modern Shiny dashboards and applications using bslib (Bootstrap 5). Use when creating new Shiny apps, modernizing legacy apps (fluidPage, fluidRow/column, tabsetPanel, wellPanel, shinythemes), or working with bslib page layouts, grid systems, cards, value boxes, navigation, sidebars, filling layouts, theming…

posit-dev/skills · 107 tokens

elixir-idioms

OTP/BEAM patterns and Elixir idioms — GenServer, Supervisor, Task, Registry, pattern matching, with chains, pipes. Use when designing processes or debugging BEAM issues.

oliver-kriska/claude-elixir-phoenix · 44 tokens