{"id":"beb742db-9f28-4b29-b5fb-af2110ecc43d","entityType":"agent","slug":"clawhub-x-lixu-paper-report","name":"paper-report","canonicalUrl":"https://www.xpersona.co/agent/clawhub-x-lixu-paper-report","canonicalPath":"/agent/clawhub-x-lixu-paper-report","generatedAt":"2026-10-10T10:53:33.365Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":null},"description":"Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. Skill: paper-report Owner: x-lixu Summary: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. Tags: latest:2.1.2 Version history: v2.1.2 | 2026-07-14T03:08:00.370Z | user - Remov","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s1705pdeyeff9vw9x69are6zrs83ga07:paper-report","sourceUrl":"https://clawhub.ai/x-lixu/paper-report","homepage":"https://clawhub.ai/x-lixu/skills/paper-report","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/x-lixu/paper-report","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/x-lixu/skills/paper-report","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is p"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":null},"stars":null,"forks":null,"downloads":1586,"packageName":null,"latestVersion":"2.1.2","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:37:15.513Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T07:37:15.548Z","lastCrawledAt":"2026-10-10T07:37:15.513Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T07:37:15.513Z","lastVerifiedAt":null,"highlights":[{"version":"2.1.2","createdAt":"2026-07-14T03:08:00.370Z","changelog":"- Removed the file skill-card.md from the project. - No changes to workflows, features, or user-facing behavior. - This update involves only documentation/file cleanup.","fileCount":15,"zipByteSize":36293},{"version":"2.1.1","createdAt":"2026-07-13T06:08:43.128Z","changelog":"- Added support for Word (.docx) output format, including routing, documentation, and template scripts. - New files: Word writer templates, usage example output, and supporting JS script for .docx report generation. - Updated main workflow to include .docx as selectable output. - Minor: Removed obsolete file (skill-card.md).","fileCount":15,"zipByteSize":35279},{"version":"2.1.0","createdAt":"2026-06-11T03:36:21.892Z","changelog":"paper-report 2.1.0 重大结构更新：输入处理与输出格式完全解耦，文件结构更清晰易扩展。 - 新增 reader/ 与 writer/ 目录，分别负责输入与输出，支持独立扩展。 - HTML 和 Markdown 输出模板、实现、校验流程分立，便于独立迭代。 - 所有模式调度与通用说明集中于 SKILL.md，跳转到 reader/、writer/ 文档详述各自流程。 - 精简并明确路由决策、附录内容集成、校验标准等流程说明。 - 移除老旧路径及模板文件，全部对应内容整合进新结构。","fileCount":13,"zipByteSize":22658},{"version":"2.0.1","createdAt":"2026-06-06T10:14:48.731Z","changelog":"- Removed the file: skill-card.md. - Added detailed requirements for LaTeX公式（数学公式）处理，明确[HTML]输出需用单反斜杠，模板已内置 MathJax 3，无需额外引入（包括反斜杠检查方式）。 - 调整并明确了校验流程，确保 HTML 输出包含 MathJax 配置、公式无多余反斜杠等。 - 其他文档描述优化，无功能性变更。","fileCount":11,"zipByteSize":18552},{"version":"2.0.0","createdAt":"2026-06-02T12:21:29.874Z","changelog":"For papers sourced from arXiv, parsing now prefers the HTML version when available, improving structure extraction and readability. Added support for multiple output formats: HTML (default) and Markdown.","fileCount":11,"zipByteSize":18083},{"version":"1.0.3","createdAt":"2026-03-23T08:10:22.679Z","changelog":"- Updated all file path references and workspace conventions to consistently use the subdirectory `{workspace}/paper-report/`. - Adjusted all related command examples, image/figure directories, and output instructions to reflect the new workspace layout. - No code or logic changes; this update clarifies directory structure for easier organization and future maintenance.","fileCount":6,"zipByteSize":9493},{"version":"1.0.2","createdAt":"2026-03-23T07:47:40.907Z","changelog":"No user-visible changes in this version (1.0.2); documentation and workflow remain unchanged.","fileCount":5,"zipByteSize":8200},{"version":"1.0.1","createdAt":"2026-03-23T07:46:51.839Z","changelog":"No changes detected in this version. - No file or documentation changes were made from the previous version. - The skill functionality and workflow remain unchanged.","fileCount":5,"zipByteSize":8202}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1705pdeyeff9vw9x69are6zrs83ga07:paper-report","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:53:33.362Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-x-lixu-paper-report/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":null},"readme":"Skill: paper-report\n\nOwner: x-lixu\n\nSummary: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper.\n\nTags: latest:2.1.2\n\nVersion history:\n\nv2.1.2 | 2026-07-14T03:08:00.370Z | user\n\n- Removed the file skill-card.md from the project.\n- No changes to workflows, features, or user-facing behavior.\n- This update involves only documentation/file cleanup.\n\nv2.1.1 | 2026-07-13T06:08:43.128Z | user\n\n- Added support for Word (.docx) output format, including routing, documentation, and template scripts.\n- New files: Word writer templates, usage example output, and supporting JS script for .docx report generation.\n- Updated main workflow to include .docx as selectable output.\n- Minor: Removed obsolete file (skill-card.md).\n\nv2.1.0 | 2026-06-11T03:36:21.892Z | user\n\npaper-report 2.1.0 重大结构更新：输入处理与输出格式完全解耦，文件结构更清晰易扩展。\n\n- 新增 reader/ 与 writer/ 目录，分别负责输入与输出，支持独立扩展。\n- HTML 和 Markdown 输出模板、实现、校验流程分立，便于独立迭代。\n- 所有模式调度与通用说明集中于 SKILL.md，跳转到 reader/、writer/ 文档详述各自流程。\n- 精简并明确路由决策、附录内容集成、校验标准等流程说明。\n- 移除老旧路径及模板文件，全部对应内容整合进新结构。\n\nv2.0.1 | 2026-06-06T10:14:48.731Z | user\n\n- Removed the file: skill-card.md.\n- Added detailed requirements for LaTeX公式（数学公式）处理，明确[HTML]输出需用单反斜杠，模板已内置 MathJax 3，无需额外引入（包括反斜杠检查方式）。\n- 调整并明确了校验流程，确保 HTML 输出包含 MathJax 配置、公式无多余反斜杠等。\n- 其他文档描述优化，无功能性变更。\n\nv2.0.0 | 2026-06-02T12:21:29.874Z | user\n\nFor papers sourced from arXiv, parsing now prefers the HTML version when available, improving structure extraction and readability.\nAdded support for multiple output formats: HTML (default) and Markdown.\n\nv1.0.3 | 2026-03-23T08:10:22.679Z | user\n\n- Updated all file path references and workspace conventions to consistently use the subdirectory `{workspace}/paper-report/`.\n- Adjusted all related command examples, image/figure directories, and output instructions to reflect the new workspace layout.\n- No code or logic changes; this update clarifies directory structure for easier organization and future maintenance.\n\nv1.0.2 | 2026-03-23T07:47:40.907Z | user\n\nNo user-visible changes in this version (1.0.2); documentation and workflow remain unchanged.\n\nv1.0.1 | 2026-03-23T07:46:51.839Z | user\n\nNo changes detected in this version.\n\n- No file or documentation changes were made from the previous version.\n- The skill functionality and workflow remain unchanged.\n\nv1.0.0 | 2026-03-23T07:43:35.883Z | user\n\n- Major update: The skill now converts academic PDF papers into structured Chinese reading reports with original figures, focusing on HTML report generation and figure extraction.\n\n- New workflow and task checklist guiding users step-by-step from PDF acquisition to HTML report validation.\n- Supports both local PDF files and direct download from arXiv links.\n- Converts PDFs to high-res page images and extracts annotated figure/table crops.\n- Generates a comprehensive Chinese reading report in HTML, embedding figures as base64 images.\n- Output adheres to strict formatting and quality checks to ensure completeness, portability, and academic rigor.\n\nArchive index:\n\nArchive v2.1.2: 15 files, 36293 bytes\n\nFiles: reader/html.md (4311b), reader/pdf.md (5440b), scripts/crop_figures.py (2484b), scripts/extract_figure_urls.py (3194b), scripts/extract_html_text.py (3133b), scripts/pdf_to_images.py (1208b), skill-card.md (2085b), SKILL.md (6030b), writer/docx-template.js (21072b), writer/docx.md (9067b), writer/html-template.html (5516b), writer/html.md (5397b), writer/markdown-template.md (871b), writer/markdown.md (4156b), _meta.json (131b)\n\nFile v2.1.2:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告。输入方式（`reader/`）与输出格式（`writer/`）独立解耦，详见末尾目录结构。\n\n> **脚本运行时**：`reader/` 输入处理与 HTML / Markdown writer 构建脚本用 `python3`；Word (.docx) writer 构建脚本用 `node`。环境相关的路径 / 依赖细节在各 writer 文档的\"已知陷阱\"里单独说明。\n\n---\n\n## Step 1: 路由决策\n\n### 1.1 选择输出格式\n\n- 用户明确指定 → 按用户要求。\n- 用户未指定 → **默认 HTML**。\n\n确定后**记住这个选择**，用于 Step 2 时分发到对应的 writer。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。规则：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 使用 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf`。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查页面是否存在：\n\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n\n- 返回 `HTTP/... 200` → **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n完成输入处理后，`{workspace}/figures/` 已包含所有目标图表。\n\n### 2.1 报告结构（参考框架，可根据论文内容灵活调整）\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性**：根据论文内容可增加章节（如 Case Study、数据集详解）、合并章节（如实验设计与结果合一）、自由组织子结构。\n\n**附录内容集成**：\n\n- \"方法实现细节/超参数/训练配置\" → **融入对应主方法章节**\n- \"补充实验/额外消融\" → 融入实验结果章节或独立小节\n- \"独立子课题/独立证明\" → 可设独立附录章节\n\n### 2.2 图表选取原则\n\n根据报告内容需要选取，**不设数量硬上限**：\n\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：报告中有讨论则选入\n- Case Study 截图：有说明价值则选入\n\n### 2.3 通用写作要求\n\n- 全文中文，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用：\"如图 1 所示，...\" / \"表 1 汇总了...\"\n- 严格基于原文，不添加原文未涉及的推测或数据\n- 每章应有实质内容，避免泛泛而谈\n- **不**包含\"报告生成日期\"或\"AI 生成\"相关文字\n\n### 2.4 按输出格式分发\n\n根据 Step 1.1 的输出格式选择，跳转到对应的 writer 文档：\n\n- **HTML 输出** → [writer/html.md](writer/html.md)\n- **Markdown 输出** → [writer/markdown.md](writer/markdown.md)\n- **Word (.docx) 输出** → [writer/docx.md](writer/docx.md)\n\n每份 writer 文档包含完整的：图片处理 / 数学公式 / 表格 / 模板路径 / 文件命名 / 写作风格 / 校验清单 / 已知陷阱。\n\n---\n\n## Step 3: 校验\n\n按所选 writer 文档的**第 8 节\"校验清单\"**逐项检查。\n\n**通用必检项**（任何格式都适用）：\n\n- 各章节标题完整、层级清晰\n- 章节有实质内容，无空段落或 `{{...}}` 占位符残留\n- 无\"报告生成日期\"或\"AI 辅助生成\"文字\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时通过图片阅读，报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2.1 中\"附录内容集成\"处理。\n\n---\n\n## 文件结构参考\n\n```\npaper-report/\n├── SKILL.md                    # 本文件（路由 + 通用流程）\n├── reader/\n│   ├── html.md                 # 输入处理：HTML 模式（H1–H3）\n│   └── pdf.md                  # 输入处理：PDF 模式（P1–P5）\n├── writer/\n│   ├── html.md                 # 输出格式：HTML（9 节）\n│   ├── html-template.html      # HTML 报告模板（含 MathJax）\n│   ├── markdown.md             # 输出格式：Markdown（9 节）\n│   ├── markdown-template.md    # Markdown 报告模板\n│   ├── docx.md                 # 输出格式：Word (.docx)（9 节）\n│   └── docx-template.js        # docx-js 构建器库 + 自检示例\n└── scripts/\n    ├── pdf_to_images.py\n    ├── crop_figures.py\n    ├── extract_arxiv_text.py\n    └── extract_figure_urls.py\n```\n\n> 新增输入源：在 `reader/` 加 `{name}.md`。新增输出格式：在 `writer/` 加 `{name}.md` + `{name}-template.{ext}`。SKILL.md 主流程无需改动。\n\nFile v2.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.1.2\",\n  \"publishedAt\": 1783998480370\n}\n\nFile v2.1.2:reader/html.md\n\n# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本 & 规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本 & 规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\npython3 scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\npython3 scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`python3 -m pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.2:reader/pdf.md\n\n# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\npython3 -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 转图片\n- [ ] Step P3: 逐页阅读理解 & 规划截图\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\npython3 scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n**Caption 边界（重要）**：裁剪矩形必须完整包含图/表下方（或上方）的 caption 行——即 `Figure N: ...` / `Table N: ...` 那一整段说明文字。writer 在正文中会以\"如图 N 所示\"、\"表 N 汇总了...\"方式引用原文，因此 caption 必须在图内可见；漏掉 caption 会导致下游报告失去溯源信息。同时，相邻正文段落必须**留在矩形之外**——y 边界宁可紧贴 caption 收窄，也不要把下一段正文文字一起框进来。\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin，但**不要越过 caption 边界把正文段落一起裁进来**。\n\n**图表选取原则**：见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\npython3 scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了顶部 → 减小 y0（向上扩展）\n- 混入了上方文字 → 增大 y0\n- 混入了下方文字 → 减小 y1\n- **caption 缺失**（截图里看不到 `Figure N: ...` / `Table N: ...` 行）→ 沿 caption 所在方向扩展 y0 / y1 直至完整包含\n- **caption 之外的正文段落混入** → 反向收窄 y0 / y1，紧贴 caption 边界\n- 一般留 5-10pt margin 即可\n\n反复调整直到所有截图质量合格。\n\n---\n\n完成以上 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.2:skill-card.md\n\n## Description:\n\nConvert academic papers from arXiv HTML pages or local PDFs into structured Chinese reading reports with original figures.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[nuaalixu](https://clawhub.ai/user/nuaalixu)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, students, and other paper readers use this skill to summarize, analyze, and create structured Chinese reading reports for academic papers. It supports HTML, Markdown, and Word outputs with selected original figures.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill downloads paper HTML, PDFs, and figure assets from the web, which can expose the workspace to untrusted content.\n\nMitigation: Run it in a constrained workspace, avoid untrusted paper HTML pages, and verify figure URLs before download.\n\nRisk: Generated HTML reports may contain unsafe or poorly escaped content.\n\nMitigation: Treat generated HTML as untrusted until escaping and script controls are reviewed.\n\nRisk: Dependency installation guidance is under-scoped and may use unpinned packages.\n\nMitigation: Prefer pinned local dependencies and review package installs before execution.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/skills/paper-report)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Chinese reading reports in HTML, Markdown, or DOCX, with extracted figure assets and supporting shell commands.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create workspace files such as downloaded paper inputs, extracted text, page images, figures, and final report files.]\n\n## Skill Version(s):\n\n2.1.2 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.1.2:writer/docx.md\n\n# 输出格式：Word (.docx)\n\n原生 Word 文档（图片以二进制 PNG 内嵌于 OOXML 容器），适合在 Word / WPS / Pages 中阅读与二次编辑，便于走 OA 流转或公司内审。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 Word 报告\"\"docx\"\"给我 Word 版\"。\n- 报告需要在 Microsoft Word / WPS / Pages 中**线下编辑**，或走公司 OA / 邮件附件 / 评审流转。\n- 用户希望保留章节大纲（H1/H2/H3）以便后续在 Word 中使用导航窗格 / 自动目录。\n- 与 HTML 报告对比：单文件、无 JS 依赖、无 base64 二次膨胀；与 Markdown 报告对比：单文件自包含、不另带 images 目录。\n\n> Word 输出**不作为默认格式**——HTML 仍为默认，本格式仅在用户显式指定时启用。\n\n## 2. 图片处理\n\n调用模板库里的 `figure(filename, caption, opts?)`，传入 `{workspace}/figures/` 下的相对文件名即可：\n\n```js\nfigure('fig1_architecture.png', '图 1：方法总体架构（原文 Figure 1）。')\n```\n\n库内部会：\n\n- 读取 PNG 文件头 IHDR 段（前 24 字节）拿到原始 `width × height`，按 `opts.widthPx`（默认 560 px）等比缩放，避免拉伸。\n- 用 `ImageRun` 把 PNG **原始字节**直接嵌入 docx，**不要**做 base64 二次编码（OOXML 容器本身就是 ZIP，PNG 进去即被压缩）。\n- 在图片下方追加一个居中、斜体、灰色的 caption 段。\n\n> 单张图片体积过大（>2 MB）时，建议在 `figures/` 目录里预先缩放（macOS 上 `sips`、跨平台可用 PIL / ImageMagick），避免 docx 体积失控。\n\n## 3. 数学公式\n\n`docx-js` 没有原生 LaTeX 渲染器，OOXML 的公式标记是 OMML，工程成本不值得为阅读报告引入。按复杂度分两条路：\n\n- **简单符号**（行内变量、希腊字母、上下标）：在 `p([...])` 中用 Unicode 直接写，例如 `α`、`β`、`x₁`、`σ²`、`≥`、`→`。这样在任何 Word/WPS 中都是普通文本，不需要额外渲染。\n- **复杂多行公式**：从 HTML 版本报告中借助 MathJax 截图（或用 poppler 的 `pdftoppm` 渲染单行公式），保存为 PNG 后用 `figure()` 嵌入。\n\n模板库**不提供** `math()` 助手，避免 agent 在 Word 中堆砌只有部分渲染器支持的 OMML。\n\n## 4. 表格处理\n\n调用 `table({ caption, cols, rows, headerFill? })`，列宽必须以 DXA（1440 DXA = 1 英寸）声明：\n\n```js\ntable({\n  caption: '表 1：主要超参数对照（原文 Table 1）。',\n  cols: [3000, 3000, 3360],          // 三列；Σ === 9360\n  rows: [\n    ['超参', '取值', '说明'],\n    ['学习率', '5e-4', '余弦退火'],\n    ['批大小', b('1024'), '梯度累积 4 步'],\n  ],\n})\n```\n\n约定：\n\n- 表宽固定为 **9360 DXA**（US Letter 12240 − 两侧各 1440 DXA 边距）。模板库会断言 `Σcols === 9360`，写错立即抛错。\n- 首行自动作为表头（加粗 + 浅灰底）。\n- 单元格内容可以是字符串，也可以是 `b('文本')` 等内联标记原语；最佳值用 `b(...)` 加粗，沿用 HTML / Markdown 的惯例。\n- 不要使用 `WidthType.PERCENTAGE`，Google Docs 打开会崩。\n\n## 5. 模板路径\n\n[docx-template.js](docx-template.js)\n\n该文件同时承担两个角色：\n\n- **库**：导出 `buildDocx`、`h2`、`h3`、`p`、`b`、`i`、`code`、`bullet`、`numbered`、`highlight`、`figure`、`table` 等原语。\n- **自检示例**：`if (require.main === module)` 块内含一段通用占位论文的最小可运行示例，直接 `node docx-template.js` 会在当前目录生成 `report_Example.docx`，可作为 API 演示和回归测试。\n\nagent 写真实报告时：**复制** `docx-template.js` 旁起一个 `gen_<简短标题>.js`，删掉文件底部的示例块，保留 `require('./docx-template.js')` 和顶层 `buildDocx({...})` 调用，按真实论文内容填写 `meta + sections`。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.docx` —— 单一自包含文件\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。**不需要**配套的 images 目录，所有 PNG 已嵌入 docx。\n\n## 7. 写作风格细节\n\n- **章节层级**：`h2()` / `h3()` 对应 Word 大纲的 Heading 2 / 3；顶部封面标题由 `meta.titleCn` 自动以 H1 居中渲染。\n- **字体**：默认 `Arial` + 后备 `PingFang SC` / `Microsoft YaHei`，由模板库的默认样式表声明，正文 11 pt（22 半磅）。\n- **颜色基调**：H1 / H2 用主色 `#1A365D`，H3 用副色 `#2B6CB0`，与 HTML 报告视觉一致。\n- **正文段落**：使用 `p(...)` 包裹，两端对齐，行距 1.5。\n- **重点结论卡片**：使用 `highlight([...])` —— 实现为单格表格，左侧 24 磅蓝边、底色 `#F7FAFC`，对应 HTML 报告的 `.highlight` 卡片。\n- **列表**：项目符号用 `bullet(...)`，编号用 `numbered(...)`；**绝不**在 `p()` 中直接写 `•`、`·`、`*` 之类字面字符（详见 §9）。\n- **图表引用**：正文中用\"如图 1 所示\"、\"表 1 汇总了……\"，与 HTML / Markdown 风格保持一致。\n\n## 8. 校验清单\n\n`.docx` 是 ZIP 容器，用 `unzip -l` 看清单即可完成结构校验，不依赖第三方验证器。\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或 `{{...}}` 占位符残留\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**Word 专项检查**：\n\n- 依赖预检（先于生成）：\n\n  ```bash\n  NODE_PATH=\"$(npm root -g)\" node -e \"require('docx')\" \\\n    || npm install -g docx\n  ```\n\n- 结构完整性（生成后）：\n\n  ```bash\n  unzip -l {workspace}/outputs/report_{简短标题}.docx \\\n    | grep -E '\\[Content_Types\\]\\.xml|word/document\\.xml|word/styles\\.xml|word/numbering\\.xml'\n  # 上述四项必须齐全\n  ```\n\n- 图片清点（数量应等于 `figure()` 调用次数）：\n\n  ```bash\n  unzip -l {workspace}/outputs/report_{简短标题}.docx \\\n    | grep -c 'word/media/'\n  ```\n\n- 视觉终审：由使用者在 Microsoft Word / WPS / Pages 中打开抽查首屏、目录/标题层级、图表位置与表格边界。docx 的目标渲染器就是这几个，任何自动化渲染差异都不作为 bug 判据。\n\n## 9. 已知陷阱\n\n- **不要字面项目符号字符**：`new TextRun('• item')` 会得到一个孤立的圆点字符，Word 不会识别为列表。必须用 `bullet(...)`，库内部走 `LevelFormat.BULLET` + numbering 定义。\n- **表格列宽必须 DXA**：`WidthType.PERCENTAGE` 在 Google Docs 中会崩；`columnWidths` 数组之和必须等于表宽 9360 DXA。`table()` 已内置断言，写错立即抛错。\n- **`ImageRun` 必须传 `type` 字段**：`'png' / 'jpg' / 'jpeg' / 'gif' / 'bmp' / 'svg'` 之一；`figure()` 根据扩展名自动推断，但若手动调底层 API 需自己指定。\n- **PNG 尺寸**：直接给 docx-js 写固定 `width/height` 会按那个尺寸拉伸图片；`figure()` 解析 PNG IHDR 自动取原始宽高再等比缩放，**不要**绕过去自己写。\n- **全局安装的 docx-js 在脚本中 require 失败**：Node 只在 `NODE_PATH` 或本地 `node_modules` 里找包，`npm install -g` 装的全局包默认不在解析路径上。`docx-template.js` 已内置候选路径 fallback（优先 `npm root -g` 结果、其次直接 `require('docx')`），因此复制到 `gen_<简短标题>.js` 后一般无需再关心；实在不行两种解法：\n  1. 运行时 `NODE_PATH=\"$(npm root -g)\" node script.js`；\n  2. 在项目内 `npm install docx` 走本地依赖，`require('docx')` 直接命中。\n- **`PageBreak` 必须在 `Paragraph` 内**：`children: [new PageBreak()]`，不能裸放在 section.children 里。\n- **避免 Unicode 等宽空格 / 全角空格**：复制自 PDF/HTML 的内容里偶尔混入 `U+00A0` / `U+3000`，会在 Word 中显示为可见方块。`p()` 内部不会清洗，agent 自行清洗或避免来源含这种字符。\n- **中文渲染必须走 `eastAsia` 字体槽**：OOXML 的字体属性有四槽 ascii / hAnsi / cs / eastAsia，只写 `font: 'Arial'` 字符串会把四槽全填 Arial——由于 Arial 本身无 CJK 字形，中文字符是否可见完全依赖渲染器\"字体缺失自动回退\"这个隐式行为，不同 Word 版本、字体包、企业策略、Word Online 等场景下都可能翻车，属于**结果不确定**的写法。模板 `FONT` 常量已固定使用 `{ ascii, hAnsi, cs: 'Arial', eastAsia: 'PingFang SC', hint: 'eastAsia' }` 对象形式，把 CJK 字体作为契约显式写入 OOXML；扩展库时任何新增 `TextRun` 必须复用 `FONT` 常量，**禁止**回退为裸字符串。缺 PingFang SC 的环境会由 Word/WPS 按 fontTable 顺序替换为 Microsoft YaHei / SimSun 等，均可接受。\n- **`skills/docx` 自带的 `validate.py` 不可用**：该脚本要求 Python 3.10+ 的 `match` 语法 + `lxml` 模块，两项都缺时无法运行。退一步用 `unzip -l` 的结构完整性检查 + 使用者在 Word / WPS 中肉眼终审即可，无需强行满足其依赖。\n\nFile v2.1.2:writer/html.md\n\n# 输出格式：HTML\n\n自包含 HTML 报告（图片以 base64 形式内嵌），打开即可阅读，便于分享。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 HTML 报告\"。\n- 用户未指定输出格式时的**默认选择**。\n- 报告需要直接发送 / 分享 / 在线浏览，不希望出现\"图片丢失\"问题。\n- 论文公式较多，需要更佳的数学公式排版（MathJax 渲染）。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的所有目标图片转为 base64 data URI 内嵌：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1].lower()\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\", \"jpeg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：\n\n```html\n<figure>\n  <img src=\"{base64_data}\" alt=\"Figure 1：架构图\" style=\"max-width:100%;\">\n  <figcaption>图 1：架构图（原文 Figure 1）</figcaption>\n</figure>\n```\n\n> 单张图片体积过大（>2 MB）时建议先用 PIL 缩放（如 LANCZOS 重采样到 1400 px 宽），避免最终 HTML 过大。\n\n## 3. 数学公式\n\n使用 LaTeX 语法书写公式：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n模板已内置 MathJax 3 配置和 `tex-svg.js` 脚本引用，无需额外引入。\n\n**反斜杠陷阱**：在 Python 中拼接含 LaTeX 的字符串时，应使用**原始字符串**或**单反斜杠**，确保最终 HTML 中 LaTeX 命令前是单个 `\\`：\n\n```python\n# ✅ 正确\nformula = r\"$\\mathcal{L} = \\sum_i \\log p_\\theta$\"\n# ❌ 错误：写成 \\\\mathcal 会渲染失败\nformula = \"$\\\\\\\\mathcal{L} = \\\\\\\\sum_i$\"\n```\n\n## 4. 表格处理\n\n直接使用 HTML `<table>` 标签，模板 CSS 已为表格定义样式（边框、表头加粗、行斑马纹）：\n\n```html\n<table>\n  <thead>\n    <tr><th>模型</th><th>BLEU</th><th>ROUGE-L</th></tr>\n  </thead>\n  <tbody>\n    <tr><td>Baseline</td><td>32.1</td><td>54.2</td></tr>\n    <tr><td><strong>Ours</strong></td><td><strong>35.8</strong></td><td><strong>57.6</strong></td></tr>\n  </tbody>\n</table>\n```\n\n加粗使用 `<strong>` 标记最佳值，便于读者快速定位重点。\n\n## 5. 模板路径\n\n[html-template.html](html-template.html)\n\n模板包含完整 `<head>`（CSS 变量、MathJax 配置）、占位符（如 `{{PAPER_TITLE_CN}}`、`{{FIG1_BASE64}}`、`{{FIG1_CAPTION}}` 等）和章节骨架。生成时用字符串替换占位符。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.html` —— 单一自包含 HTML 文件\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。\n\n## 7. 写作风格细节\n\n- 段落使用 `<p>` 包裹，章节使用 `<h2>` / `<h3>`。\n- 重点结论可用 `<div class=\"highlight\">...</div>`（模板预定义高亮卡片样式）。\n- 引用原文术语时优先 `<em>` 或 `<code>` 而非反引号。\n- 图表说明放在 `<figcaption>` 中，与图紧邻；正文用\"如图 1 所示\"引用。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 HTML，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**HTML 专项检查**：\n\n- HTML 基本结构完整：`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`、`</html>` 齐全\n- `<head>` 中包含 MathJax 配置和 `tex-svg.js` 脚本引用\n- 所有 `<img>` 的 `src` 为有效 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在外部图片链接（`http://...png`）或本地文件路径引用\n- 每张图片有描述性 `alt` 属性和 `<figcaption>`\n- CSS 样式内嵌在 `<style>` 标签中，无外部样式表依赖\n- **反斜杠检查**——确认 LaTeX 命令前是单个 `\\`：\n\n  ```bash\n  grep -c '\\\\\\\\math' {workspace}/outputs/report_{简短标题}.html\n  # 结果应为 0\n  ```\n\n## 9. 已知陷阱\n\n- **尖括号与 HTML 特殊字符**：`<`、`>`、`&` 同时对 HTML 解析器和 MathJax 有特殊含义，需根据上下文分别处理：\n  - **数学公式内**（`$...$` / `$$...$$`）：比较运算符用 `\\lt`、`\\gt`；尖括号标记（如 `<token>`）用 `\\langle\\texttt{token}\\rangle`——注意 `\\langle`/`\\rangle` 必须在 `\\texttt{}` **外部**，写成 `\\texttt{\\lt token\\gt}` 会导致 `\\lt`/`\\gt` 被当作等宽文本原样显示而非渲染为符号。\n  - **非数学上下文**（`<code>`、`<p>` 等 HTML 标签内）：用 HTML 实体 `&lt;`/`&gt;`，如 `<code>&lt;silent&gt;</code>`。绝不要在非数学上下文中使用 `\\lt`/`\\gt` 等 LaTeX 命令。\n- **MathJax 误报**：校验\"无外部 src\"时，注意 `<script src=\"https://...mathjax...\">` 是允许的，只需确认 `<img>` 标签全部使用 base64。\n- **HTML 体积**：高分辨率图过多时文件可能超过 5 MB，建议先在 figures 目录预压缩或限制 max-width。\n- **占位符冲突**：模板中 `{{PLACEHOLDER}}` 与 LaTeX 的 `{...}` 形式相似，替换时使用精确字符串匹配，避免误伤。\n- **base64 中转义字符**：base64 字符集不含 `\\`，无需对其转义；但拼接到字符串时仍要确保 Python 字面量的反斜杠正确。\n\nFile v2.1.2:writer/markdown-template.md\n\n# {{PAPER_TITLE_CN}}\n\n**{{PAPER_TITLE_EN}}**\n\n*作者：{{AUTHORS}}*\n\n*机构：{{AFFILIATIONS}}*\n\n*来源：{{VENUE}} · {{YEAR}}*\n\n---\n\n## 一、研究背景与动机\n\n{{BACKGROUND_CONTENT}}\n\n## 二、核心方法 / 技术方案\n\n{{METHOD_CONTENT}}\n\n![图 1：{{FIG1_CAPTION}}](./{{SHORT_TITLE}}-images/fig1_architecture.png)\n\n## 三、实验设计\n\n{{EXPERIMENT_DESIGN}}\n\n## 四、实验结果与分析\n\n{{RESULTS_CONTENT}}\n\n| 模型 | 指标 A | 指标 B | 指标 C |\n|------|--------|--------|--------|\n| Baseline | xx.x | xx.x | xx.x |\n| Ours | **xx.x** | **xx.x** | **xx.x** |\n\n![图 2：{{FIG2_CAPTION}}](./{{SHORT_TITLE}}-images/fig2_results.png)\n\n## 五、主要贡献与创新点\n\n{{CONTRIBUTIONS}}\n\n## 六、局限性与未来方向\n\n{{LIMITATIONS}}\n\n## 七、个人点评与总结\n\n{{COMMENTARY}}\n\n---\n\n*基于论文原文整理 · 仅供学术交流参考*\n\nFile v2.1.2:writer/markdown.md\n\n# 输出格式：Markdown\n\n标准 Markdown 报告 + 独立图片目录。便于在编辑器、GitHub、Wiki 等环境中查看与二次编辑。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 Markdown 报告\"或\"给我 .md 文件\"。\n- 报告需进入 Git 仓库 / 文档站 / Notion / 飞书等支持 Markdown 的平台。\n- 用户希望后续手动编辑、复制片段。\n- 需要轻量、纯文本、易于 diff 的产物。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的目标图片复制到 `{workspace}/outputs/{简短标题}-images/` 目录，Markdown 中以**相对路径**引用：\n\n```markdown\n![图 1：架构图](./{简短标题}-images/fig1_architecture.png)\n```\n\n**注意**：\n\n- 不要使用绝对路径或 `file://` 协议，否则在他人环境中无法显示。\n- 图片文件名使用语义化英文（如 `fig2_results.png`、`fig3_ablation.png`），避免空格和中文。\n- 图片目录与 `.md` 文件应保持同级关系，便于打包分发。\n\n## 3. 数学公式\n\n使用标准 LaTeX 语法：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n主流 Markdown 渲染器（GitHub、VS Code、Typora、Obsidian、Notion 等）原生支持 KaTeX/MathJax。\n\n> 由于不同渲染器对 `\\\\` 换行、空行等细节有差异，公式建议保持简洁，复杂多行推导拆为多个独立公式块。\n\n## 4. 表格处理\n\n使用 Markdown 原生表格语法，最佳值用 `**...**` 加粗：\n\n```markdown\n| 模型 | BLEU | ROUGE-L |\n|------|------|---------|\n| Baseline | 32.1 | 54.2 |\n| Ours | **35.8** | **57.6** |\n```\n\n表格列数较多或单元格内有换行/公式时，可降级为 HTML `<table>`（GFM 兼容）。\n\n## 5. 模板路径\n\n[markdown-template.md](markdown-template.md)\n\n模板包含斜体行样式的元信息块（作者/机构/来源）、章节骨架、图片引用示例和表格示例。占位符以 `{{...}}` 形式存在。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.md` —— Markdown 报告主文件\n- `{简短标题}-images/` —— 图片目录（与 .md 同级）\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。两者使用**相同的简短标题**。\n\n## 7. 写作风格细节\n\n- 章节标题使用 `##`（一级）、`###`（二级），避免使用 `#`（保留给文档总标题）。\n- 图表引用格式：\"如图 1 所示，...\"、\"表 1 汇总了...\"。\n- 重点结论用 `**...**` 加粗或 `> ...` 引用块。\n- 列表项之间留空行，避免 GFM 渲染合并问题。\n- 代码片段使用三反引号围栏，并标注语言（如 ` ```python `）。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 `.md` 文件，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰（`##` / `###`）\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**Markdown 专项检查**：\n\n- 公式使用 `$...$` 或 `$$...$$`，无乱码\n- 所有图片引用为相对路径 `./{简短标题}-images/xxx.png`\n- **图片文件验证**——必须用 `ls` 显式确认文件存在：\n\n  ```bash\n  ls {workspace}/outputs/{简短标题}-images/\n  ```\n\n- 逐个核对：Markdown 中每个 `![...](./{简短标题}-images/xxx.png)` 引用的文件确实在目录中\n\n## 9. 已知陷阱\n\n- **复制 vs 移动**：图片是从 `{workspace}/figures/` 复制（cp）到 outputs 子目录，**不要 mv**——避免后续重新生成时图片源丢失。\n- **Windows 路径分隔符**：始终使用 `/`，不要使用 `\\`，跨平台兼容。\n- **GFM 与 KaTeX 差异**：GitHub 原生不支持 `$$`，需仓库启用 MathJax；用户在 GitHub 阅读时建议下载本地查看或注明渲染要求。\n- **图片大小**：Markdown 不支持自动缩放，原图过大会撑爆视图。建议在 `figures/` 中预先缩放（如最大宽度 1400 px）后再复制。\n- **目录命名空格**：`{简短标题}-images/` 中的简短标题不能含空格，否则在某些 Markdown 渲染器中链接断裂。\n\nArchive v2.1.1: 15 files, 35279 bytes\n\nFiles: reader/html.md (4311b), reader/pdf.md (4629b), scripts/crop_figures.py (2484b), scripts/extract_figure_urls.py (3194b), scripts/extract_html_text.py (3133b), scripts/pdf_to_images.py (1208b), skill-card.md (2434b), SKILL.md (6030b), writer/docx-template.js (20477b), writer/docx.md (8534b), writer/html-template.html (5516b), writer/html.md (5397b), writer/markdown-template.md (871b), writer/markdown.md (4156b), _meta.json (131b)\n\nFile v2.1.1:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告。输入方式（`reader/`）与输出格式（`writer/`）独立解耦，详见末尾目录结构。\n\n> **脚本运行时**：`reader/` 输入处理与 HTML / Markdown writer 构建脚本用 `python3`；Word (.docx) writer 构建脚本用 `node`。环境相关的路径 / 依赖细节在各 writer 文档的\"已知陷阱\"里单独说明。\n\n---\n\n## Step 1: 路由决策\n\n### 1.1 选择输出格式\n\n- 用户明确指定 → 按用户要求。\n- 用户未指定 → **默认 HTML**。\n\n确定后**记住这个选择**，用于 Step 2 时分发到对应的 writer。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。规则：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 使用 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf`。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查页面是否存在：\n\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n\n- 返回 `HTTP/... 200` → **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n完成输入处理后，`{workspace}/figures/` 已包含所有目标图表。\n\n### 2.1 报告结构（参考框架，可根据论文内容灵活调整）\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性**：根据论文内容可增加章节（如 Case Study、数据集详解）、合并章节（如实验设计与结果合一）、自由组织子结构。\n\n**附录内容集成**：\n\n- \"方法实现细节/超参数/训练配置\" → **融入对应主方法章节**\n- \"补充实验/额外消融\" → 融入实验结果章节或独立小节\n- \"独立子课题/独立证明\" → 可设独立附录章节\n\n### 2.2 图表选取原则\n\n根据报告内容需要选取，**不设数量硬上限**：\n\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：报告中有讨论则选入\n- Case Study 截图：有说明价值则选入\n\n### 2.3 通用写作要求\n\n- 全文中文，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用：\"如图 1 所示，...\" / \"表 1 汇总了...\"\n- 严格基于原文，不添加原文未涉及的推测或数据\n- 每章应有实质内容，避免泛泛而谈\n- **不**包含\"报告生成日期\"或\"AI 生成\"相关文字\n\n### 2.4 按输出格式分发\n\n根据 Step 1.1 的输出格式选择，跳转到对应的 writer 文档：\n\n- **HTML 输出** → [writer/html.md](writer/html.md)\n- **Markdown 输出** → [writer/markdown.md](writer/markdown.md)\n- **Word (.docx) 输出** → [writer/docx.md](writer/docx.md)\n\n每份 writer 文档包含完整的：图片处理 / 数学公式 / 表格 / 模板路径 / 文件命名 / 写作风格 / 校验清单 / 已知陷阱。\n\n---\n\n## Step 3: 校验\n\n按所选 writer 文档的**第 8 节\"校验清单\"**逐项检查。\n\n**通用必检项**（任何格式都适用）：\n\n- 各章节标题完整、层级清晰\n- 章节有实质内容，无空段落或 `{{...}}` 占位符残留\n- 无\"报告生成日期\"或\"AI 辅助生成\"文字\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时通过图片阅读，报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2.1 中\"附录内容集成\"处理。\n\n---\n\n## 文件结构参考\n\n```\npaper-report/\n├── SKILL.md                    # 本文件（路由 + 通用流程）\n├── reader/\n│   ├── html.md                 # 输入处理：HTML 模式（H1–H3）\n│   └── pdf.md                  # 输入处理：PDF 模式（P1–P5）\n├── writer/\n│   ├── html.md                 # 输出格式：HTML（9 节）\n│   ├── html-template.html      # HTML 报告模板（含 MathJax）\n│   ├── markdown.md             # 输出格式：Markdown（9 节）\n│   ├── markdown-template.md    # Markdown 报告模板\n│   ├── docx.md                 # 输出格式：Word (.docx)（9 节）\n│   └── docx-template.js        # docx-js 构建器库 + 自检示例\n└── scripts/\n    ├── pdf_to_images.py\n    ├── crop_figures.py\n    ├── extract_arxiv_text.py\n    └── extract_figure_urls.py\n```\n\n> 新增输入源：在 `reader/` 加 `{name}.md`。新增输出格式：在 `writer/` 加 `{name}.md` + `{name}-template.{ext}`。SKILL.md 主流程无需改动。\n\nFile v2.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.1.1\",\n  \"publishedAt\": 1783922923128\n}\n\nFile v2.1.1:reader/html.md\n\n# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本 & 规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本 & 规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\npython3 scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\npython3 scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`python3 -m pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.1:reader/pdf.md\n\n# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\npython3 -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 转图片\n- [ ] Step P3: 逐页阅读理解 & 规划截图\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\npython3 scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin。\n\n**图表选取原则**：见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\npython3 scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了顶部 → 减小 y0（向上扩展）\n- 混入了上方文字 → 增大 y0\n- 混入了下方文字 → 减小 y1\n- 一般留 5-10pt margin 即可\n\n反复调整直到所有截图质量合格。\n\n---\n\n完成以上 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.1:skill-card.md\n\n## Description: <br>\nConvert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[nuaalixu](https://clawhub.ai/user/nuaalixu) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, researchers, and analysts use this skill to turn arXiv links or local PDF papers into structured Chinese reading reports with selected original figures. It can produce HTML by default, Markdown on request, or Word documents when explicitly requested. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may download papers and figure assets from the web and generated HTML reports load MathJax from an external CDN when opened. <br>\nMitigation: Use trusted arXiv or paper URLs, review downloaded assets before relying on them, and open HTML reports only in environments where external CDN loading is acceptable. <br>\nRisk: The skill can install Python or Node dependencies and read the local PDF paths supplied by the user. <br>\nMitigation: Run it in a controlled workspace, provide only intended PDF paths, and review dependency installation commands before execution. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/skills/paper-report) <br>\n- [Publisher profile](https://clawhub.ai/user/nuaalixu) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, files] <br>\n**Output Format:** [Chinese reading reports as HTML, Markdown, or Word files, with supporting extracted figure assets and setup commands when needed] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Reads user-provided PDFs or paper HTML, downloads selected paper figures, and writes report artifacts in the workspace.] <br>\n\n## Skill Version(s): <br>\n2.1.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v2.1.1:writer/docx.md\n\n# 输出格式：Word (.docx)\n\n原生 Word 文档（图片以二进制 PNG 内嵌于 OOXML 容器），适合在 Word / WPS / Pages 中阅读与二次编辑，便于走 OA 流转或公司内审。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 Word 报告\"\"docx\"\"给我 Word 版\"。\n- 报告需要在 Microsoft Word / WPS / Pages 中**线下编辑**，或走公司 OA / 邮件附件 / 评审流转。\n- 用户希望保留章节大纲（H1/H2/H3）以便后续在 Word 中使用导航窗格 / 自动目录。\n- 与 HTML 报告对比：单文件、无 JS 依赖、无 base64 二次膨胀；与 Markdown 报告对比：单文件自包含、不另带 images 目录。\n\n> Word 输出**不作为默认格式**——HTML 仍为默认，本格式仅在用户显式指定时启用。\n\n## 2. 图片处理\n\n调用模板库里的 `figure(filename, caption, opts?)`，传入 `{workspace}/figures/` 下的相对文件名即可：\n\n```js\nfigure('fig1_architecture.png', '图 1：方法总体架构（原文 Figure 1）。')\n```\n\n库内部会：\n\n- 读取 PNG 文件头 IHDR 段（前 24 字节）拿到原始 `width × height`，按 `opts.widthPx`（默认 560 px）等比缩放，避免拉伸。\n- 用 `ImageRun` 把 PNG **原始字节**直接嵌入 docx，**不要**做 base64 二次编码（OOXML 容器本身就是 ZIP，PNG 进去即被压缩）。\n- 在图片下方追加一个居中、斜体、灰色的 caption 段。\n\n> 单张图片体积过大（>2 MB）时，建议在 `figures/` 目录里预先缩放（macOS 上 `sips`、跨平台可用 PIL / ImageMagick），避免 docx 体积失控。\n\n## 3. 数学公式\n\n`docx-js` 没有原生 LaTeX 渲染器，OOXML 的公式标记是 OMML，工程成本不值得为阅读报告引入。按复杂度分两条路：\n\n- **简单符号**（行内变量、希腊字母、上下标）：在 `p([...])` 中用 Unicode 直接写，例如 `α`、`β`、`x₁`、`σ²`、`≥`、`→`。这样在任何 Word/WPS 中都是普通文本，不需要额外渲染。\n- **复杂多行公式**：从 HTML 版本报告中借助 MathJax 截图（或用 poppler 的 `pdftoppm` 渲染单行公式），保存为 PNG 后用 `figure()` 嵌入。\n\n模板库**不提供** `math()` 助手，避免 agent 在 Word 中堆砌只有部分渲染器支持的 OMML。\n\n## 4. 表格处理\n\n调用 `table({ caption, cols, rows, headerFill? })`，列宽必须以 DXA（1440 DXA = 1 英寸）声明：\n\n```js\ntable({\n  caption: '表 1：主要超参数对照（原文 Table 1）。',\n  cols: [3000, 3000, 3360],          // 三列；Σ === 9360\n  rows: [\n    ['超参', '取值', '说明'],\n    ['学习率', '5e-4', '余弦退火'],\n    ['批大小', b('1024'), '梯度累积 4 步'],\n  ],\n})\n```\n\n约定：\n\n- 表宽固定为 **9360 DXA**（US Letter 12240 − 两侧各 1440 DXA 边距）。模板库会断言 `Σcols === 9360`，写错立即抛错。\n- 首行自动作为表头（加粗 + 浅灰底）。\n- 单元格内容可以是字符串，也可以是 `b('文本')` 等内联标记原语；最佳值用 `b(...)` 加粗，沿用 HTML / Markdown 的惯例。\n- 不要使用 `WidthType.PERCENTAGE`，Google Docs 打开会崩。\n\n## 5. 模板路径\n\n[docx-template.js](docx-template.js)\n\n该文件同时承担两个角色：\n\n- **库**：导出 `buildDocx`、`h2`、`h3`、`p`、`b`、`i`、`code`、`bullet`、`numbered`、`highlight`、`figure`、`table` 等原语。\n- **自检示例**：`if (require.main === module)` 块内含一段通用占位论文的最小可运行示例，直接 `node docx-template.js` 会在当前目录生成 `report_Example.docx`，可作为 API 演示和回归测试。\n\nagent 写真实报告时：**复制** `docx-template.js` 旁起一个 `gen_<简短标题>.js`，删掉文件底部的示例块，保留 `require('./docx-template.js')` 和顶层 `buildDocx({...})` 调用，按真实论文内容填写 `meta + sections`。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.docx` —— 单一自包含文件\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。**不需要**配套的 images 目录，所有 PNG 已嵌入 docx。\n\n## 7. 写作风格细节\n\n- **章节层级**：`h2()` / `h3()` 对应 Word 大纲的 Heading 2 / 3；顶部封面标题由 `meta.titleCn` 自动以 H1 居中渲染。\n- **字体**：默认 `Arial` + 后备 `PingFang SC` / `Microsoft YaHei`，由模板库的默认样式表声明，正文 11 pt（22 半磅）。\n- **颜色基调**：H1 / H2 用主色 `#1A365D`，H3 用副色 `#2B6CB0`，与 HTML 报告视觉一致。\n- **正文段落**：使用 `p(...)` 包裹，两端对齐，行距 1.5。\n- **重点结论卡片**：使用 `highlight([...])` —— 实现为单格表格，左侧 24 磅蓝边、底色 `#F7FAFC`，对应 HTML 报告的 `.highlight` 卡片。\n- **列表**：项目符号用 `bullet(...)`，编号用 `numbered(...)`；**绝不**在 `p()` 中直接写 `•`、`·`、`*` 之类字面字符（详见 §9）。\n- **图表引用**：正文中用\"如图 1 所示\"、\"表 1 汇总了……\"，与 HTML / Markdown 风格保持一致。\n\n## 8. 校验清单\n\n`.docx` 是 ZIP 容器，用 `unzip -l` 看清单即可完成结构校验，不依赖第三方验证器。\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或 `{{...}}` 占位符残留\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**Word 专项检查**：\n\n- 依赖预检（先于生成）：\n\n  ```bash\n  NODE_PATH=\"$(npm root -g)\" node -e \"require('docx')\" \\\n    || npm install -g docx\n  ```\n\n- 结构完整性（生成后）：\n\n  ```bash\n  unzip -l {workspace}/outputs/report_{简短标题}.docx \\\n    | grep -E '\\[Content_Types\\]\\.xml|word/document\\.xml|word/styles\\.xml|word/numbering\\.xml'\n  # 上述四项必须齐全\n  ```\n\n- 图片清点（数量应等于 `figure()` 调用次数）：\n\n  ```bash\n  unzip -l {workspace}/outputs/report_{简短标题}.docx \\\n    | grep -c 'word/media/'\n  ```\n\n- 视觉最终验证（可选）：若已安装 LibreOffice（macOS 可 `brew install --cask libreoffice`），用 `soffice` 渲染为 PDF 抽查首屏与图片位置：\n\n  ```bash\n  soffice --headless --convert-to pdf \\\n    --outdir {workspace}/outputs \\\n    {workspace}/outputs/report_{简短标题}.docx\n  ```\n\n## 9. 已知陷阱\n\n- **不要字面项目符号字符**：`new TextRun('• item')` 会得到一个孤立的圆点字符，Word 不会识别为列表。必须用 `bullet(...)`，库内部走 `LevelFormat.BULLET` + numbering 定义。\n- **表格列宽必须 DXA**：`WidthType.PERCENTAGE` 在 Google Docs 中会崩；`columnWidths` 数组之和必须等于表宽 9360 DXA。`table()` 已内置断言，写错立即抛错。\n- **`ImageRun` 必须传 `type` 字段**：`'png' / 'jpg' / 'jpeg' / 'gif' / 'bmp' / 'svg'` 之一；`figure()` 根据扩展名自动推断，但若手动调底层 API 需自己指定。\n- **PNG 尺寸**：直接给 docx-js 写固定 `width/height` 会按那个尺寸拉伸图片；`figure()` 解析 PNG IHDR 自动取原始宽高再等比缩放，**不要**绕过去自己写。\n- **全局安装的 docx-js 在脚本中 require 失败**：Node 只在 `NODE_PATH` 或本地 `node_modules` 里找包，`npm install -g` 装的全局包默认不在解析路径上。`docx-template.js` 已内置候选路径 fallback（优先 `npm root -g` 结果、其次直接 `require('docx')`），因此复制到 `gen_<简短标题>.js` 后一般无需再关心；实在不行两种解法：\n  1. 运行时 `NODE_PATH=\"$(npm root -g)\" node script.js`；\n  2. 在项目内 `npm install docx` 走本地依赖，`require('docx')` 直接命中。\n- **`PageBreak` 必须在 `Paragraph` 内**：`children: [new PageBreak()]`，不能裸放在 section.children 里。\n- **避免 Unicode 等宽空格 / 全角空格**：复制自 PDF/HTML 的内容里偶尔混入 `U+00A0` / `U+3000`，会在 Word 中显示为可见方块。`p()` 内部不会清洗，agent 自行清洗或避免来源含这种字符。\n- **跨平台字体回退**：Arial 在 macOS / Windows 有原生支持；中文走 PingFang SC（macOS）/ Microsoft YaHei（Windows）回退。Linux 上若都缺，Word/WPS 会自动替换为现有等宽中文字体，可接受。\n- **`skills/docx` 自带的 `validate.py` 不可用**：该脚本要求 Python 3.10+ 的 `match` 语法 + `lxml` 模块，两项都缺时无法运行。退一步用 `unzip -l` + LibreOffice 渲染 PDF 的二段验证即可，无需强行满足其依赖。\n\nFile v2.1.1:writer/html.md\n\n# 输出格式：HTML\n\n自包含 HTML 报告（图片以 base64 形式内嵌），打开即可阅读，便于分享。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 HTML 报告\"。\n- 用户未指定输出格式时的**默认选择**。\n- 报告需要直接发送 / 分享 / 在线浏览，不希望出现\"图片丢失\"问题。\n- 论文公式较多，需要更佳的数学公式排版（MathJax 渲染）。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的所有目标图片转为 base64 data URI 内嵌：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1].lower()\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\", \"jpeg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：\n\n```html\n<figure>\n  <img src=\"{base64_data}\" alt=\"Figure 1：架构图\" style=\"max-width:100%;\">\n  <figcaption>图 1：架构图（原文 Figure 1）</figcaption>\n</figure>\n```\n\n> 单张图片体积过大（>2 MB）时建议先用 PIL 缩放（如 LANCZOS 重采样到 1400 px 宽），避免最终 HTML 过大。\n\n## 3. 数学公式\n\n使用 LaTeX 语法书写公式：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n模板已内置 MathJax 3 配置和 `tex-svg.js` 脚本引用，无需额外引入。\n\n**反斜杠陷阱**：在 Python 中拼接含 LaTeX 的字符串时，应使用**原始字符串**或**单反斜杠**，确保最终 HTML 中 LaTeX 命令前是单个 `\\`：\n\n```python\n# ✅ 正确\nformula = r\"$\\mathcal{L} = \\sum_i \\log p_\\theta$\"\n# ❌ 错误：写成 \\\\mathcal 会渲染失败\nformula = \"$\\\\\\\\mathcal{L} = \\\\\\\\sum_i$\"\n```\n\n## 4. 表格处理\n\n直接使用 HTML `<table>` 标签，模板 CSS 已为表格定义样式（边框、表头加粗、行斑马纹）：\n\n```html\n<table>\n  <thead>\n    <tr><th>模型</th><th>BLEU</th><th>ROUGE-L</th></tr>\n  </thead>\n  <tbody>\n    <tr><td>Baseline</td><td>32.1</td><td>54.2</td></tr>\n    <tr><td><strong>Ours</strong></td><td><strong>35.8</strong></td><td><strong>57.6</strong></td></tr>\n  </tbody>\n</table>\n```\n\n加粗使用 `<strong>` 标记最佳值，便于读者快速定位重点。\n\n## 5. 模板路径\n\n[html-template.html](html-template.html)\n\n模板包含完整 `<head>`（CSS 变量、MathJax 配置）、占位符（如 `{{PAPER_TITLE_CN}}`、`{{FIG1_BASE64}}`、`{{FIG1_CAPTION}}` 等）和章节骨架。生成时用字符串替换占位符。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.html` —— 单一自包含 HTML 文件\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。\n\n## 7. 写作风格细节\n\n- 段落使用 `<p>` 包裹，章节使用 `<h2>` / `<h3>`。\n- 重点结论可用 `<div class=\"highlight\">...</div>`（模板预定义高亮卡片样式）。\n- 引用原文术语时优先 `<em>` 或 `<code>` 而非反引号。\n- 图表说明放在 `<figcaption>` 中，与图紧邻；正文用\"如图 1 所示\"引用。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 HTML，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**HTML 专项检查**：\n\n- HTML 基本结构完整：`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`、`</html>` 齐全\n- `<head>` 中包含 MathJax 配置和 `tex-svg.js` 脚本引用\n- 所有 `<img>` 的 `src` 为有效 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在外部图片链接（`http://...png`）或本地文件路径引用\n- 每张图片有描述性 `alt` 属性和 `<figcaption>`\n- CSS 样式内嵌在 `<style>` 标签中，无外部样式表依赖\n- **反斜杠检查**——确认 LaTeX 命令前是单个 `\\`：\n\n  ```bash\n  grep -c '\\\\\\\\math' {workspace}/outputs/report_{简短标题}.html\n  # 结果应为 0\n  ```\n\n## 9. 已知陷阱\n\n- **尖括号与 HTML 特殊字符**：`<`、`>`、`&` 同时对 HTML 解析器和 MathJax 有特殊含义，需根据上下文分别处理：\n  - **数学公式内**（`$...$` / `$$...$$`）：比较运算符用 `\\lt`、`\\gt`；尖括号标记（如 `<token>`）用 `\\langle\\texttt{token}\\rangle`——注意 `\\langle`/`\\rangle` 必须在 `\\texttt{}` **外部**，写成 `\\texttt{\\lt token\\gt}` 会导致 `\\lt`/`\\gt` 被当作等宽文本原样显示而非渲染为符号。\n  - **非数学上下文**（`<code>`、`<p>` 等 HTML 标签内）：用 HTML 实体 `&lt;`/`&gt;`，如 `<code>&lt;silent&gt;</code>`。绝不要在非数学上下文中使用 `\\lt`/`\\gt` 等 LaTeX 命令。\n- **MathJax 误报**：校验\"无外部 src\"时，注意 `<script src=\"https://...mathjax...\">` 是允许的，只需确认 `<img>` 标签全部使用 base64。\n- **HTML 体积**：高分辨率图过多时文件可能超过 5 MB，建议先在 figures 目录预压缩或限制 max-width。\n- **占位符冲突**：模板中 `{{PLACEHOLDER}}` 与 LaTeX 的 `{...}` 形式相似，替换时使用精确字符串匹配，避免误伤。\n- **base64 中转义字符**：base64 字符集不含 `\\`，无需对其转义；但拼接到字符串时仍要确保 Python 字面量的反斜杠正确。\n\nFile v2.1.1:writer/markdown-template.md\n\n# {{PAPER_TITLE_CN}}\n\n**{{PAPER_TITLE_EN}}**\n\n*作者：{{AUTHORS}}*\n\n*机构：{{AFFILIATIONS}}*\n\n*来源：{{VENUE}} · {{YEAR}}*\n\n---\n\n## 一、研究背景与动机\n\n{{BACKGROUND_CONTENT}}\n\n## 二、核心方法 / 技术方案\n\n{{METHOD_CONTENT}}\n\n![图 1：{{FIG1_CAPTION}}](./{{SHORT_TITLE}}-images/fig1_architecture.png)\n\n## 三、实验设计\n\n{{EXPERIMENT_DESIGN}}\n\n## 四、实验结果与分析\n\n{{RESULTS_CONTENT}}\n\n| 模型 | 指标 A | 指标 B | 指标 C |\n|------|--------|--------|--------|\n| Baseline | xx.x | xx.x | xx.x |\n| Ours | **xx.x** | **xx.x** | **xx.x** |\n\n![图 2：{{FIG2_CAPTION}}](./{{SHORT_TITLE}}-images/fig2_results.png)\n\n## 五、主要贡献与创新点\n\n{{CONTRIBUTIONS}}\n\n## 六、局限性与未来方向\n\n{{LIMITATIONS}}\n\n## 七、个人点评与总结\n\n{{COMMENTARY}}\n\n---\n\n*基于论文原文整理 · 仅供学术交流参考*\n\nFile v2.1.1:writer/markdown.md\n\n# 输出格式：Markdown\n\n标准 Markdown 报告 + 独立图片目录。便于在编辑器、GitHub、Wiki 等环境中查看与二次编辑。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 Markdown 报告\"或\"给我 .md 文件\"。\n- 报告需进入 Git 仓库 / 文档站 / Notion / 飞书等支持 Markdown 的平台。\n- 用户希望后续手动编辑、复制片段。\n- 需要轻量、纯文本、易于 diff 的产物。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的目标图片复制到 `{workspace}/outputs/{简短标题}-images/` 目录，Markdown 中以**相对路径**引用：\n\n```markdown\n![图 1：架构图](./{简短标题}-images/fig1_architecture.png)\n```\n\n**注意**：\n\n- 不要使用绝对路径或 `file://` 协议，否则在他人环境中无法显示。\n- 图片文件名使用语义化英文（如 `fig2_results.png`、`fig3_ablation.png`），避免空格和中文。\n- 图片目录与 `.md` 文件应保持同级关系，便于打包分发。\n\n## 3. 数学公式\n\n使用标准 LaTeX 语法：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n主流 Markdown 渲染器（GitHub、VS Code、Typora、Obsidian、Notion 等）原生支持 KaTeX/MathJax。\n\n> 由于不同渲染器对 `\\\\` 换行、空行等细节有差异，公式建议保持简洁，复杂多行推导拆为多个独立公式块。\n\n## 4. 表格处理\n\n使用 Markdown 原生表格语法，最佳值用 `**...**` 加粗：\n\n```markdown\n| 模型 | BLEU | ROUGE-L |\n|------|------|---------|\n| Baseline | 32.1 | 54.2 |\n| Ours | **35.8** | **57.6** |\n```\n\n表格列数较多或单元格内有换行/公式时，可降级为 HTML `<table>`（GFM 兼容）。\n\n## 5. 模板路径\n\n[markdown-template.md](markdown-template.md)\n\n模板包含斜体行样式的元信息块（作者/机构/来源）、章节骨架、图片引用示例和表格示例。占位符以 `{{...}}` 形式存在。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.md` —— Markdown 报告主文件\n- `{简短标题}-images/` —— 图片目录（与 .md 同级）\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。两者使用**相同的简短标题**。\n\n## 7. 写作风格细节\n\n- 章节标题使用 `##`（一级）、`###`（二级），避免使用 `#`（保留给文档总标题）。\n- 图表引用格式：\"如图 1 所示，...\"、\"表 1 汇总了...\"。\n- 重点结论用 `**...**` 加粗或 `> ...` 引用块。\n- 列表项之间留空行，避免 GFM 渲染合并问题。\n- 代码片段使用三反引号围栏，并标注语言（如 ` ```python `）。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 `.md` 文件，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰（`##` / `###`）\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**Markdown 专项检查**：\n\n- 公式使用 `$...$` 或 `$$...$$`，无乱码\n- 所有图片引用为相对路径 `./{简短标题}-images/xxx.png`\n- **图片文件验证**——必须用 `ls` 显式确认文件存在：\n\n  ```bash\n  ls {workspace}/outputs/{简短标题}-images/\n  ```\n\n- 逐个核对：Markdown 中每个 `![...](./{简短标题}-images/xxx.png)` 引用的文件确实在目录中\n\n## 9. 已知陷阱\n\n- **复制 vs 移动**：图片是从 `{workspace}/figures/` 复制（cp）到 outputs 子目录，**不要 mv**——避免后续重新生成时图片源丢失。\n- **Windows 路径分隔符**：始终使用 `/`，不要使用 `\\`，跨平台兼容。\n- **GFM 与 KaTeX 差异**：GitHub 原生不支持 `$$`，需仓库启用 MathJax；用户在 GitHub 阅读时建议下载本地查看或注明渲染要求。\n- **图片大小**：Markdown 不支持自动缩放，原图过大会撑爆视图。建议在 `figures/` 中预先缩放（如最大宽度 1400 px）后再复制。\n- **目录命名空格**：`{简短标题}-images/` 中的简短标题不能含空格，否则在某些 Markdown 渲染器中链接断裂。\n\nArchive v2.1.0: 13 files, 22658 bytes\n\nFiles: reader/html.md (4302b), reader/pdf.md (4632b), scripts/crop_figures.py (2484b), scripts/extract_figure_urls.py (3194b), scripts/extract_html_text.py (3133b), scripts/pdf_to_images.py (1208b), skill-card.md (2313b), SKILL.md (5700b), writer/html-template.html (5516b), writer/html.md (5028b), writer/markdown-template.md (873b), writer/markdown.md (4127b), _meta.json (131b)\n\nFile v2.1.0:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告。输入方式（`reader/`）与输出格式（`writer/`）独立解耦，详见末尾目录结构。\n\n> **Python 约定**：`{PYTHON}` = macOS 用 `/Library/Developer/CommandLineTools/usr/bin/python3`，其他环境用 `python3`。\n\n---\n\n## Step 1: 路由决策\n\n### 1.1 选择输出格式\n\n- 用户明确指定 → 按用户要求。\n- 用户未指定 → **默认 HTML**。\n\n确定后**记住这个选择**，用于 Step 2 时分发到对应的 writer。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。规则：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 使用 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf`。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查页面是否存在：\n\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n\n- 返回 `HTTP/... 200` → **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n完成输入处理后，`{workspace}/figures/` 已包含所有目标图表。\n\n### 2.1 报告结构（参考框架，可根据论文内容灵活调整）\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性**：根据论文内容可增加章节（如 Case Study、数据集详解）、合并章节（如实验设计与结果合一）、自由组织子结构。\n\n**附录内容集成**：\n\n- \"方法实现细节/超参数/训练配置\" → **融入对应主方法章节**\n- \"补充实验/额外消融\" → 融入实验结果章节或独立小节\n- \"独立子课题/独立证明\" → 可设独立附录章节\n\n### 2.2 图表选取原则\n\n根据报告内容需要选取，**不设数量硬上限**：\n\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：报告中有讨论则选入\n- Case Study 截图：有说明价值则选入\n\n### 2.3 通用写作要求\n\n- 全文中文，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用：\"如图 1 所示，...\" / \"表 1 汇总了...\"\n- 严格基于原文，不添加原文未涉及的推测或数据\n- 每章应有实质内容，避免泛泛而谈\n- **不**包含\"报告生成日期\"或\"AI 生成\"相关文字\n\n### 2.4 按输出格式分发\n\n根据 Step 1.1 的输出格式选择，跳转到对应的 writer 文档：\n\n- **HTML 输出** → [writer/html.md](writer/html.md)\n- **Markdown 输出** → [writer/markdown.md](writer/markdown.md)\n\n每份 writer 文档包含完整的：图片处理 / 数学公式 / 表格 / 模板路径 / 文件命名 / 写作风格 / 校验清单 / 已知陷阱。\n\n---\n\n## Step 3: 校验\n\n按所选 writer 文档的**第 8 节\"校验清单\"**逐项检查。\n\n**通用必检项**（任何格式都适用）：\n\n- 各章节标题完整、层级清晰\n- 章节有实质内容，无空段落或 `{{...}}` 占位符残留\n- 无\"报告生成日期\"或\"AI 辅助生成\"文字\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时通过图片阅读，报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2.1 中\"附录内容集成\"处理。\n\n---\n\n## 文件结构参考\n\n```\npaper-report/\n├── SKILL.md                    # 本文件（路由 + 通用流程）\n├── reader/\n│   ├── html.md                 # 输入处理：HTML 模式（H1–H3）\n│   └── pdf.md                  # 输入处理：PDF 模式（P1–P5）\n├── writer/\n│   ├── html.md                 # 输出格式：HTML（9 节）\n│   ├── html-template.html      # HTML 报告模板（含 MathJax）\n│   ├── markdown.md             # 输出格式：Markdown（9 节）\n│   └── markdown-template.md    # Markdown 报告模板\n└── scripts/\n    ├── pdf_to_images.py\n    ├── crop_figures.py\n    ├── extract_arxiv_text.py\n    └── extract_figure_urls.py\n```\n\n> 新增输入源：在 `reader/` 加 `{name}.md`。新增输出格式：在 `writer/` 加 `{name}.md` + `{name}-template.{ext}`。SKILL.md 主流程无需改动。\n\nFile v2.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.1.0\",\n  \"publishedAt\": 1781148981892\n}\n\nFile v2.1.0:reader/html.md\n\n# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本 & 规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本 & 规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\n{PYTHON} scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\n{PYTHON} scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.0:reader/pdf.md\n\n# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 转图片\n- [ ] Step P3: 逐页阅读理解 & 规划截图\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin。\n\n**图表选取原则**：见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了顶部 → 减小 y0（向上扩展）\n- 混入了上方文字 → 增大 y0\n- 混入了下方文字 → 减小 y1\n- 一般留 5-10pt margin 即可\n\n反复调整直到所有截图质量合格。\n\n---\n\n完成以上 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.1.0:skill-card.md\n\n## Description: <br>\nConvert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[nuaalixu](https://clawhub.ai/user/nuaalixu) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, researchers, and students use this skill to turn academic papers from arXiv HTML pages or local PDFs into structured Chinese reading reports with selected original figures. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may download paper pages or images from user-provided URLs and process local PDFs. <br>\nMitigation: Review URLs and PDF paths before use, use trusted sources, and avoid private papers unless local extraction is acceptable. <br>\nRisk: The skill writes extracted text, figures, and generated reports in the workspace. <br>\nMitigation: Run it in an appropriate workspace and review generated files before sharing or committing them. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/paper-report) <br>\n- [HTML reader workflow](reader/html.md) <br>\n- [PDF reader workflow](reader/pdf.md) <br>\n- [HTML writer workflow](writer/html.md) <br>\n- [Markdown writer workflow](writer/markdown.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Chinese reading report in self-contained HTML or Markdown, with extracted figure files when Markdown output is selected] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create local paper, page, figure, and report files in the workspace.] <br>\n\n## Skill Version(s): <br>\n2.1.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v2.1.0:writer/html.md\n\n# 输出格式：HTML\n\n自包含 HTML 报告（图片以 base64 形式内嵌），打开即可阅读，便于分享。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 HTML 报告\"。\n- 用户未指定输出格式时的**默认选择**。\n- 报告需要直接发送 / 分享 / 在线浏览，不希望出现\"图片丢失\"问题。\n- 论文公式较多，需要更佳的数学公式排版（MathJax 渲染）。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的所有目标图片转为 base64 data URI 内嵌：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1].lower()\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\", \"jpeg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：\n\n```html\n<figure>\n  <img src=\"{base64_data}\" alt=\"Figure 1：架构图\" style=\"max-width:100%;\">\n  <figcaption>图 1：架构图（原文 Figure 1）</figcaption>\n</figure>\n```\n\n> 单张图片体积过大（>2 MB）时建议先用 PIL 缩放（如 LANCZOS 重采样到 1400 px 宽），避免最终 HTML 过大。\n\n## 3. 数学公式\n\n使用 LaTeX 语法书写公式：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n模板已内置 MathJax 3 配置和 `tex-svg.js` 脚本引用，无需额外引入。\n\n**反斜杠陷阱**：在 Python 中拼接含 LaTeX 的字符串时，应使用**原始字符串**或**单反斜杠**，确保最终 HTML 中 LaTeX 命令前是单个 `\\`：\n\n```python\n# ✅ 正确\nformula = r\"$\\mathcal{L} = \\sum_i \\log p_\\theta$\"\n# ❌ 错误：写成 \\\\mathcal 会渲染失败\nformula = \"$\\\\\\\\mathcal{L} = \\\\\\\\sum_i$\"\n```\n\n## 4. 表格处理\n\n直接使用 HTML `<table>` 标签，模板 CSS 已为表格定义样式（边框、表头加粗、行斑马纹）：\n\n```html\n<table>\n  <thead>\n    <tr><th>模型</th><th>BLEU</th><th>ROUGE-L</th></tr>\n  </thead>\n  <tbody>\n    <tr><td>Baseline</td><td>32.1</td><td>54.2</td></tr>\n    <tr><td><strong>Ours</strong></td><td><strong>35.8</strong></td><td><strong>57.6</strong></td></tr>\n  </tbody>\n</table>\n```\n\n加粗使用 `<strong>` 标记最佳值，便于读者快速定位重点。\n\n## 5. 模板路径\n\n[html-template.html](html-template.html)\n\n模板包含完整 `<head>`（CSS 变量、MathJax 配置）、占位符（如 `{{PAPER_TITLE_CN}}`、`{{FIG1_BASE64}}`、`{{FIG1_CAPTION}}` 等）和章节骨架。生成时用字符串替换占位符。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.html` —— 单一自包含 HTML 文件\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。\n\n## 7. 写作风格细节\n\n- 段落使用 `<p>` 包裹，章节使用 `<h2>` / `<h3>`。\n- 重点结论可用 `<div class=\"highlight\">...</div>`（模板预定义高亮卡片样式）。\n- 引用原文术语时优先 `<em>` 或 `<code>` 而非反引号。\n- 图表说明放在 `<figcaption>` 中，与图紧邻；正文用\"如图 1 所示\"引用。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 HTML，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**HTML 专项检查**：\n\n- HTML 基本结构完整：`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`、`</html>` 齐全\n- `<head>` 中包含 MathJax 配置和 `tex-svg.js` 脚本引用\n- 所有 `<img>` 的 `src` 为有效 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在外部图片链接（`http://...png`）或本地文件路径引用\n- 每张图片有描述性 `alt` 属性和 `<figcaption>`\n- CSS 样式内嵌在 `<style>` 标签中，无外部样式表依赖\n- **反斜杠检查**——确认 LaTeX 命令前是单个 `\\`：\n\n  ```bash\n  grep -c '\\\\\\\\math' {workspace}/outputs/report_{简短标题}.html\n  # 结果应为 0\n  ```\n\n## 9. 已知陷阱\n\n- **公式中禁用 HTML 特殊字符**：`<`、`>`、`&` 同时对 HTML 解析器和 MathJax 有特殊含义，直接使用或转义为 `&lt;`/`&gt;` 都可能导致公式渲染失败。必须用 LaTeX 命令替代：`<` → `\\lt`，`>` → `\\gt`，尖括号标记如 `<token>` → `\\langle\\texttt{token}\\rangle`。\n- **MathJax 误报**：校验\"无外部 src\"时，注意 `<script src=\"https://...mathjax...\">` 是允许的，只需确认 `<img>` 标签全部使用 base64。\n- **HTML 体积**：高分辨率图过多时文件可能超过 5 MB，建议先在 figures 目录预压缩或限制 max-width。\n- **占位符冲突**：模板中 `{{PLACEHOLDER}}` 与 LaTeX 的 `{...}` 形式相似，替换时使用精确字符串匹配，避免误伤。\n- **base64 中转义字符**：base64 字符集不含 `\\`，无需对其转义；但拼接到字符串时仍要确保 Python 字面量的反斜杠正确。\n\nFile v2.1.0:writer/markdown-template.md\n\n# {{PAPER_TITLE_CN}}\n\n**{{PAPER_TITLE_EN}}**\n\n> 作者：{{AUTHORS}}\n>\n> 机构：{{AFFILIATIONS}}\n>\n> 来源：{{VENUE}} · {{YEAR}}\n\n---\n\n## 一、研究背景与动机\n\n{{BACKGROUND_CONTENT}}\n\n## 二、核心方法 / 技术方案\n\n{{METHOD_CONTENT}}\n\n![图 1：{{FIG1_CAPTION}}](./{{SHORT_TITLE}}-images/fig1_architecture.png)\n\n## 三、实验设计\n\n{{EXPERIMENT_DESIGN}}\n\n## 四、实验结果与分析\n\n{{RESULTS_CONTENT}}\n\n| 模型 | 指标 A | 指标 B | 指标 C |\n|------|--------|--------|--------|\n| Baseline | xx.x | xx.x | xx.x |\n| Ours | **xx.x** | **xx.x** | **xx.x** |\n\n![图 2：{{FIG2_CAPTION}}](./{{SHORT_TITLE}}-images/fig2_results.png)\n\n## 五、主要贡献与创新点\n\n{{CONTRIBUTIONS}}\n\n## 六、局限性与未来方向\n\n{{LIMITATIONS}}\n\n## 七、个人点评与总结\n\n{{COMMENTARY}}\n\n---\n\n*基于论文原文整理 · 仅供学术交流参考*\n\nFile v2.1.0:writer/markdown.md\n\n# 输出格式：Markdown\n\n标准 Markdown 报告 + 独立图片目录。便于在编辑器、GitHub、Wiki 等环境中查看与二次编辑。\n\n---\n\n## 1. 适用场景\n\n- 用户明确要求\"生成 Markdown 报告\"或\"给我 .md 文件\"。\n- 报告需进入 Git 仓库 / 文档站 / Notion / 飞书等支持 Markdown 的平台。\n- 用户希望后续手动编辑、复制片段。\n- 需要轻量、纯文本、易于 diff 的产物。\n\n## 2. 图片处理\n\n将 `{workspace}/figures/` 下的目标图片复制到 `{workspace}/outputs/{简短标题}-images/` 目录，Markdown 中以**相对路径**引用：\n\n```markdown\n![图 1：架构图](./{简短标题}-images/fig1_architecture.png)\n```\n\n**注意**：\n\n- 不要使用绝对路径或 `file://` 协议，否则在他人环境中无法显示。\n- 图片文件名使用语义化英文（如 `fig2_results.png`、`fig3_ablation.png`），避免空格和中文。\n- 图片目录与 `.md` 文件应保持同级关系，便于打包分发。\n\n## 3. 数学公式\n\n使用标准 LaTeX 语法：\n\n- 行内公式：`$x = y + z$`\n- 独立公式：`$$\\mathcal{L} = \\sum_i \\log p_\\theta(x_i)$$`\n\n主流 Markdown 渲染器（GitHub、VS Code、Typora、Obsidian、Notion 等）原生支持 KaTeX/MathJax。\n\n> 由于不同渲染器对 `\\\\` 换行、空行等细节有差异，公式建议保持简洁，复杂多行推导拆为多个独立公式块。\n\n## 4. 表格处理\n\n使用 Markdown 原生表格语法，最佳值用 `**...**` 加粗：\n\n```markdown\n| 模型 | BLEU | ROUGE-L |\n|------|------|---------|\n| Baseline | 32.1 | 54.2 |\n| Ours | **35.8** | **57.6** |\n```\n\n表格列数较多或单元格内有换行/公式时，可降级为 HTML `<table>`（GFM 兼容）。\n\n## 5. 模板路径\n\n[markdown-template.md](markdown-template.md)\n\n模板包含 YAML 风格的元信息块、章节骨架、图片引用示例和表格示例。占位符以 `{{...}}` 形式存在。\n\n## 6. 输出文件命名\n\n保存到 `{workspace}/outputs/`：\n\n- `report_{简短标题}.md` —— Markdown 报告主文件\n- `{简短标题}-images/` —— 图片目录（与 .md 同级）\n\n简短标题从论文标题中提取核心关键词（去除特殊字符，空格替换为 `-` 或 `_`）。两者使用**相同的简短标题**。\n\n## 7. 写作风格细节\n\n- 章节标题使用 `##`（一级）、`###`（二级），避免使用 `#`（保留给文档总标题）。\n- 图表引用格式：\"如图 1 所示，...\"、\"表 1 汇总了...\"。\n- 重点结论用 `**...**` 加粗或 `> ...` 引用块。\n- 列表项之间留空行，避免 GFM 渲染合并问题。\n- 代码片段使用三反引号围栏，并标注语言（如 ` ```python `）。\n\n## 8. 校验清单\n\n使用 Read 工具查看生成的 `.md` 文件，逐项确认：\n\n**通用检查**：\n\n- 各章节标题完整、层级清晰（`##` / `###`）\n- 每个章节有实质内容，不存在空段落或占位符（无 `{{...}}` 残留）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n**Markdown 专项检查**：\n\n- 公式使用 `$...$` 或 `$$...$$`，无乱码\n- 所有图片引用为相对路径 `./{简短标题}-images/xxx.png`\n- **图片文件验证**——必须用 `ls` 显式确认文件存在：\n\n  ```bash\n  ls {workspace}/outputs/{简短标题}-images/\n  ```\n\n- 逐个核对：Markdown 中每个 `![...](./{简短标题}-images/xxx.png)` 引用的文件确实在目录中\n\n## 9. 已知陷阱\n\n- **复制 vs 移动**：图片是从 `{workspace}/figures/` 复制（cp）到 outputs 子目录，**不要 mv**——避免后续重新生成时图片源丢失。\n- **Windows 路径分隔符**：始终使用 `/`，不要使用 `\\`，跨平台兼容。\n- **GFM 与 KaTeX 差异**：GitHub 原生不支持 `$$`，需仓库启用 MathJax；用户在 GitHub 阅读时建议下载本地查看或注明渲染要求。\n- **图片大小**：Markdown 不支持自动缩放，原图过大会撑爆视图。建议在 `figures/` 中预先缩放（如最大宽度 1400 px）后再复制。\n- **目录命名空格**：`{简短标题}-images/` 中的简短标题不能含空格，否则在某些 Markdown 渲染器中链接断裂。\n\nArchive v2.0.1: 11 files, 18552 bytes\n\nFiles: path-html.md (4315b), path-pdf.md (4638b), report-template.html (5516b), report-template.md (873b), scripts/crop_figures.py (2484b), scripts/extract_figure_urls.py (3194b), scripts/extract_html_text.py (3133b), scripts/pdf_to_images.py (1208b), skill-card.md (2658b), SKILL.md (8307b), _meta.json (131b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告，支持 HTML 和 PDF 两种输入形式。输出格式默认为 HTML，用户可选 Markdown。\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n---\n\n## Step 1: 路由决策\n\n在开始处理之前，确定两个维度的决策：**输入处理模式**和**输出格式**。\n\n### 1.1 确定输出格式\n\n根据用户要求确定输出格式：\n\n- **用户明确指定了格式**（如\"生成 HTML 报告\"或\"给我 Markdown\"）→ 按用户要求。\n- **用户未指定** → **默认使用 HTML**。\n\n输出格式决定后续的图片处理方式：\n- **Markdown 模式**：图片保存为独立文件，Markdown 中用相对路径引用。\n- **HTML 模式**：图片转为 base64 内嵌，生成自包含 HTML。\n\n> 后续步骤中，标注 `[MD]` 的仅 Markdown 模式执行，`[HTML]` 的仅 HTML 模式执行，无标注的两种都执行。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。根据输入类型按以下规则决定：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 直接使用 **PDF 模式**，跳转至 [path-pdf.md](path-pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论是 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf` 后缀。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查 HTML 页面是否存在：\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n- 返回 `HTTP/... 200` → 使用 **HTML 模式**，跳转至 [path-html.md](path-html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [path-pdf.md](path-pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ 直接使用 **HTML 模式**，跳转至 [path-html.md](path-html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续执行 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n两种模式完成各自步骤后，`{workspace}/figures/` 目录中已有所有需要的图表图片。\n\n**报告结构（参考框架，可根据论文内容灵活调整）**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性说明**：以上为参考框架，不是死板模板。根据论文内容可以：\n- 增加章节（如 Case Study、数据集详解等）\n- 合并章节（如实验设计与结果合为一章）\n- 在方法章节内自由组织子结构\n\n**附录内容集成指引**：\n- 附录中\"方法实现细节/超参数/训练配置\"类内容 → **融入对应的主方法章节**，让读者在一处看到完整技术描述\n- 附录中\"补充实验/额外消融\"类内容 → 融入实验结果章节或设独立小节\n- 附录中\"独立子课题/独立证明\"类内容 → 可设独立附录章节\n\n### 模板参考\n\n- **[MD] Markdown 模式**：详见 [report-template.md](report-template.md)\n- **[HTML] HTML 模式**：详见 [report-template.html](report-template.html)\n\n### 图片处理\n\n**[MD] Markdown 模式**：将图片复制到 `{workspace}/outputs/{论文简短标题}-images/`，Markdown 中用相对路径引用：\n```\n![图 1 说明](./{论文简短标题}-images/fig1.png)\n```\n\n**[HTML] HTML 模式**：将图片转为 base64 嵌入：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n### 图表选取原则\n\n根据报告内容需要选取图表，**不设数量硬上限**。原则：\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：如报告中有讨论则选入\n- Case Study 截图：如有且有说明价值则选入\n\n### 关键写作要求\n\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，严格基于原文，不添加原文未涉及的推测或数据\n- 每个章节应有实质内容，避免泛泛而谈\n- 不包含任何\"报告生成日期\"或\"AI 生成\"相关的描述文字\n- **[HTML] 数学公式处理**：使用 LaTeX 语法书写公式，行内用 `$...$`，独立公式用 `$$...$$`。模板已内置 MathJax 3，无需额外引入。生成 HTML 时注意：在 Python 中构建含公式的字符串时，使用**原始字符串（raw string）或单反斜杠**确保输出文件中 LaTeX 命令前是单个 `\\`（如 `\\mathcal`），而非双反斜杠 `\\\\mathcal`。\n- **[MD] 数学公式处理**：使用标准 LaTeX 语法 `$...$` 和 `$$...$$`，与主流 Markdown 渲染器兼容。\n\n### 输出文件\n\n**文件命名**：从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线或下划线）。\n\n**[MD] Markdown 模式输出**（保存到 `{workspace}/outputs/`）：\n1. `report_{简短标题}.md` — Markdown 报告\n2. `{简短标题}-images/` — 图片文件夹\n\n**[HTML] HTML 模式输出**（保存到 `{workspace}/outputs/`）：\n1. `report_{简短标题}.html` — 自包含 HTML（base64 内嵌图片）\n\n---\n\n## Step 3: 校验\n\n使用 Read 工具查看生成的报告文件，逐项检查：\n\n### 通用检查\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n### [MD] Markdown 专项检查\n\n- 图片引用为有效相对路径，指向 `{简短标题}-images/` 目录下的实际文件\n- **必须用 `ls` 命令显式验证图片文件存在，不可跳过**：\n  ```bash\n  ls {workspace}/outputs/{简短标题}-images/\n  ```\n- 逐个确认 Markdown 中每个 `![...](./{简短标题}-images/xxx.png)` 引用的文件确实在目录中\n- 公式使用 LaTeX 内联格式（`$...$` 或 `` `...` ``），确认无乱码\n\n### [HTML] HTML 专项检查\n\n- HTML 基本结构完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`、`</html>` 齐全）\n- **MathJax 已引入**：`<head>` 中包含 MathJax 配置和 `tex-svg.js` 脚本引用\n- 所有 `<img>` 的 `src` 为有效 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在外部图片链接或本地文件路径引用\n- 每张图片有描述性 `alt` 属性和 `<figcaption>`\n- CSS 样式内嵌在 `<style>` 标签中，无外部样式表依赖\n- **公式反斜杠检查**：确认 LaTeX 命令前是单个 `\\`（如 `\\mathbf`），而非 `\\\\mathbf`。可用 `grep -c '\\\\\\\\\\\\\\\\math' file.html` 检查（结果应为 0）\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符文本）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，注意调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时依然可通过图片阅读，但在报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2 中\"附录内容集成指引\"处理。\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1780740888731\n}\n\nFile v2.0.1:path-html.md\n\n# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本（含公式/表格），规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本，规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\n{PYTHON} scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\n{PYTHON} scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.0.1:path-pdf.md\n\n# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 每页转为图片\n- [ ] Step P3: 逐页阅读理解，规划图表截取\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin。\n\n**图表选取原则**：见 [SKILL.md](SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了顶部 → 减小 y0（向上扩展）\n- 混入了上方文字 → 增大 y0\n- 混入了下方文字 → 减小 y1\n- 一般留 5-10pt margin 即可\n\n反复调整直到所有截图质量合格。\n\n---\n\n完成以上 P1–P5 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.0.1:report-template.md\n\n# {{PAPER_TITLE_CN}}\n\n**{{PAPER_TITLE_EN}}**\n\n> 作者：{{AUTHORS}}\n>\n> 机构：{{AFFILIATIONS}}\n>\n> 来源：{{VENUE}} · {{YEAR}}\n\n---\n\n## 一、研究背景与动机\n\n{{BACKGROUND_CONTENT}}\n\n## 二、核心方法 / 技术方案\n\n{{METHOD_CONTENT}}\n\n![图 1：{{FIG1_CAPTION}}](./{{SHORT_TITLE}}-images/fig1_architecture.png)\n\n## 三、实验设计\n\n{{EXPERIMENT_DESIGN}}\n\n## 四、实验结果与分析\n\n{{RESULTS_CONTENT}}\n\n| 模型 | 指标 A | 指标 B | 指标 C |\n|------|--------|--------|--------|\n| Baseline | xx.x | xx.x | xx.x |\n| Ours | **xx.x** | **xx.x** | **xx.x** |\n\n![图 2：{{FIG2_CAPTION}}](./{{SHORT_TITLE}}-images/fig2_results.png)\n\n## 五、主要贡献与创新点\n\n{{CONTRIBUTIONS}}\n\n## 六、局限性与未来方向\n\n{{LIMITATIONS}}\n\n## 七、个人点评与总结\n\n{{COMMENTARY}}\n\n---\n\n*基于论文原文整理 · 仅供学术交流参考*\n\nFile v2.0.1:skill-card.md\n\n## Description: <br>\nConvert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[nuaalixu](https://clawhub.ai/user/nuaalixu) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, researchers, and students use this skill to turn an arXiv link, other paper HTML page, or local PDF into a structured Chinese reading report with selected original figures. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow can contact arXiv or another user-provided paper URL and download paper assets. <br>\nMitigation: Use trusted paper sources and review non-arXiv URLs before allowing network access. <br>\nRisk: The workflow may install missing Python packages before processing PDFs or inline SVG figures. <br>\nMitigation: Review package installation commands before running them in the agent environment. <br>\nRisk: The workflow creates report, figure, page-image, and extracted-text files in the workspace. <br>\nMitigation: Run the skill in an intended workspace and review generated files before sharing them. <br>\nRisk: PDF visual extraction and paper summarization can misread figures, tables, formulas, or numeric values. <br>\nMitigation: Check important claims, figures, formulas, and numeric values against the source paper. <br>\n\n\n## Reference(s): <br>\n- [HTML Mode Workflow](path-html.md) <br>\n- [PDF Mode Workflow](path-pdf.md) <br>\n- [Markdown Report Template](report-template.md) <br>\n- [HTML Report Template](report-template.html) <br>\n- [ClawHub Skill Page](https://clawhub.ai/nuaalixu/paper-report) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, HTML, Files, Shell commands, Guidance] <br>\n**Output Format:** [Chinese HTML or Markdown reading report with embedded or linked figure images.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create report, figure, page image, and extracted text files in the workspace.] <br>\n\n## Skill Version(s): <br>\n2.0.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v2.0.0: 11 files, 18083 bytes\n\nFiles: path-html.md (4315b), path-pdf.md (4638b), report-template.html (5253b), report-template.md (873b), scripts/crop_figures.py (2484b), scripts/extract_figure_urls.py (3194b), scripts/extract_html_text.py (3133b), scripts/pdf_to_images.py (1208b), skill-card.md (2718b), SKILL.md (7523b), _meta.json (131b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告，支持 HTML 和 PDF 两种输入形式。输出格式默认为 HTML，用户可选 Markdown。\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n---\n\n## Step 1: 路由决策\n\n在开始处理之前，确定两个维度的决策：**输入处理模式**和**输出格式**。\n\n### 1.1 确定输出格式\n\n根据用户要求确定输出格式：\n\n- **用户明确指定了格式**（如\"生成 HTML 报告\"或\"给我 Markdown\"）→ 按用户要求。\n- **用户未指定** → **默认使用 HTML**。\n\n输出格式决定后续的图片处理方式：\n- **Markdown 模式**：图片保存为独立文件，Markdown 中用相对路径引用。\n- **HTML 模式**：图片转为 base64 内嵌，生成自包含 HTML。\n\n> 后续步骤中，标注 `[MD]` 的仅 Markdown 模式执行，`[HTML]` 的仅 HTML 模式执行，无标注的两种都执行。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。根据输入类型按以下规则决定：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 直接使用 **PDF 模式**，跳转至 [path-pdf.md](path-pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论是 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf` 后缀。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查 HTML 页面是否存在：\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n- 返回 `HTTP/... 200` → 使用 **HTML 模式**，跳转至 [path-html.md](path-html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [path-pdf.md](path-pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ 直接使用 **HTML 模式**，跳转至 [path-html.md](path-html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续执行 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n两种模式完成各自步骤后，`{workspace}/figures/` 目录中已有所有需要的图表图片。\n\n**报告结构（参考框架，可根据论文内容灵活调整）**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性说明**：以上为参考框架，不是死板模板。根据论文内容可以：\n- 增加章节（如 Case Study、数据集详解等）\n- 合并章节（如实验设计与结果合为一章）\n- 在方法章节内自由组织子结构\n\n**附录内容集成指引**：\n- 附录中\"方法实现细节/超参数/训练配置\"类内容 → **融入对应的主方法章节**，让读者在一处看到完整技术描述\n- 附录中\"补充实验/额外消融\"类内容 → 融入实验结果章节或设独立小节\n- 附录中\"独立子课题/独立证明\"类内容 → 可设独立附录章节\n\n### 模板参考\n\n- **[MD] Markdown 模式**：详见 [report-template.md](report-template.md)\n- **[HTML] HTML 模式**：详见 [report-template.html](report-template.html)\n\n### 图片处理\n\n**[MD] Markdown 模式**：将图片复制到 `{workspace}/outputs/{论文简短标题}-images/`，Markdown 中用相对路径引用：\n```\n![图 1 说明](./{论文简短标题}-images/fig1.png)\n```\n\n**[HTML] HTML 模式**：将图片转为 base64 嵌入：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n### 图表选取原则\n\n根据报告内容需要选取图表，**不设数量硬上限**。原则：\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：如报告中有讨论则选入\n- Case Study 截图：如有且有说明价值则选入\n\n### 关键写作要求\n\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，严格基于原文，不添加原文未涉及的推测或数据\n- 每个章节应有实质内容，避免泛泛而谈\n- 不包含任何\"报告生成日期\"或\"AI 生成\"相关的描述文字\n\n### 输出文件\n\n**文件命名**：从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线或下划线）。\n\n**[MD] Markdown 模式输出**（保存到 `{workspace}/outputs/`）：\n1. `report_{简短标题}.md` — Markdown 报告\n2. `{简短标题}-images/` — 图片文件夹\n\n**[HTML] HTML 模式输出**（保存到 `{workspace}/outputs/`）：\n1. `report_{简短标题}.html` — 自包含 HTML（base64 内嵌图片）\n\n---\n\n## Step 3: 校验\n\n使用 Read 工具查看生成的报告文件，逐项检查：\n\n### 通用检查\n\n- 各章节标题完整、层级清晰\n- 每个章节有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n- 不包含\"报告生成日期\"或\"AI 辅助生成\"相关文字\n\n### [MD] Markdown 专项检查\n\n- 图片引用为有效相对路径，指向 `{简短标题}-images/` 目录下的实际文件\n- **必须用 `ls` 命令显式验证图片文件存在，不可跳过**：\n  ```bash\n  ls {workspace}/outputs/{简短标题}-images/\n  ```\n- 逐个确认 Markdown 中每个 `![...](./{简短标题}-images/xxx.png)` 引用的文件确实在目录中\n- 公式使用 LaTeX 内联格式（`$...$` 或 `` `...` ``），确认无乱码\n\n### [HTML] HTML 专项检查\n\n- HTML 基本结构完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`、`</html>` 齐全）\n- 所有 `<img>` 的 `src` 为有效 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在外部图片链接或本地文件路径引用\n- 每张图片有描述性 `alt` 属性和 `<figcaption>`\n- CSS 样式内嵌在 `<style>` 标签中，无外部样式表依赖\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符文本）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，注意调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时依然可通过图片阅读，但在报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2 中\"附录内容集成指引\"处理。\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780402889874\n}\n\nFile v2.0.0:path-html.md\n\n# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本（含公式/表格），规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本，规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\n{PYTHON} scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\n{PYTHON} scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.0.0:path-pdf.md\n\n# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 每页转为图片\n- [ ] Step P3: 逐页阅读理解，规划图表截取\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin。\n\n**图表选取原则**：见 [SKILL.md](SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了顶部 → 减小 y0（向上扩展）\n- 混入了上方文字 → 增大 y0\n- 混入了下方文字 → 减小 y1\n- 一般留 5-10pt margin 即可\n\n反复调整直到所有截图质量合格。\n\n---\n\n完成以上 P1–P5 后，返回 [SKILL.md](SKILL.md) 执行 **Step 2** 生成报告。\n\nFile v2.0.0:report-template.md\n\n# {{PAPER_TITLE_CN}}\n\n**{{PAPER_TITLE_EN}}**\n\n> 作者：{{AUTHORS}}\n>\n> 机构：{{AFFILIATIONS}}\n>\n> 来源：{{VENUE}} · {{YEAR}}\n\n---\n\n## 一、研究背景与动机\n\n{{BACKGROUND_CONTENT}}\n\n## 二、核心方法 / 技术方案\n\n{{METHOD_CONTENT}}\n\n![图 1：{{FIG1_CAPTION}}](./{{SHORT_TITLE}}-images/fig1_architecture.png)\n\n## 三、实验设计\n\n{{EXPERIMENT_DESIGN}}\n\n## 四、实验结果与分析\n\n{{RESULTS_CONTENT}}\n\n| 模型 | 指标 A | 指标 B | 指标 C |\n|------|--------|--------|--------|\n| Baseline | xx.x | xx.x | xx.x |\n| Ours | **xx.x** | **xx.x** | **xx.x** |\n\n![图 2：{{FIG2_CAPTION}}](./{{SHORT_TITLE}}-images/fig2_results.png)\n\n## 五、主要贡献与创新点\n\n{{CONTRIBUTIONS}}\n\n## 六、局限性与未来方向\n\n{{LIMITATIONS}}\n\n## 七、个人点评与总结\n\n{{COMMENTARY}}\n\n---\n\n*基于论文原文整理 · 仅供学术交流参考*\n\nFile v2.0.0:skill-card.md\n\n## Description: <br>\nConvert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[nuaalixu](https://clawhub.ai/user/nuaalixu) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to turn academic papers from arXiv, other HTML pages, or local PDFs into structured Chinese reading reports with selected original figures. The workflow supports self-contained HTML output by default and Markdown output when requested. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow may disclose paper URLs to arXiv or other user-provided remote hosts while downloading HTML, PDFs, and figures. <br>\nMitigation: Avoid confidential paper URLs when remote access disclosure is a concern, or use local PDF inputs instead. <br>\nRisk: The workflow may ask to install Python packages for PDF or SVG processing. <br>\nMitigation: Review package installation steps before execution and install only in an approved environment. <br>\nRisk: PDF-mode report generation can misread visual content, especially precise table values or small figure labels. <br>\nMitigation: Check generated reports against the source paper and verify key numerical claims before relying on them. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/paper-report) <br>\n- [HTML mode workflow](path-html.md) <br>\n- [PDF mode workflow](path-pdf.md) <br>\n- [Markdown report template](report-template.md) <br>\n- [HTML report template](report-template.html) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Chinese reading report in self-contained HTML by default, or Markdown with relative image assets when requested.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create local workspace files such as downloaded paper sources, extracted text, figures, page images, and final reports under outputs.] <br>\n\n## Skill Version(s): <br>\n2.0.0 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 6 files, 9493 bytes\n\nFiles: report-template.html (4050b), scripts/crop_figures.py (2484b), scripts/pdf_to_images.py (1208b), skill-card.md (2453b), SKILL.md (7944b), _meta.json (131b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic PDF papers into structured Chinese reading reports with original figures. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). Handles PDF-to-image conversion, figure extraction, and HTML report generation.\n---\n\n# Paper Report\n\n将学术论文 PDF 转化为结构化的中文阅读报告，保留论文原文中的关键图表。\n\n## 依赖\n\n运行前确保安装 PyMuPDF：\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n首次执行时确定可用路径，后续步骤统一使用。\n\n## 工作流程\n\n复制以下清单并在每一步完成后勾选：\n\n```\nTask Progress:\n- [ ] Step 1: 获取 PDF 文件\n- [ ] Step 2: 将 PDF 每页转为图片\n- [ ] Step 3: 逐页阅读理解，规划图表截取\n- [ ] Step 4: 裁剪关键图表\n- [ ] Step 5: 校验截图质量\n- [ ] Step 6: 撰写中文报告并生成 HTML\n- [ ] Step 7: 校验 HTML 文件结构、资源引用与展示效果\n```\n\n---\n\n### Step 1: 获取 PDF 文件\n\n**用户提供本地文件路径？** -> 直接使用该路径。\n\n**用户提供 arXiv 链接或 ID？** -> 用 curl 下载：\n\n```bash\n# 从 arXiv ID 下载（如 2401.12345）\ncurl -L -o {workspace}/paper-report/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n将 PDF 存储到工作目录 `{workspace}/paper-report/paper.pdf`。验证下载成功后继续。\n\n---\n\n### Step 2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper-report/paper.pdf {workspace}/paper-report/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/paper-report/pages/page_1.png`, `page_2.png`, ...\n\n**注意**：此步骤的目的是让大模型能以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step 3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/paper-report/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文在心中记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table、重要公式或算法框\n- 记录每个图表在 PDF 原始坐标系中的裁剪区域（Rect 坐标）\n\n坐标确定方法：\n- PDF 页面原始尺寸通常约 595 x 842 pt（A4）\n- 渲染图片为 2x，因此图片像素约 1190 x 1684\n- 在图片中目测位置后，**将像素坐标除以 2** 得到 PDF 原始坐标\n- 记录格式：`(page_index, x0, y0, x1, y1, label)` 其中 page_index 从 0 开始\n\n**输出**：整理出一份截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 1 - 系统架构图 → page 3, Rect(30, 38, 565, 290)\n2. Figure 2 - 实验结果对比 → page 3, Rect(30, 295, 565, 485)\n3. Table 1 - 性能指标 → page 5, Rect(30, 50, 565, 200)\n...\n```\n\n---\n\n### Step 4: 裁剪关键图表\n\n根据 Step 3 的截图计划，使用 `scripts/crop_figures.py` 进行批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper-report/paper.pdf \\\n  {workspace}/paper-report/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪以确保清晰度，输出到 `{workspace}/paper-report/figures/` 目录。\n\n---\n\n### Step 5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/paper-report/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。反复调整直到所有截图质量合格。\n\n---\n\n### Step 6: 生成中文阅读报告（HTML）\n\n使用以下模板结构，生成一个自包含的 HTML 文件。图片使用 base64 内嵌以确保可移植性。\n\n**报告结构**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**图片内嵌方法**：将裁剪好的图片转为 base64 嵌入 HTML：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n**HTML 模板参考**：详见 [report-template.html](report-template.html)\n\n**关键写作要求**：\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，不添加原文未涉及的推测\n- 每个章节应有实质内容，避免泛泛而谈\n\n**输出文件命名**：最终 HTML 文件以论文标题命名，格式为 `{论文简短标题}-阅读报告.html`。从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线），例如论文标题为 \"Attention Is All You Need\" 则文件名为 `Attention-Is-All-You-Need-阅读报告.html`。\n\n将最终 HTML 文件保存到 `{workspace}/paper-report/outputs/{论文简短标题}-阅读报告.html`。\n\n---\n\n### Step 7: 校验 HTML 文件结构、资源引用与展示效果\n\n使用 Read 工具查看生成的 HTML 文件，逐项检查以下内容：\n\n**结构完整性**：\n- HTML 基本结构是否完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>` 标签齐全）\n- 所有章节标题（h2）是否按报告结构依次出现，没有遗漏\n- 每个章节是否有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n\n**资源引用**：\n- 所有 `<img>` 标签的 `src` 属性是否为有效的 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在任何外部图片链接或本地文件路径引用（确保自包含可移植性）\n- 每张图片的 `alt` 属性和 `<figcaption>` 是否有描述性文字\n\n**展示效果**：\n- CSS 样式是否内嵌在 `<style>` 标签中，无外部样式表依赖\n- 图表与其所属章节的上下文是否对应（如架构图在方法章节，结果图在实验章节）\n- 中文排版是否正常，术语后是否附有英文原文\n\n**如果发现问题**：直接修复 HTML 文件中的对应内容，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**双栏排版论文**：大多数学术论文为双栏排版。图表可能跨栏或单栏，注意调整裁剪宽度。单栏图通常宽约 30-280 或 300-565，跨栏图宽约 30-565。\n\n**扫描版 PDF**：如果 PDF 页面渲染后文字模糊或为扫描件，依然可通过图片方式阅读理解，但截图质量可能受限，在报告中注明来源质量。\n\n**超长论文（>20 页）**：分批处理页面图片，每批 5-8 页，避免上下文溢出。先通读全文结构，再聚焦重点章节。\n\n**论文含附录**：附录中的补充图表如有价值也应截取，在报告中设置独立的\"附录内容\"章节。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1774253422679\n}\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nConverts academic PDF papers or arXiv links into structured Chinese reading reports with original figures, handling PDF-to-image conversion, figure extraction, and HTML report generation. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[nuaalixu](https://clawhub.ai/user/nuaalixu) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal developers, researchers, and paper readers use this skill to turn an academic PDF or arXiv paper into a structured Chinese reading report. The workflow renders pages, extracts important figures and tables, and produces a self-contained HTML report for local review or sharing. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The workflow installs and depends on PyMuPDF for PDF rendering and cropping. <br>\nMitigation: Install and run the skill only in a Python environment where adding PyMuPDF is acceptable. <br>\nRisk: Input PDFs or arXiv downloads may contain private, untrusted, or copyrighted content. <br>\nMitigation: Use trusted PDFs or valid arXiv IDs, and confirm rights and sensitivity before processing or sharing outputs. <br>\nRisk: The generated HTML embeds extracted paper figures and report content. <br>\nMitigation: Review the final HTML before distribution to confirm figure quality, content accuracy, and sharing suitability. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/paper-report) <br>\n- [HTML report template](report-template.html) <br>\n- [arXiv PDF endpoint](https://arxiv.org/pdf/{ARXIV_ID}) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance, files] <br>\n**Output Format:** [Chinese HTML report with embedded base64 figures, plus shell commands and crop specifications during execution.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Creates local paper-report workspace files including the source PDF, rendered page PNGs, cropped figures, and a self-contained HTML report.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 5 files, 8200 bytes\n\nFiles: report-template.html (4050b), scripts/crop_figures.py (2484b), scripts/pdf_to_images.py (1208b), SKILL.md (7801b), _meta.json (131b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic PDF papers into structured Chinese reading reports with original figures. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). Handles PDF-to-image conversion, figure extraction, and HTML report generation.\n---\n\n# Paper Report\n\n将学术论文 PDF 转化为结构化的中文阅读报告，保留论文原文中的关键图表。\n\n## 依赖\n\n运行前确保安装 PyMuPDF：\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n首次执行时确定可用路径，后续步骤统一使用。\n\n## 工作流程\n\n复制以下清单并在每一步完成后勾选：\n\n```\nTask Progress:\n- [ ] Step 1: 获取 PDF 文件\n- [ ] Step 2: 将 PDF 每页转为图片\n- [ ] Step 3: 逐页阅读理解，规划图表截取\n- [ ] Step 4: 裁剪关键图表\n- [ ] Step 5: 校验截图质量\n- [ ] Step 6: 撰写中文报告并生成 HTML\n- [ ] Step 7: 校验 HTML 文件结构、资源引用与展示效果\n```\n\n---\n\n### Step 1: 获取 PDF 文件\n\n**用户提供本地文件路径？** -> 直接使用该路径。\n\n**用户提供 arXiv 链接或 ID？** -> 用 curl 下载：\n\n```bash\n# 从 arXiv ID 下载（如 2401.12345）\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n将 PDF 存储到工作目录 `{workspace}/paper.pdf`。验证下载成功后继续。\n\n---\n\n### Step 2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n**注意**：此步骤的目的是让大模型能以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step 3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文在心中记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table、重要公式或算法框\n- 记录每个图表在 PDF 原始坐标系中的裁剪区域（Rect 坐标）\n\n坐标确定方法：\n- PDF 页面原始尺寸通常约 595 x 842 pt（A4）\n- 渲染图片为 2x，因此图片像素约 1190 x 1684\n- 在图片中目测位置后，**将像素坐标除以 2** 得到 PDF 原始坐标\n- 记录格式：`(page_index, x0, y0, x1, y1, label)` 其中 page_index 从 0 开始\n\n**输出**：整理出一份截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 1 - 系统架构图 → page 3, Rect(30, 38, 565, 290)\n2. Figure 2 - 实验结果对比 → page 3, Rect(30, 295, 565, 485)\n3. Table 1 - 性能指标 → page 5, Rect(30, 50, 565, 200)\n...\n```\n\n---\n\n### Step 4: 裁剪关键图表\n\n根据 Step 3 的截图计划，使用 `scripts/crop_figures.py` 进行批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪以确保清晰度，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step 5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。反复调整直到所有截图质量合格。\n\n---\n\n### Step 6: 生成中文阅读报告（HTML）\n\n使用以下模板结构，生成一个自包含的 HTML 文件。图片使用 base64 内嵌以确保可移植性。\n\n**报告结构**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**图片内嵌方法**：将裁剪好的图片转为 base64 嵌入 HTML：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n**HTML 模板参考**：详见 [report-template.html](report-template.html)\n\n**关键写作要求**：\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，不添加原文未涉及的推测\n- 每个章节应有实质内容，避免泛泛而谈\n\n**输出文件命名**：最终 HTML 文件以论文标题命名，格式为 `{论文简短标题}-阅读报告.html`。从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线），例如论文标题为 \"Attention Is All You Need\" 则文件名为 `Attention-Is-All-You-Need-阅读报告.html`。\n\n将最终 HTML 文件保存到 `{workspace}/outputs/{论文简短标题}-阅读报告.html`。\n\n---\n\n### Step 7: 校验 HTML 文件结构、资源引用与展示效果\n\n使用 Read 工具查看生成的 HTML 文件，逐项检查以下内容：\n\n**结构完整性**：\n- HTML 基本结构是否完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>` 标签齐全）\n- 所有章节标题（h2）是否按报告结构依次出现，没有遗漏\n- 每个章节是否有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n\n**资源引用**：\n- 所有 `<img>` 标签的 `src` 属性是否为有效的 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在任何外部图片链接或本地文件路径引用（确保自包含可移植性）\n- 每张图片的 `alt` 属性和 `<figcaption>` 是否有描述性文字\n\n**展示效果**：\n- CSS 样式是否内嵌在 `<style>` 标签中，无外部样式表依赖\n- 图表与其所属章节的上下文是否对应（如架构图在方法章节，结果图在实验章节）\n- 中文排版是否正常，术语后是否附有英文原文\n\n**如果发现问题**：直接修复 HTML 文件中的对应内容，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**双栏排版论文**：大多数学术论文为双栏排版。图表可能跨栏或单栏，注意调整裁剪宽度。单栏图通常宽约 30-280 或 300-565，跨栏图宽约 30-565。\n\n**扫描版 PDF**：如果 PDF 页面渲染后文字模糊或为扫描件，依然可通过图片方式阅读理解，但截图质量可能受限，在报告中注明来源质量。\n\n**超长论文（>20 页）**：分批处理页面图片，每批 5-8 页，避免上下文溢出。先通读全文结构，再聚焦重点章节。\n\n**论文含附录**：附录中的补充图表如有价值也应截取，在报告中设置独立的\"附录内容\"章节。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1774252060907\n}\n\nArchive v1.0.1: 5 files, 8202 bytes\n\nFiles: report-template.html (4050b), scripts/crop_figures.py (2484b), scripts/pdf_to_images.py (1208b), SKILL.md (7801b), _meta.json (131b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic PDF papers into structured Chinese reading reports with original figures. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). Handles PDF-to-image conversion, figure extraction, and HTML report generation.\n---\n\n# Paper Reader\n\n将学术论文 PDF 转化为结构化的中文阅读报告，保留论文原文中的关键图表。\n\n## 依赖\n\n运行前确保安装 PyMuPDF：\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n首次执行时确定可用路径，后续步骤统一使用。\n\n## 工作流程\n\n复制以下清单并在每一步完成后勾选：\n\n```\nTask Progress:\n- [ ] Step 1: 获取 PDF 文件\n- [ ] Step 2: 将 PDF 每页转为图片\n- [ ] Step 3: 逐页阅读理解，规划图表截取\n- [ ] Step 4: 裁剪关键图表\n- [ ] Step 5: 校验截图质量\n- [ ] Step 6: 撰写中文报告并生成 HTML\n- [ ] Step 7: 校验 HTML 文件结构、资源引用与展示效果\n```\n\n---\n\n### Step 1: 获取 PDF 文件\n\n**用户提供本地文件路径？** -> 直接使用该路径。\n\n**用户提供 arXiv 链接或 ID？** -> 用 curl 下载：\n\n```bash\n# 从 arXiv ID 下载（如 2401.12345）\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n将 PDF 存储到工作目录 `{workspace}/paper.pdf`。验证下载成功后继续。\n\n---\n\n### Step 2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n**注意**：此步骤的目的是让大模型能以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step 3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文在心中记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table、重要公式或算法框\n- 记录每个图表在 PDF 原始坐标系中的裁剪区域（Rect 坐标）\n\n坐标确定方法：\n- PDF 页面原始尺寸通常约 595 x 842 pt（A4）\n- 渲染图片为 2x，因此图片像素约 1190 x 1684\n- 在图片中目测位置后，**将像素坐标除以 2** 得到 PDF 原始坐标\n- 记录格式：`(page_index, x0, y0, x1, y1, label)` 其中 page_index 从 0 开始\n\n**输出**：整理出一份截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 1 - 系统架构图 → page 3, Rect(30, 38, 565, 290)\n2. Figure 2 - 实验结果对比 → page 3, Rect(30, 295, 565, 485)\n3. Table 1 - 性能指标 → page 5, Rect(30, 50, 565, 200)\n...\n```\n\n---\n\n### Step 4: 裁剪关键图表\n\n根据 Step 3 的截图计划，使用 `scripts/crop_figures.py` 进行批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪以确保清晰度，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step 5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。反复调整直到所有截图质量合格。\n\n---\n\n### Step 6: 生成中文阅读报告（HTML）\n\n使用以下模板结构，生成一个自包含的 HTML 文件。图片使用 base64 内嵌以确保可移植性。\n\n**报告结构**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**图片内嵌方法**：将裁剪好的图片转为 base64 嵌入 HTML：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n**HTML 模板参考**：详见 [report-template.html](report-template.html)\n\n**关键写作要求**：\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，不添加原文未涉及的推测\n- 每个章节应有实质内容，避免泛泛而谈\n\n**输出文件命名**：最终 HTML 文件以论文标题命名，格式为 `{论文简短标题}-阅读报告.html`。从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线），例如论文标题为 \"Attention Is All You Need\" 则文件名为 `Attention-Is-All-You-Need-阅读报告.html`。\n\n将最终 HTML 文件保存到 `{workspace}/outputs/{论文简短标题}-阅读报告.html`。\n\n---\n\n### Step 7: 校验 HTML 文件结构、资源引用与展示效果\n\n使用 Read 工具查看生成的 HTML 文件，逐项检查以下内容：\n\n**结构完整性**：\n- HTML 基本结构是否完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>` 标签齐全）\n- 所有章节标题（h2）是否按报告结构依次出现，没有遗漏\n- 每个章节是否有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n\n**资源引用**：\n- 所有 `<img>` 标签的 `src` 属性是否为有效的 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在任何外部图片链接或本地文件路径引用（确保自包含可移植性）\n- 每张图片的 `alt` 属性和 `<figcaption>` 是否有描述性文字\n\n**展示效果**：\n- CSS 样式是否内嵌在 `<style>` 标签中，无外部样式表依赖\n- 图表与其所属章节的上下文是否对应（如架构图在方法章节，结果图在实验章节）\n- 中文排版是否正常，术语后是否附有英文原文\n\n**如果发现问题**：直接修复 HTML 文件中的对应内容，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**双栏排版论文**：大多数学术论文为双栏排版。图表可能跨栏或单栏，注意调整裁剪宽度。单栏图通常宽约 30-280 或 300-565，跨栏图宽约 30-565。\n\n**扫描版 PDF**：如果 PDF 页面渲染后文字模糊或为扫描件，依然可通过图片方式阅读理解，但截图质量可能受限，在报告中注明来源质量。\n\n**超长论文（>20 页）**：分批处理页面图片，每批 5-8 页，避免上下文溢出。先通读全文结构，再聚焦重点章节。\n\n**论文含附录**：附录中的补充图表如有价值也应截取，在报告中设置独立的\"附录内容\"章节。\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1774252011839\n}\n\nArchive v1.0.0: 5 files, 8201 bytes\n\nFiles: report-template.html (4050b), scripts/crop_figures.py (2484b), scripts/pdf_to_images.py (1208b), SKILL.md (7801b), _meta.json (131b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: paper-report\ndescription: Convert academic PDF papers into structured Chinese reading reports with original figures. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). Handles PDF-to-image conversion, figure extraction, and HTML report generation.\n---\n\n# Paper Reader\n\n将学术论文 PDF 转化为结构化的中文阅读报告，保留论文原文中的关键图表。\n\n## 依赖\n\n运行前确保安装 PyMuPDF：\n\n```bash\n{PYTHON} -m pip install PyMuPDF --quiet\n```\n\n**Python 路径约定**：本文档中 `{PYTHON}` 代表系统 Python3 解释器路径。\n- macOS（有 CommandLineTools）：`/Library/Developer/CommandLineTools/usr/bin/python3`\n- 其他环境：`python3`\n\n首次执行时确定可用路径，后续步骤统一使用。\n\n## 工作流程\n\n复制以下清单并在每一步完成后勾选：\n\n```\nTask Progress:\n- [ ] Step 1: 获取 PDF 文件\n- [ ] Step 2: 将 PDF 每页转为图片\n- [ ] Step 3: 逐页阅读理解，规划图表截取\n- [ ] Step 4: 裁剪关键图表\n- [ ] Step 5: 校验截图质量\n- [ ] Step 6: 撰写中文报告并生成 HTML\n- [ ] Step 7: 校验 HTML 文件结构、资源引用与展示效果\n```\n\n---\n\n### Step 1: 获取 PDF 文件\n\n**用户提供本地文件路径？** -> 直接使用该路径。\n\n**用户提供 arXiv 链接或 ID？** -> 用 curl 下载：\n\n```bash\n# 从 arXiv ID 下载（如 2401.12345）\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n将 PDF 存储到工作目录 `{workspace}/paper.pdf`。验证下载成功后继续。\n\n---\n\n### Step 2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\n{PYTHON} scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n**注意**：此步骤的目的是让大模型能以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step 3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文在心中记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table、重要公式或算法框\n- 记录每个图表在 PDF 原始坐标系中的裁剪区域（Rect 坐标）\n\n坐标确定方法：\n- PDF 页面原始尺寸通常约 595 x 842 pt（A4）\n- 渲染图片为 2x，因此图片像素约 1190 x 1684\n- 在图片中目测位置后，**将像素坐标除以 2** 得到 PDF 原始坐标\n- 记录格式：`(page_index, x0, y0, x1, y1, label)` 其中 page_index 从 0 开始\n\n**输出**：整理出一份截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 1 - 系统架构图 → page 3, Rect(30, 38, 565, 290)\n2. Figure 2 - 实验结果对比 → page 3, Rect(30, 295, 565, 485)\n3. Table 1 - 性能指标 → page 5, Rect(30, 50, 565, 200)\n...\n```\n\n---\n\n### Step 4: 裁剪关键图表\n\n根据 Step 3 的截图计划，使用 `scripts/crop_figures.py` 进行批量裁剪：\n\n```bash\n{PYTHON} scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪以确保清晰度，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step 5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。反复调整直到所有截图质量合格。\n\n---\n\n### Step 6: 生成中文阅读报告（HTML）\n\n使用以下模板结构，生成一个自包含的 HTML 文件。图片使用 base64 内嵌以确保可移植性。\n\n**报告结构**：\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**图片内嵌方法**：将裁剪好的图片转为 base64 嵌入 HTML：\n\n```python\nimport base64\n\ndef img_to_base64(path):\n    with open(path, \"rb\") as f:\n        data = base64.b64encode(f.read()).decode()\n    ext = path.rsplit(\".\", 1)[-1]\n    mime = {\"png\": \"image/png\", \"jpg\": \"image/jpeg\"}.get(ext, \"image/png\")\n    return f\"data:{mime};base64,{data}\"\n```\n\n在 HTML 中使用：`<img src=\"{base64_data}\" alt=\"Figure 1\" style=\"max-width:100%;\">`\n\n**HTML 模板参考**：详见 [report-template.html](report-template.html)\n\n**关键写作要求**：\n- 全文使用中文撰写，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用格式：\"如图 1 所示，...\" 或 \"表 1 汇总了...\"\n- 保持学术严谨性，不添加原文未涉及的推测\n- 每个章节应有实质内容，避免泛泛而谈\n\n**输出文件命名**：最终 HTML 文件以论文标题命名，格式为 `{论文简短标题}-阅读报告.html`。从论文标题中提取核心关键词作为简短标题（去除特殊字符，空格替换为短横线），例如论文标题为 \"Attention Is All You Need\" 则文件名为 `Attention-Is-All-You-Need-阅读报告.html`。\n\n将最终 HTML 文件保存到 `{workspace}/outputs/{论文简短标题}-阅读报告.html`。\n\n---\n\n### Step 7: 校验 HTML 文件结构、资源引用与展示效果\n\n使用 Read 工具查看生成的 HTML 文件，逐项检查以下内容：\n\n**结构完整性**：\n- HTML 基本结构是否完整（`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>` 标签齐全）\n- 所有章节标题（h2）是否按报告结构依次出现，没有遗漏\n- 每个章节是否有实质内容，不存在空段落或占位符文本（如 `{{...}}`）\n\n**资源引用**：\n- 所有 `<img>` 标签的 `src` 属性是否为有效的 base64 data URI（以 `data:image/png;base64,` 或 `data:image/jpeg;base64,` 开头）\n- 不存在任何外部图片链接或本地文件路径引用（确保自包含可移植性）\n- 每张图片的 `alt` 属性和 `<figcaption>` 是否有描述性文字\n\n**展示效果**：\n- CSS 样式是否内嵌在 `<style>` 标签中，无外部样式表依赖\n- 图表与其所属章节的上下文是否对应（如架构图在方法章节，结果图在实验章节）\n- 中文排版是否正常，术语后是否附有英文原文\n\n**如果发现问题**：直接修复 HTML 文件中的对应内容，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**双栏排版论文**：大多数学术论文为双栏排版。图表可能跨栏或单栏，注意调整裁剪宽度。单栏图通常宽约 30-280 或 300-565，跨栏图宽约 30-565。\n\n**扫描版 PDF**：如果 PDF 页面渲染后文字模糊或为扫描件，依然可通过图片方式阅读理解，但截图质量可能受限，在报告中注明来源质量。\n\n**超长论文（>20 页）**：分批处理页面图片，每批 5-8 页，避免上下文溢出。先通读全文结构，再聚焦重点章节。\n\n**论文含附录**：附录中的补充图表如有价值也应截取，在报告中设置独立的\"附录内容\"章节。\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1774251815883\n}","readmeExcerpt":"Skill: paper-report Owner: x-lixu Summary: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. Tags: latest:2.1.2 Version history: v2.1.2 | 2026-07-14T03:08:00.370Z | user - Remov","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1"},{"language":"bash","snippet":"curl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1"},{"language":"text","snippet":"1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结"},{"language":"text","snippet":"paper-report/\n├── SKILL.md                    # 本文件（路由 + 通用流程）\n├── reader/\n│   ├── html.md                 # 输入处理：HTML 模式（H1–H3）\n│   └── pdf.md                  # 输入处理：PDF 模式（P1–P5）\n├── writer/\n│   ├── html.md                 # 输出格式：HTML（9 节）\n│   ├── html-template.html      # HTML 报告模板（含 MathJax）\n│   ├── markdown.md             # 输出格式：Markdown（9 节）\n│   ├── markdown-template.md    # Markdown 报告模板\n│   ├── docx.md                 # 输出格式：Word (.docx)（9 节）\n│   └── docx-template.js        # docx-js 构建器库 + 自检示例\n└── scripts/\n    ├── pdf_to_images.py\n    ├── crop_figures.py\n    ├── extract_arxiv_text.py\n    └── extract_figure_urls.py"},{"language":"text","snippet":"Task Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本 & 规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件"},{"language":"bash","snippet":"curl -sL \"{HTML_URL}\" -o {workspace}/paper.html"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: paper-report\ndescription: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link).\n---\n\n# Paper Reader\n\n将学术论文转化为结构化的中文阅读报告。输入方式（`reader/`）与输出格式（`writer/`）独立解耦，详见末尾目录结构。\n\n> **脚本运行时**：`reader/` 输入处理与 HTML / Markdown writer 构建脚本用 `python3`；Word (.docx) writer 构建脚本用 `node`。环境相关的路径 / 依赖细节在各 writer 文档的\"已知陷阱\"里单独说明。\n\n---\n\n## Step 1: 路由决策\n\n### 1.1 选择输出格式\n\n- 用户明确指定 → 按用户要求。\n- 用户未指定 → **默认 HTML**。\n\n确定后**记住这个选择**，用于 Step 2 时分发到对应的 writer。\n\n### 1.2 选择输入处理模式\n\n两种模式完全独立，**不得混用**。规则：\n\n**规则 1：用户提供本地 PDF 文件路径**\n→ 使用 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 2：用户提供 arXiv 链接（不论 `/pdf/` 还是 `/html/` 形式）**\n→ 优先尝试 HTML 模式。构造 HTML URL：将 `/pdf/` 替换为 `/html/`，并去掉末尾的 `.pdf`。\n例：`https://arxiv.org/pdf/2605.12036` → `https://arxiv.org/html/2605.12036`\n\n用 curl 检查页面是否存在：\n\n```bash\ncurl -sI \"https://arxiv.org/html/{ARXIV_ID}\" | head -1\n```\n\n- 返回 `HTTP/... 200` → **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n- 返回非 200（如 404）→ 回退到 **PDF 模式**，跳转至 [reader/pdf.md](reader/pdf.md) 执行 P1–P5。\n\n**规则 3：用户提供其他 HTML 页面链接**\n→ **HTML 模式**，跳转至 [reader/html.md](reader/html.md) 执行 H1–H3。\n\n> 完成对应模式的步骤后，回到本文档继续 **Step 2**。\n\n---\n\n## Step 2: 生成中文阅读报告\n\n完成输入处理后，`{workspace}/figures/` 已包含所有目标图表。\n\n### 2.1 报告结构（参考框架，可根据论文内容灵活调整）\n\n```\n1. 论文基本信息（标题、作者、机构、发表信息）\n2. 研究背景与动机\n3. 核心方法 / 技术方案（配架构图）\n4. 实验设计\n5. 实验结果与分析（配结果图表）\n6. 主要贡献与创新点\n7. 局限性与未来方向\n8. 个人点评与总结\n```\n\n**灵活性**：根据论文内容可增加章节（如 Case Study、数据集详解）、合并章节（如实验设计与结果合一）、自由组织子结构。\n\n**附录内容集成**：\n\n- \"方法实现细节/超参数/训练配置\" → **融入对应主方法章节**\n- \"补充实验/额外消融\" → 融入实验结果章节或独立小节\n- \"独立子课题/独立证明\" → 可设独立附录章节\n\n### 2.2 图表选取原则\n\n根据报告内容需要选取，**不设数量硬上限**：\n\n- 架构图/流程图：必选（帮助读者建立全局理解）\n- 主实验结果表/图：必选\n- 关键消融/对比图：报告中有讨论则选入\n- Case Study 截图：有说明价值则选入\n\n### 2.3 通用写作要求\n\n- 全文中文，术语首次出现时附英文原文，如\"注意力机制（Attention Mechanism）\"\n- 图表引用：\"如图 1 所示，...\" / \"表 1 汇总了...\"\n- 严格基于原文，不添加原文未涉及的推测或数据\n- 每章应有实质内容，避免泛泛而谈\n- **不**包含\"报告生成日期\"或\"AI 生成\"相关文字\n\n### 2.4 按输出格式分发\n\n根据 Step 1.1 的输出格式选择，跳转到对应的 writer 文档：\n\n- **HTML 输出** → [writer/html.md](writer/html.md)\n- **Markdown 输出** → [writer/markdown.md](writer/markdown.md)\n- **Word (.docx) 输出** → [writer/docx.md](writer/docx.md)\n\n每份 writer 文档包含完整的：图片处理 / 数学公式 / 表格 / 模板路径 / 文件命名 / 写作风格 / 校验清单 / 已知陷阱。\n\n---\n\n## Step 3: 校验\n\n按所选 writer 文档的**第 8 节\"校验清单\"**逐项检查。\n\n**通用必检项**（任何格式都适用）：\n\n- 各章节标题完整、层级清晰\n- 章节有实质内容，无空段落或 `{{...}}` 占位符残留\n- 无\"报告生成日期\"或\"AI 辅助生成\"文字\n\n**如果发现问题**：直接修复对应文件，修复后重新保存到同一路径。\n\n---\n\n## 特殊情况处理\n\n**超长论文（>20 页 / >50,000 字符）**：分批处理，先通读整体结构，再聚焦核心章节（方法、实验、结论）。\n\n**双栏排版论文（PDF 模式）**：单栏图宽约 30–280 或 300–565 pt，跨栏图宽约 30–565 pt，调整裁剪坐标。\n\n**扫描版 PDF**：文字模糊时通过图片阅读，报告中注明来源质量受限。\n\n**论文含附录**：参照 Step 2.1 中\"附录内容集成\"处理。\n\n---\n\n## 文件结构参考\n\n```\npaper-report/\n├── SKILL.md                    # 本文件（路由 + 通用流程）\n├── reader/\n│   ├── html.md                 # 输入处理：HTML 模式（H1–H3）\n│   └── pdf.md                  # 输入处理：PDF 模式（P1–P5）\n├──"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7684ff77rdsthe90drq4z88183f71s\",\n  \"slug\": \"paper-report\",\n  \"version\": \"2.1.2\",\n  \"publishedAt\": 1783998480370\n}"},{"path":"reader/html.md","content":"# HTML 模式处理流程\n\n本文档描述从 arXiv HTML 页面（或其他 HTML 形式论文）提取内容的完整流程。\n完成 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 进度清单\n\n```\nTask Progress (HTML Mode):\n- [ ] Step H1: 下载 HTML 文件\n- [ ] Step H2: 提取正文文本 & 规划图表清单\n- [ ] Step H3: 下载图表图片并校验\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step H1: 下载 HTML 文件\n\n确定 HTML URL（来自路由决策），下载到工作目录：\n\n```bash\ncurl -sL \"{HTML_URL}\" -o {workspace}/paper.html\n```\n\n验证下载成功（文件应大于 10KB，且包含 `<html` 标签）：\n\n```bash\nwc -c {workspace}/paper.html\ngrep -c \"<html\" {workspace}/paper.html\n```\n\n---\n\n### Step H2: 提取正文文本 & 规划图表清单\n\n**任务 A — 提取纯文本（含公式与表格结构）**：\n\n使用 `scripts/extract_html_text.py` 提取干净的正文文本，保留数学公式和表格基本结构：\n\n```bash\npython3 scripts/extract_html_text.py {workspace}/paper.html {workspace}/paper_text.txt\n```\n\n脚本将 `<math>` 标签转为 LaTeX 格式（`$...$` / `$$...$$`），表格转为管道分隔行，输出到 `paper_text.txt`。\n\n**任务 B — 提取图表 URL 列表**：\n\n使用 `scripts/extract_figure_urls.py` 扫描 HTML 中所有 `<figure>` 块，提取可下载图片 URL 并识别内联 SVG：\n\n```bash\npython3 scripts/extract_figure_urls.py {workspace}/paper.html \"{HTML_URL}\"\n```\n\n脚本输出两类结果：\n- **Downloadable figures**：带有 `<img>` 标签的图片，输出完整 URL\n- **Inline SVG figures**：无外部图片文件，需用 cairosvg 转为 PNG（见 Step H3 末尾说明）\n\n**任务 C — 阅读正文**：\n\n使用 Read 工具阅读 `{workspace}/paper_text.txt`，理解论文全文内容。超长文本（>50,000 字符）使用 `offset` 和 `limit` 参数分批阅读。\n\n在阅读过程中，从上方图表 URL 列表中挑选需纳入报告的**关键图表**（选取原则见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」）。\n\n记录下载计划：\n\n```\n图表下载计划：\n1. Figure 1 - 系统架构图 → {URL1} → fig1_architecture.png\n2. Figure 2 - 数据集构造 → {URL2} → fig2_dataset.png\n3. Figure 4 - 方法框架 → {URL3} → fig4_framework.png\n4. Table 3 - 实验结果 → {URL4} → table3_results.png\n...\n```\n\n---\n\n### Step H3: 下载图表图片并校验\n\n根据 Step H2 的下载计划，逐一下载图片到 `{workspace}/figures/`：\n\n```bash\nmkdir -p {workspace}/figures\ncurl -sL \"{FIGURE_URL}\" -o {workspace}/figures/{FIGURE_NAME}\n```\n\n下载完成后，使用 Read 工具逐一查看每张图片，确认：\n- 图片内容与预期图表一致（非空白、非破损）\n- 图表标题或标注清晰可见\n- 若图片无法正常显示或内容不对，记录问题并跳过该图（不强制使用）\n\n**下载失败排查**：如果 curl 返回 HTML 错误页或 0 字节文件，检查 URL 是否正确。常见问题：\n- arXiv 图片路径可能是 `x1.png`, `x2.png` 等简短名称\n- 确认 `urljoin` 结果是否合理，必要时手动构造 URL\n\n**内联 SVG 图表处理**：\n\n部分 arXiv HTML 论文（尤其是 TikZ 绘制的图）不使用外部图片文件，而是将 SVG 直接内嵌在 `<figure>` 标签中。此时 Step H2 的图表 URL 列表中**不会出现**对应图片。\n\n识别方式：`<figure>` 内包含 `<svg>` 标签而非 `<img>` 标签。\n\n处理方法——**直接将 SVG 转为 PNG**（依赖 `cairosvg`，首次使用时安装：`python3 -m pip install cairosvg`）：\n\n```python\nimport re, cairosvg\n\n# 从 HTML 中提取目标 <figure> 内的 <svg>...</svg> 完整内容\nsvg_match = re.search(r'(<svg[^>]*>.*?</svg>)', figure_block, re.DOTALL)\nsvg_string = svg_match.group(1)\n\n# 渲染为 2x 分辨率 PNG\ncairosvg.svg2png(bytestring=svg_string.encode('utf-8'),\n                 write_to='{workspace}/figures/{name}.png',\n                 scale=2)\n```\n\n转换后用 Read 工具查看图片，确认渲染正确。\n\n> 仅对内联 SVG 图表执行此转换，能正常下载的 `<img>` 图片不受影响。\n\n---\n\n完成以上 H1–H3 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2** 生成报告。"},{"path":"reader/pdf.md","content":"# PDF 模式处理流程\n\n本文档描述从本地 PDF 文件或下载的 arXiv PDF 提取内容的完整流程。\n完成 P1–P5 后，返回 [SKILL.md](../SKILL.md) 执行 **Step 2**（生成报告）和 **Step 3**（校验）。\n\n## 依赖\n\n```bash\npython3 -m pip install PyMuPDF --quiet\n```\n\n## 进度清单\n\n```\nTask Progress (PDF Mode):\n- [ ] Step P1: 获取 PDF 文件\n- [ ] Step P2: PDF 转图片\n- [ ] Step P3: 逐页阅读理解 & 规划截图\n- [ ] Step P4: 裁剪关键图表\n- [ ] Step P5: 校验截图质量\n- [ ] 返回 SKILL.md Step 2: 生成报告\n- [ ] 返回 SKILL.md Step 3: 校验文件\n```\n\n---\n\n### Step P1: 获取 PDF 文件\n\n**用户提供本地文件路径？** → 直接使用该路径，跳过下载。\n\n**来自 arXiv（HTML 不可用，回退到 PDF 模式）？** → 用 curl 下载：\n\n```bash\n# arXiv ID 如 2605.12036\ncurl -L -o {workspace}/paper.pdf \"https://arxiv.org/pdf/{ARXIV_ID}\"\n```\n\n验证下载成功：\n\n```bash\nfile {workspace}/paper.pdf\n```\n\n输出应包含 `PDF document`。如需确认页数，可用 PyMuPDF：\n\n```python\nimport fitz\ndoc = fitz.open('{workspace}/paper.pdf')\nprint(f\"Pages: {doc.page_count}\")\ndoc.close()\n```\n\n---\n\n### Step P2: PDF 转图片\n\n使用 `scripts/pdf_to_images.py` 将每一页渲染为 PNG 图片：\n\n```bash\npython3 scripts/pdf_to_images.py {workspace}/paper.pdf {workspace}/pages\n```\n\n脚本以 2x 分辨率渲染，输出到 `{workspace}/pages/page_1.png`, `page_2.png`, ...\n\n此步骤的目的是让模型以图片形式\"看到\"每一页的完整布局，包括公式、图表和排版。\n\n---\n\n### Step P3: 逐页阅读理解 & 规划截图\n\n使用 Read 工具逐页查看 `{workspace}/pages/page_N.png` 图片。\n\n每页阅读时，**同时完成两个任务**：\n\n**任务 A — 内容理解**：\n- 提取该页的核心论点、方法描述、实验结果等关键信息\n- 用中文记录摘要，为最终报告准备素材\n\n**任务 B — 图表定位**：\n- 识别页面中的所有 Figure、Table\n- 目测其在图片中的像素范围，换算为 PDF 裁剪坐标\n\n**坐标换算方法**：\n\n页面图片以 2x 渲染，因此：\n\n```\nPDF 坐标 = 图片像素坐标 ÷ 2\n```\n\n典型 A4 页面：图片约 1190 × 1684 px，对应 PDF 约 595 × 842 pt。\n\n目测图表在图片中的上下左右像素边界，除以 2 后得到 `(x0, y0, x1, y1)`。\n\n**双栏论文注意**：\n- 跨双栏的满宽图表：x 范围约 `30 ~ 565`\n- 仅占左栏的图表：x 范围约 `30 ~ 295`\n- 仅占右栏的图表：x 范围约 `300 ~ 565`\n\n**Caption 边界（重要）**：裁剪矩形必须完整包含图/表下方（或上方）的 caption 行——即 `Figure N: ...` / `Table N: ...` 那一整段说明文字。writer 在正文中会以\"如图 N 所示\"、\"表 N 汇总了...\"方式引用原文，因此 caption 必须在图内可见；漏掉 caption 会导致下游报告失去溯源信息。同时，相邻正文段落必须**留在矩形之外**——y 边界宁可紧贴 caption 收窄，也不要把下一段正文文字一起框进来。\n\n不确定时宁可稍宽（后续 P5 校验可缩窄），留约 10pt 的上下 margin，但**不要越过 caption 边界把正文段落一起裁进来**。\n\n**图表选取原则**：见 [SKILL.md](../SKILL.md) Step 2「图表选取原则」。\n\n**输出**：整理出截图计划列表，例如：\n\n```\n截图计划：\n1. Figure 2 - 系统架构图（满宽） → page 3, Rect(30, 55, 565, 258)\n2. Figure 3 - DiT 维度对比（左栏）→ page 6, Rect(30, 252, 295, 388)\n3. Figure 5 - 主观评价（左栏）  → page 9, Rect(30, 55, 295, 180)\n```\n\n> **注意**：PDF 模式通过图片视觉推理理解内容，存在一定的误读风险，特别是在具体数字和表格数值方面。撰写报告时，对关键数据务必谨慎，有疑问时在报告中注明\"根据图表目视\"而非断言具体数值。\n\n---\n\n### Step P4: 裁剪关键图表\n\n根据 Step P3 的截图计划，使用 `scripts/crop_figures.py` 批量裁剪：\n\n```bash\npython3 scripts/crop_figures.py \\\n  {workspace}/paper.pdf \\\n  {workspace}/figures \\\n  '{crop_spec_json}'\n```\n\n其中 `{crop_spec_json}` 是 JSON 格式的裁剪规格：\n\n```json\n[\n  {\"page\": 3, \"rect\": [30, 38, 565, 290], \"name\": \"fig1_architecture\"},\n  {\"page\": 3, \"rect\": [30, 295, 565, 485], \"name\": \"fig2_results\"},\n  {\"page\": 5, \"rect\": [30, 50, 565, 200], \"name\": \"table1_metrics\"}\n]\n```\n\n脚本以 3x 分辨率裁剪，输出到 `{workspace}/figures/` 目录。\n\n---\n\n### Step P5: 校验截图质量\n\n使用 Read 工具逐一查看 `{workspace}/figures/` 中的每张截图：\n\n- 图表内容是否完整，没有被截断？\n- 是否包含了图表标题和标注？\n- 是否有多余的文字区域混入？\n\n**如果某张截图有问题**：调整对应的 Rect 坐标（扩大或缩小范围），然后重新裁剪该图。\n\n**快速调整技巧**：\n- 截断了底部 → 增大 y1（向下扩展）\n- 截断了"},{"path":"skill-card.md","content":"## Description:\n\nConvert academic papers from arXiv HTML pages or local PDFs into structured Chinese reading reports with original figures.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[nuaalixu](https://clawhub.ai/user/nuaalixu)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, students, and other paper readers use this skill to summarize, analyze, and create structured Chinese reading reports for academic papers. It supports HTML, Markdown, and Word outputs with selected original figures.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill downloads paper HTML, PDFs, and figure assets from the web, which can expose the workspace to untrusted content.\n\nMitigation: Run it in a constrained workspace, avoid untrusted paper HTML pages, and verify figure URLs before download.\n\nRisk: Generated HTML reports may contain unsafe or poorly escaped content.\n\nMitigation: Treat generated HTML as untrusted until escaping and script controls are reviewed.\n\nRisk: Dependency installation guidance is under-scoped and may use unpinned packages.\n\nMitigation: Prefer pinned local dependencies and review package installs before execution.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/nuaalixu/skills/paper-report)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Files, Guidance]\n\n**Output Format:** [Chinese reading reports in HTML, Markdown, or DOCX, with extracted figure assets and supporting shell commands.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create workspace files such as downloaded paper inputs, extracted text, page images, figures, and final report files.]\n\n## Skill Version(s):\n\n2.1.2 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. Skill: paper-report Owner: x-lixu Summary: Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper. Tags: latest:2.1.2 Version history: v2.1.2 | 2026-07-14T03:08:00.370Z | user - Remov","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1344,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:37:15.548Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:53:33.365Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}