{"id":"95f27f2a-f492-4e38-9f57-5031791657a6","entityType":"agent","slug":"clawhub-mlj-1212-paper-report-ppt","name":"paper-report-ppt","canonicalUrl":"https://www.xpersona.co/agent/clawhub-mlj-1212-paper-report-ppt","canonicalPath":"/agent/clawhub-mlj-1212-paper-report-ppt","generatedAt":"2026-10-10T00:30:59.422Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T15:06:30.629Z","emptyReason":null},"description":"Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation. Skill: paper-report-ppt Owner: mlj-1212 Summary: Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-04T12:26:12.609Z | auto paper-report-ppt 0.1.0 — Initial Release - Generate editable group-meeting PPTX directly from research article PDFs, ma","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17bgbmh9vtr5sth8pdq39p3118bam87:paper-report-ppt","sourceUrl":"https://clawhub.ai/mlj-1212/paper-report-ppt","homepage":"https://clawhub.ai/mlj-1212/skills/paper-report-ppt","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/mlj-1212/paper-report-ppt","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/mlj-1212/skills/paper-report-ppt","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:06:30.629Z","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-09T15:06:30.629Z","emptyReason":null},"stars":null,"forks":null,"downloads":2424,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"2.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:06:30.629Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T15:06:30.629Z","lastCrawledAt":"2026-10-09T15:06:30.629Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T15:06:30.629Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-04T12:26:12.609Z","changelog":"paper-report-ppt 0.1.0 — Initial Release - Generate editable group-meeting PPTX directly from research article PDFs, maintaining the paper’s structure and embedding all figures as-is. - Fully self-contained: all functions are implemented via built-in Python scripts, requiring only standard pip packages (no external skills). - Automated, stepwise workflow includes: environment check, PDF parsing (text, figures, formulas), outline generation, slide content structuring, and final PPTX creation. - Intelligent image filtering, formula rendering, and consistent 17-slide structure based on customizable presentation focus. - Optional auto-generation of a full speaker draft (DOCX) for oral reports. - Comprehensive documentation for triggers, inputs, and workflow to facilitate smooth usage by any user.","fileCount":27,"zipByteSize":1129512}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17bgbmh9vtr5sth8pdq39p3118bam87:paper-report-ppt","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","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-mlj-1212-paper-report-ppt/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/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-10T00:30:59.420Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mlj-1212-paper-report-ppt/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-09T15:06:30.629Z","emptyReason":null},"readme":"Skill: paper-report-ppt\n\nOwner: mlj-1212\n\nSummary: Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation.\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-04T12:26:12.609Z | auto\n\npaper-report-ppt 0.1.0 — Initial Release\n\n- Generate editable group-meeting PPTX directly from research article PDFs, maintaining the paper’s structure and embedding all figures as-is.\n- Fully self-contained: all functions are implemented via built-in Python scripts, requiring only standard pip packages (no external skills).\n- Automated, stepwise workflow includes: environment check, PDF parsing (text, figures, formulas), outline generation, slide content structuring, and final PPTX creation.\n- Intelligent image filtering, formula rendering, and consistent 17-slide structure based on customizable presentation focus.\n- Optional auto-generation of a full speaker draft (DOCX) for oral reports.\n- Comprehensive documentation for triggers, inputs, and workflow to facilitate smooth usage by any user.\n\nArchive index:\n\nArchive v0.1.0: 27 files, 1129512 bytes\n\nFiles: .gitignore (144b), assets (0b), assets/screenshots (0b), assets/screenshots/slide_01.png (83226b), assets/screenshots/slide_07.png (516216b), assets/screenshots/slide_13.png (481263b), install.py (3358b), LICENSE (1065b), README.md (11072b), references (0b), references/example-slides.json (9921b), references/formula-rendering.md (4625b), references/image-selection.md (3831b), references/outline-templates.md (4811b), references/slides-json-template.md (8642b), scripts (0b), scripts/filter_images.py (7468b), scripts/gen_pptx.py (102798b), scripts/gen_speech_docx.py (12607b), scripts/install_check.py (4217b), scripts/parse_pdf.py (42905b), scripts/render_formula.py (3474b), scripts/validate_pptx.py (13109b), scripts/validate_slides_json.py (11078b), skill-card.md (2424b), SKILL.md (19808b), _meta.json (135b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: paper-report-ppt\ndescription: \"Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation.\"\n---\n\n# Paper Report PPT Skill\n\n把研究生文献（PDF）按文章脉络生成用于组会汇报的**可编辑** PPTX。文献配图**原样嵌入不改**，使用自由设计路径生成学术专业风格演示文稿。\n\n本 skill 是**自包含场景编排层**，所有核心能力通过内置 Python 脚本实现，不依赖任何外部 skill。只需 `pip install python-pptx PyMuPDF python-docx Pillow matplotlib` 即可在任何 AI 环境中使用。\n\n---\n\n## 触发条件\n\n当用户出现以下意图时调用本 skill：\n- \"把这篇论文做成组会汇报 PPT\"\n- \"这篇文献帮我整理成汇报 slides\"\n- \"研究生组会汇报，按文章脉络来\"\n- 上传 PDF 并要求生成汇报演示文稿\n- \"paper report\" / \"literature presentation\" / \"journal club slides\"\n\n---\n\n## 输入契约\n\n| 输入 | 必需 | 说明 |\n|---|---|---|\n| 文献 PDF | 是 | 研究生文献（论文 / 预印本 / 学位论文），本地路径 |\n| 汇报场景 | 否 | 组会 / 开题 / 中期 / 答辩；默认组会 |\n| 目标页数 | 否 | 固定 17 页（含封面目录），不可更改 |\n| 语言 | 否 | 默认跟随文献语言；中文文献默认中文汇报 |\n| 侧重 | 否 | IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比；默认均衡 |\n| 演讲稿 | 否 | 是否同步生成完整演讲稿（独立 DOCX 文稿）；默认生成 |\n\n---\n\n## 工作流（S0–S5）\n\n### S0 — 意图确认与需求收集\n\n- **输入**：用户对话 + PDF 路径\n- **输出**：需求摘要（场景 / 页数 / 语言 / 侧重 + 矢量图处理决策）\n- **脚本**：`scripts/install_check.py`\n- **门禁**：⛔ ① 环境自检通过 ② 用户确认需求摘要后进入 S1\n\n#### S0.1 环境自检（首要步骤）\n\n进入 S0 后**第一件事**是运行环境自检：\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/install_check.py --json\n```\n\n自检内容：\n- Python >= 3.8\n- 4 个必需 pip 包：`python-pptx`、`PyMuPDF`、`python-docx`、`Pillow`（Pillow 用于 PDF 配图反色修复，缺失会导致黑底图问题）\n- 1 个可选 pip 包：`matplotlib`（公式渲染）\n\n退出码：0=就绪，2=需安装依赖。若退出码为 2，提示用户运行：\n```bash\npip install python-pptx PyMuPDF python-docx Pillow matplotlib\n```\n\n#### S0.2 需求收集\n\n**收集项**：\n1. PDF 路径\n2. 汇报场景与目标页数\n3. 汇报语言\n4. 脉络侧重（IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比）\n5. PDF 中矢量图处理方式（默认不提取；如需保留接受栅格化）\n6. 是否同步生成演讲稿（DOCX 格式，默认生成）\n\n> **矢量图决策**：PDF 矢量图（图表 / 流程图）默认不提取。若用户要求保留：栅格化（`parse_pdf.py --render-vector-figures`，180 DPI）。在 S0 与用户确认。\n\n---\n\n### S1 — 文献解析与素材提取\n\n- **输入**：PDF\n- **输出**：\n  - `<work_dir>/<stem>.md`（结构化 Markdown，含 `<!-- Page N -->` 标记）\n  - `<work_dir>/<stem>_files/`（原样提取的配图 PNG/JPG + `image_manifest.json`）\n  - `<work_dir>/pages/page_XXXX.txt`（逐页文本，长文献检索用）\n  - `<work_dir>/formula_list.json`（公式检测清单）\n- **门禁**：✅ `<stem>.md` 与 `image_manifest.json` 存在\n\n**PDF 解析**（自包含，仅依赖 PyMuPDF）：\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/parse_pdf.py <pdf_path> -o <work_dir>/<stem>.md\n```\n\n> `parse_pdf.py` 是本 skill 自带的 PDF 解析器。功能包括：标题级别检测、加粗/斜体格式化、列表检测、页眉页脚过滤、图片原样提取（不重采样）、image_manifest.json 生成（字段：filename / sha256 / page_number / pixel_width / pixel_height / caption / figure_number）、基础表格检测、矢量图渲染（`--render-vector-figures`）。\n\n**公式检测**：在 `<stem>.md` 中搜索 LaTeX 数学标记（`$...$` / `$$...$$` / `\\(...\\)` / `\\[...\\]`），生成 `formula_list.json`（每条记录：id / latex / source_page / complexity / render_as）。详细规则见 `references/formula-rendering.md`。\n\n---\n\n### S2 — 组会汇报脉络大纲生成\n\n- **输入**：`<stem>.md` + `image_manifest.json` + `formula_list.json`\n- **输出**：`<work_dir>/outline.md`（组会脉络页序列）\n- **脚本**：`scripts/filter_images.py`（配图筛选）\n- **门禁**：⛔ 用户确认大纲后进入 S3\n\n#### 脉络模板预设\n\n根据 S0 收集的\"侧重\"方向，从 `references/outline-templates.md` 选取对应模板。**无论选哪个模板，最终 slides.json 的 page_type 序列必须遵循 R1 硬性规则（17页固定结构）**，区别仅在于 content 页的侧重方向不同：\n\n| 侧重方向 | 模板 | 页数范围 | 适用场景 |\n|----------|------|:---:|------|\n| IMRaD 均衡 | 模板 1 | 17 | 常规组会汇报（默认） |\n| 问题驱动 | 模板 2 | 17 | 紧凑汇报，聚焦\"问题→解决\" |\n| 创新点驱动 | 模板 3 | 17 | 开题/中期/答辩，强调创新 |\n| 综述对比 | 模板 4 | 17 | 文献综述，横向对比 |\n\n#### 配图智能筛选与排序\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/filter_images.py <work_dir>/<stem>_files/image_manifest.json --max-per-page 2\n```\n\n输出 `image_manifest_filtered.json`，包含：\n- 分类：按 caption 语义判断图片类型，自动过滤装饰性小图/logo/二维码\n- 去重：按 sha256 去除重复图片\n- 排序：按章节顺序排列（引言→方法→结果→讨论）\n- 标记：标记图片所属章节\n\n详细规则见 `references/image-selection.md`。\n\n#### 每页大纲需标注\n\n- 该页对应文献的章节 / 页码区间\n- 该页应嵌入的配图文件名（从 `image_manifest_filtered.json` 选取）\n- 该页应嵌入的公式（从 `formula_list.json` 选取）\n- 关键论点（≤3 条）\n\n---\n\n### S3 — PPTX 生成（自由设计）\n\n- **输入**：S2 的 `outline.md` + `image_manifest_filtered.json` + 配图文件\n- **输出**：`<work_dir>/output.pptx`（可编辑 PPTX）\n- **门禁**：✅ PPTX 文件存在且可打开\n\n#### Step 1 — 公式渲染（如有）\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/render_formula.py <work_dir>/formula_list.json <work_dir>/<stem>_files/\n```\n\n> 公式渲染为 300 DPI PNG（透明背景，自动裁剪白边）。详细规则见 `references/formula-rendering.md`。\n\n##### Step 2 — 生成 slides.json\n\n**AI 的工作**：根据 `outline.md`，逐页生成结构化 JSON 数据，写入 `<work_dir>/slides.json`。\n\n这是 AI 唯一需要做的创造性工作——把 outline 中每页的文字内容、配图分配、speaker notes 组织为 JSON 格式。不需要手写 SVG，不需要理解 DrawingML 规范。\n\n> **参考示例**：完整的 17 页 slides.json 示例见 `references/example-slides.json`，AI 生成时应严格模仿其结构和字段填写方式，确保跨环境一致。\n\n**slides.json 格式**：\n\n```json\n[\n  {\n    \"page_num\": 1,\n    \"page_type\": \"cover\",\n    \"cn_title\": \"文献精读汇报：<中文论文标题>\",\n    \"en_title\": \"<English Paper Title>\",\n    \"subtitle\": \"作者 et al., 期刊, 年份\",\n    \"presenter\": \"汇报人：研究生组会汇报\",\n    \"date\": \"2026年7月29日\",\n    \"notes\": \"今天汇报的文献是...\"\n  },\n  {\n    \"page_num\": 2,\n    \"page_type\": \"toc\",\n    \"title\": \"汇报提纲\",\n    \"sections\": [\"研究背景\", \"科学问题\", \"方法总览\", \"主要结果\", \"讨论与创新\", \"结论与展望\"],\n    \"notes\": \"本次汇报分为六个部分...\"\n  },\n  {\n    \"page_num\": 3,\n    \"page_type\": \"content\",\n    \"title\": \"研究背景\",\n    \"bullets\": [\"要点1\", \"要点2\", \"要点3\"],\n    \"highlights\": [{\"title\": \"知识缺口\", \"content\": \"...\"}],\n    \"notes\": \"首先介绍研究背景...\"\n  },\n  {\n    \"page_num\": 7,\n    \"page_type\": \"figure\",\n    \"title\": \"系统筛选结果\",\n    \"image_path\": \"figure_1.png\",\n    \"image_caption\": \"Figure 1: ...\",\n    \"bullets\": [],\n    \"notes\": \"请看这张图...\"\n  },\n  {\n    \"page_num\": 17,\n    \"page_type\": \"qa\",\n    \"title\": \"感谢聆听\",\n    \"key_message\": \"Q&A / 欢迎提问\",\n    \"notes\": \"以上就是本次汇报的全部内容...\"\n  }\n]\n```\n\n**page_type 取值**：\n\n| page_type | 用途 | 必需字段 | 可选字段 |\n|---|---|---|---|\n| `cover` | 封面页 | `cn_title`或`title`, `subtitle` | `en_title`, `presenter`, `date`, `notes` |\n| `toc` | 目录页 | `title`, `sections`(数组) | `notes` |\n| `section` | 章节分隔页 | `title` | `notes` |\n| `content` | 内容页 | `title`, `bullets`(数组) | `highlights`, `notes` |\n| `figure` | 配图页 | `title`, `image_path` | `image_caption`, `bullets`, `notes` |\n| `model` | 工作模型页 | `title`, `image_path` | `image_caption`, `notes` |\n| `conclusion` | 结论页 | `title`, `key_message` | `bullets`, `notes` |\n| `qa` | 致谢页 | `title` | `key_message`, `notes` |\n\n##### Step 2.5 — 验证 slides.json（跨环境一致性检查）\n\n生成 slides.json 后，**必须**运行验证脚本，确保符合 R1-R7 硬性规则：\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/validate_slides_json.py <work_dir>/slides.json \\\n  --manifest <work_dir>/image_manifest_filtered.json\n```\n\n退出码 0=通过，1=有错误。**有错误时必须修改 slides.json 后重新验证**，直到全部通过。\n`--json` 模式可获取机器可读报告，方便 AI 自动解析并修复。\n\n##### Step 3 — 执行 gen_pptx.py 生成 PPTX\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/gen_pptx.py \\\n  --input <work_dir>/slides.json \\\n  --images-dir <work_dir>/<stem>_files/ \\\n  --output <work_dir>/output.pptx \\\n  --theme ref\n```\n\n**参数说明**：\n- `--input`：slides.json 路径\n- `--images-dir`：配图文件所在目录\n- `--output`：输出 PPTX 路径\n- `--theme`：**默认 `ref`**（深蓝导航栏 + 白色直角卡片 + 海军蓝标题 + 中英文对照封面，对齐参考模板风格）。可选 `academic` / `minimal` / `trae` 通用风格，向后兼容；跨环境一致性建议统一用 `ref`。\n\n> **PDF 配图黑底自动修复**：部分 PDF 使用 `/ImageMask` 模板蒙版（1-bit 线稿/工作模型图），被 PyMuPDF 提取后会出现\"黑底白线\"。`parse_pdf.py` 已内置反色检测（`fix_inverted_image`），基于颜色空间元数据（colorspace=0 且 bpc=1 判定为蒙版）自动反色为白底，真实暗背景图（如荧光显微图，RGB 模式）不会被误伤。如需关闭该行为，将 `PIL_AVAILABLE` 强制为 False 即可。\n\n**脚本行为**：\n- 读取 slides.json，逐页生成 python-pptx 原生 DrawingML 对象\n- 每页包含：顶部装饰条 + 标题栏 + 内容区 + 底部页码\n- 配图以 `preserveAspectRatio` 方式完整嵌入，不裁剪\n- speaker notes 写入每页备注栏\n- 总输出约 300-500 个原生可编辑对象\n\n---\n\n### S4 — 演讲稿生成\n\n- **输入**：slides.json + outline.md + `<stem>.md`\n- **输出**：`<work_dir>/output_speech.docx`（完整口头演讲文字稿）\n- **脚本**：`scripts/gen_speech_docx.py`\n- **门禁**：✅ DOCX 文件存在且包含开场白 + 全部页面讲解 + 结束语\n\n**演讲稿与 speaker notes 的区别**：\n\n| 维度 | Speaker Notes | 演讲稿 |\n|---|---|---|\n| 定位 | PPT 备注栏提示 | 独立完整文稿 |\n| 粒度 | 每页几句要点 | 连贯叙事，含开场白/过渡语/结尾 |\n| 长度 | 每页 50-100 字 | 全文 3000-6000 字（20 分钟演讲） |\n| 用途 | 演讲时瞄一眼 | 逐字练习/留存参考 |\n\n**Step 1 — AI 生成 speech_data.json**\n\nAI 基于 slides.json 的 notes + outline.md + 文献解析 MD，生成结构化演讲稿内容：\n\n```json\n{\n  \"title\": \"文献汇报演讲稿：<论文标题>\",\n  \"meta\": {\n    \"literature\": \"作者, 年份, 期刊\",\n    \"scenario\": \"研究生组会\",\n    \"duration_minutes\": 20,\n    \"date\": \"2026-07-29\"\n  },\n  \"opening\": \"各位老师同学好，今天汇报的文献是...\",\n  \"sections\": [\n    {\n      \"part_title\": \"第一部分：研究背景\",\n      \"pages\": [\n        {\n          \"page_num\": \"P03\",\n          \"page_title\": \"研究背景\",\n          \"duration_minutes\": 1.5,\n          \"content\": \"该页的完整口头讲解文字，200-400字...\"\n        }\n      ]\n    }\n  ],\n  \"closing\": \"以上就是本次汇报的全部内容，感谢大家的聆听...\",\n  \"duration_table\": [\n    {\"part\": \"开场白\", \"pages\": \"-\", \"duration\": \"1分钟\"},\n    {\"part\": \"第一部分\", \"pages\": \"P03-P04\", \"duration\": \"3分钟\"}\n  ],\n  \"tips\": [\"时长分配建议\", \"重点强调提示\", \"可能被提问的预判\"]\n}\n```\n\n**生成规则**：\n1. **口语化**：用\"大家看\"\"请注意\"\"这里关键的一点是\"等口语引导词\n2. **连贯性**：每页讲解之间用过渡语衔接\n3. **数据口头化**：把 PPT 上的数字转化为口头表述\n4. **配图引导**：配图页必须包含\"请大家看这张图\"类引导语\n5. **时长标注**：每部分标注预计时长，总时长与汇报场景匹配\n6. **文献对应**：关键论点后标注文献位置\n7. **问题预判**：预判 2-3 个可能被提问的问题\n\n**Step 2 — 执行 gen_speech_docx.py 生成 DOCX**\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/gen_speech_docx.py \\\n  --input <work_dir>/speech_data.json \\\n  --output <work_dir>/output_speech.docx \\\n  --verbose\n```\n\n**DOCX 排版规范**：\n- CJK 字体：Microsoft YaHei（通过 XML eastAsia 属性设置）\n- 标题层级：H1（文档标题）、H2（部分标题）、H3（页面标题）\n- 正文段落：12pt，1.5 倍行距\n- 时长分配表：三列表格（部分 / 页面 / 预计时长），表头浅绿底色 `#EDF5E8`\n- 页脚：居中页码（`第 N 页`）\n- 页面尺寸：A4，1 英寸边距\n\n---\n\n### S5 — 交付与质检\n\n- **输入**：PPTX + image_manifest.json + outline.md\n- **输出**：交付清单 + 质检报告\n- **脚本**：`scripts/validate_pptx.py`\n- **门禁**：✅ 三项质检通过\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/validate_pptx.py <work_dir>/output.pptx \\\n  --manifest <work_dir>/<stem>_files/image_manifest.json \\\n  --outline <work_dir>/outline.md\n```\n\n**三项质检**：\n\n1. **可编辑性核验**：用 python-pptx 检查每页 shape 类型分布（textbox / autoshape / picture 计数），确认非整页图片\n2. **图片原样核验**：提取 `ppt/media/` 文件计算 sha256，与 `image_manifest.json` 的 sha256 比对\n3. **脉络一致性核验**：提取每页标题文本，与 `outline.md` 页面标题序列比对\n\n输出 JSON 报告，退出码 0=全部通过，1=有未通过项。\n\n---\n\n## 关键约束\n\n### 1. 文献配图原样不改（三层保证）\n\n| 层 | 保证机制 | 实现位置 |\n|---|---|---|\n| 提取层 | `parse_pdf.py` 直接写 image bytes，不重采样 | `scripts/parse_pdf.py` |\n| 嵌入层 | `gen_pptx.py` 用 `preserveAspectRatio` 完整显示，不裁剪 | `scripts/gen_pptx.py` |\n| 验证层 | `validate_pptx.py` 比对 sha256 确保图片未被修改 | `scripts/validate_pptx.py` |\n\n### 2. 可编辑 PPTX 保证\n\n`gen_pptx.py` 用 python-pptx 直接构建 DrawingML 原生对象：文本→text frame、形状→autoshape、图片→picture，**非整页图片插入**。每页 15-35 个原生形状，总计 300-500 个。所有文本框可改文字、形状可改属性、图片可替换。\n\n### 3. 文献配图选取规则\n\n- 优先选取带 `Figure N` caption 的配图\n- 每页最多 1–2 张配图，避免信息过载\n- 装饰性小图 / logo 不纳入\n- 详细规则见 `references/image-selection.md`\n\n### 4. 跨环境一致性保证（硬性规则）\n\n为确保同一份文献在不同 AI 环境（TRAE / WorkBuddy / Cursor / Qwen 等）中生成结构一致的 PPT，AI 在 S2/S3 生成 slides.json 时**必须**遵守以下规则。违反任一规则将导致不同环境输出不一致。\n\n#### R1 — 固定页面结构（17页制）\n\n所有文献统一生成 **17 页**，page_type 序列固定为：\n\n```\ncover(1) → toc(2) → section(3) → content(4) → content(5) →\nsection(6) → figure(7~13) → section(14) → content(15) →\nconclusion(16) → qa(17)\n```\n\n- 结果图不足 7 张时：figure 页数 = 实际配图数（7~13 页区间弹性），后续页码顺延\n- 结果图超过 7 张时：合并次要图，最多 7 个 figure 页\n- **不允许**省略 section 分隔页；**不允许**在 section 前插入 content 页\n\n#### R2 — 封面页固定格式\n\n封面页**必须**同时包含 `cn_title` 和 `en_title`，**禁止**仅使用 `title`：\n\n```json\n{\n  \"page_type\": \"cover\",\n  \"cn_title\": \"文献中文标题（完整翻译，不缩写）\",\n  \"en_title\": \"文献英文原标题（照抄原文）\",\n  \"subtitle\": \"第一作者 et al., 期刊名, 年份\"\n}\n```\n\n#### R3 — 图片路径必须使用 manifest 文件名\n\n`image_path` **必须**直接使用 `image_manifest_filtered.json` 中该图片的 `filename` 字段值（不含目录前缀）。\n\n```\n正确: \"image_path\": \"JPGR_p6_0.jpeg\"\n错误: \"image_path\": \"figure_1.png\"\n错误: \"image_path\": \"/abs/path/to/JPGR_p6_0.jpeg\"\n```\n\n**禁止**自行重命名、使用索引偏移、或编造文件名。\n\n#### R4 — 一图一页\n\n每个 figure 页**只放一张**配图。**禁止**将 Figure 2 和 Figure 3 合并到同一页。如果文献有 9 张图，则生成 7 个 figure 页（合并最次要的 2 张），而非 5 个 figure 页（每页放 2 张）。\n\n#### R5 — 目录固定四段式\n\ntoc 页的 `sections` 固定为四段，**不得**自行增减：\n\n```json\n\"sections\": [\"研究背景与科学问题\", \"材料与方法\", \"主要结果\", \"讨论与结论\"]\n```\n\n#### R6 — bullets 数量与长度\n\n| 页面类型 | bullets 数量 | 每条最大长度 |\n|---|---|---|\n| content | 3-4 条 | 40 个中文字符 |\n| figure | 2-3 条 | 40 个中文字符 |\n| conclusion | 3-5 条 | 35 个中文字符 |\n\n#### R7 — content/figure 页必填字段\n\ncontent 页**必须**包含 `sub_title` 和 `conclusion` 字段；figure 页**必须**包含 `image_caption` 和 `sub_title` 字段。这些字段直接影响 PPT 美观度，缺失会导致版面空洞。\n\n---\n\n## 输出契约\n\n| 产物 | 路径 | 说明 |\n|---|---|---|\n| 可编辑 PPTX | `<work_dir>/output.pptx` | 主交付物 |\n| 演讲稿 | `<work_dir>/output_speech.docx` | 完整口头演讲文字稿（DOCX） |\n| 质检报告 | 终端输出 / `--json` 可导出 | 三项核验结果 |\n| 组会大纲 | `<work_dir>/outline.md` | 脉络文档 |\n| 文献解析 | `<work_dir>/<stem>.md` + `<stem>_files/` | 素材留档 |\n\n---\n\n## 脚本清单\n\n| 脚本 | 功能 | 依赖 |\n|---|---|---|\n| `install_check.py` | 环境自检 | 无 |\n| `parse_pdf.py` | PDF → 结构化 MD + 配图提取 | PyMuPDF |\n| `filter_images.py` | 配图筛选/去重/排序 | 无 |\n| `render_formula.py` | LaTeX 公式 → PNG | matplotlib |\n| `gen_pptx.py` | slides.json → 可编辑 PPTX | python-pptx |\n| `gen_speech_docx.py` | speech_data.json → 演讲稿 DOCX | python-docx |\n| `validate_slides_json.py` | slides.json 跨环境一致性验证 | 无 |\n| `validate_pptx.py` | PPTX 三项质检 | python-pptx |\n\n---\n\n## 跨环境兼容性\n\n本 skill v4.0 为**自包含架构**，在所有有文件系统的 AI 环境中均可使用：\n\n| 环境 | 兼容性 | 说明 |\n|---|---|---|\n| TRAE (SOLO CN / Cloud) | ✅ 完全兼容 | 所有脚本均可在 TRAE 中运行 |\n| Claude Code | ✅ 完全兼容 | 仅需 pip install 5 个包 |\n| Cursor | ✅ 完全兼容 | 同上 |\n| WorkBuddy | ✅ 完全兼容 | 同上 |\n| Qwen | ✅ 完全兼容 | 同上 |\n| 纯对话 Chatbot | ❌ 不支持 | 需要文件系统 |\n\n**安装命令**：\n```bash\npip install python-pptx PyMuPDF python-docx matplotlib Pillow\n```\n\n无 ppt-master 依赖、无 Node.js 依赖、无任何外部 skill 依赖。\n\nFile v0.1.0:README.md\n\n# paper-report-ppt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![TRAE Skill](https://img.shields.io/badge/TRAE-Skill-green.svg)]()\n[![Python 3.8+](https://img.shields.io/badge/Python-3.8+-blue.svg)]()\n\n> 上传一篇文献 PDF，自动生成**可编辑**的组会汇报 PPT。论文中的实验图表原样保留，同步生成配套的演讲稿 Word 文档。**自包含架构，无外部 skill 依赖，所有 AI 桌面应用通用。**\n\n---\n\n## 效果预览\n\n以下是用真实文献生成的组会汇报 PPT 截图：\n\n| 封面页 | 结果页（实验图原样嵌入） | 工作模型页 |\n|:------:|:------:|:------:|\n| [![封面页](assets/screenshots/slide_01.png)](assets/screenshots/slide_01.png) | [![结果页](assets/screenshots/slide_07.png)](assets/screenshots/slide_07.png) | [![工作模型](assets/screenshots/slide_13.png)](assets/screenshots/slide_13.png) |\n\n**17 页完整 PPT，7 张实验图原样嵌入，三重质检全部通过。** [查看完整案例](#真实案例)\n\n---\n\n## 30 秒开始\n\n```bash\ngit clone https://github.com/mlj-1212/paper-report-ppt.git\ncd paper-report-ppt\npython install.py\n```\n\n`install.py` 会自动安装全部依赖并完成环境自检，看到 `🎉 安装完成！` 即可使用。\n\n> **AI 环境用户**：也可以直接告诉 AI「安装 https://github.com/mlj-1212/paper-report-ppt 这个 skill」，AI 会自动完成克隆和安装。\n>\n> **仓库体积仅 ~220 KB**（不含截图） — 完全自包含，无外部 skill 依赖，无 Node.js 依赖。\n\n---\n\n## 用法：两步生成 PPT\n\n### 第 1 步：上传 PDF\n\n把你的文献 PDF 发给 AI，说一句\"生成组会汇报 PPT\"就行。AI 会自动处理语言识别、页数、结构、图表嵌入、演讲稿生成等所有细节。\n\n### 第 2 步：确认大纲，等待生成\n\nAI 会先给你一个汇报大纲（类似目录），你回复\"确认\"后，AI 开始生成 PPT。处理完成后，你会收到：\n\n- **一份 PPTX 文件** — 可编辑的组会汇报 PPT，论文图表原样保留\n- **一份 DOCX 文件** — 完整的演讲稿，约 3000–6000 字\n\n---\n\n## 进阶用法\n\n如果你想自定义汇报风格，可以在上传 PDF 时附带说明：\n\n| 你想做什么 | 告诉 AI |\n|---|---|\n| 侧重创新点 | \"侧重展示创新点和核心发现，控制在 10 页以内\" |\n| 英文汇报 | \"用英文生成汇报\" |\n| 开题/答辩场景 | \"用于开题汇报，约 20 页，重点展示研究背景和方法对比\" |\n| 切换视觉主题 | \"使用 ref 主题风格（深蓝顶部条 + 中英文对照封面）\" |\n\n---\n\n## 功能特性\n\n| 特性 | 说明 |\n|------|------|\n| **脉络模板预设** | 4 种汇报模板：IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比，一键切换 |\n| **配图智能筛选** | 基于 caption 语义自动筛选和排序配图，过滤装饰图，sha256 去重 |\n| **公式保真渲染** | 检测文献中 LaTeX 数学公式，复杂公式渲染为高清 PNG 嵌入 PPT，简单公式保留可编辑文本 |\n| **文献脉络还原** | 按引言-方法-结果-讨论的结构自动组织汇报内容 |\n| **配图原样保留** | 实验图、数据图从 PDF 原样提取，SHA256 校验，不做裁剪 |\n| **多视觉主题** | 内置 academic / minimal / trae / ref 四种主题，自由设计路径生成专业学术风格 |\n| **同步演讲稿** | 生成完整口头演讲文字稿（DOCX），含开场白、逐页讲解、时长分配、问题预判 |\n| **完全可编辑** | 输出为原生 PPTX，文本、形状、图片均可修改 |\n| **自动质检** | 可编辑性 + 图片完整性 + 脉络一致性三重核验 |\n| **跨平台通用** | 纯 Python 实现，任何有文件系统的 AI 环境均可使用 |\n\n---\n\n## 适用场景\n\n- 研究生组会文献汇报（Journal Club）\n- 开题 / 中期 / 答辩演示\n- 学术会议快速准备\n\n---\n\n## 真实案例\n\n以下是用本工具处理一篇真实植物病理学文献的完整测试结果。\n\n### 文献信息\n\n| 项目 | 内容 |\n|------|------|\n| 论文 | *RSV infection induces upregulation of deubiquitinase UBP16 to stabilize SHMT1 for promoting viral infection* |\n| 期刊 | **Stress Biology**, 2025, 5:62 |\n| 作者 | Wang et al. |\n| PDF | 10 页，含 7 张配图（Figure 1–7） |\n| 汇报语言 | 中文 |\n\n### 生成结果\n\n| 指标 | 数值 |\n|------|------|\n| 总页数 | **17 页**（IMRaD 均衡模式） |\n| 配图嵌入 | 7/7 原样嵌入（SHA256 全匹配） |\n| PPTX 大小 | 1.15 MB |\n| 演讲稿字数 | ~3,500 字（约 20 分钟） |\n\n### 幻灯片结构\n\n```\nP01  封面          — 标题、作者、期刊、汇报人\nP02  目录          — 六大板块导航\nP03  文献选择依据   — 为什么选这篇\nP04  研究背景      — RSV 与植物泛素化防御\nP05  科学问题      — 核心假说与研究策略\nP06  方法总览      — 多层次验证体系\nP07  系统筛选      — NbUBP16 响应 RSV 感染 [Figure 1]\nP08  蛋白互作      — NbUBP16.1 与 NbSHMT1 互作 [Figure 2]\nP09  酶活验证      — 去泛素化稳定 NbSHMT1 [Figure 3]\nP10  功能分析      — OE-NbSHMT1 抑制防御促进感染 [Figure 4]\nP11  遗传验证      — NbUBP16.1 正向调控 RSV 感染 [Figure 5]\nP12  ROS 检测      — NbUBP16.1 抑制 ROS 积累 [Figure 6]\nP13  工作模型      — 病毒劫持宿主去泛素化通路 [Figure 7]\nP14  讨论与创新点\nP15  局限性与展望\nP16  结论\nP17  Q&A / 致谢\n```\n\n### 质检报告\n\n| 检查项 | 结果 | 详情 |\n|--------|------|------|\n| **可编辑性** | ✅ PASS | 原生对象（文本框 + 自选图形 + 图片），零整页图片 |\n| **图片完整性** | ✅ PASS | 7/7 媒体文件 SHA256 与源文件完全匹配，图片原样未改 |\n| **脉络一致性** | ✅ PASS | 17 页幻灯片与大纲一一对应，IMRaD 4/4 板块全部覆盖 |\n\n### 输出文件\n\n| 文件 | 格式 | 大小 |\n|------|------|------|\n| RSV_UBP16_组会汇报.pptx | PPTX | 1.15 MB |\n| RSV_UBP16_组会汇报演讲稿.docx | DOCX | 14.6 KB |\n\n### 演讲稿内容摘录\n\n> 各位老师、同学们好！今天我汇报的文献是 2025 年发表在 Stress Biology 上的研究，题目是\"RSV 感染诱导去泛素化酶 UBP16 上调，稳定 SHMT1 抑制 ROS 积累促进病毒感染\"。这项研究首次揭示了植物去泛素化酶调控病毒感染的分子机制，提出了\"病毒劫持宿主去泛素化通路\"的新范式……\n\n演讲稿包含：开场白 → 五个部分逐页讲解 → 结束语 → 时长分配表 → 问题预判（3 个 Q&A）。\n\n---\n\n## 平台支持\n\n| 平台 | 支持状态 | 说明 |\n|------|---------|------|\n| **TRAE** | ✅ 完全兼容 | 所有脚本均可在 TRAE 中运行 |\n| **WorkBuddy** | ✅ 完全兼容 | 仅需 pip install 5 个包 |\n| **Claude Code** | ✅ 完全兼容 | 克隆到 skills 目录即可 |\n| **Cursor** | ✅ 完全兼容 | 同上 |\n| **Qwen** | ✅ 完全兼容 | 同上 |\n| **普通 Chatbot** | ❌ 不支持 | 需要文件系统支持 |\n\n> **所有平台使用同一套脚本，同一套流程**，无路径分支，无环境差异。\n\n---\n\n## 工作流程\n\n```\nS0  确认需求\n     ↓ 你告诉 AI：页数、语言、是否需要演讲稿\nS1  解析文献\n     ↓ parse_pdf.py 读取 PDF，提取文字内容和实验图表\nS2  生成大纲\n     ↓ AI 给出汇报目录，你回复\"确认\"或调整\n     ↓ filter_images.py 筛选配图\nS3  生成 PPT\n     ↓ AI 生成 slides.json → gen_pptx.py 自动构建 PPTX\n     ↓ 配图原样嵌入，speaker notes 写入备注栏\nS4  演讲稿生成\n     ↓ AI 生成 speech_data.json → gen_speech_docx.py 生成 DOCX\nS5  交付质检\n     ↓ validate_pptx.py 自动检查：可编辑性 / 图片完整性 / 脉络一致性\n```\n\n---\n\n## 依赖\n\n### Python 包\n\n```bash\npip install python-pptx PyMuPDF python-docx Pillow matplotlib\n```\n\n| 包 | 用途 | 必需 |\n|---|---|---|\n| `python-pptx` | PPTX 生成 | ✅ 必需 |\n| `PyMuPDF` | PDF 解析 | ✅ 必需 |\n| `python-docx` | 演讲稿 DOCX 生成 | ✅ 必需 |\n| `Pillow` | 图片处理（尺寸读取/格式转换） | ✅ 必需 |\n| `matplotlib` | 公式渲染 | ⚠️ 可选 |\n\n### 系统要求\n\n- Python 3.8+\n- 无 Node.js 依赖\n- 无外部 skill 依赖\n\n### 脚本清单\n\n| 脚本 | 功能 |\n|---|---|\n| `install.py` | 一键安装（自动安装依赖 + 环境自检） |\n| `scripts/install_check.py` | 环境自检 |\n| `scripts/parse_pdf.py` | PDF → 结构化 MD + 配图提取 |\n| `scripts/filter_images.py` | 配图筛选/去重/排序 |\n| `scripts/render_formula.py` | LaTeX 公式 → PNG |\n| `scripts/gen_pptx.py` | slides.json → 可编辑 PPTX |\n| `scripts/gen_speech_docx.py` | speech_data.json → 演讲稿 DOCX |\n| `scripts/validate_pptx.py` | PPTX 三项质检 |\n\n---\n\n## 输出产物\n\n| 产物 | 格式 | 说明 |\n|------|------|------|\n| 可编辑 PPTX | `.pptx` | 主交付物，12–18 页原生可编辑幻灯片 |\n| 演讲稿 | `.docx` | 完整口头演讲文字稿，3000–6000 字 |\n| 质检报告 | 终端输出 / JSON | 可编辑性 / 图片完整性 / 脉络一致性 |\n| 组会大纲 | `.md` | 脉络文档，含每页对应文献章节 |\n| 文献解析 | `.md` + 配图 | 素材留档 |\n\n---\n\n## FAQ\n\n**Q：如何安装？**\nA：克隆仓库后运行 `python install.py` 即可，脚本会自动安装全部依赖并完成自检。\n\n**Q：需要安装 ppt-master 或 Node.js 吗？**\nA：都不需要。v4.0 是完全自包含的，所有核心能力通过内置 Python 脚本实现，演讲稿生成使用 python-docx（Python 库）。\n\n**Q：PDF 中的矢量图（流程图/图表）能保留吗？**\nA：位图原样嵌入；矢量图默认不提取，可在第一步选择栅格化（180 DPI）保留。\n\n**Q：支持自定义 PPT 模板吗？**\nA：v4.0 使用自由设计路径生成 PPT，内置 academic / minimal / trae / ref 四种视觉主题。ref 主题提供深蓝顶部条 + 中英文对照封面的正式学术风格，推荐用于组会汇报。\n\n**Q：演讲稿和 PPT 备注有什么区别？**\nA：PPT 备注是每页 50–100 字的简短提示；演讲稿是独立 Word 文档（3000–6000 字），含开场白、过渡语、结束语和问题预判。\n\n**Q：支持英文文献吗？**\nA：支持。语言默认跟随文献语言，英文文献生成英文汇报。\n\n**Q：可以一次处理多篇文献吗？**\nA：当前版本支持单篇文献。多文献综述模式在优化方向中规划。\n\n---\n\n## 优化方向\n\n- [ ] 多文献综述模式（2–5 篇文献对比）\n- [x] 配图智能筛选与排序（基于 caption 语义，含 filter_images.py 脚本）\n- [x] 公式保真（LaTeX 渲染为 PNG 嵌入，含 render_formula.py 脚本）\n- [x] 组会脉络模板预设（IMRaD / 问题驱动 / 创新点驱动 / 综述对比）\n- [x] 演讲稿同步生成（python-docx，含 gen_speech_docx.py 脚本）\n- [x] PPTX 自动质检（可编辑性 / 图片完整性 / 脉络一致性，含 validate_pptx.py 脚本）\n- [ ] 增量更新（文献更新后只重新生成变化页面）\n\n---\n\n## License\n\n[MIT](LICENSE) © 2026 mlj-1212\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn716er85s8hpr2aj2tw6qg4h18baz6a\",\n  \"slug\": \"paper-report-ppt\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1785846372609\n}\n\nFile v0.1.0:references/example-slides.json\n\n[\n  {\n    \"page_num\": 1,\n    \"page_type\": \"cover\",\n    \"cn_title\": \"泛素特异性蛋白酶16通过调控Na+/H+逆向转运活性调节拟南芥的耐盐性\",\n    \"en_title\": \"UBIQUITIN-SPECIFIC PROTEASE16 Modulates Salt Tolerance in Arabidopsis\",\n    \"subtitle\": \"Zhou et al., The Plant Cell, 2012, Vol. 24: 5106-5122\",\n    \"presenter\": \"汇报人：研究生组会汇报\",\n    \"date\": \"2026年7月29日\",\n    \"notes\": \"今天汇报的文献是2012年发表在The Plant Cell上的文章，主要报道了去泛素化酶UBP16在拟南芥耐盐调控中的功能机制。\"\n  },\n  {\n    \"page_num\": 2,\n    \"page_type\": \"toc\",\n    \"title\": \"汇报提纲\",\n    \"sections\": [\"研究背景与科学问题\", \"材料与方法\", \"主要结果\", \"讨论与结论\"],\n    \"notes\": \"本次汇报分为四个部分：首先介绍研究背景和科学问题，然后简要介绍材料与方法，重点展示主要结果，最后进行讨论和总结。\"\n  },\n  {\n    \"page_num\": 3,\n    \"page_type\": \"section\",\n    \"title\": \"研究背景与科学问题\",\n    \"section_no\": 1,\n    \"notes\": \"首先进入第一部分，研究背景与科学问题。\"\n  },\n  {\n    \"page_num\": 4,\n    \"page_type\": \"content\",\n    \"title\": \"研究背景：盐胁迫与植物响应\",\n    \"sub_title\": \"盐胁迫信号通路与Na+稳态调控\",\n    \"kicker\": \"背景介绍\",\n    \"bullets\": [\n      \"土壤盐渍化是全球农业主要非生物胁迫之一，导致作物减产\",\n      \"植物通过SOS信号通路调控Na+外排，维持离子稳态\",\n      \"泛素化修饰在胁迫信号传导中发挥关键调控作用\",\n      \"去泛素化酶（DUBs）是否参与耐盐调控尚不清楚\"\n    ],\n    \"conclusion\": \"去泛素化酶在植物耐盐调控中的功能是本文要回答的核心问题\",\n    \"notes\": \"盐胁迫是影响植物生长的重要非生物胁迫。植物主要通过SOS通路调控Na+外排来维持离子稳态。泛素化修饰在胁迫信号传导中有重要作用，但去泛素化酶是否参与耐盐调控还不清楚，这就是本文的切入点。\"\n  },\n  {\n    \"page_num\": 5,\n    \"page_type\": \"content\",\n    \"title\": \"科学问题与研究策略\",\n    \"sub_title\": \"UBP16的发现与功能假说\",\n    \"kicker\": \"科学问题\",\n    \"bullets\": [\n      \"前期筛选发现ubp16突变体对盐胁迫高度敏感\",\n      \"UBP16是否通过去泛素化调控SOS1蛋白稳定性？\",\n      \"研究策略：遗传学+生化+生理学三管齐下\",\n      \"预期：UBP16去泛素化稳定SOS1，增强Na+外排能力\"\n    ],\n    \"conclusion\": \"核心假说：UBP16通过去泛素化SOS1维持其蛋白稳定性，从而调控耐盐性\",\n    \"notes\": \"作者在前期筛选中发现ubp16突变体对盐胁迫高度敏感，由此提出科学问题：UBP16是否通过去泛素化调控SOS1蛋白稳定性？研究采用了遗传学、生化和生理学三种手段相结合的策略。\"\n  },\n  {\n    \"page_num\": 6,\n    \"page_type\": \"section\",\n    \"title\": \"主要结果\",\n    \"section_no\": 2,\n    \"notes\": \"接下来进入第二部分，主要结果展示。\"\n  },\n  {\n    \"page_num\": 7,\n    \"page_type\": \"figure\",\n    \"title\": \"图1 ubp16突变体盐敏感表型\",\n    \"sub_title\": \"UBP16缺失导致耐盐性显著下降\",\n    \"kicker\": \"遗传学验证\",\n    \"bullets\": [\n      \"ubp16突变体在150mM NaCl处理下根长显著缩短\",\n      \"回补株系恢复了野生型耐盐表型\"\n    ],\n    \"conclusion\": \"UBP16正调控拟南芥耐盐性\",\n    \"image_path\": \"JPGR_p6_0.jpeg\",\n    \"image_caption\": \"Fig. 1 ubp16 mutant shows salt-hypersensitive phenotype.\",\n    \"notes\": \"请看这张图，左 panel 是野生型、突变体和回补株系在正常和盐胁迫条件下的根长比较。可以看到ubp16突变体在盐处理下根长显著缩短，而回补株系恢复了正常表型，说明UBP16正调控耐盐性。\"\n  },\n  {\n    \"page_num\": 8,\n    \"page_type\": \"figure\",\n    \"title\": \"图2 UBP16蛋白结构域分析\",\n    \"sub_title\": \"UBP16含有典型去泛素化酶催化结构域\",\n    \"kicker\": \"结构分析\",\n    \"bullets\": [\n      \"UBP16含C19泛素特异性蛋白酶催化结构域\",\n      \"催化活性关键位点Cys和His保守\"\n    ],\n    \"conclusion\": \"UBP16是典型的去泛素化酶家族成员\",\n    \"image_path\": \"JPGR_p7_1.jpeg\",\n    \"image_caption\": \"Fig. 2 Domain architecture of UBP16.\",\n    \"notes\": \"这张图展示了UBP16的蛋白结构域，可以看到它含有典型的C19去泛素化酶催化结构域，催化活性关键位点Cys和His都很保守，说明它是典型的去泛素化酶。\"\n  },\n  {\n    \"page_num\": 9,\n    \"page_type\": \"figure\",\n    \"title\": \"图3 UBP16与SOS1蛋白互作验证\",\n    \"sub_title\": \"酵母双杂交与Co-IP证实互作\",\n    \"kicker\": \"互作验证\",\n    \"bullets\": [\n      \"酵母双杂交显示UBP16与SOS1 C端互作\",\n      \"Co-IP实验在体内证实两者形成复合物\"\n    ],\n    \"conclusion\": \"UBP16与SOS1存在物理互作\",\n    \"image_path\": \"JPGR_p7_2.jpeg\",\n    \"image_caption\": \"Fig. 3 UBP16 interacts with SOS1 in yeast and in planta.\",\n    \"notes\": \"这张图通过酵母双杂交和免疫共沉淀实验证实了UBP16与SOS1的物理互作，为后续功能验证奠定了基础。\"\n  },\n  {\n    \"page_num\": 10,\n    \"page_type\": \"figure\",\n    \"title\": \"图4 UBP16去泛素化SOS1\",\n    \"sub_title\": \"体外与体内去泛素化活性验证\",\n    \"kicker\": \"生化验证\",\n    \"bullets\": [\n      \"体外去泛素化实验：野生型UBP16去除SOS1上的泛素链\",\n      \"催化失活突变体（C→S）丧失去泛素化能力\"\n    ],\n    \"conclusion\": \"UBP16以酶活依赖方式去泛素化SOS1\",\n    \"image_path\": \"JPGR_p8_3.jpeg\",\n    \"image_caption\": \"Fig. 4 UBP16 deubiquitinates SOS1 in vitro and in vivo.\",\n    \"notes\": \"这张图是关键的生化证据。左panel是体外去泛素化实验，野生型UBP16能去除SOS1上的泛素链，而催化失活突变体不能，说明去泛素化依赖于酶活。\"\n  },\n  {\n    \"page_num\": 11,\n    \"page_type\": \"figure\",\n    \"title\": \"图5 UBP16调控SOS1蛋白稳定性\",\n    \"sub_title\": \"去泛素化抑制SOS1的26S蛋白酶体降解\",\n    \"kicker\": \"蛋白稳定性\",\n    \"bullets\": [\n      \"ubp16突变体中SOS1蛋白水平显著降低\",\n      \"MG132处理部分恢复突变体中SOS1蛋白量\"\n    ],\n    \"conclusion\": \"UBP16通过去泛素化阻止SOS1的蛋白酶体降解\",\n    \"image_path\": \"JPGR_p9_4.jpeg\",\n    \"image_caption\": \"Fig. 5 UBP16 stabilizes SOS1 protein through deubiquitination.\",\n    \"notes\": \"这张图展示了UBP16对SOS1蛋白稳定性的调控。在ubp16突变体中SOS1蛋白水平显著降低，而蛋白酶体抑制剂MG132可以部分恢复，说明UBP16通过抑制泛素-蛋白酶体途径来稳定SOS1。\"\n  },\n  {\n    \"page_num\": 12,\n    \"page_type\": \"figure\",\n    \"title\": \"图6 UBP16调控Na+/H+逆向转运活性\",\n    \"sub_title\": \"质膜Na+外排依赖于UBP16-SOS1模块\",\n    \"kicker\": \"生理验证\",\n    \"bullets\": [\n      \"ubp16突变体质膜Na+/H+逆向转运活性显著降低\",\n      \"SOS1蛋白量下降直接导致Na+外排能力减弱\"\n    ],\n    \"conclusion\": \"UBP16通过稳定SOS1维持Na+/H+逆向转运活性\",\n    \"image_path\": \"JPGR_p10_5.png\",\n    \"image_caption\": \"Fig. 6 UBP16 regulates Na+/H+ antiport activity.\",\n    \"notes\": \"这张图从生理层面验证了功能。通过测量质膜Na+/H+逆向转运活性，发现ubp16突变体中活性显著降低，这与SOS1蛋白量下降直接相关。\"\n  },\n  {\n    \"page_num\": 13,\n    \"page_type\": \"figure\",\n    \"title\": \"图7 UBP16-SOS1模块耐盐工作模型\",\n    \"sub_title\": \"盐胁迫下UBP16去泛素化稳定SOS1增强耐盐\",\n    \"kicker\": \"工作模型\",\n    \"bullets\": [\n      \"盐胁迫→UBP16被激活→去泛素化SOS1\",\n      \"SOS1蛋白稳定→Na+外排增强→耐盐性提高\"\n    ],\n    \"conclusion\": \"UBP16-SOS1模块是植物耐盐调控的新机制\",\n    \"image_path\": \"JPGR_p11_6.jpeg\",\n    \"image_caption\": \"Fig. 7 Working model of UBP16-SOS1 module in salt tolerance.\",\n    \"notes\": \"最后这张图是作者提出的工作模型。盐胁迫下UBP16被激活，去泛素化稳定SOS1蛋白，增强Na+外排能力，从而提高耐盐性。这是一个完整的信号通路模型。\"\n  },\n  {\n    \"page_num\": 14,\n    \"page_type\": \"section\",\n    \"title\": \"讨论与结论\",\n    \"section_no\": 3,\n    \"notes\": \"最后进入第三部分，讨论与结论。\"\n  },\n  {\n    \"page_num\": 15,\n    \"page_type\": \"content\",\n    \"title\": \"讨论与创新点总结\",\n    \"sub_title\": \"去泛素化调控耐盐的新视角\",\n    \"kicker\": \"讨论总结\",\n    \"bullets\": [\n      \"首次揭示去泛素化酶在植物耐盐调控中的功能\",\n      \"发现UBP16-SOS1模块的翻译后调控新机制\",\n      \"为作物耐盐改良提供潜在靶点\"\n    ],\n    \"conclusion\": \"本文揭示了去泛素化调控Na+转运蛋白稳定性的新机制，为植物耐盐育种提供新思路\",\n    \"notes\": \"本文的创新点在于首次揭示了去泛素化酶在植物耐盐调控中的功能，发现了UBP16-SOS1模块的翻译后调控新机制，为作物耐盐改良提供了潜在靶点。\"\n  },\n  {\n    \"page_num\": 16,\n    \"page_type\": \"conclusion\",\n    \"title\": \"结论\",\n    \"key_message\": \"UBP16通过去泛素化稳定SOS1蛋白，增强Na+/H+逆向转运活性，从而调控拟南芥耐盐性\",\n    \"bullets\": [\n      \"ubp16突变体盐敏感，回补恢复耐盐\",\n      \"UBP16与SOS1互作并去泛素化稳定SOS1\",\n      \"SOS1稳定性增强促进Na+外排\"\n    ],\n    \"notes\": \"总结一下，本文的核心发现是：UBP16通过去泛素化稳定SOS1蛋白，增强Na+/H+逆向转运活性，从而调控拟南芥耐盐性。\"\n  },\n  {\n    \"page_num\": 17,\n    \"page_type\": \"qa\",\n    \"title\": \"感谢与讨论\",\n    \"key_message\": \"Q & A · 欢迎提问\",\n    \"bullets\": [\"感谢各位老师同学的聆听\"],\n    \"notes\": \"以上就是本次汇报的全部内容，感谢大家的聆听，欢迎提问和讨论。\"\n  }\n]\n\nFile v0.1.0:references/formula-rendering.md\n\n# 公式保真渲染规则\n\n## 概述\n\n检测文献中的关键数学公式（LaTeX 风格），通过 LaTeX 渲染为高清 PNG 嵌入 PPTX，保证公式可读性。\n\n---\n\n## 公式检测\n\n### 1. 检测范围\n\n在 S1 文献解析时，从 `<stem>.md` 中检测以下 LaTeX 公式标记：\n\n| 标记形式 | 示例 | 处理方式 |\n|----------|------|----------|\n| `$...$` (inline) | `$E = mc^2$` | 渲染为 PNG，inline 嵌入 |\n| `$$...$$` (display) | `$$\\int_0^1 f(x)dx$$` | 渲染为 PNG，单独占一行 |\n| `\\(...\\)` (inline) | `\\(x^2 + y^2 = r^2\\)` | 渲染为 PNG，inline 嵌入 |\n| `\\[...\\]` (display) | `\\[\\sum_{i=1}^n x_i\\]` | 渲染为 PNG，单独占一行 |\n\n### 2. 检测策略\n\n- 在 `<stem>.md` 中搜索所有 LaTeX 数学标记\n- 生成公式清单，每公式记录：页码、上下文、复杂度评估\n- 判断规则：\n  - **简单公式**（单行、无矩阵、无嵌套分式）：尝试保留为可编辑文本（Unicode 数学符号 + 上下标）\n  - **复杂公式**（多行、矩阵、分式、积分、求和）：渲染为高清 PNG\n\n### 3. 公式清单格式\n\n```json\n{\n  \"formulas\": [\n    {\n      \"id\": \"formula_01\",\n      \"latex\": \"\\\\frac{d[P]}{dt} = k_{cat}[E]_0\\\\frac{[S]}{K_m + [S]}\",\n      \"source_page\": 5,\n      \"context\": \"Michaelis-Menten equation\",\n      \"complexity\": \"complex\",\n      \"render_as\": \"png\",\n      \"width\": 250,\n      \"height\": 60\n    },\n    {\n      \"id\": \"formula_02\",\n      \"latex\": \"p < 0.05\",\n      \"source_page\": 8,\n      \"context\": \"Statistical significance\",\n      \"complexity\": \"simple\",\n      \"render_as\": \"text\"\n    }\n  ]\n}\n```\n\n---\n\n## LaTeX 渲染为 PNG\n\n### 1. 渲染脚本\n\n使用 `matplotlib` + `mathtext` 渲染（不需要完整 LaTeX 环境）：\n\n```python\n# render_formula.py\nimport matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\n\ndef render_latex_to_png(latex_str, output_path, dpi=300):\n    \"\"\"\n    将 LaTeX 公式渲染为高清 PNG。\n    dpi=300 确保高分辨率，适合 PPT 嵌入。\n    \"\"\"\n    fig, ax = plt.subplots(figsize=(4, 0.8))\n    ax.axis('off')\n    ax.text(0.5, 0.5, f'${latex_str}$',\n            fontsize=14,\n            horizontalalignment='center',\n            verticalalignment='center',\n            transform=ax.transAxes)\n    fig.savefig(output_path, dpi=dpi, bbox_inches='tight',\n                pad_inches=0.1, transparent=True)\n    plt.close(fig)\n```\n\n### 2. 调用方式\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/render_formula.py <formula_list.json> <output_dir>\n```\n\n输出：`<output_dir>/formula_01.png`, `formula_02.png`, ...\n\n### 3. 渲染参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| dpi | 300 | 输出分辨率，300 DPI 保证 PPT 中清晰显示 |\n| fontsize | 14 | 公式字号 |\n| bbox_inches | tight | 自动裁剪白边 |\n| transparent | true | 透明背景，适合嵌入 PPT |\n| pad_inches | 0.1 | 最小内边距 |\n\n---\n\n## 公式嵌入 PPTX\n\n### 1. 图片契约\n\n公式图片在 Strategist 阶段标记为：\n\n```\nAcquire Via: formula\nStatus: Existing\nCrop Policy: no-crop\nDimensions: 见 render_formula.py 输出\n```\n\n### 2. 嵌入方式\n\n- **Display 公式**（`$$...$$`）：在 SVG 中单独占一行，居中显示\n- **Inline 公式**（`$...$`）：在 SVG 中与正文同行，保持基线对齐\n- **简单公式**（保留为文本）：在 SVG 中用 `<text>` 元素 + Unicode 数学符号\n\n### 3. SVG 嵌入示例\n\n```xml\n<!-- Display 公式（复杂，渲染为 PNG） -->\n<image href=\"../images/formula_01.png\"\n       x=\"100\" y=\"400\" width=\"300\" height=\"60\"\n       preserveAspectRatio=\"xMidYMid meet\"/>\n\n<!-- Inline 公式（简单，保留为文本） -->\n<text x=\"100\" y=\"500\" font-size=\"14\" fill=\"#333\">\n  Statistical significance: p &lt; 0.05\n</text>\n```\n\n---\n\n## 公式质量检查\n\n### 1. 渲染检查\n\n- 检查 PNG 是否成功生成，文件大小 > 0\n- 检查公式是否清晰可读（无模糊、无截断）\n- 检查公式背景是否透明\n\n### 2. 内容检查\n\n- 对比渲染结果与原文公式，确保符号、上下标、括号匹配\n- 化学方程式（如 `H₂O → H⁺ + OH⁻`）优先用 Unicode 而非 LaTeX，避免过度渲染\n\n---\n\n## 完整流程\n\n```\nS1 文献解析\n  ↓\n检测 <stem>.md 中的 LaTeX 公式\n  ↓\n生成 formula_list.json（公式清单 + 复杂度评估）\n  ↓\nS2 大纲生成\n  ↓\n标记哪些页需要嵌入公式\n  ↓\nS4 生成前\n  ↓\nrender_formula.py 渲染公式为 PNG\n  ↓\n公式图片作为 user/Existing 图片纳入 PPTX\n  ↓\nS4 Executor 阶段\n  ↓\n在 SVG 中按 display/inline 方式嵌入公式\n  ↓\nS5 质检\n  ↓\n检查公式清晰度 + 内容匹配\n```\n\nFile v0.1.0:references/image-selection.md\n\n# 配图智能筛选与排序规则\n\n## 概述\n\n基于 `image_manifest.json` 和文献 caption 语义，自动筛选、排序、去重配图。\n\n---\n\n## 筛选规则\n\n### 1. 保留优先级\n\n| 图片类型 | 优先级 | 说明 |\n|----------|:------:|------|\n| 带 `Figure N` caption 的独立图片 | ⭐⭐⭐⭐⭐ | 优先保留，每个 figure 对应一页或半页 |\n| 带 `Fig. N` caption 的图片 | ⭐⭐⭐⭐⭐ | 同上 |\n| 带 `Figure S1` 等补充材料图片 | ⭐⭐⭐ | 仅当页数宽松时保留 |\n| 正文内嵌的小示意图 | ⭐⭐⭐ | 用于说明机制，保留 1-2 张 |\n| 化学结构式 | ⭐⭐⭐ | 保留（如果是关键结构） |\n| 作者照片 / 机构 logo / 二维码 | ⭐ | 过滤掉，不纳入 PPT |\n| 装饰性插图 | ⭐ | 过滤掉，不纳入 PPT |\n\n### 2. 标题 caption 检测\n\n识别以下形式的 figure caption：\n\n```\nFigure 1: ...\nFig. 2. ...\nFigure 1A, 1B: ...\nSupplementary Figure S1: ...\nFig S1: ...\n```\n\n检测到 caption 的图片**必然留下**，因为它们是论文作者明确标注的核心证据。\n\n### 3. 去重规则\n\n- 比较 `image_manifest.json` 中的 `sha256`，完全相同的图片只保留一次\n- 同一 figure 的多面板子图，保持原样保留（它们是同一 figure 的不同部分）\n- 同一实验重复数据图，只保留结论性的一张\n\n### 4. 容量控制\n\n- 每页最多保留 **1–2 张**配图\n- 总配图数量 ≈ 总页数 × 0.7–1.0（15 页 ≈ 10–15 张）\n- 如果文献配图超过容量上限：优先保留正文多次引用的 figure，过滤掉低引用次数的补充图\n\n---\n\n## 排序规则\n\n### 1. 按章节顺序排序\n\n- 按照 PDF 中 caption 出现的章节顺序排列\n- 引言 → 方法 → 结果 → 讨论，顺序严格对应\n- 同一章节内多个 figure 按出现顺序排列\n\n### 2. 按引用位置排序\n\n- 解析正文文本中的 \"as shown in Figure 3\"\n- 正文引用次数越多的 figure 优先级越高\n- 如果一张图在正文多次引用，优先放在核心结果页\n\n### 3. 最终排序步骤\n\n```\n1. 所有通过筛选的图按 caption 出现顺序分组\n2. 每组标记对应章节\n3. 章节之间按引言 → 方法 → 结果 → 讨论排序\n4. 同一章节内按 caption 出现顺序排序\n5. 检查是否偏离论文原有逻辑，微调\n```\n\n---\n\n## 分配到页规则\n\n- **结论页**：不需要配图（纯文字总结）\n- **方法页**：保留 1 张方法示意图 / 流程图\n- **结果页**：每页保留 1 张核心结果图（对应 1-2 个实验）\n- **讨论页**：不需要配图（或保留 1 张工作模型图）\n- 多图可分配到相邻页，避免一页堆砌多张图\n\n---\n\n## 生成 image_manifest.json 字段说明\n\n`image_manifest.json` 每条记录：\n\n```json\n{\n  \"filename\": \"figure_1.jpg\",\n  \"sha256\": \"2b04a59a4c54779ad390edca6706a4bb7c03c0a5924d544672a7130e4ac74179\",\n  \"source_kind\": \"pdf_image\",\n  \"caption\": \"NbUBP16 responds to RSV infection.\",\n  \"caption_text\": \"NbUBP16 responds to RSV infection.\",\n  \"figure_number\": 1,\n  \"page_number\": 7,\n  \"pixel_width\": 600,\n  \"pixel_height\": 450,\n  \"bbox\": [x0, y0, x1, y1]\n}\n```\n\n**语义分析使用 caption_text**：\n- 如果 caption 包含 \"model\"、\"mechanism\"、\"work model\" → 放在工作模型页\n- 如果 caption 包含 \"method\"、\"protocol\"、\"procedure\" → 放在方法页\n- 如果 caption 包含 \"result\"、\"data\"、\"expression\" → 放在结果页\n\n---\n\n## 策略决策树\n\n```\n开始\n  ↓\n读取 image_manifest.json\n  ↓\n按优先级筛选：\n  有 caption → 保留\n  是 logo/二维码 → 过滤\n  是 decorative → 过滤\n  ↓\n去重（按 sha256）\n  ↓\n按 caption 所在页码排序\n  ↓\n按章节分组（引言/方法/结果/讨论）\n  ↓\n按每页最多 2 张分配到对应页\n  ↓\n输出：每页配图列表（filename + caption + 占位）\n结束\n```\n\nFile v0.1.0:references/outline-templates.md\n\n# 组会脉络模板预设\n\n## 概述\n\n本文件定义 4 种组会汇报脉络模板。用户在 S0 选择侧重方向后，S2 自动套用对应模板生成 outline。\n\n---\n\n## 模板 1：IMRaD 均衡（默认）\n\n**适用场景**：常规组会文献汇报，全面展示论文内容。\n\n**页序列**：\n\n| 页 | 页面标题 | 内容要求 | 配图 |\n|---|---|---|---|\n| P01 | 封面 | 标题 / 作者 / 期刊 / 汇报人 / 日期 | 无 |\n| P02 | 目录 | 汇报板块导航 | 无 |\n| P03 | 文献选择依据 | 为什么选这篇文献（期刊影响力 / 领域热点 / 与自身课题关联） | 无 |\n| P04 | 研究背景 | 领域背景知识、关键概念、前人工作 | 可选：领域示意图 |\n| P05 | 科学问题与研究策略 | 核心假说 / 研究目标 / 技术路线总览 | 可选：技术路线图 |\n| P06 | 方法总览 | 实验方法、模型、数据来源 | 可选：方法流程图 |\n| P07 | 方法关键图 | 方法核心图示 | 1 张 |\n| P08 | 实验设置 | 实验条件、分组、对照 | 无 |\n| P09 | 主要结果 1 | 第一个核心发现 | 1 张 |\n| P10 | 主要结果 2 | 第二个核心发现 | 1 张 |\n| P11 | 结果分析 | 数据解读、统计分析 | 无 |\n| P12 | 创新点总结 | 论文创新点（3-5 条） | 无 |\n| P13 | 局限性与未来工作 | 论文局限性 + 可改进方向 | 无 |\n| P14 | 结论 | 核心结论（1-2 句） | 无 |\n| P15 | Q&A / 致谢 | 致谢 + 参考文献 | 无 |\n\n**页数范围**：14–17 页（含封面目录）\n\n---\n\n## 模板 2：问题驱动\n\n**适用场景**：紧凑汇报，聚焦\"问题→解决\"逻辑，适合 10 页以内的短汇报。\n\n**页序列**：\n\n| 页 | 页面标题 | 内容要求 | 配图 |\n|---|---|---|---|\n| P01 | 封面 | 标题 / 作者 / 期刊 / 汇报人 | 无 |\n| P02 | 核心问题 | 领域面临的关键挑战 / 知识缺口（1-2 个核心问题） | 无 |\n| P03 | 研究策略 | 本文如何针对问题设计实验 / 模型 | 可选：策略图 |\n| P04 | 关键发现 1 | 最重要的实验结果 | 1 张 |\n| P05 | 关键发现 2 | 次重要的实验结果 | 1 张 |\n| P06 | 机制模型 | 整合发现，提出机制 / 工作模型 | 1 张 |\n| P07 | 创新点 | 本文创新之处（3 条） | 无 |\n| P08 | 局限性 | 不足与改进空间 | 无 |\n| P09 | 结论 | 核心结论 | 无 |\n| P10 | Q&A | 致谢 + 参考文献 | 无 |\n\n**页数范围**：10–12 页\n\n---\n\n## 模板 3：创新点驱动\n\n**适用场景**：开题 / 中期 / 答辩，强调创新贡献。\n\n**页序列**：\n\n| 页 | 页面标题 | 内容要求 | 配图 |\n|---|---|---|---|\n| P01 | 封面 | 标题 / 作者 / 期刊 / 汇报人 | 无 |\n| P02 | 目录 | 汇报板块导航 | 无 |\n| P03 | 领域现状与瓶颈 | 前人工作 + 未解决的问题 | 无 |\n| P04 | 创新点 1：<具体创新> | 创新点 1 的详细论证 + 支撑证据 | 1 张 |\n| P05 | 创新点 1 证据补充 | 补充实验 / 数据 | 1 张 |\n| P06 | 创新点 2：<具体创新> | 创新点 2 的详细论证 + 支撑证据 | 1 张 |\n| P07 | 创新点 2 证据补充 | 补充实验 / 数据 | 可选 |\n| P08 | 创新点 3：<具体创新> | 创新点 3 的详细论证 + 支撑证据 | 1 张 |\n| P09 | 创新点总结 | 3 个创新点横向对比 | 无 |\n| P10 | 工作模型 | 整合所有发现的机制模型 | 1 张 |\n| P11 | 局限性与改进 | 不足 + 可改进方向 | 无 |\n| P12 | 结论与展望 | 核心结论 + 未来方向 | 无 |\n| P13 | Q&A / 致谢 | 致谢 + 参考文献 | 无 |\n\n**页数范围**：13–16 页\n\n---\n\n## 模板 4：综述对比\n\n**适用场景**：文献综述汇报，横向对比多篇文献的方法与发现。\n\n**页序列**：\n\n| 页 | 页面标题 | 内容要求 | 配图 |\n|---|---|---|---|\n| P01 | 封面 | 标题 / 作者 / 期刊 / 汇报人 | 无 |\n| P02 | 目录 | 汇报板块导航 | 无 |\n| P03 | 研究背景与范围 | 领域概述 + 综述范围界定 | 无 |\n| P04 | 方法分类 | 按方法 / 策略分类的框架 | 无 |\n| P05 | 方法对比 | 表格：各方法优劣对比 | 无 |\n| P06 | 结果对比 | 各方法关键结果横向对比 | 1 张 |\n| P07 | 核心发现 | 综述中最关键的发现 | 可选：对比图 |\n| P08 | 趋势分析 | 领域发展趋势 | 可选：趋势图 |\n| P09 | 当前挑战 | 领域未解决的问题 | 无 |\n| P10 | 未来方向 | 可能的研究方向 | 无 |\n| P11 | 结论 | 综述结论 | 无 |\n| P12 | Q&A / 致谢 | 致谢 + 参考文献 | 无 |\n\n**页数范围**：12–15 页\n\n---\n\n## 模板选择规则\n\n1. 用户在 S0 指定侧重方向，S2 自动套用对应模板\n2. 用户未指定时，默认使用 **模板 1（IMRaD 均衡）**\n3. 模板可微调：用户确认大纲时可增减页面、调整配图分配\n4. 页数目标与模板默认页数不一致时，优先按模板结构缩放（增减结果页 / 证据页）\n\nFile v0.1.0:references/slides-json-template.md\n\n# slides.json 黄金模板 —— AI 生成指南\n\n## 概述\n\n本文件是 `gen_pptx.py` 的输入规范。AI 在生成 `slides.json` 时必须严格遵循此模板，确保 PPT 输出效果稳定一致。\n\n`slides.json` 是一个 JSON 数组，数组中每个对象描述一页幻灯片。`gen_pptx.py` 会读取该数组，根据每页的 `page_type` 调用对应的构建函数渲染 PPT。请确保：\n\n- 整个文件是合法的 JSON（无双引号缺失、无尾逗号、无注释）。\n- 数组元素按页码顺序排列。\n- 每页的 `page_type` 必须是下文规定的取值之一。\n\n> **完整示例**：真实的 17 页 slides.json 示例见同目录下的 `example-slides.json`。AI 生成时应严格模仿其结构和字段填写方式，确保跨环境一致性。\n\n---\n\n## 必需字段说明\n\n| 字段 | 类型 | 必需 | 说明 |\n|------|------|------|------|\n| page_num | int | 是 | 页码，从1开始 |\n| page_type | string | 是 | 页面类型：cover/toc/section/content/figure/conclusion/qa |\n| title | string | 是* | 页面标题（*cover页可用cn_title替代） |\n| cn_title | string | cover可选 | 中文标题（封面页主标题，启用中英文对照） |\n| en_title | string | cover可选 | 英文标题（封面页副标题，与cn_title配合使用） |\n| subtitle | string | cover可选 | 引文信息（作者, 期刊, 年份），显示在深蓝圆角引文条中 |\n| sections | array | toc必需 | 目录章节列表，字符串数组 |\n| bullets | array | content/figure可选 | 要点列表，字符串数组 |\n| sub_title | string | content可选 | 小标题（显示在标题下方，无竖线装饰） |\n| analysis_title | string | figure可选 | 图表分析小标题（等同sub_title） |\n| conclusion | string | content/figure可选 | 结论文字（显示在底部结论框中） |\n| key_message | string | conclusion/qa可选 | 核心信息（结论页大字展示） |\n| highlights | array | content可选 | 高亮信息，字典数组[{title, content}] |\n| image_path | string | figure可选 | 图片文件路径 |\n| image_caption | string | figure可选 | 图片说明文字 |\n| notes | string | 全部可选 | 演讲者备注 |\n| kicker | string | 全部可选 | 标题栏右上角标签（如\"遗传学验证\"） |\n| section_no | int | section可选 | 章节编号（不填则自动分配） |\n| presenter | string | cover可选 | 汇报人信息（默认\"汇报人：研究生组会汇报\"） |\n| date | string | cover可选 | 汇报日期（默认当天日期） |\n\n---\n\n## 各页面类型完整示例\n\n### cover 页示例\n\n封面页**必须**使用中英文对照格式（cn_title + en_title），**禁止**仅使用 title：\n\n```json\n{\n  \"page_num\": 1,\n  \"page_type\": \"cover\",\n  \"cn_title\": \"泛素特异性蛋白酶16通过调控Na+/H+逆向转运活性调节拟南芥的耐盐性\",\n  \"en_title\": \"UBIQUITIN-SPECIFIC PROTEASE16 Modulates Salt Tolerance in Arabidopsis\",\n  \"subtitle\": \"Zhou et al., The Plant Cell, 2012, Vol. 24: 5106-5122\",\n  \"presenter\": \"汇报人：研究生组会汇报\",\n  \"date\": \"2026年7月29日\",\n  \"notes\": \"演讲备注\"\n}\n```\n\n### toc 页示例\n\n```json\n{\n  \"page_num\": 2,\n  \"page_type\": \"toc\",\n  \"title\": \"汇报提纲\",\n  \"sections\": [\"研究背景\", \"科学问题\", \"方法\", \"结果\", \"讨论\", \"结论\"],\n  \"notes\": \"演讲备注\"\n}\n```\n\n### section 页示例\n\n```json\n{\n  \"page_num\": 3,\n  \"page_type\": \"section\",\n  \"title\": \"研究背景与科学问题\",\n  \"notes\": \"演讲备注\"\n}\n```\n\n### content 页示例（完整版）\n\n```json\n{\n  \"page_num\": 4,\n  \"page_type\": \"content\",\n  \"title\": \"研究背景：RSV与植物防御\",\n  \"sub_title\": \"前期工作与知识空白\",\n  \"kicker\": \"背景介绍\",\n  \"bullets\": [\n    \"水稻条纹病毒（RSV）是水稻生产最具破坏性的病毒之一\",\n    \"植物抗病毒免疫主要为两层：PTI与ETI，伴随ROS爆发\",\n    \"前期工作：E3连接酶MEL泛素化并降解SHMT1，激活防御\",\n    \"知识空白：去泛素化酶是否参与调控植物病毒侵染尚不清楚\"\n  ],\n  \"conclusion\": \"去泛素化酶是否参与调控病毒侵染是本文要回答的核心问题\",\n  \"notes\": \"演讲备注\"\n}\n```\n\n### figure 页示例（完整版）\n\n```json\n{\n  \"page_num\": 7,\n  \"page_type\": \"figure\",\n  \"title\": \"图1 NbUBP16响应并调控RSV侵染\",\n  \"sub_title\": \"RNA-seq筛选与功能验证\",\n  \"kicker\": \"实验结果\",\n  \"bullets\": [\n    \"RNA-seq：RSV侵染后15个DUBs中仅NbUBP16明显上调（4-6倍）\",\n    \"VIGS敲低NbUBP16后，RSV症状与外壳蛋白积累显著下降\"\n  ],\n  \"conclusion\": \"NbUBP16是RSV侵染的正调控因子\",\n  \"image_path\": \"图片文件路径\",\n  \"image_caption\": \"Fig. 1 NbUBP16 responds to and regulates RSV infection.\",\n  \"notes\": \"演讲备注\"\n}\n```\n\n### conclusion 页示例\n\n```json\n{\n  \"page_num\": 16,\n  \"page_type\": \"conclusion\",\n  \"title\": \"结论\",\n  \"key_message\": \"RSV诱导NbUBP16上调，去泛素化稳定NbSHMT1、抑制ROS，从而促进病毒侵染\",\n  \"bullets\": [\n    \"揭示病毒劫持宿主去泛素化通路的新策略\",\n    \"为抗病靶点设计提供线索\"\n  ],\n  \"notes\": \"演讲备注\"\n}\n```\n\n### qa 页示例\n\n```json\n{\n  \"page_num\": 17,\n  \"page_type\": \"qa\",\n  \"title\": \"感谢与讨论\",\n  \"key_message\": \"Q & A · 欢迎提问\",\n  \"bullets\": [\"感谢各位老师同学\"],\n  \"notes\": \"演讲备注\"\n}\n```\n\n---\n\n## 生成规则（必须严格遵守！）\n\n> ⚠️ 以下规则为**硬性约束**，不是建议。违反任一规则将导致不同 AI 环境生成的 PPT 不一致。\n\n1. 每页必须有 `page_num`、`page_type` 字段。封面页**必须**用 `cn_title`（**禁止**仅用 `title`）。\n2. 封面页**必须**同时包含 `cn_title` + `en_title` + `subtitle`，实现中英文对照。\n3. content 页**必须**填写 `sub_title` 和 `conclusion`；figure 页**必须**填写 `sub_title` 和 `image_caption`。\n4. bullets 中可包含学术关键词（如\"增加\"\"减少\"\"促进\"\"抑制\"），脚本会自动标红加粗。\n5. figure 页的 `image_path` **必须**使用 `image_manifest_filtered.json` 中的 `filename` 字段值（仅文件名，不含路径前缀）。\n6. toc 页的 `sections` **必须**固定为四段：`[\"研究背景与科学问题\", \"材料与方法\", \"主要结果\", \"讨论与结论\"]`。\n7. 如果不填 `conclusion`，脚本会自动从 highlights 或 key_message 中提取（但**建议**显式填写以保证一致性）。\n8. 总页数**必须**为 17 页，遵循固定 page_type 序列（见下方\"完整17页示例大纲\"）。\n9. 每个 figure 页**只放一张**配图，**禁止**合并多张图到同一页。\n10. bullets 数量：content 页 3-4 条，figure 页 2-3 条，每条不超过 40 个中文字符。\n\n---\n\n## 跨环境一致性校验清单\n\n生成 slides.json 后，AI **必须**逐项自检以下内容，全部通过方可提交：\n\n| # | 检查项 | 通过条件 |\n|---|---|---|\n| C1 | 总页数 = 17 | `len(slides) == 17` |\n| C2 | 封面含 cn_title + en_title | `slides[0]` 同时有这两个字段 |\n| C3 | 第 2 页 sections 为四段式 | `slides[1][\"sections\"]` 长度 = 4 |\n| C4 | page_type 序列正确 | cover→toc→section→content→content→section→figure×N→section→content→conclusion→qa |\n| C5 | 所有 figure 页有 image_path | 每个 figure 页的 image_path 非空 |\n| C6 | image_path 与 manifest 一致 | 每个 image_path 值存在于 image_manifest_filtered.json 的 filename 列表中 |\n| C7 | 所有 content/figure 页有 sub_title | 非封面/目录/章节/结论/QA 页均有 sub_title |\n| C8 | 无合并图 | 每个 figure 页仅 1 个 image_path |\n\n---\n\n## 完整17页示例大纲\n\n标准17页的 page_type 序列如下：\n\n```\ncover(1) → toc(2) → section(3) → content(4) → content(5) →\nsection(6) → figure(7-13) → section(14) → content(15) →\nconclusion(16) → qa(17)\n```\n\n对应页面类型分布：\n\n| 页码 | page_type | 说明 |\n|------|-----------|------|\n| 1 | cover | 封面：论文标题、作者、期刊、年份 |\n| 2 | toc | 目录：汇报提纲导航 |\n| 3 | section | 章节页：研究背景与科学问题 |\n| 4 | content | 研究背景介绍 |\n| 5 | content | 科学问题与研究策略 |\n| 6 | section | 章节页：实验结果 |\n| 7 | figure | 主要结果图1 |\n| 8 | figure | 主要结果图2 |\n| 9 | figure | 主要结果图3 |\n| 10 | figure | 主要结果图4 |\n| 11 | figure | 主要结果图5 |\n| 12 | figure | 主要结果图6 |\n| 13 | figure | 主要结果图7 |\n| 14 | section | 章节页：讨论与结论 |\n| 15 | content | 讨论与创新点总结 |\n| 16 | conclusion | 结论：核心发现一句话总结 |\n| 17 | qa | 致谢与讨论 |\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nTurn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[mlj-1212](https://clawhub.ai/user/mlj-1212)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nResearchers, students, and developers use this skill to convert research article PDFs into structured group-meeting presentations with editable slides, preserved paper figures, optional speaker notes, and validation checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The installer can automatically pull unpinned Python packages.\n\nMitigation: Review dependencies before installing, use an isolated virtual environment, and prefer manually installing pinned package versions.\n\nRisk: Crafted slide data can cause the PPTX generator to embed arbitrary local image files through image_path values.\n\nMitigation: Run the workflow only on trusted PDFs and generated slide JSON, and verify image_path values are simple filenames from the generated image manifest before creating or sharing a PPTX.\n\n## Reference(s):\n\n- [Server-resolved GitHub repository](https://github.com/mlj-1212/paper-report-ppt)\n- [ClawHub skill page](https://clawhub.ai/mlj-1212/skills/paper-report-ppt)\n- [Slides JSON template](references/slides-json-template.md)\n- [Formula rendering rules](references/formula-rendering.md)\n- [Image selection rules](references/image-selection.md)\n- [Outline templates](references/outline-templates.md)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, JSON, Files, Shell commands, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands, JSON slide and speech inputs, generated PPTX/DOCX files, and validation reports]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces a fixed-structure presentation workflow, including parsed paper Markdown, image manifests, outline notes, editable PPTX output, optional DOCX speech draft, and quality-check reports.]\n\n## Skill Version(s):\n\n0.1.0 (source: ClawHub 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 v0.1.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 mlj-1212\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","readmeExcerpt":"Skill: paper-report-ppt Owner: mlj-1212 Summary: Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-04T12:26:12.609Z | auto paper-report-ppt 0.1.0 — Initial Release - Generate editable group-meeting PPTX directly from research article PDFs, ma","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python ${PAPER_REPORT_PPT_DIR}/scripts/install_check.py --json"},{"language":"bash","snippet":"pip install python-pptx PyMuPDF python-docx Pillow matplotlib"},{"language":"bash","snippet":"python ${PAPER_REPORT_PPT_DIR}/scripts/parse_pdf.py <pdf_path> -o <work_dir>/<stem>.md"},{"language":"bash","snippet":"python ${PAPER_REPORT_PPT_DIR}/scripts/filter_images.py <work_dir>/<stem>_files/image_manifest.json --max-per-page 2"},{"language":"bash","snippet":"python ${PAPER_REPORT_PPT_DIR}/scripts/render_formula.py <work_dir>/formula_list.json <work_dir>/<stem>_files/"},{"language":"json","snippet":"[\n  {\n    \"page_num\": 1,\n    \"page_type\": \"cover\",\n    \"cn_title\": \"文献精读汇报：<中文论文标题>\",\n    \"en_title\": \"<English Paper Title>\",\n    \"subtitle\": \"作者 et al., 期刊, 年份\",\n    \"presenter\": \"汇报人：研究生组会汇报\",\n    \"date\": \"2026年7月29日\",\n    \"notes\": \"今天汇报的文献是...\"\n  },\n  {\n    \"page_num\": 2,\n    \"page_type\": \"toc\",\n    \"title\": \"汇报提纲\",\n    \"sections\": [\"研究背景\", \"科学问题\", \"方法总览\", \"主要结果\", \"讨论与创新\", \"结论与展望\"],\n    \"notes\": \"本次汇报分为六个部分...\"\n  },\n  {\n    \"page_num\": 3,\n    \"page_type\": \"content\",\n    \"title\": \"研究背景\",\n    \"bullets\": [\"要点1\", \"要点2\", \"要点3\"],\n    \"highlights\": [{\"title\": \"知识缺口\", \"content\": \"...\"}],\n    \"notes\": \"首先介绍研究背景...\"\n  },\n  {\n    \"page_num\": 7,\n    \"page_type\": \"figure\",\n    \"title\": \"系统筛选结果\",\n    \"image_path\": \"figure_1.png\",\n    \"image_caption\": \"Figure 1: ...\",\n    \"bullets\": [],\n    \"notes\": \"请看这张图...\"\n  },\n  {\n    \"page_num\": 17,\n    \"page_type\": \"qa\",\n    \"title\": \"感谢聆听\",\n    \"key_message\": \"Q&A / 欢迎提问\",\n    \"notes\": \"以上就是本次汇报的全部内容...\"\n  }\n]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: paper-report-ppt\ndescription: \"Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation.\"\n---\n\n# Paper Report PPT Skill\n\n把研究生文献（PDF）按文章脉络生成用于组会汇报的**可编辑** PPTX。文献配图**原样嵌入不改**，使用自由设计路径生成学术专业风格演示文稿。\n\n本 skill 是**自包含场景编排层**，所有核心能力通过内置 Python 脚本实现，不依赖任何外部 skill。只需 `pip install python-pptx PyMuPDF python-docx Pillow matplotlib` 即可在任何 AI 环境中使用。\n\n---\n\n## 触发条件\n\n当用户出现以下意图时调用本 skill：\n- \"把这篇论文做成组会汇报 PPT\"\n- \"这篇文献帮我整理成汇报 slides\"\n- \"研究生组会汇报，按文章脉络来\"\n- 上传 PDF 并要求生成汇报演示文稿\n- \"paper report\" / \"literature presentation\" / \"journal club slides\"\n\n---\n\n## 输入契约\n\n| 输入 | 必需 | 说明 |\n|---|---|---|\n| 文献 PDF | 是 | 研究生文献（论文 / 预印本 / 学位论文），本地路径 |\n| 汇报场景 | 否 | 组会 / 开题 / 中期 / 答辩；默认组会 |\n| 目标页数 | 否 | 固定 17 页（含封面目录），不可更改 |\n| 语言 | 否 | 默认跟随文献语言；中文文献默认中文汇报 |\n| 侧重 | 否 | IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比；默认均衡 |\n| 演讲稿 | 否 | 是否同步生成完整演讲稿（独立 DOCX 文稿）；默认生成 |\n\n---\n\n## 工作流（S0–S5）\n\n### S0 — 意图确认与需求收集\n\n- **输入**：用户对话 + PDF 路径\n- **输出**：需求摘要（场景 / 页数 / 语言 / 侧重 + 矢量图处理决策）\n- **脚本**：`scripts/install_check.py`\n- **门禁**：⛔ ① 环境自检通过 ② 用户确认需求摘要后进入 S1\n\n#### S0.1 环境自检（首要步骤）\n\n进入 S0 后**第一件事**是运行环境自检：\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/install_check.py --json\n```\n\n自检内容：\n- Python >= 3.8\n- 4 个必需 pip 包：`python-pptx`、`PyMuPDF`、`python-docx`、`Pillow`（Pillow 用于 PDF 配图反色修复，缺失会导致黑底图问题）\n- 1 个可选 pip 包：`matplotlib`（公式渲染）\n\n退出码：0=就绪，2=需安装依赖。若退出码为 2，提示用户运行：\n```bash\npip install python-pptx PyMuPDF python-docx Pillow matplotlib\n```\n\n#### S0.2 需求收集\n\n**收集项**：\n1. PDF 路径\n2. 汇报场景与目标页数\n3. 汇报语言\n4. 脉络侧重（IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比）\n5. PDF 中矢量图处理方式（默认不提取；如需保留接受栅格化）\n6. 是否同步生成演讲稿（DOCX 格式，默认生成）\n\n> **矢量图决策**：PDF 矢量图（图表 / 流程图）默认不提取。若用户要求保留：栅格化（`parse_pdf.py --render-vector-figures`，180 DPI）。在 S0 与用户确认。\n\n---\n\n### S1 — 文献解析与素材提取\n\n- **输入**：PDF\n- **输出**：\n  - `<work_dir>/<stem>.md`（结构化 Markdown，含 `<!-- Page N -->` 标记）\n  - `<work_dir>/<stem>_files/`（原样提取的配图 PNG/JPG + `image_manifest.json`）\n  - `<work_dir>/pages/page_XXXX.txt`（逐页文本，长文献检索用）\n  - `<work_dir>/formula_list.json`（公式检测清单）\n- **门禁**：✅ `<stem>.md` 与 `image_manifest.json` 存在\n\n**PDF 解析**（自包含，仅依赖 PyMuPDF）：\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/parse_pdf.py <pdf_path> -o <work_dir>/<stem>.md\n```\n\n> `parse_pdf.py` 是本 skill 自带的 PDF 解析器。功能包括：标题级别检测、加粗/斜体格式化、列表检测、页眉页脚过滤、图片原样提取（不重采样）、image_manifest.json 生成（字段：filename / sha256 / page_number / pixel_width / pixel_height / caption / figure_number）、基础表格检测、矢量图渲染（`--render-vector-figures`）。\n\n**公式检测**：在 `<stem>.md` 中搜索 LaTeX 数学标记（`$...$` / `$$...$$` / `\\(...\\)` / `\\[...\\]`），生成 `formula_list.json`（每条记录：id / latex / source_page / complexity / render_as）。详细规则见 `references/formula-rendering.md`。\n\n---\n\n### S2 — 组会汇报脉络大纲生成\n\n- **输入**：`<stem>.md` + `image_manifest.json` + `formula_list.json`\n- **输出**：`<work_dir>/outline.md`（组会脉络页序列）\n- **脚本**：`scripts/filter_images.py`（配图筛选）\n- **门禁**：⛔ 用户确认大纲后进入 S3\n\n#### 脉络模板预设\n\n根据 S0 收集的\"侧重\"方向，从 `references/outline-templates.md` 选取对应模板。**无论选哪个模板，最终 slides.json 的 page_type 序列必须遵循 R1 硬性规则（17"},{"path":"README.md","content":"# paper-report-ppt\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![TRAE Skill](https://img.shields.io/badge/TRAE-Skill-green.svg)]()\n[![Python 3.8+](https://img.shields.io/badge/Python-3.8+-blue.svg)]()\n\n> 上传一篇文献 PDF，自动生成**可编辑**的组会汇报 PPT。论文中的实验图表原样保留，同步生成配套的演讲稿 Word 文档。**自包含架构，无外部 skill 依赖，所有 AI 桌面应用通用。**\n\n---\n\n## 效果预览\n\n以下是用真实文献生成的组会汇报 PPT 截图：\n\n| 封面页 | 结果页（实验图原样嵌入） | 工作模型页 |\n|:------:|:------:|:------:|\n| [![封面页](assets/screenshots/slide_01.png)](assets/screenshots/slide_01.png) | [![结果页](assets/screenshots/slide_07.png)](assets/screenshots/slide_07.png) | [![工作模型](assets/screenshots/slide_13.png)](assets/screenshots/slide_13.png) |\n\n**17 页完整 PPT，7 张实验图原样嵌入，三重质检全部通过。** [查看完整案例](#真实案例)\n\n---\n\n## 30 秒开始\n\n```bash\ngit clone https://github.com/mlj-1212/paper-report-ppt.git\ncd paper-report-ppt\npython install.py\n```\n\n`install.py` 会自动安装全部依赖并完成环境自检，看到 `🎉 安装完成！` 即可使用。\n\n> **AI 环境用户**：也可以直接告诉 AI「安装 https://github.com/mlj-1212/paper-report-ppt 这个 skill」，AI 会自动完成克隆和安装。\n>\n> **仓库体积仅 ~220 KB**（不含截图） — 完全自包含，无外部 skill 依赖，无 Node.js 依赖。\n\n---\n\n## 用法：两步生成 PPT\n\n### 第 1 步：上传 PDF\n\n把你的文献 PDF 发给 AI，说一句\"生成组会汇报 PPT\"就行。AI 会自动处理语言识别、页数、结构、图表嵌入、演讲稿生成等所有细节。\n\n### 第 2 步：确认大纲，等待生成\n\nAI 会先给你一个汇报大纲（类似目录），你回复\"确认\"后，AI 开始生成 PPT。处理完成后，你会收到：\n\n- **一份 PPTX 文件** — 可编辑的组会汇报 PPT，论文图表原样保留\n- **一份 DOCX 文件** — 完整的演讲稿，约 3000–6000 字\n\n---\n\n## 进阶用法\n\n如果你想自定义汇报风格，可以在上传 PDF 时附带说明：\n\n| 你想做什么 | 告诉 AI |\n|---|---|\n| 侧重创新点 | \"侧重展示创新点和核心发现，控制在 10 页以内\" |\n| 英文汇报 | \"用英文生成汇报\" |\n| 开题/答辩场景 | \"用于开题汇报，约 20 页，重点展示研究背景和方法对比\" |\n| 切换视觉主题 | \"使用 ref 主题风格（深蓝顶部条 + 中英文对照封面）\" |\n\n---\n\n## 功能特性\n\n| 特性 | 说明 |\n|------|------|\n| **脉络模板预设** | 4 种汇报模板：IMRaD 均衡 / 问题驱动 / 创新点驱动 / 综述对比，一键切换 |\n| **配图智能筛选** | 基于 caption 语义自动筛选和排序配图，过滤装饰图，sha256 去重 |\n| **公式保真渲染** | 检测文献中 LaTeX 数学公式，复杂公式渲染为高清 PNG 嵌入 PPT，简单公式保留可编辑文本 |\n| **文献脉络还原** | 按引言-方法-结果-讨论的结构自动组织汇报内容 |\n| **配图原样保留** | 实验图、数据图从 PDF 原样提取，SHA256 校验，不做裁剪 |\n| **多视觉主题** | 内置 academic / minimal / trae / ref 四种主题，自由设计路径生成专业学术风格 |\n| **同步演讲稿** | 生成完整口头演讲文字稿（DOCX），含开场白、逐页讲解、时长分配、问题预判 |\n| **完全可编辑** | 输出为原生 PPTX，文本、形状、图片均可修改 |\n| **自动质检** | 可编辑性 + 图片完整性 + 脉络一致性三重核验 |\n| **跨平台通用** | 纯 Python 实现，任何有文件系统的 AI 环境均可使用 |\n\n---\n\n## 适用场景\n\n- 研究生组会文献汇报（Journal Club）\n- 开题 / 中期 / 答辩演示\n- 学术会议快速准备\n\n---\n\n## 真实案例\n\n以下是用本工具处理一篇真实植物病理学文献的完整测试结果。\n\n### 文献信息\n\n| 项目 | 内容 |\n|------|------|\n| 论文 | *RSV infection induces upregulation of deubiquitinase UBP16 to stabilize SHMT1 for promoting viral infection* |\n| 期刊 | **Stress Biology**, 2025, 5:62 |\n| 作者 | Wang et al. |\n| PDF | 10 页，含 7 张配图（Figure 1–7） |\n| 汇报语言 | 中文 |\n\n### 生成结果\n\n| 指标 | 数值 |\n|------|------|\n| 总页数 | **17 页**（IMRaD 均衡模式） |\n| 配图嵌入 | 7/7 原样嵌入（SHA256 全匹配） |\n| PPTX 大小 | 1.15 MB |\n| 演讲稿字数 | ~3,500 字（约 20 分钟） |\n\n### 幻灯片结构\n\n```\nP01  封面          — 标题、作者、期刊、汇报人\nP02  目录          — 六大板块导航\nP03  文献选择依据   — 为什么选这篇\nP04  研究背景      — RSV 与植物泛素化防御\nP05  科学问题      — 核心假说与研究策略\nP06  方法总览      — 多层次验证体系\nP07  系统筛选      — NbUBP16 响应 RSV 感染 [Figure 1]\nP08  蛋白互作      — NbUBP16.1 与 NbSHMT1 互作 [Figure 2]\nP09  酶活验证      — 去泛素化稳定 NbSHMT1 [Figure 3]\nP10  功能分析      — OE-Nb"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn716er85s8hpr2aj2tw6qg4h18baz6a\",\n  \"slug\": \"paper-report-ppt\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1785846372609\n}"},{"path":"references/example-slides.json","content":"[\n  {\n    \"page_num\": 1,\n    \"page_type\": \"cover\",\n    \"cn_title\": \"泛素特异性蛋白酶16通过调控Na+/H+逆向转运活性调节拟南芥的耐盐性\",\n    \"en_title\": \"UBIQUITIN-SPECIFIC PROTEASE16 Modulates Salt Tolerance in Arabidopsis\",\n    \"subtitle\": \"Zhou et al., The Plant Cell, 2012, Vol. 24: 5106-5122\",\n    \"presenter\": \"汇报人：研究生组会汇报\",\n    \"date\": \"2026年7月29日\",\n    \"notes\": \"今天汇报的文献是2012年发表在The Plant Cell上的文章，主要报道了去泛素化酶UBP16在拟南芥耐盐调控中的功能机制。\"\n  },\n  {\n    \"page_num\": 2,\n    \"page_type\": \"toc\",\n    \"title\": \"汇报提纲\",\n    \"sections\": [\"研究背景与科学问题\", \"材料与方法\", \"主要结果\", \"讨论与结论\"],\n    \"notes\": \"本次汇报分为四个部分：首先介绍研究背景和科学问题，然后简要介绍材料与方法，重点展示主要结果，最后进行讨论和总结。\"\n  },\n  {\n    \"page_num\": 3,\n    \"page_type\": \"section\",\n    \"title\": \"研究背景与科学问题\",\n    \"section_no\": 1,\n    \"notes\": \"首先进入第一部分，研究背景与科学问题。\"\n  },\n  {\n    \"page_num\": 4,\n    \"page_type\": \"content\",\n    \"title\": \"研究背景：盐胁迫与植物响应\",\n    \"sub_title\": \"盐胁迫信号通路与Na+稳态调控\",\n    \"kicker\": \"背景介绍\",\n    \"bullets\": [\n      \"土壤盐渍化是全球农业主要非生物胁迫之一，导致作物减产\",\n      \"植物通过SOS信号通路调控Na+外排，维持离子稳态\",\n      \"泛素化修饰在胁迫信号传导中发挥关键调控作用\",\n      \"去泛素化酶（DUBs）是否参与耐盐调控尚不清楚\"\n    ],\n    \"conclusion\": \"去泛素化酶在植物耐盐调控中的功能是本文要回答的核心问题\",\n    \"notes\": \"盐胁迫是影响植物生长的重要非生物胁迫。植物主要通过SOS通路调控Na+外排来维持离子稳态。泛素化修饰在胁迫信号传导中有重要作用，但去泛素化酶是否参与耐盐调控还不清楚，这就是本文的切入点。\"\n  },\n  {\n    \"page_num\": 5,\n    \"page_type\": \"content\",\n    \"title\": \"科学问题与研究策略\",\n    \"sub_title\": \"UBP16的发现与功能假说\",\n    \"kicker\": \"科学问题\",\n    \"bullets\": [\n      \"前期筛选发现ubp16突变体对盐胁迫高度敏感\",\n      \"UBP16是否通过去泛素化调控SOS1蛋白稳定性？\",\n      \"研究策略：遗传学+生化+生理学三管齐下\",\n      \"预期：UBP16去泛素化稳定SOS1，增强Na+外排能力\"\n    ],\n    \"conclusion\": \"核心假说：UBP16通过去泛素化SOS1维持其蛋白稳定性，从而调控耐盐性\",\n    \"notes\": \"作者在前期筛选中发现ubp16突变体对盐胁迫高度敏感，由此提出科学问题：UBP16是否通过去泛素化调控SOS1蛋白稳定性？研究采用了遗传学、生化和生理学三种手段相结合的策略。\"\n  },\n  {\n    \"page_num\": 6,\n    \"page_type\": \"section\",\n    \"title\": \"主要结果\",\n    \"section_no\": 2,\n    \"notes\": \"接下来进入第二部分，主要结果展示。\"\n  },\n  {\n    \"page_num\": 7,\n    \"page_type\": \"figure\",\n    \"title\": \"图1 ubp16突变体盐敏感表型\",\n    \"sub_title\": \"UBP16缺失导致耐盐性显著下降\",\n    \"kicker\": \"遗传学验证\",\n    \"bullets\": [\n      \"ubp16突变体在150mM NaCl处理下根长显著缩短\",\n      \"回补株系恢复了野生型耐盐表型\"\n    ],\n    \"conclusion\": \"UBP16正调控拟南芥耐盐性\",\n    \"image_path\": \"JPGR_p6_0.jpeg\",\n    \"image_caption\": \"Fig. 1 ubp16 mutant shows salt-hypersensitive phenotype.\",\n    \"notes\": \"请看这张图，左 panel 是野生型、突变体和回补株系在正常和盐胁迫条件下的根长比较。可以看到ubp16突变体在盐处理下根长显著缩短，而回补株系恢复了正常表型，说明UBP16正调控耐盐性。\"\n  },\n  {\n    \"page_num\": 8,\n    \"page_type\": \"figure\",\n    \"title\": \"图2 UBP16蛋白结构域分析\",\n    \"sub_title\": \"UBP16含有典型去泛素化酶催化结构域\",\n    \"kicker\": \"结构分析\",\n    \"bullets\": [\n      \"UBP16含C19泛素特异性蛋白酶催化结构域\",\n      \"催化活性关键位点Cys和His保守\"\n    ],\n    \"conclusion\": \"UBP16是典型的去泛素化酶家族成员\",\n    \"image_path\": \"JPGR_p7_1.jpeg\",\n    \"image_caption\": \"Fig. 2 Domain architecture of UBP16.\",\n    \"notes\": \"这张图展示了UBP16的蛋白结构域，可以看到它含有典型的C19去泛素化酶催化结构域，催化活性关键位点Cys和His都很保守，说明它是典型的去泛素化酶。\"\n  },\n  {\n    \"page_num\": 9,\n    \"page_type\": \"figure\",\n    \"title\": \"图3 UBP16与SOS1蛋白互作验证\",\n    \"sub_title\": \"酵母双杂交与Co-IP证实互作\",\n    \"kicker\": \"互作验证\",\n    \"bullets\": [\n      \"酵母双杂交显示UBP16与SOS1 C端互作\",\n      \"Co-IP实验在体内证实两者形成复合物\"\n    ],\n    \"conclusion\": "},{"path":"references/formula-rendering.md","content":"# 公式保真渲染规则\n\n## 概述\n\n检测文献中的关键数学公式（LaTeX 风格），通过 LaTeX 渲染为高清 PNG 嵌入 PPTX，保证公式可读性。\n\n---\n\n## 公式检测\n\n### 1. 检测范围\n\n在 S1 文献解析时，从 `<stem>.md` 中检测以下 LaTeX 公式标记：\n\n| 标记形式 | 示例 | 处理方式 |\n|----------|------|----------|\n| `$...$` (inline) | `$E = mc^2$` | 渲染为 PNG，inline 嵌入 |\n| `$$...$$` (display) | `$$\\int_0^1 f(x)dx$$` | 渲染为 PNG，单独占一行 |\n| `\\(...\\)` (inline) | `\\(x^2 + y^2 = r^2\\)` | 渲染为 PNG，inline 嵌入 |\n| `\\[...\\]` (display) | `\\[\\sum_{i=1}^n x_i\\]` | 渲染为 PNG，单独占一行 |\n\n### 2. 检测策略\n\n- 在 `<stem>.md` 中搜索所有 LaTeX 数学标记\n- 生成公式清单，每公式记录：页码、上下文、复杂度评估\n- 判断规则：\n  - **简单公式**（单行、无矩阵、无嵌套分式）：尝试保留为可编辑文本（Unicode 数学符号 + 上下标）\n  - **复杂公式**（多行、矩阵、分式、积分、求和）：渲染为高清 PNG\n\n### 3. 公式清单格式\n\n```json\n{\n  \"formulas\": [\n    {\n      \"id\": \"formula_01\",\n      \"latex\": \"\\\\frac{d[P]}{dt} = k_{cat}[E]_0\\\\frac{[S]}{K_m + [S]}\",\n      \"source_page\": 5,\n      \"context\": \"Michaelis-Menten equation\",\n      \"complexity\": \"complex\",\n      \"render_as\": \"png\",\n      \"width\": 250,\n      \"height\": 60\n    },\n    {\n      \"id\": \"formula_02\",\n      \"latex\": \"p < 0.05\",\n      \"source_page\": 8,\n      \"context\": \"Statistical significance\",\n      \"complexity\": \"simple\",\n      \"render_as\": \"text\"\n    }\n  ]\n}\n```\n\n---\n\n## LaTeX 渲染为 PNG\n\n### 1. 渲染脚本\n\n使用 `matplotlib` + `mathtext` 渲染（不需要完整 LaTeX 环境）：\n\n```python\n# render_formula.py\nimport matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\n\ndef render_latex_to_png(latex_str, output_path, dpi=300):\n    \"\"\"\n    将 LaTeX 公式渲染为高清 PNG。\n    dpi=300 确保高分辨率，适合 PPT 嵌入。\n    \"\"\"\n    fig, ax = plt.subplots(figsize=(4, 0.8))\n    ax.axis('off')\n    ax.text(0.5, 0.5, f'${latex_str}$',\n            fontsize=14,\n            horizontalalignment='center',\n            verticalalignment='center',\n            transform=ax.transAxes)\n    fig.savefig(output_path, dpi=dpi, bbox_inches='tight',\n                pad_inches=0.1, transparent=True)\n    plt.close(fig)\n```\n\n### 2. 调用方式\n\n```bash\npython ${PAPER_REPORT_PPT_DIR}/scripts/render_formula.py <formula_list.json> <output_dir>\n```\n\n输出：`<output_dir>/formula_01.png`, `formula_02.png`, ...\n\n### 3. 渲染参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| dpi | 300 | 输出分辨率，300 DPI 保证 PPT 中清晰显示 |\n| fontsize | 14 | 公式字号 |\n| bbox_inches | tight | 自动裁剪白边 |\n| transparent | true | 透明背景，适合嵌入 PPT |\n| pad_inches | 0.1 | 最小内边距 |\n\n---\n\n## 公式嵌入 PPTX\n\n### 1. 图片契约\n\n公式图片在 Strategist 阶段标记为：\n\n```\nAcquire Via: formula\nStatus: Existing\nCrop Policy: no-crop\nDimensions: 见 render_formula.py 输出\n```\n\n### 2. 嵌入方式\n\n- **Display 公式**（`$$...$$`）：在 SVG 中单独占一行，居中显示\n- **Inline 公式**（`$...$`）：在 SVG 中与正文同行，保持基线对齐\n- **简单公式**（保留为文本）：在 SVG 中用 `<text>` 元素 + Unicode 数学符号\n\n### 3. SVG 嵌入示例\n\n```xml\n<!-- Display 公式（复杂，渲染为 PNG） -->\n<image href=\"../images/formula_01.png\"\n       x=\"100\" y=\"400\" width=\"300\" height=\"60\"\n       preserveAspectRatio=\"xMidYMid meet\"/>\n\n<!-- Inline 公式（简单，保留为文本） -->\n<text x=\"100\" y=\"500\" font-size=\"14\" fill=\"#333\">\n  Statistical significance: p &lt; 0.05\n</text>\n```\n\n---\n\n## 公式质量检查\n\n### 1. 渲染检查\n\n- 检查 PNG 是否成功生成，文件大小 > 0\n- 检查公式是否清晰可读（无模糊、无截断）\n- 检查公式背景是否透明\n\n### 2. 内容检查\n\n- 对比渲染结"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation. Skill: paper-report-ppt Owner: mlj-1212 Summary: Turn research PDFs into editable group-meeting PPTX following the paper's structure; embed figures verbatim. Invoke when converting a paper into a group meeting presentation. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-04T12:26:12.609Z | auto paper-report-ppt 0.1.0 — Initial Release - Generate editable group-meeting PPTX directly from research article PDFs, ma","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":973,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:06:30.629Z","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-09T15:06:30.629Z","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-10T00:30:59.422Z","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"}]}}}