Annota — Asistente de anotación de documentos impulsado por IA
Convierte tu biblioteca de PDF en un asistente de investigación inteligente.
La IA lee tus documentos, resalta los hallazgos clave, explica fórmulas y escribe notas estructuradas, todo guardado directamente en tu gestor de referencias.
👁 License: MIT
👁 Python 3.10+
👁 MCP
👁 Platform
Características · Inicio rápido · Ejemplos de uso · Capturas de pantalla · Hoja de ruta
¿Qué puede hacer?
Tú dices... | La IA hace... |
"高亮摘要中的发现结果" (Resalta los hallazgos en el resumen) | Lee el resumen, identifica los hallazgos y los resalta en verde |
"解释第3页的公式" (Explica las fórmulas de la página 3) | Extrae la fórmula y añade una explicación como nota de anotación |
"写一份结构化阅读笔记" (Escribe una nota de lectura estructurada) | Genera una nota con contribuciones, métodos, resultados y limitaciones, guardada en tu biblioteca |
"以 MICRO 审稿人视角审阅" (Revisa como un revisor de MICRO) | Produce una revisión estructurada con puntuaciones y comentarios accionables |
La IA lee el documento → comprende el contenido → crea anotaciones precisas
La IA genera un resumen de lectura estructurado con hallazgos clave, métodos y conclusiones
Related MCP server: Zotero MCP Server
✨ Características
9 herramientas MCP
Herramienta | Qué hace |
| Busca por título / autor / clave |
| Explora elementos recientes |
| Obtiene autores, año, lugar, DOI |
| Extrae texto completo (sin coordenadas, rápido) |
| Extrae texto + coordenadas precisas |
| Ve las anotaciones existentes |
| Crea resaltados / subrayados |
| Crea múltiples anotaciones a la vez |
| Añade una nota a cualquier elemento |
3 habilidades de Claude Code (comandos de barra)
Comando | Función |
| Anotación inteligente con codificación de color semántica |
| Notas de lectura estructuradas guardadas en tu biblioteca |
| Revisión por pares simulada con rúbrica de puntuación |
Diseño inteligente
Flujo de trabajo de dos fases — Lee el texto completo primero (económico), luego solo obtiene coordenadas para las oraciones objetivo (preciso). Reduce el uso de contexto en un 63–80%.
Salto automático de referencias — Detecta la sección de "Referencias" y la omite. Un documento de 21 páginas extrae solo 13 páginas.
Anotaciones por lotes — Crea 10 resaltados en 1 llamada a la API en lugar de 10.
Errores amigables — Los fallos de escritura devuelven mensajes útiles en lugar de bloquearse.
🚀 Inicio rápido (3 minutos)
Paso 1: Clonar e instalar
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 mcpPaso 2: Configurar Claude Code
Añadir a ~/.claude.json (o a través de la configuración de Claude Code > Servidores MCP):
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"
}
}
}
}Encontrar tu directorio de datos de Zotero:
Windows: Zotero → Editar → Ajustes → Avanzado → Ubicación del directorio de datos (predeterminado:
C:\Users\TuNombre\Zotero)macOS: Zotero → Ajustes → Avanzado → Ubicación del directorio de datos (predeterminado:
~/Zotero)Linux: predeterminado
~/Zotero
Paso 3: Usarlo
Simplemente habla con Claude de forma natural:
# 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"O usa comandos de barra:
/annota-read "path/to/paper.pdf"
/annota-annotate "path/to/paper.pdf"
/annota-summarize "path/to/paper.pdf"
/annota-review "path/to/paper.pdf" ISCAConsejo de ruta en macOS: Arrastra un archivo desde Finder al terminal para obtener su ruta completa, o haz clic derecho → "Copiar como nombre de ruta".
(Opcional) Instalar habilidades globalmente
# Make skills available in all projects
cp -r .claude/skills/ ~/.claude/skills/📖 Ejemplos de uso
Ejemplo 1: Resaltar hallazgos clave
Entrada:
把这篇论文摘要中的发现结果用绿色标出来
(Highlight the findings in this paper's abstract in green)
"E:\Zotero\storage\ABCD1234\Song et al. - 2025 - AI washing.pdf"Resultado:
La IA identifica los hallazgos en el resumen y los resalta en verde
Ejemplo 2: Anotar hipótesis y teorías
Entrada:
标注论文中的假设(H1, H2),并用中文解释每个假设的理论基础
(Annotate the hypotheses (H1, H2) and explain the theoretical basis of each in Chinese)Resultado:
Hipótesis resaltadas en amarillo, con notas de explicación en chino para la teoría subyacente
Ejemplo 3: Explicar fórmulas
Entrada:
解释论文中的核心公式,添加中文注释
(Explain the key formulas in this paper, add Chinese annotations)Resultado:
Fórmula del modelo DID anotada con explicaciones de variables en chino
Ejemplo 4: Implicaciones políticas y notas de conclusión
Entrada:
标注结论部分的政策启示,添加中文总结笔记
(Highlight policy implications in the conclusion, add a Chinese summary note)Resultado:
Conclusión resaltada con una nota estructurada de implicaciones políticas
Ejemplo 5: Notas de lectura de documento completo
Entrada:
/annota-summarize "path/to/paper.pdf"Resultado:
La IA genera un resumen de lectura completo: tema, pregunta de investigación, método, hallazgos clave e implicaciones
Ejemplo 6: Notas detalladas párrafo por párrafo
Entrada:
逐段阅读这篇论文,为每个重要段落添加中文批注
(Read this paper paragraph by paragraph, add Chinese annotations to each important section)Resultado:
Cada párrafo importante obtiene una anotación en chino explicando el contenido
Ejemplo 7: El flujo de trabajo de IA en acción
Así es como se ve Claude Code al procesar un documento:
Claude crea una lista de tareas, lee el PDF y llama a las herramientas MCP para crear anotaciones paso a paso
🎨 Convención de colores
Color | Código | Uso para |
🟡 Amarillo |
| Predeterminado / resaltados generales |
🟢 Verde |
| Resultados, hallazgos, datos |
🔵 Azul |
| Métodos, definiciones, algoritmos |
🔴 Rojo |
| Limitaciones, problemas |
🟣 Púrpura |
| Contribuciones, novedad |
⚡ Cómo maneja PDFs grandes
Para documentos de más de 10 páginas, un flujo de trabajo de dos fases evita el desbordamiento de contexto:
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 callRendimiento en el mundo real:
Documento | Páginas | Enfoque antiguo | Enfoque nuevo | Ahorro |
Documento de conferencia | 2 páginas | 41 KB coords | 15 KB texto | 63% |
Artículo de revista | 21 páginas | 21 páginas extraídas | 13 páginas (refs omitidas en p.13) | 38% |
Documento de encuesta | 19 páginas | 19 páginas extraídas | 10 páginas (refs omitidas en p.10) | 47% |
📁 Estructura del proyecto
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⚠️ Limitaciones conocidas y descargo de responsabilidad
Acceso directo a la base de datos: Annota escribe anotaciones directamente en la base de datos SQLite de Zotero, lo cual evita los mecanismos de consistencia interna de Zotero. Esta es una elección de diseño para permitir flujos de trabajo de anotación totalmente fuera de línea y locales sin depender de servicios externos. Los usuarios son responsables de su propia base de datos — por favor, haz una copia de seguridad de tu
zotero.sqliteantes de usarlo. Planeamos migrar a la API web oficial de Zotero / API local en versiones futuras.
Limitación | Solución alternativa | Corrección planificada |
Escritura directa en SQLite (no soportada oficialmente) | Haz una copia de seguridad de tu base de datos antes de usar | Migrar a API local de Zotero / API web |
Las operaciones de escritura requieren que Zotero esté cerrado | Cierra Zotero antes de anotar | Puente de API local |
La detección de referencias es heurística | Pasa | Mejorar heurísticas |
Probado principalmente en Windows | Debería funcionar en macOS/Linux — rutas detectadas automáticamente | Bienvenida la prueba de la comunidad |
🗺 Hoja de ruta
[ ] API local de Zotero / API web — Migrar de SQLite directo a la API oficial para escrituras más seguras
[ ] Más habilidades —
/compare-papers,/extract-tables,/literature-map[ ] Mercado de plantillas de prompts — Compartir y reutilizar reglas de anotación
[ ] Funciones de equipo — Estándares de anotación compartidos para grupos de laboratorio
[ ] Multi-backend — Soporte para Adobe Acrobat, Endnote y otras herramientas de PDF
🤝 Contribución
¡Las incidencias y PRs son bienvenidos! Si tienes ideas para nuevas habilidades o herramientas, por favor abre una incidencia.
📄 Licencia
MIT — Úsalo libremente para investigación y proyectos comerciales.
Construido con MCP + Claude Code
Si este proyecto ayuda a tu investigación, considera darle una ⭐
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
