A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
CLI & MCP server for EndNote .enl libraries via SQLite
English | 中文
CLI for reading, searching, writing, and exporting EndNote .enl libraries via direct SQLite access.
.enl files.enl files)# Core CLI
pip install endnote-cli
# With semantic search (sentence-transformers)
pip install 'endnote-cli[semantic]'
# Everything
pip install 'endnote-cli[all]'
# Point to the directory containing your .enl files
endnote-cli library set-dir "C:/Users/You/Documents/EndNote"
# Set the default library
endnote-cli library set-default MyLibrary.enl
# Verify connectivity and see library stats
endnote-cli app ping
endnote-cli app info
| Command | Subcommands | Description |
|---|---|---|
app | ping, info | Check connectivity and library summary |
item | list, get, count, groups | List, inspect, count references; show a ref's group membership |
group | list, tree, show | Browse groups and group-set hierarchy |
tag | list, show | Browse color tags and tagged references |
search | quick, advanced | Full-text and multi-field boolean search |
export | bibtex, ris, json, csv, xml, pdf, citation | Export in various formats |
write | note, keyword, status, rating, label, tag, journal-tags, field, attach, clear, rename-pdf | Write to safe fields, manage attachments, auto-tag by journal zone |
library | list, info, set-default, set-dir | Manage multiple libraries |
Run endnote-cli <command> --help for detailed usage of any command.
# Search for papers about "knowledge graph"
endnote-cli search quick "knowledge graph"
# Advanced search: title contains "RAG" AND year >= 2025
endnote-cli search advanced \
-f title -o contains -v "RAG" \
-f year -o gte -v "2025" --bool and
# Show group hierarchy (GroupSet -> Groups)
endnote-cli group tree
# Show all groups a reference belongs to (path format: GroupSet/Group)
endnote-cli item groups 6
endnote-cli item groups 6 --json # machine-readable
# Export a group as BibTeX
endnote-cli export bibtex --group "RAG" -o rag_papers.bib
# Batch rename PDFs to Author_Year_Title.pdf format (dry run first)
endnote-cli write rename-pdf --all --dry-run
endnote-cli write rename-pdf --all
# Add a color tag to all arXiv papers
endnote-cli write tag 296 6
# Auto-tag every ref with its CAS zone (新锐N区 / N区25年 / 预印本)
endnote-cli write journal-tags --dry-run # preview the plan
endnote-cli write journal-tags # apply
# Fill the Translated Title field
endnote-cli write field 179 translated_title "肠道菌群与肺部疾病的文献计量分析"
# Write review notes back to EndNote
endnote-cli write note 296 my_review.md
# Export a group set as hierarchical XML files
endnote-cli export xml --group-set "Medical Cases"
endnote-cli write journal-tags tags every reference with color-coded
zone labels based on its journal. Tags applied per ref:
| Tag | Source | Color |
|---|---|---|
新锐N区 | 新锐期刊分区表 2026 (XR2026) | red/orange/green/gray for N=1/2/3/4 |
N区25年 | 中科院分区表升级版 2025 (FQBJCR2025) | same color scheme |
预印本 | journal name contains arxiv | gray |
Matching order: ISSN first (EndNote's isbn field), then normalized journal
name. Chinese-only journals and conference proceedings are skipped — they're
outside the CAS scope.
# Preview — no writes
endnote-cli write journal-tags --dry-run
# Apply
endnote-cli write journal-tags
# Scope to a group
endnote-cli write journal-tags --group "RAG"
# Re-download the source data and re-tag everything
endnote-cli write journal-tags --refresh-data --refresh
Ranking data is fetched from hitfyd/ShowJCR
on first use and cached under ~/.endnote-cli/jcr_cache/.
This repo ships a Claude Code skill at .claude/skills/endnote-cli/SKILL.md. Once registered, Claude Code automatically loads it when you mention EndNote, .enl, BibTeX export, etc.
Register the skill (symlink keeps it in sync with repo updates):
# Linux / macOS
ln -s "$(pwd)/.claude/skills/endnote-cli" ~/.claude/skills/endnote-cli
# Windows (PowerShell, run as Administrator)
New-Item -ItemType SymbolicLink `
-Path "$HOME\.claude\skills\endnote-cli" `
-Target "$(Get-Location)\.claude\skills\endnote-cli"
If you'd rather not symlink, just copy the folder:
cp -r .claude/skills/endnote-cli ~/.claude/skills/
Verify by running /help in Claude Code — endnote-cli should appear in the skills list.
EndNote .enl files are SQLite 3.x databases (undocumented by Clarivate). However, EndNote maintains two copies of the database:
MyLibrary.enl -- the file users seeMyLibrary.Data/sdb/sdb.eni -- an internal mirror with the same schemaAt runtime, EndNote reads from sdb.eni. All write operations must update both databases to keep them in sync. endnote-cli handles this transparently.
groups table (spec column, XML blob with name + UUID); GroupSet → child group hierarchy lives in misc table code=17 (one row per GroupSet, XML blob whose <member> tags list child group UUIDs). The legacy misc code=4 (space-separated group_id set_id pairs) only contains a stale subset and should not be relied on for hierarchytag_groups (XML blob with color hex) and tag_members (FTS5 virtual table with space-separated IDs)\r (carriage return) as the separatorrefs table has triggers that call EN_MAKE_SORT_KEY, a custom SQLite function only available inside the EndNote application -- this means direct INSERT into refs is not safeThe following fields can be safely updated without triggering internal triggers:
research_notes, notes, keywords, read_status, rating, label, caption, custom_1 through custom_7, translated_title, translated_author
refs table uses triggers with a custom SQLite function (EN_MAKE_SORT_KEY) that only exists inside the EndNote runtime. Only UPDATE of safe fields is supported.| EndNote Version | OS | Status |
|---|---|---|
| EndNote 21 | Windows 11 | Fully tested |
| EndNote 20 | Windows 10/11 | Should work (same .enl format) |
Other versions using .enl SQLite format may also work. Contributions and test reports welcome.
Contributions are welcome! Please open an issue or pull request.
If you discover additional .enl schema details (new table structures, field meanings, etc.), please share -- this project is built on reverse-engineered knowledge and community contributions make it better for everyone.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba