A Kimi plugin for managing your Zotero library with full read and write access. Search, organize, edit, and export references, collections, notes, tags, and attachments through the Zotero Web API v3.
- ๐ Advanced search โ Search by title, author, content, tags, collections
- ๐ Collection management โ Create, rename, delete, and organize hierarchical collections
- ๐ Full item CRUD โ Create, read, update, and delete references of any type
- ๐ Notes & tags โ Add HTML notes and manage tags on any item
- ๐ค Citation export โ Export citations and bibliographies in BibTeX, RIS, CSL JSON, and more
- ๐ File attachments โ Upload PDFs and other files using Zotero's official two-step protocol
- ๐ฅ Group libraries โ Support for both personal and group Zotero libraries
Before installing, you need:
- Kimi Desktop installed on your computer
- A Zotero API key with read and write permissions
- Your Zotero User ID
- Go to https://www.zotero.org/settings/keys
- Sign in to your Zotero account
- Click "Create new private key"
- Enable these permissions:
- โ Allow library access
- โ Allow write access
- โ Allow notes access
- โ Allow file access
- Copy the generated API key (a long string like
AbC123XyZ...) - Your User ID is shown on the same page, below your username
Clone this repository to any folder on your computer.
git clone https://github.com/FlacH7/kimi-zotero-plugin.gitThis creates a kimi-zotero-plugin/ folder.
In a Kimi conversation, just ask:
"Register this local plugin in my personal market:
<absolute path to this repo>"
The agent validates and registers it. Then open Kimi's Plugins page โ ใไธชไบบใ (Personal) tab โ click ๏ผ on "Kimi-zotero-plugin". No restart needed.
Open a terminal and run the appropriate command for your OS:
Windows:
# Find your share directory
$share = "$env:APPDATA\kimi-desktop\daimon-share"
# If kimi-daimon is in your PATH
kimi-daimon kimi-plugin register-personal "C:\full\path\to\kimi-zotero-plugin" --share-dir "$share"
# If not, use the full path to the executable
& "$env:APPDATA\kimi-desktop\daimon-bundle\bin\kimi-daimon.cmd" kimi-plugin register-personal "C:\full\path\to\kimi-zotero-plugin" --share-dir "$share"macOS:
kimi-daimon kimi-plugin register-personal ~/path/to/kimi-zotero-plugin \
--share-dir ~/Library/Application\ Support/kimi-desktop/daimon-shareLinux:
kimi-daimon kimi-plugin register-personal ~/path/to/kimi-zotero-plugin \
--share-dir ~/.kimi/daimon-shareNote: If
kimi-daimonis not in your PATH, find it in your Kimi Desktop installation folder (typicallykimi-desktop/daimon-bundle/bin/).
- Open Kimi Desktop
- Go to the Plugins panel (ๆไปถ)
- Switch to the ใไธชไบบใ (Personal) tab
- Find "Kimi Zotero"
- Click the ๏ผ or ใๅฎ่ฃ ใ (Install) button
- Done! The plugin activates immediately โ no restart needed
Once the plugin is installed, you need to provide your API key and User ID. There are two ways to do this:
Set these environment variables on your system:
ZOTERO_API_KEY= your API keyZOTERO_USER_ID= your User ID
Windows (PowerShell):
[Environment]::SetEnvironmentVariable("ZOTERO_API_KEY", "YOUR_API_KEY_HERE", "User")
[Environment]::SetEnvironmentVariable("ZOTERO_USER_ID", "YOUR_USER_ID_HERE", "User")macOS/Linux (bash/zsh):
echo 'export ZOTERO_API_KEY="YOUR_API_KEY_HERE"' >> ~/.bashrc
echo 'export ZOTERO_USER_ID="YOUR_USER_ID_HERE"' >> ~/.bashrc
source ~/.bashrcIf you don't set environment variables, simply tell Kimi your API key when you want to use the plugin. Kimi will pass it as --api-key and --user-id arguments.
Security: Never hardcode your API key into plugin files. The client receives it as an argument or environment variable.
Once installed and configured, just tell Kimi in natural language what you want to do:
| Request | Action |
|---|---|
| "Search my Zotero for papers on machine learning" | Search your library |
| "List my Zotero collections" | Show all collections |
| "Create a collection called 'Thesis'" | New collection |
| "Export references ABC123 and DEF456 in BibTeX" | Export bibliography |
| "Add a note to paper XYZ789" | Create linked note |
| "Tag paper ABC as 'important'" | Add tags |
You can also use slash commands:
/zotero search machine learning/zotero recent/zotero collections
kimi-zotero-plugin/
โโโ kimi.plugin.json # Plugin manifest
โโโ scripts/
โ โโโ zotero_client.py # Zotero Web API v3 client (CRUD + export + upload)
โโโ skills/
โ โโโ kimi-zotero-plugin/
โ โโโ SKILL.md # Agent instructions & command reference
โโโ commands/
โโโ kimi-zotero-plugin.md # Slash command definitions
# Authentication
python3 scripts/zotero_client.py auth test --api-key <KEY> --user-id <ID>
# Collections
python3 scripts/zotero_client.py collections list
python3 scripts/zotero_client.py collections create --name "New Collection"
python3 scripts/zotero_client.py collections update --key <KEY> --name "New Name" --version <VER>
python3 scripts/zotero_client.py collections delete --key <KEY>
# Items
python3 scripts/zotero_client.py items list [--collection <KEY>]
python3 scripts/zotero_client.py items search --query "machine learning"
python3 scripts/zotero_client.py items create --data '{"itemType":"book","title":"..."}'
python3 scripts/zotero_client.py items update --key <KEY> --data '{...}' --version <VER>
python3 scripts/zotero_client.py items delete --key <KEY>
# Notes
python3 scripts/zotero_client.py notes create --content "<p>Note</p>" --parent <ITEM_KEY>
# Tags
python3 scripts/zotero_client.py tags list
python3 scripts/zotero_client.py tags add --key <ITEM_KEY> --tags tag1 tag2
# Export
python3 scripts/zotero_client.py export item --key <KEY> --format bib
python3 scripts/zotero_client.py export bibliography --keys "K1,K2" --format bib
# Templates
python3 scripts/zotero_client.py template get --item-type journalArticleAll commands support --api-key, --user-id, and optional --group-id.
Find the executable in your Kimi Desktop installation:
- Windows:
C:\Users\<USER>\AppData\Roaming\kimi-desktop\daimon-bundle\bin\kimi-daimon.cmd - macOS:
~/Library/Application Support/kimi-desktop/daimon-bundle/bin/kimi-daimon - Linux:
~/.kimi/daimon-bundle/bin/kimi-daimon
Make sure:
- The
register-personalcommand completed without errors - The
kimi-zotero-plugin/folder containskimi.plugin.json - Refresh the Plugins page (close and reopen)
Your API key is incorrect or lacks write permissions. Generate a new one at zotero.org/settings/keys with all permissions enabled.
Zotero uses optimistic versioning. The item was modified elsewhere between your read and write. Fetch the item again and retry with the latest version.
- Full CRUD for collections, items, notes, and tags
- Citation export in BibTeX, RIS, CSL JSON
- File attachment upload via Zotero's two-step protocol
- Group library support
- Slash commands (
/zotero)
MIT
Version: 0.1.0+local
Compatible with: Zotero Web API v3