
Paper Analyst
- 387 installs
- 62 repo stars
- Updated April 26, 2026
- flyer-li/paper-analyst
paper-analyst is a Claude skill that turns uploaded academic PDFs or pasted paper text into structured Chinese summaries, critiques, and optional slide-plan handoffs for developers who need to understand research literat
About
paper-analyst is a Claude skill from flyer-li/paper-analyst for analyzing academic papers delivered as PDF uploads or pasted text, with Chinese output by default. Trigger phrases include analyze this paper, summarize this research, paper critique, and Chinese queries such as 论文分析 and 帮我看这篇论文. The skill produces structured summaries, methodological critique, and optional PPT outline handoffs for group meetings. Developers reach for paper-analyst when evaluating ML papers, surveying literature, or preparing research presentations—not for spreadsheets, non-academic PDFs, or general document tasks explicitly excluded by the skill triggers.
- Classifies paper type via a dedicated rubric before structuring the write-up
- Follows a fixed output schema plus an anti-hallucination quality checklist
- Supports standard analysis and presentation modes with slide JSON and pptx handoff docs
- Optional `extract_pdf_meta.py` script for PDF metadata extraction
- Bilingual triggers including Chinese group-meeting and PPT-outline requests
Paper Analyst by the numbers
- 387 all-time installs (skills.sh)
- Ranked #521 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Security screen: CRITICAL risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/flyer-li/paper-analyst --skill paper-analystAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 387 |
|---|---|
| repo stars | ★ 62 |
| Security audit | 2 / 3 scanners passed |
| Last updated | April 26, 2026 |
| Repository | flyer-li/paper-analyst ↗ |
How do you summarize an academic research paper quickly?
Turn an uploaded academic PDF or pasted paper text into a structured Chinese summary, critique, and optional slide-plan handoff for researchers and developers learning from papers.
Who is it for?
Developers and researchers reading academic PDFs who want structured Chinese summaries and critique before implementation or group presentations.
Skip if: Non-academic PDFs, spreadsheets, invoices, or general document tasks outside peer-reviewed research analysis.
When should I use this skill?
The user uploads or pastes a research paper and asks to analyze, summarize, critique, or prepare a 组会汇报 or PPT outline.
What you get
Structured Chinese paper summary, methodological critique, innovation analysis, and optional PPT slide-plan outline.
- Chinese paper summary
- method critique
- PPT slide-plan outline
Files
Paper Analyst
Analyze academic papers from PDF or pasted text. Output in Chinese by default. All outputs follow references/output-schema.md. Paper type detection uses references/paper-type-rubric.md. Anti-hallucination rules in references/quality-checklist.md.
Quick Reference
| File | Purpose |
|---|---|
references/output-schema.md | Section structure and field rules |
references/paper-type-rubric.md | How to classify paper type |
references/quality-checklist.md | Anti-hallucination checklist |
references/presentation-schema.md | Slide plan JSON schema |
references/presentation-style-guide.md | Content compression rules for slides |
references/pptx-handoff.md | How to call the pptx skill for rendering |
scripts/extract_pdf_meta.py | Optional: extract PDF metadata to JSON |
Mode Selection
Default mode: standard. Detect from user's request:
| Mode | Trigger | Output |
|---|---|---|
quick | "quick", "简单说", "一句话", "简要" | Header + info + abstract + 3 contributions |
standard | (default) | Full analysis: sections 1–5 |
extended | "前作", "课题组", "prior work" | standard + author/group prior work |
presentation | "PPT", "组会", "汇报大纲", "slides" | standard + slide outline |
presentation_with_figures | "图表", "figures", "带图", "关键图" | presentation + figure annotations |
If ambiguous, use standard and offer to switch.
Workflow
Step 1: Assess Input Quality
Classify PDF quality before analysis:
- 良好: Full text extractable
- 降级处理: Partial text, scanned sections, garbled encoding
- 严重降级: Minimal text, image-only PDF
If degraded: state reason in header line, proceed with available content, mark all gaps explicitly. Never fabricate content to fill gaps.
Optional: if user has Python, suggest running scripts/extract_pdf_meta.py first for structured metadata.
Step 2: Classify Paper Type
Read references/paper-type-rubric.md and classify. Do NOT assume AI/ML. Output the type label and 2–3 evidence indicators before proceeding.
Step 3: Execute Analysis
Follow references/output-schema.md for the selected mode. Apply all rules from references/quality-checklist.md throughout every section.
Step 4: Self-Check Before Output
Verify before finalizing:
- Every uncertain field marked
[不确定]or[未明确给出] - Every contribution tagged
[原文声明]or[模型归纳] - No section silently omitted — skipped sections state why
- Paper type label matches rubric evidence
Anti-Hallucination Rules
Full rules in references/quality-checklist.md. Non-negotiable constraints:
1. Source tagging: [原文声明] = directly stated in paper (cite location); [模型归纳] = inferred by model (state reasoning basis) 2. Uncertainty: [未明确给出] when absent; [不确定] when ambiguous 3. No domain assumption: classify paper type first, always 4. No fabrication: venue, DOI, year, affiliations not in text → [未明确给出] 5. Evidence binding: each contribution must cite section/figure/table/quote 6. Degraded PDF: state which sections were unreadable; do not fill gaps
Degraded Input Fallback
| Situation | Action |
|---|---|
| Only abstract available | quick mode, note limitation |
| Scanned PDF, no text | Ask user for text or OCR first |
| Missing references section | Skip prior work analysis, note absence |
| Figures unreadable | Skip figure analysis, note absence |
| Non-English paper | Translate key sections, note source language |
Extended Mode: Author Prior Work
Only in extended mode: 1. Extract all author names from paper 2. Identify self-citations in reference list (shared authors) 3. Infer research group focus from affiliations + paper title 4. List prior works from reference list only — no web search, no external knowledge 5. Tag all output: [基于论文内引用,非外部检索] 6. If insufficient info: explicitly state "信息不足,无法判断前作关系"
Presentation Mode: PPT Generation
Only in presentation or presentation_with_figures mode.
Step A: Collect Overrides
Before building the slide plan, check if the user specified any of:
audience(lab / conference / general) — default:labduration_hint(10min / 20min / 30min) — default:20mintalk_style(technical / overview / discussion) — default:technicalemphasis(which sections to expand)skip(which sections to omit)
If not specified, use defaults silently.
Step B0: Extract PDF Figures (presentation_with_figures only)
Before building the slide plan, run:
python scripts/extract_pdf_figures.py <pdf_path>This saves all figures to figures/ and writes figures/index.json with name, path, and page for each image. Use this index when assigning figure_ref paths in the handoff.
Step B: Build Slide Plan
Follow references/presentation-schema.md for structure. Follow references/presentation-style-guide.md for compression rules.
- Map each slide role to the corresponding output-schema section
- Apply user overrides (emphasis → expand, skip → omit)
- For
presentation_with_figures: setfigure_needed: trueon method/result slides where a figure is the primary evidence; addfigure_refandfigure_hint - Slide count from duration_hint (10min→6-7, 20min→9-10, 30min→12-14)
Step C: Call pptx Skill
Follow references/pptx-handoff.md for the exact handoff format.
- Strip all
[原文声明]/[模型归纳]tags before passing to pptx - Do NOT include speaker notes in the handoff
- Call pptx skill automatically — do not ask the user first
- Exception: if user said "只要大纲" / "just the outline", output the slide plan as text and skip pptx
MIT License
Copyright (c) 2026 Yifei Li
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
paper-analyst
 
一个用于学术论文深度分析的 Claude Code Skill,支持从 PDF 解析到组会 PPT 自动生成的完整工作流。
English summary: A Claude Code skill for academic paper analysis. Supports 5 analysis modes (quick/standard/extended/presentation/presentation_with_figures), anti-hallucination source tagging, paper-type-aware method templates, and automated PPT generation via the pptx skill.---
功能亮点
- 5 种分析模式:从一句话速览到带图表的组会 PPT,按需选择
- 反幻觉机制:每个观点强制标注
[原文声明]或[模型归纳],并绑定原文位置证据 - 论文类型感知:先分类(AI/深度学习、传统算法、系统工程、实验实证、综述、跨学科),再套对应方法分析模板
- PDF 质量分层:良好 / 降级 / 严重降级三档处理,优雅降级而非直接报错
- PPT 自动化管道:演讲模式下自动提取 PDF 图表、构建幻灯片计划、调用
pptxskill 生成文件 - 前作关系追踪:
extended模式从参考文献中识别自引,推断课题组研究脉络(仅基于论文内部,不做外部检索) - 中英双语触发:中英文触发词均支持
---
快速开始
前置条件
- Claude Code CLI 已安装
- Python 3.8+(用于 PDF 图表提取脚本)
- Python 依赖:
pip install pymupdf pypdf - 如需生成 PPT,还需安装 anthropics官方的[
pptxskill]及其依赖
安装
npx skills add flyer-Li/paper-analyst也可以手动克隆:git clone https://github.com/flyer-Li/paper-analyst ~/.claude/skills/paper-analyst使用
在 Claude Code 中,直接用自然语言触发:
/paper-analyst 使用这个skill来分析文献,当前目录下的 paper.pdf
/paper-analyst quick summary of this paper
/paper-analyst 分析这篇文献与前作的关系
/paper-analyst 将以上分析内容做成一个可以直接用来汇报的组会ppt,要求美观带图片---
分析模式
| 模式 | 触发词 | 输出内容 |
|---|---|---|
quick | "quick"、"简单说"、"一句话"、"简要" | 基础信息 + 摘要译文 + 3 个核心贡献 |
standard | (默认,最推荐) | 完整 6 节分析(基础信息 → 结论与局限) |
extended | "前作"、"课题组"、"prior work" | standard + 作者自引识别 + 研究脉络分析 |
presentation | "PPT"、"组会"、"汇报大纲"、"slides" | standard + 幻灯片大纲 + 自动生成 PPTX |
presentation_with_figures | "图表"、"带图"、"关键图"、"figures" | presentation + PDF 图表提取 + 图表标注 |
---
输出结构
standard 及以上模式输出以下 6 个章节:
| 章节 | 内容 |
|---|---|
| 基础信息 | 标题、作者、单位、Venue、年份、DOI、关键词 |
| 摘要翻译与通俗解释 | 直译 + 面向非专业读者的 3-5 句解释 |
| 背景介绍 | 研究背景与开展此研究的意义 |
| 研究方法分析 | 按论文类型套用对应模板(见下方) |
| 创新点分析 | 最多 5 条,每条绑定原文位置证据 |
| 研究结果与结论 | 具体数字 + 基线对比 + 局限性(原文声明 & 模型识别) |
方法分析模板(按论文类型)
- AI/深度学习:任务定义与输入输出 / 模型架构 / 训练策略 / 推理流程
- 传统算法/理论:问题形式化 / 算法步骤 / 复杂度分析 / 关键假设
- 系统/工程:系统架构 / 关键组件 / 性能指标 / 与现有系统对比
- 实验/实证:实验设计 / 数据收集 / 统计分析方法
- 综述/Survey:综述范围与检索策略 / 分类框架 / 对比维度
---
反幻觉机制
这是本 skill 的核心设计,所有输出遵循以下规则:
双标签系统
[原文声明] 提出了 X 方法
证据:Section 3.2,"We propose X, which..."
[模型归纳] 该方法在低资源场景下可能有优势
依据:实验仅在小数据集上测试,作者未明确声明此优势不确定性标记
- 论文中未提及的字段 →
[未明确给出],不猜测 - 信息有歧义 →
[不确定]+ 说明歧义原因
PDF 质量分层处理
| 质量等级 | 处理方式 |
|---|---|
| 良好 | 全量分析 |
| 降级处理 | 标注不可读章节,已有内容正常分析 |
| 严重降级 | 自动切换 quick 模式,建议用户提供更好来源 |
详细规则见 `references/quality-checklist.md`。
---
文件结构
paper-analyst/
├── SKILL.md # Skill 主配置(Claude Code 入口)
├── references/
│ ├── output-schema.md # 输出格式规范(7 节结构)
│ ├── paper-type-rubric.md # 论文类型分类规则
│ ├── quality-checklist.md # 反幻觉检查清单
│ ├── presentation-schema.md # PPT 幻灯片结构 JSON 规范
│ ├── presentation-style-guide.md # 演讲内容压缩规则
│ └── pptx-handoff.md # pptx skill 调用接口规范
└── scripts/
├── extract_pdf_meta.py # PDF 元数据提取
└── extract_pdf_figures.py # PDF 图表提取---
依赖项
| 依赖 | 用途 | 安装 |
|---|---|---|
pymupdf | PDF 图表提取 | pip install pymupdf |
pypdf | PDF 元数据读取 | pip install pypdf |
pptx skill | PPT 文件生成 | 单独安装,见其 README |
---
License
MIT License — Copyright (c) 2026 Yifei Li
本项目以 MIT 许可证开源。你可以自由使用、修改和分发,但需保留原始版权声明。
完整许可证文本见 LICENSE 文件。
---
Contributing
欢迎提交 Issue 和 Pull Request。
如果你在使用中发现幻觉案例、分类错误或输出格式问题,欢迎在 Issue 中附上复现步骤(论文类型 + 触发词 + 错误输出片段)。
Standard Output Schema
Header Line (always first)
PDF 质量:[良好 | 降级处理-原因 | 严重降级-原因] | 论文类型:[类型] | 分析模式:[模式]---
Section 1: 基础信息
| 字段 | 说明 | 缺失时 |
|---|---|---|
| 标题 | 原文标题 + 中文译名 | — |
| 作者 | 全部作者姓名 | 不完整标 [部分] |
| 单位 | 第一作者单位 | [未明确给出] |
| Venue | 期刊/会议名称 | [未明确给出] |
| 年份 | 发表年份 | [未明确给出] |
| DOI/arXiv | 标识符 | [未明确给出] |
| 关键词 | 原文关键词;若无则模型归纳并标 [模型归纳] | [未明确给出] |
---
Section 2: 摘要翻译与通俗解释
中文译文:直译,保留术语
通俗解释(3-5句):面向非专业读者,避免术语堆砌,说明:这篇论文在干什么、解决什么问题、为什么重要
---
Section 3: 背景介绍
背景介绍(一段话):一段话概括论文的研究背景,开展此次研究的意义
---
Section 4: 研究方法分析
Template by paper type:
AI/深度学习:任务定义与输入输出 / 模型架构(主干、关键模块)/ 训练策略(损失函数、优化器)/ 推理流程
传统算法/理论:问题形式化 / 算法步骤 / 复杂度分析(若论文提供)/ 关键假设
系统/工程:系统架构 / 关键组件 / 性能指标 / 与现有系统对比
实验/实证:实验设计(样本、变量、控制)/ 数据收集 / 统计分析方法
综述/Survey:综述范围与检索策略 / 分类框架 / 对比维度
---
Section 5: 创新点分析
For each contribution (max 5):
- [原文声明|模型归纳] 创新点描述
证据:第X节 / 图X / 表X / "原文引用片段"If paper claims >5 contributions, select most substantiated and note the selection.
---
Section 6: 研究结果与结论
- 主要实验结果:具体数字(数据集、指标、数值),标注来源表/图
- 与基线对比:关键对比数据(若有对比实验)
- 作者结论
[原文声明]:作者在结论部分的原始主张 - 局限性:
- 原文承认的局限
[原文声明] - 模型识别的潜在局限
[模型归纳](需有依据)
---
Section 7: 扩展内容(按模式追加)
extended 模式追加:作者/课题组前作
- 从论文参考文献中识别共同作者的自引文献
- 归纳课题组研究方向(基于论文内容,不做外部检索)
- 说明本文与前作的延续/创新关系
- 全部标注
[基于论文内引用,非外部检索]
presentation / presentation_with_figures 模式追加:组会汇报大纲
Slide 1: 标题、作者、venue、年份
Slide 2: 背景与动机(2-3 bullets)
Slide 3: 问题定义
Slide 4-5: 方法概述(按论文类型调整)
Slide 6: 核心实验结果
Slide 7: 贡献总结
Slide 8: 局限性与未来工作
Slide 9: 讨论问题(3个供组会讨论)presentation_with_figures 额外在每张方法/结果 slide 后注明:应插入论文中哪张图/表,及其重要性。
---
quick 模式输出(精简版)
仅输出: 1. Header line 2. 基础信息(标题、作者、venue、年份) 3. 摘要中文译文 4. 通俗解释(3句) 5. 核心贡献(3 bullets,标注来源)
Paper Type Classification Rubric
Classify the paper into ONE primary type before analysis. The type determines which method analysis template to apply.
Types & Indicators
AI/深度学习
Needs 2+ indicators:
- Neural network, deep learning, transformer, CNN, RNN, GAN, diffusion model
- Reports accuracy/F1/mAP/BLEU/perplexity on benchmark datasets
- Model architecture diagram present
- GPU training, batch size, learning rate as hyperparameters
- Standard datasets: ImageNet, COCO, SQuAD, GLUE, etc.
传统算法/理论
Needs 2+ indicators:
- Algorithm with pseudocode or formal proof
- Complexity analysis (O-notation)
- No neural network components
- Theorem/lemma/proof structure
- Optimization, graph theory, combinatorics, formal methods
系统/工程
Needs 2+ indicators:
- System architecture (components, interfaces, protocols)
- Metrics: throughput, latency, scalability, availability
- Implementation details (language, framework, deployment)
- Compares with existing systems
实验/实证
Needs 2+ indicators:
- Human subjects, user studies, surveys
- Statistical analysis (p-value, confidence interval, effect size)
- IRB/ethics approval mentioned
- Qualitative or mixed-methods research
综述/Survey
Needs 1 indicator:
- Title contains "survey", "review", "overview", "综述"
- Systematically reviews 20+ papers
- No original experiments or novel method proposed
其他/跨学科
Use when paper spans multiple types or fits none above.
Conflict Resolution
1. Check paper's own claim in abstract ("we propose", "we conduct a user study") 2. Use type with more indicators 3. If tied → 其他/跨学科, note both types
Output Format
论文类型:[类型标签]
判断依据:[2-3个具体指标,引用论文内容]pptx Skill Handoff Format
When to Call pptx Skill
After generating the slide plan (presentation-schema.md), automatically invoke the pptx skill with the structured prompt below. Do NOT ask the user — call it directly.
Handoff Prompt Template
/pptx
Create a presentation with the following slides:
**Deck:** {{deck_title}}
**Style:** {{talk_style}}, audience: {{audience}}
{{for each slide}}
---
Slide {{n}}: {{title}}
Type: {{type}}
{{if bullets}}Bullets:
{{bullets joined by newline}}{{/if}}
{{if figure_needed}}[Insert {{figure_ref}}: {{figure_hint}}]{{/if}}
{{if questions}}Discussion questions:
{{questions joined by newline}}{{/if}}
{{/for}}Trigger Condition
Call pptx skill automatically when ALL of these are true: 1. Mode is presentation or presentation_with_figures 2. Slide plan has been generated and confirmed (or user gave no objection within the same turn) 3. User has not explicitly said "just the outline" / "只要大纲" / "不用生成PPT"
What to Pass
- The filled slide plan as a structured prompt (not raw JSON)
- The filled slide plan described by prompt should be as similar as possible to the JSON
structure of references/presentation-schema.md
- Deck title and style context in the opening line
- Each slide as a labeled block with title + bullets + figure hints
What NOT to Pass
- Raw slides.json — pptx skill takes natural language, not JSON
- Internal tags like
[原文声明]— strip these before handoff - Speaker notes — these are for the analyst output only, not the PPT
Presentation Schema
Slide Plan JSON Structure
{
"deck_title": "string",
"content_source": "standard | extended",
"audience": "lab | conference | general",
"talk_style": "technical | overview | discussion",
"duration_hint": "10min | 20min | 30min",
"slide_count_target": 9,
"user_overrides": {
"emphasis": ["method", "results", "contributions"],
"skip": ["limitations", "prior_work"],
"extra_slides": []
},
"slides": [
{
"n": 1,
"type": "cover",
"title": "string",
"subtitle": "string",
"authors": "string",
"venue_year": "string"
},
{
"n": 2,
"type": "table",
"role": "metadata",
"title": "论文基本信息",
"table_source": "output-schema Section 1",
"fields": ["标题", "作者", "单位", "Venue", "年份", "DOI/arXiv", "关键词"],
"omit_if_missing": true
},
{
"n": 3,
"type": "split",
"role": "background",
"title": "string",
"left": {
"format": "paragraph",
"content": "string"
},
"right": {
"format": "figure | bullets",
"figure_ref": "Fig. X",
"figure_hint": "string",
"bullets": ["string"]
},
"right_prefer_figure": true
},
{
"n": 4,
"type": "split",
"role": "method",
"title": "方法概述",
"left": {
"format": "bullets",
"bullets": ["string"]
},
"right": {
"format": "figure",
"figure_ref": "Fig. X",
"figure_type": "architecture | flowchart | equation | diagram",
"figure_hint": "string"
},
"right_prefer_figure": true,
"overflow": {
"enabled": true,
"max_pages": 2,
"split_at": "模型架构 / 训练策略"
}
},
{
"n": 5,
"type": "contributions",
"role": "contributions",
"title": "创新点分析",
"items": [
{
"headline": "string",
"detail": "string",
"bold_keywords": ["string"]
}
],
"source": "output-schema Section 4",
"max_items": 4
},
{
"n": 6,
"type": "results",
"role": "results",
"title": "实验结果",
"source": "output-schema Section 5",
"required_figure": true,
"figure_ref": "Fig. X / Table X",
"figure_type": "bar_chart | line_graph | pie_chart | table | figure",
"figure_hint": "string",
"content_blocks": [
{
"format": "text | bullets | table | figure",
"content": "string"
}
],
"overflow": {
"enabled": true,
"max_pages": 3,
"split_strategy": "per_case"
}
},
{
"n": 7,
"type": "conclusion",
"role": "discussion",
"title": "作者结论",
"source": "output-schema Section 5 作者结论 [原文声明]",
"quotes": ["string"],
"summary_bullets": ["string"]
},
{
"n": 8,
"type": "prior_work",
"role": "prior_work",
"title": "与前作的关系",
"source": "output-schema Section 6 (extended mode only)",
"group_focus": "string",
"prior_papers": ["string"],
"relationship": "string",
"note": "[基于论文内引用,非外部检索]"
},
{
"n": 9,
"type": "closing",
"title": "string",
"questions": ["string", "string", "string"]
}
]
}Field Rules
| Field | Required | Notes |
|---|---|---|
deck_title | yes | Paper title (Chinese OK) |
content_source | yes | Which analysis layer feeds this |
audience | yes | Affects compression level |
slide_count_target | yes | Default 9; adjust per duration_hint |
user_overrides.emphasis | no | Sections to expand |
user_overrides.skip | no | Sections to omit |
slides[].role | yes for bullets | Maps to output-schema section |
figure_needed | yes | true only if figure meaningfully aids understanding |
right_prefer_figure | for split | true = use figure if available; false = use bullets |
right.format | for split | "figure" or "bullets" — set after checking paper content |
right.figure_type | for split | "architecture", "flowchart", "equation", or "diagram" |
overflow.enabled | for method | true = allow slide to expand to max_pages if content is dense |
overflow.split_at | for method | natural break point between page 1 and page 2 |
items[].headline | for contributions | one-sentence summary of the contribution |
items[].detail | for contributions | 1-2 sentence elaboration |
items[].bold_keywords | for contributions | key terms to bold in the detail text |
max_items | for contributions | cap at 4; pick most substantiated from Section 4 |
required_figure | for results | true = must include at least one figure/chart |
figure_type | for results | preferred visualization type from paper |
content_blocks | for results | ordered mix of text/bullets/table/figure blocks |
overflow.split_strategy | for results | "per_case" = one slide per experiment case |
duration_hint → slide_count_target
| Duration | Slides |
|---|---|
| 10min | 6–7 |
| 20min | 9–10 |
| 30min | 12–14 |
Presentation Style Guide
Content Compression Rules
Bullets
- Max 4 bullets per slide
- Lead with the key term or core concepts, not a verbs
- Expand details appropriately to ensure comprehensive information delivery
Figures
- Only include if the figure is the primary evidence for a claim
- Two figures per slide maximum
- Utilize different chart types (e.g., bar charts, line graphs, pie charts) to present multi-dimensional data
Numbers
- Keep exact numbers from the paper — never round
- Format: "↑2.3 BLEU vs. baseline (Table 2)"
- Always cite source table/figure inline
Audience Compression Levels
| Audience | Jargon | Detail | Equations |
|---|---|---|---|
lab | full | high | include if central |
conference | moderate | medium | skip unless novel |
general | minimal | low | omit |
Role → Section Mapping
| Slide role | Draws from output-schema section |
|---|---|
| introduction | Section 1 (基础信息) |
| background | Section 2 (通俗解释)+ Section 3 (背景介绍) |
| method | Section 4 (研究方法分析) |
| contributions | Section 5 (创新点分析) |
| results | Section 6 (主要实验结果) |
| discussion | Section 6 (作者结论) + model inference |
| extended | Section 7 (作者/课题组前作) |
Override Merge Rules
1. emphasis → allocate +1 slide to that role, expand bullets to 4 2. skip → remove that role's slide entirely 3. extra_slides → append after slide 7, before closing 4. Conflicts: user overrides always win over defaults
Quality Checklist & Anti-Hallucination Rules
Pre-Output Checklist
Factual Accuracy
- [ ] Metadata (title, authors, venue, year, DOI) taken directly from provided text
- [ ] Numerical results copied verbatim, not rounded or paraphrased
- [ ] Author affiliations from paper's author block, not guessed
Source Tagging
- [ ] Every contribution tagged
[原文声明]or[模型归纳] - [ ]
[原文声明]items have location reference (section, figure, table, or quote) - [ ]
[模型归纳]items have stated reasoning basis
Uncertainty Marking
- [ ] Missing fields marked
[未明确给出], not blank or guessed - [ ] Ambiguous info marked
[不确定]with explanation - [ ] Skipped sections explicitly noted with reason
Domain Assumption Check
- [ ] Paper type determined by rubric, not assumed
- [ ] Method template matches determined paper type
- [ ] No AI/ML terminology injected into non-AI papers
Degraded Input Check
- [ ] Header line states PDF quality if degraded
- [ ] Sections from unreadable content explicitly skipped
- [ ] No content fabricated to fill gaps
Common Hallucination Patterns
| Pattern | Wrong | Correct |
|---|---|---|
| Venue guessing | "Published at NeurIPS" (not in text) | [未明确给出] |
| Contribution inflation | Adding contributions not in paper | Only list what paper claims |
| Result extrapolation | "Achieves SOTA on all benchmarks" | Quote exact benchmark + metric |
| Author expertise | "Expert in computer vision" | Only state what paper says |
| Future work fabrication | Inventing future directions | Only cite paper's own future work section |
| Method gap filling | Guessing architecture details | Mark as [未明确给出] |
Degraded PDF Protocol
Level: Degraded (partial text extractable) 1. Header: PDF 质量:降级处理 - [具体原因] 2. Complete sections where text is available 3. Unavailable sections: [该部分文本不可读,已跳过] 4. Offer to re-analyze if user provides better source
Level: Poor (minimal text) 1. Header: PDF 质量:严重降级 - 仅能提取部分内容 2. Auto-switch to quick mode 3. Only output reliably extractable content 4. Recommend: OCR tool, copy-paste from PDF reader, or arXiv HTML version
Evidence Binding Format
[原文声明] 提出了 X 方法
证据:Section 3.2,"We propose X, which..."
[模型归纳] 该方法在低资源场景下可能有优势
依据:实验仅在小数据集上测试,作者未明确声明此优势#!/usr/bin/env python3
"""
Extract all images from a PDF and save to figures/ directory.
Usage: python extract_pdf_figures.py <pdf_path>
Output: figures/fig_p{page}_{idx}.png + figures/index.json
"""
import sys
import json
from pathlib import Path
import fitz # pymupdf
def extract_figures(pdf_path: str) -> None:
out_dir = Path("figures")
out_dir.mkdir(exist_ok=True)
doc = fitz.open(pdf_path)
index = []
for page_num, page in enumerate(doc, start=1):
for img_idx, img in enumerate(page.get_images(), start=1):
xref = img[0]
pix = fitz.Pixmap(doc, xref)
if pix.colorspace and pix.colorspace.n > 3:
pix = fitz.Pixmap(fitz.csRGB, pix)
name = f"fig_p{page_num}_{img_idx}.png"
path = str(out_dir / name)
pix.save(path)
index.append({"name": name, "path": path, "page": page_num})
(out_dir / "index.json").write_text(json.dumps(index, indent=2, ensure_ascii=False))
print(f"Extracted {len(index)} figures → figures/index.json")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python extract_pdf_figures.py <pdf_path>")
sys.exit(1)
extract_figures(sys.argv[1])
#!/usr/bin/env python3
"""Extract structured metadata from a PDF file.
Usage: python scripts/extract_pdf_meta.py <path/to/paper.pdf>
Output: JSON to stdout
Dependencies: pypdf (pip install pypdf)
"""
import json
import sys
def extract(path: str) -> dict:
try:
from pypdf import PdfReader
except ImportError:
return {"error": "pypdf not installed. Run: pip install pypdf"}
try:
reader = PdfReader(path)
except Exception as e:
return {"error": f"Cannot open PDF: {e}"}
meta = reader.metadata or {}
pages = len(reader.pages)
# Check if text is extractable (sample first 3 pages)
sample_text = ""
for page in reader.pages[:3]:
sample_text += page.extract_text() or ""
text_extractable = len(sample_text.strip()) > 100
# Heuristic: likely scanned if pages exist but no text
is_scanned = pages > 0 and not text_extractable
def clean(val):
return str(val).strip() if val else None
return {
"title": clean(meta.get("/Title")),
"authors": clean(meta.get("/Author")),
"subject": clean(meta.get("/Subject")),
"keywords": clean(meta.get("/Keywords")),
"creator": clean(meta.get("/Creator")),
"pages": pages,
"text_extractable": text_extractable,
"is_scanned": is_scanned,
}
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python extract_pdf_meta.py <file.pdf>", file=sys.stderr)
sys.exit(1)
print(json.dumps(extract(sys.argv[1]), ensure_ascii=False, indent=2))
Related skills
FAQ
What languages does paper-analyst output?
paper-analyst outputs structured analysis in Chinese by default, including summaries, critiques, and optional slide-plan outlines for uploaded academic PDFs or pasted paper text.
What file types does paper-analyst support?
paper-analyst supports academic research papers via PDF upload or pasted text. The skill explicitly excludes non-academic PDFs, spreadsheets, and general document processing tasks.
Can paper-analyst prepare presentation materials?
paper-analyst can generate optional PPT slide-plan handoffs when users ask for 组会汇报 preparation or presentation outlines alongside the structured paper summary and critique.
Is Paper Analyst safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.