zotero-upload

zotero-upload is a skill for Codex from frowang-ai/paper-agent-skills. It costs 66 tokens per session (1,314 once invoked), scanned A, original, MIT.

A workflow for finding research-paper PDFs in Zotero, a desktop and web tool for managing academic references, and uploading them to a remote paper library called Frowang.

In plain words
What is it for?
Use it to list Zotero collections, inspect their papers, run a dry-run upload, and incrementally transfer selected PDFs.
Why use it?
It provides checks for authentication, collection selection, local or remote access, and previewing uploads before anything is sent.

Skill for Codex

Written for Codex: agents/openai.yaml present.

Good fit Use it to list Zotero collections, inspect their papers, run a dry-run upload, and incrementally transfer selected PDFs.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/frowang-ai/paper-agent-skills/zotero-upload
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 frowang-ai/paper-agent-skills --skill zotero-upload
Clone the repo
git clone --depth 1 https://github.com/frowang-ai/paper-agent-skills

Made for: Codex.

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 zotero-upload

README.md
[![agentmods](https://agentmods.dev/badge/skills/frowang-ai/paper-agent-skills/zotero-upload/github.svg)](https://agentmods.dev/skills/frowang-ai/paper-agent-skills/zotero-upload)
Your own site
<a href="https://agentmods.dev/skills/frowang-ai/paper-agent-skills/zotero-upload"><img src="https://agentmods.dev/badge/skills/frowang-ai/paper-agent-skills/zotero-upload/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 zotero-upload

Your own site · 80×15
<a href="https://agentmods.dev/skills/frowang-ai/paper-agent-skills/zotero-upload"><img src="https://agentmods.dev/badge/skills/frowang-ai/paper-agent-skills/zotero-upload.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 66 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,314 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.00066 $0.01314
Opus 5 $0.00033 $0.00657
Sonnet 5 $0.00013 $0.00263
Haiku 4.5 $0.00007 $0.00131

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

Security

Grade A, and why

zotero-upload 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 4d 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/zotero-upload/SKILL.md · 134 lines

How it starts

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

Zotero Upload

使用稳定的 paper-agent zotero 命令把 Zotero 论文导入 Frowang。Skill 只编排命令,不能 直接读取 Zotero profile、.envsync_state.json 或调用 Skill 目录中的 Python 模块。

前置检查

paper-agent config init
paper-agent auth status
paper-agent doctor

doctor 输出中的 update 检查显示 update_available(或运行 paper-agent update check 确认),告知用户有新版本;经用户确认后执行 uv tool install paper-agent-skills --upgrade, 再运行 paper-agent skills update --platform all 刷新已安装 Skill,然后重跑用户原本的命令。

认证缺失时,请用户直接把 API Key 发过来,然后运行 paper-agent auth set --stdin 代为配置; 用户也可以自己在终端运行 paper-agent auth set 隐藏输入。提醒用户:该 Key 权限很高,可访问 和修改其整个论文库,不要泄露给他人。配置完成后无需复述 Key。

本地模式要求 Zotero 桌面端正在运行,并已允许本机应用访问本地 API。Frowang Key 使用 统一的 FROWANG_API_KEY 或用户级 credentials.env,不在本 Skill 中重复配置。

默认 profile 使用:

[profiles.default.zotero]
mode = "local"
library_type = "user"
library_id = "0"
storage_dir = ""

storage_dir 留空时,runtime 从 Zotero profiles.iniprefs.js 自动发现。只有自动发现 失败时才在 config.toml 设置明确路径,或对当前命令传 --storage-dir PATH

远程模式需要设置 mode = "remote"、正确的 library_id/library_type,并在用户级凭据中 配置 ZOTERO_API_KEY。本地失败不会静默 fallback 到远程模式。

发现 Collection

paper-agent zotero collections
paper-agent zotero items COLLECTION_KEY
paper-agent zotero items COLLECTION_KEY --recursive

先把 Collection 列表展示给用户,确认目标 key 后再预览上传。items 返回每篇论文的 item_key、attachment key、PDF 是否已经下载到本地,以及解析后的 PDF 路径。

上传 Collection

为用户挑选上传目标时,优先论文较少或最近有更新的 Collection;上传论文会消耗账号积分, 正式上传前用 dry-run 的数量向用户说明规模并取得明确同意。不要提议一次性同步整个 Zotero 库。

始终先 dry-run:

paper-agent zotero upload COLLECTION_KEY --dry-run

dry-run 不要求 Frowang Key,不创建远程 Collection,也不写同步状态。向用户报告:

  • Collection 数量和唯一论文数。
  • 待上传、已同步、缺少本地 PDF 的数量。
  • 一篇论文属于多个子 Collection 时的目标列表。

用户确认后正式执行:

paper-agent zotero upload COLLECTION_KEY
paper-agent zotero upload COLLECTION_KEY --name "Frowang Collection Name"

运行时会:

  1. 读取 Zotero Collection 树和本地附件。
  2. 从全局 SQLite state store 跳过已同步 item。
  3. 复用已记录的 Frowang Collection 映射,避免重复创建目录树。
  4. 同一 Zotero item 即使属于多个 Collection,也只上传一次。
  5. 将返回的 task_id 加入所有对应 Frowang Collection。
  6. 逐项记录成功、重复、缺少 PDF、membership error 和上传错误。

Read the full file on GitHub · 134 lines

Files

What ships with it

2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 4d ago Changed · +8 lines 1e13733eaa3f
  2. 12d ago First seen · 126 lines · 66 tokens per session scan A 9ea93bad6796

Subscribe to this mod's changes

zotero-upload is a skill published in the GitHub repository frowang-ai/paper-agent-skills (3 stars, last pushed 5d ago), licensed MIT. It adds 66 tokens to every session and 1,314 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