Annota — AI 驱动的论文标注助手
将你的 PDF 文献库变成智能研究助手。
AI 可以阅读你的论文、高亮关键发现、解释公式并撰写结构化笔记——所有内容都会保存回你的文献管理软件中。
👁 License: MIT
👁 Python 3.10+
👁 MCP
👁 Platform
功能特性 · 快速入门 · 使用示例 · 截图展示 · 路线图
它能做什么?
你说... | AI 执行... |
"高亮摘要中的发现结果" | 阅读摘要,识别发现,并以绿色高亮显示 |
"解释第3页的公式" | 提取公式,并以注释形式添加解释 |
"写一份结构化阅读笔记" | 生成包含贡献、方法、结果、局限性的笔记,并保存到你的文献库 |
"以 MICRO 审稿人视角审阅" | 生成包含评分和可操作反馈的结构化审稿意见 |
AI 阅读论文 → 理解内容 → 创建精确标注
AI 生成包含关键发现、方法和结论的结构化阅读总结
Related MCP server: Zotero MCP Server
✨ 功能特性
9 个 MCP 工具
工具 | 功能 |
| 按标题/作者/关键词搜索 |
| 浏览最近的条目 |
| 获取作者、年份、期刊、DOI |
| 提取全文(无坐标,速度快) |
| 提取文本 + 精确坐标 |
| 查看现有标注 |
| 创建高亮/下划线 |
| 批量创建标注 |
| 为任何条目添加笔记 |
3 个 Claude Code 技能(斜杠命令)
命令 | 功能 |
| 带有语义颜色编码的智能标注 |
| 保存到文献库的结构化阅读笔记 |
| 带有评分标准的模拟同行评审 |
智能设计
两阶段工作流 — 先读取全文(低成本),然后仅获取目标句子的坐标(精确)。减少 63%–80% 的上下文占用。
自动跳过参考文献 — 检测并跳过“References”部分。一篇 21 页的论文仅需提取 13 页。
批量标注 — 1 次 API 调用即可创建 10 个高亮,无需调用 10 次。
友好的错误提示 — 写入失败时会返回有用的提示信息,而不是直接崩溃。
🚀 快速入门 (3 分钟)
第 1 步:克隆并安装
git clone https://github.com/dengls24/annota.git
cd annota
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
# source .venv/bin/activate
pip install pymupdf mcp第 2 步:配置 Claude Code
添加到 ~/.claude.json(或通过 Claude Code 设置 > MCP Servers):
Windows:
{
"mcpServers": {
"annota": {
"command": "C:/path/to/annota/.venv/Scripts/python.exe",
"args": ["C:/path/to/annota/annota/server.py"],
"env": {
"ZOTERO_DATA_DIR": "C:/Users/YourName/Zotero"
}
}
}
}macOS / Linux:
{
"mcpServers": {
"annota": {
"command": "/path/to/annota/.venv/bin/python",
"args": ["/path/to/annota/annota/server.py"],
"env": {
"ZOTERO_DATA_DIR": "/Users/YourName/Zotero"
}
}
}
}查找你的 Zotero 数据目录:
Windows: Zotero → 编辑 → 首选项 → 高级 → 数据存储位置 (默认:
C:\Users\YourName\Zotero)macOS: Zotero → 设置 → 高级 → 数据存储位置 (默认:
~/Zotero)Linux: 默认
~/Zotero
第 3 步:使用它
像平时一样与 Claude 对话:
# One command to read a full paper:
/annota-read "path/to/paper.pdf"
# Or natural language:
# Highlight the findings in this paper's abstract in green
"/Users/yourname/Zotero/storage/ABCD1234/paper.pdf"或者使用斜杠命令:
/annota-read "path/to/paper.pdf"
/annota-annotate "path/to/paper.pdf"
/annota-summarize "path/to/paper.pdf"
/annota-review "path/to/paper.pdf" ISCAmacOS 路径提示: 将文件从 Finder 拖入终端以获取完整路径,或右键点击 → “拷贝为路径名称”。
(可选) 全局安装技能
# Make skills available in all projects
cp -r .claude/skills/ ~/.claude/skills/📖 使用示例
示例 1:高亮关键发现
输入:
把这篇论文摘要中的发现结果用绿色标出来
(Highlight the findings in this paper's abstract in green)
"E:\Zotero\storage\ABCD1234\Song et al. - 2025 - AI washing.pdf"结果:
AI 识别摘要中的发现并以绿色高亮显示
示例 2:标注假设与理论
输入:
标注论文中的假设(H1, H2),并用中文解释每个假设的理论基础
(Annotate the hypotheses (H1, H2) and explain the theoretical basis of each in Chinese)结果:
假设以黄色高亮显示,并附带底层理论的中文解释笔记
示例 3:解释公式
输入:
解释论文中的核心公式,添加中文注释
(Explain the key formulas in this paper, add Chinese annotations)结果:
DID 模型公式被标注,并附带中文变量解释
示例 4:政策启示与结论笔记
输入:
标注结论部分的政策启示,添加中文总结笔记
(Highlight policy implications in the conclusion, add a Chinese summary note)结果:
结论被高亮显示,并附带结构化的政策启示笔记
示例 5:全文阅读笔记
输入:
/annota-summarize "path/to/paper.pdf"结果:
AI 生成完整的阅读总结:主题、研究问题、方法、关键发现和启示
示例 6:详细的逐段笔记
输入:
逐段阅读这篇论文,为每个重要段落添加中文批注
(Read this paper paragraph by paragraph, add Chinese annotations to each important section)结果:
每个重要段落都会获得一个解释内容的中文标注
示例 7:AI 工作流实操
这是 Claude Code 处理论文时的样子:
Claude 创建任务列表、阅读 PDF,并逐步调用 MCP 工具创建标注
🎨 颜色约定
颜色 | 代码 | 用途 |
🟡 黄色 |
| 默认 / 常规高亮 |
🟢 绿色 |
| 结果、发现、数据 |
🔵 蓝色 |
| 方法、定义、算法 |
🔴 红色 |
| 局限性、问题、缺陷 |
🟣 紫色 |
| 贡献、创新点 |
⚡ 如何处理大型 PDF
对于超过 10 页的论文,采用两阶段工作流以避免上下文溢出:
Phase 1 — Understand (lightweight)
get_pdf_text_bulk(pdf, skip_refs=True)
→ Full text without coordinates
→ AI identifies which sentences to annotate
Phase 2 — Annotate (precise)
get_pdf_layout_text(pdf, target_page_only)
→ Coordinates for 1–2 target pages
batch_annotate(pdf, all_annotations)
→ Write everything in one call实际性能:
论文 | 页数 | 旧方法 | 新方法 | 节省 |
会议论文 | 2 页 | 41 KB 坐标 | 15 KB 文本 | 63% |
期刊文章 | 21 页 | 提取 21 页 | 13 页 (第 13 页跳过参考文献) | 38% |
综述论文 | 19 页 | 提取 19 页 | 10 页 (第 10 页跳过参考文献) | 47% |
📁 项目结构
annota/
├── annota/ # MCP Server (Python)
│ ├── server.py # 9 tool registrations
│ ├── zotero_db.py # SQLite read/write layer
│ ├── pdf_tools.py # PyMuPDF text extraction
│ └── config.py # Constants & configuration
├── .claude/skills/ # Claude Code Skills
│ ├── annota-annotate/SKILL.md # /annota-annotate
│ ├── annota-summarize/SKILL.md # /annota-summarize
│ └── annota-review/SKILL.md # /annota-review
├── docs/ # Design documents
│ ├── annota-guide.md # Usage guide (CN)
│ ├── large-pdf-design.md # Large PDF handling design
│ ├── dev-notes.md # Pitfalls & solutions
│ └── commercial-plan.md # Commercialization plan
├── assets/ # Screenshots
└── README.md⚠️ 已知局限与免责声明
数据库直接访问:Annota 直接将标注写入 Zotero 的 SQLite 数据库,这绕过了 Zotero 的内部一致性机制。这是一种设计选择,旨在实现完全离线、本地优先的标注工作流,而不依赖外部服务。用户需自行负责数据库安全——请在使用前备份你的
zotero.sqlite。我们计划在未来版本中迁移到官方的 Zotero Web API / Local API。
局限性 | 变通方法 | 计划修复 |
直接写入 SQLite (非官方支持) | 使用前备份数据库 | 迁移至 Zotero Local API / Web API |
写入操作需关闭 Zotero | 标注前关闭 Zotero | 本地 API 桥接 |
参考文献检测基于启发式 | 如有需要,传入 | 改进启发式算法 |
主要在 Windows 上测试 | 应可在 macOS/Linux 上运行 — 路径自动检测 | 欢迎社区测试 |
🗺 路线图
[ ] Zotero Local API / Web API — 从直接 SQLite 迁移到官方 API 以实现更安全的写入
[ ] 更多技能 —
/compare-papers(对比论文),/extract-tables(提取表格),/literature-map(文献地图)[ ] 提示词模板市场 — 分享和复用标注规则
[ ] 团队功能 — 实验室小组共享标注标准
[ ] 多后端支持 — 支持 Adobe Acrobat, Endnote 及其他 PDF 工具
🤝 贡献
欢迎提交 Issue 和 PR!如果你有关于新技能或工具的想法,请开启一个 Issue。
📄 许可证
MIT — 可自由用于研究和商业项目。
基于 MCP + Claude Code 构建
如果本项目对你的研究有帮助,请考虑给它一个 ⭐
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dengls24/annota'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
