Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
shoei05 avatar

Zotero

  • 231 installs
  • 12 repo stars
  • Updated February 12, 2026
  • shoei05/claude-code-zotero-skill

Helps with ai & agent building tasks.

About

zotero is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.

  • zotero
  • AI & Agent Building
  • AI-coding skill

Zotero by the numbers

  • 231 all-time installs (skills.sh)
  • +7 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #2,689 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/shoei05/claude-code-zotero-skill --skill zotero

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs231
repo stars12
Last updatedFebruary 12, 2026
Repositoryshoei05/claude-code-zotero-skill

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Zotero API Skill

Zotero のローカル HTTP サーバー(localhost:23119)および REST API(api.zotero.org)経由で文献管理操作を行う。

前提条件

ローカル API(Zotero 起動中のみ)

Zotero が起動中で、以下の設定が有効であること:

  • Zotero > 環境設定 > 詳細 > 「Allow other applications on this computer to communicate with Zotero」にチェック

接続確認:

curl -s http://localhost:23119/connector/ping

REST API(クラウド操作)

環境変数が設定されていること:

  • ZOTERO_API_KEY: API キー(https://www.zotero.org/settings/keys で作成)
  • ZOTERO_USER_ID: ユーザー ID

接続確認:

curl -s -H "Zotero-API-Key: $ZOTERO_API_KEY" "https://api.zotero.org/keys/current"

コマンド

1. DOI 一括インポート (/zotero import)

/zotero import <DOI1> <DOI2> ...
/zotero import --file <doi_list.txt>
/zotero import --collection "コレクション名"

インポートスクリプト:

bash ~/.claude/skills/zotero/scripts/zotero_import.sh --dois "10.1038/xxx,10.2196/yyy" [--collection "名前"]

処理フロー: 1. Zotero 起動確認(/connector/ping) 2. 対象コレクション特定(指定なければ現在選択中を使用) 3. 各 DOI → doi.org から BibTeX 取得(失敗時 CrossRef フォールバック) 4. /connector/import?session=<unique_id> に POST 5. 結果サマリー表示

2. 手動 BibTeX インポート (/zotero bibtex)

DOI のない文献用。BibTeX ファイルを直接インポート:

bash ~/.claude/skills/zotero/scripts/zotero_import.sh --bibtex /path/to/file.bib

DOI 不明時は CrossRef API で検索:

curl -s "https://api.crossref.org/works?query.bibliographic=著者名+キーワード&rows=5"

3. コレクション一覧 (/zotero collections)

curl -s http://localhost:23119/api/users/0/collections | python3 -c "
import json, sys
for c in json.load(sys.stdin):
    d = c['data']
    print(f\"{d['key']}  {d['name']}\")"

4. アイテム一覧 (/zotero list)

/zotero list                          # 現在選択中コレクション
/zotero list --collection "名前"      # 指定コレクション

5. アイテム検索 (/zotero search)

/zotero search "AI psychosis"

REST API 操作

コレクション作成

curl -s -X POST \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/collections" \
  -d '[{"name": "コレクション名"}]'

コレクション更新

curl -s -X PUT \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "If-Unmodified-Since-Version: $VERSION" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/collections/COLLECTION_KEY" \
  -d '{"name": "新しい名前"}'

アイテム作成(最大50件/リクエスト)

curl -s -X POST \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/items" \
  -d '[{
    "itemType": "journalArticle",
    "title": "タイトル",
    "creators": [{"creatorType": "author", "firstName": "名", "lastName": "姓"}],
    "collections": ["COLLECTION_KEY"],
    "tags": [{"tag": "タグ名"}]
  }]'

アイテム部分更新(PATCH)

curl -s -X PATCH \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "If-Unmodified-Since-Version: $VERSION" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/items/ITEM_KEY" \
  -d '{"tags": [{"tag": "new-tag"}]}'

アイテム削除

curl -s -X DELETE \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "If-Unmodified-Since-Version: $VERSION" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/items/ITEM_KEY"

タグ一括削除

curl -s -X DELETE \
  -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  -H "If-Unmodified-Since-Version: $VERSION" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/tags?tag=tag1+||+tag2"

グループライブラリ

すべてのエンドポイントは /users/<userID>/groups/<groupID> に置き換えるだけ。

# 所属グループ一覧
curl -s -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/groups"

検索(REST API)

# キーワード検索
curl -s -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/items?q=keyword&qmode=titleCreatorYear"

# タグフィルタ(AND: 複数 tag、OR: || 区切り、NOT: - 接頭辞)
curl -s -H "Zotero-API-Key: $ZOTERO_API_KEY" \
  "https://api.zotero.org/users/$ZOTERO_USER_ID/items?tag=AI&tag=review"

API 概要

ローカル API

エンドポイントメソッド用途
/connector/pingGET/POST起動確認
/connector/import?session=IDPOSTBibTeX/RIS インポート
/connector/getSelectedCollectionPOST選択中コレクション
/api/users/0/collectionsGETコレクション一覧
/api/users/0/collections/:key/itemsGETアイテム一覧
/api/users/0/itemsGET全アイテム

REST API (api.zotero.org)

エンドポイントメソッド用途
/users/<id>/collectionsGET/POSTコレクション一覧/作成
/users/<id>/collections/<key>PUT/DELETEコレクション更新/削除
/users/<id>/itemsGET/POSTアイテム一覧/作成(最大50件)
/users/<id>/items/<key>PUT/PATCH/DELETEアイテム更新/削除
/users/<id>/tagsGETタグ一覧
/users/<id>/tags?tag=...DELETEタグ一括削除
/users/<id>/searchesGET/POST保存済み検索
/users/<id>/items/<key>/fileGET/POST/PATCH添付ファイル
/users/<id>/groupsGETグループ一覧
/groups/<id>/...各種グループ操作

詳細: references/api-endpoints.md

重要な注意点

ローカル API

  • Local API (`/api/...`) は GET のみ(読み取り専用)
  • Connector API (`/connector/...`) は POST で読み書き可能
  • /connector/importsession パラメータは毎回ユニークにする(重複で 409 エラー)
  • BibTeX にシェル特殊文字がある場合は --data-binary @file.bib でファイル経由送信
  • インポート先は Zotero UI で選択中のコレクション に保存される

REST API

  • 認証: Zotero-API-Key: <key> ヘッダー(推奨)
  • 更新/削除時は If-Unmodified-Since-Version: <version> が必須(未指定 → 428)
  • バッチ上限: 最大 50 件/リクエスト
  • レートリミット: Backoff / 429 + Retry-After ベース
  • 重複送信防止: Zotero-Write-Token: <token> ヘッダー

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.