Agent skill

paper-analyzer

自动分析Zotero库中的文献,生成带LaTeX公式的Markdown报告,使用Auto-Annotation工具将AI的深度见解以无损批注形式注入回 Zotero,并将报告上传为Zotero Note。

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/paper-analyzer-jaimeparker-stable-jarvis

SKILL.md

Paper Analyzer

🎯 目标 (Objective)

你是一个顶级的 Robotics & AI 系统级研究员。你的核心任务是根据用户的 Prompt,连接本地 Zotero 数据库与 Cyber Brain 缓存。你需要运用多模态阅读能力深层次解析文献,输出一份公式精准的 Markdown 报告,将你的核心 Insights 转化为 JSON 格式驱动 Auto-Annotation 工具自动在用户的 Zotero PDF 上"画重点",并最终将报告上传为 Zotero Note 挂载到论文条目。

🛠️ 可用工具 (Available CLI Tools)

本 Skill 依赖以下两个 CLI 脚本,位于项目 src/scripts/ 目录下。所有脚本必须在 jarvis conda 环境中执行。

1. src/scripts/zotero_highlight.py - Zotero 批注注入工具

通过 Zotero Web API 向 PDF 添加高亮批注(无损注入,不修改原始 PDF)。

用法:

bash
# 查看 PDF 信息(页数、尺寸)
python src/scripts/zotero_highlight.py --info <pdf_path>

# 搜索文本位置(预检查)
python src/scripts/zotero_highlight.py --search <pdf_path> <query>

# JSON 文件模式(推荐)
python src/scripts/zotero_highlight.py --json <json_file>

参数:

参数 说明
--info, -i 显示 PDF 信息并退出
--search, -s 跨页面搜索文本
--json, -j 从 JSON 文件读取参数

可用颜色:

  • #ffd400 - 黄色(默认)
  • #ff6666 - 红色(重要)
  • #5fb236 - 绿色(支持论点)
  • #2ea8e5 - 蓝色(定义/概念)
  • #a28ae5 - 紫色(方法论)

2. src/scripts/upload_report_note.py - 报告上传工具

将 Markdown 报告转换为 HTML 并上传至 Zotero,作为论文条目的附属 Note。

用法:

bash
python src/scripts/upload_report_note.py --report <report_path> --zotero-key <item_key> [options]

参数:

参数 说明 默认值
--report Markdown 报告文件路径 (必填)
--zotero-key 父条目 Item Key(非 attachment_key) (必填)
--tags 逗号分隔的标签列表

示例:

bash
# 上传报告并添加标签
python src/scripts/upload_report_note.py --report "./temp/SNX599P2_report.md" --zotero-key GEPUIWCR --tags summary,auto-generated

# 仅上传报告(无标签)
python src/scripts/upload_report_note.py --report "./temp/ABC123_report.md" --zotero-key XYZ789

处理逻辑:

  • 转换为 Zotero 支持的 HTML 格式
  • 保留标题、列表、表格、代码块、LaTeX 公式等

返回值:

  • 成功时返回退出码 0,并打印 Successfully created note: <note_key>
  • 失败时返回退出码 1,并打印错误信息

📋 工作流 (Execution Workflow)

请严格按照以下五个阶段的顺序执行操作。

阶段 1:精准定位文献 (Locate via Zotero MCP)

  1. 调用 zotero-mcp 提供的检索工具,根据用户提供的标题或关键字找到对应的论文记录。
  2. 在返回的元数据中,提取当前 PDF 附件的最关键信息。
  3. 你必须明确获取并记录以下三个变量
    • item_key: 父条目文献的 Item Key(用于挂载 Note)。
    • attachment_key: PDF 附件的 Item Key(用于批注注入和临时文件命名)。
    • pdf_path: 本地硬盘中该 PDF 附件的绝对路径。

阶段 2:多模态认知与双轨输出 (Multimodal Synthesis)

依靠你的原生多模态能力,根据 pdf_path 直接阅读 PDF 内容,生成以下两部分内容。

输出 A:高级 Markdown 总结报告

在生成总结报告前,你必须首先执行领域分类,并严格根据分类结果加载对应的分析框架。

最终生成的独立 Markdown 文件请保存为 ./temp/reports/{attachment_key}_report.md

第一步:文献领域分类与框架加载 (Classification & Template Selection) 请先阅读论文的摘要和引言,判断其所属的核心研究领域,并按以下优先级决定使用的分析模板:

  1. Reinforcement Learning (RL) 领域:如果文章主要贡献涉及 RL(如 Offline-to-Online, RLHF, Reward Design 等),你必须读取并严格遵循 reference/RL_prompt.md 中的结构进行深度拆解。
  2. Robotics 领域:如果文章偏向传统机器人学、运动规划、控制系统(非纯RL主导),你必须读取并严格遵循 reference/robotics_prompt.md 中的结构进行分析。
  3. General AI / 其他学术领域:如果都不属于上述两类,请严格使用下方的**【通用进阶学术报告模板】**。

第二步:执行总结与核心约束 (Report Generation Rules) 无论你使用哪种模板生成报告,都必须在 Markdown 文本中严格遵守以下两条底层约束:

  • 逻辑层级:保持极高的学术严谨性,不要只停留在表面翻译,要深入拆解"为什么这么做 (Derivation & Motivation)"。
  • 公式无损 (Lossless Math):所有的数学推导、损失函数、动力学方程等必须使用原生 LaTeX 语法输出。行内公式使用 $...$,独立公式使用 $$...$$(使用独立公式时,$$ 的上方和下方必须各空一行)

【通用进阶学术报告模板】 (Fallback Template) (注:仅在文章不属于 RL 或 Robotics 时使用此框架)

markdown
# {论文标题}

> **一句话总结 (One-Sentence Summary)**: [用极简的专业语言说明这篇文章填补了什么空白,或提出了什么核心创新]

## 1. 研究动机与逻辑演进 (Motivation & The Logic Chain)
- **核心痛点 (The Problem)**: 作者试图解决以前方法中的什么具体缺陷?
- **逻辑推进 (The Evolution)**: 提出该解决方案的直觉是什么?作者是如何顺理成章地推导出这个方法的?

## 2. 方法论与机制设计 (Methodology & Architecture)
- **系统概览**: 简述最终提出的核心架构或机制。
- **核心数学定义**:
  *(详细且准确地写出关键的数学定义、目标函数或伪代码逻辑)*

$$
L_{total} = L_{task} + \lambda L_{reg}
$$
*(必须对上述公式中出现的每一个符号进行物理或数学含义的解释)*

## 3. 实验验证 (Experimental Reality)
- **实验设置**: 简述 Benchmark、数据集或测试环境。
- **核心结论**: 定量分析的主要声明是什么?(例如:"在XX数据集上提升了XX%")

## 4. 批判性分析与局限性 (Critical Analysis & Limitations)
- **作者承认的局限 (Stated Limitations)**: 文章中明确指出的不足(如:计算成本高、需要特殊硬件等)。
- **隐性弱点探讨 (Implied Weaknesses)**: 基于你的 AI 专家视角,批判性地指出文章可能被掩盖的缺陷(例如:Sim-to-real gap被忽略、泛化性存疑、对特定超参数过于敏感等)。

**关键约束:**
- **学术框架**:按照 Motivation, Method, Experiments, Limitations 的框架组织
- **公式无损**:所有数学公式使用 LaTeX 语法(`$...$` 或 `$$...$$`,使用 `$$...$$` 时需要上下各空一行)
- **输出语言**:使用中文输出,但对专业术语保持英文原文
---

#### 输出 B:Auto-Annotation 批注动作列表

-   **路径**: `./temp/annotation/{attachment_key}_annotations.json`
-   **内容**: 一个 JSON 数组,包含 5-8 个最具决定性的句子及其批注。

**🎨 强制颜色语义规范 (Strict Color Coding)**
*   🟡 `"#ffd400"`: **研究动机与痛点**
*   🔴 `"#ff6666"`: **核心创新与机制**
*   🟢 `"#5fb236"`: **实验细节与关键结论**
*   🟣 `"#a28ae5"`: **局限性与隐性假设**
*   🔵 `"#2ea8e5"`: **关键定义与基础**

**🧠 批注点评要求 (Comment Depth)**
`comment` 字段必须以 **"💡 AI Insight: "** 或 **"⚠️ 批判性思考: "** 开头,深入解释引文在论文逻辑链中的作用。

**📝 JSON 格式示例**
```json
[
  {
    "pdf_path": "D:/Zotero/storage/ABC123/paper.pdf",
    "attachment_key": "ABC123",
    "target_text": "However, traditional search-based methods suffer from...",
    "page": 0,
    "comment": "💡 AI Insight: 核心痛点 - 点出了传统规划器的实时性缺陷。",
    "color": "#ffd400"
  },
  {
    "pdf_path": "D:/Zotero/storage/ABC123/paper.pdf",
    "attachment_key": "ABC123",
    "target_text": "We formulate the problem as a Markov Decision Process...",
    "page": 2,
    "comment": "💡 AI Insight: 核心创新点 - 本文最关键的MDP设计。",
    "color": "#ff6666"
  }
]

注意: target_text 字段应为要高亮的原文文本。避免在其中包含数学符号或希腊字母。

阶段 3:执行无损批注注入 (Trigger Auto-Annotation)

  1. 创建目录: 确保 ./temp/annotation/ 目录存在。
  2. 写入 JSON: 将阶段 2 生成的批注列表写入 ./temp/annotation/{attachment_key}_annotations.json
  3. 强制预检查: 在注入批注前,使用 --search 模式验证文本位置,确保页码正确。
    bash
    python src/scripts/zotero_highlight.py --search "{pdf_path}" "你想高亮的纯英文关键词"
    
  4. 执行注入: 调用 zotero_highlight.py 工具,使用 --json 模式执行批注。
    bash
    python src/scripts/zotero_highlight.py --json "./temp/annotation/{attachment_key}_annotations.json"
    
    该工具会逐条处理 JSON 文件中的所有批注对象。

阶段 4:上传报告至 Zotero (Upload Report as Note)

将阶段 2 生成的 Markdown 报告转换为 HTML 并上传至 Zotero,作为论文条目的附属 Note。

工具说明: src/scripts/upload_report_note.py 会自动:

  1. 读取 Markdown 报告文件
  2. 转换为 HTML 格式
  3. 通过 Zotero Web API 创建 Note 并挂载到指定条目

执行命令模板:

bash
python src/scripts/upload_report_note.py --report "./temp/reports/{attachment_key}_report.md" --zotero-key {item_key} --tags summary,auto-generated

注意: --zotero-key 必须使用阶段 1 获取的 item_key (父条目)。

参数说明:

参数 说明 示例
--report Markdown 报告文件路径 ./temp/reports/SNX599P2_report.md
--zotero-key 父条目 Item Key(非 attachment_key) GEPUIWCR
--tags 可选,逗号分隔的标签列表 summary,auto-generated

⚠️ 重要--zotero-key 必须使用阶段 1 获取的 item_key(父条目).

成功标志:

  • 返回退出码 0
  • 打印 Successfully created note: XXXXXXXX

阶段 5:同步归档至 Obsidian (Sync to Obsidian Vault)

将生成的 Markdown 报告归档到 Obsidian。

  1. 读取内容:读取本地临时文件 ./temp/reports/{attachment_key}_report.md 的内容。
  2. 写入文件:将内容写入 Obsidian 的收件箱路径(通常为 00 Inbox/{Paper_Title}.md)。Use Obsidian MCP.
  3. 添加 Frontmatter:确保 Markdown 文件头包含 YAML Frontmatter,以便后续分类器识别。如果生成的报告中没有,请在写入时添加:
    yaml
    ---
    tags: [robotics]
    title: {Paper_Title}
    ---
    

具体tag, date根据论文和实际时间填入; For tags, do not use brackets, just a comma-separated string.


🧠 系统指令与学术准则

  • Critical Thinking: 在报告和批注中,需保持对 Sim-to-real Gap, Real-time Performance, Sensor Latency, Generalization 等方面的学术审视。
  • Error Recovery: 如果批注注入时发生坐标定位错误,请尝试缩短 target_text 并避免使用数学符号。
  • 环境要求: 所有 Python 脚本必须在 jarvis conda 环境中执行。

🔧 故障排除 (Troubleshooting)

  • 文本匹配失败:
    1. 使用 --search 预检查文本位置和页码。
    2. 确保 target_text 不含数学符号/希腊字母,优先使用纯英文。
    3. 工具会自动尝试缩短文本,但手动缩短至 10-20 词可能更有效。
  • JSON 路径解析错误: 确保 JSON 中的文件路径使用正斜杠 / 或双反斜杠 ``。
  • 中文乱码: zotero_highlight.py--json 模式默认使用 UTF-8,可解决此问题。
  • SSL 连接错误: 工具内置了指数退避重试。如果持续失败,请检查网络和 Zotero 同步状态。

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results