一站式学术Journal Club PPT制作技能

一站式学术Journal Club PPT制作技能。输入一篇科研论文PDF,自动完成:背景调研、作者信息整理、图表提取与标注、PPT脚本生成、配色美化,最终输出可直接演示的Journal Club幻灯片。支持Science/Nature/Cell等顶刊风格。

Audits

Pass

Install

openclaw skills install jcppt-place

JCPPT-PLACE - Journal Club PPT制作技能

概述

JCPPT-PLACE 是一站式学术Journal Club PPT制作技能。用户只需上传一篇科研论文PDF,即可自动完成从内容提取到最终演示文稿的全流程制作。

触发条件

当用户提到以下意图时使用此skill:

  • "帮我做journal club PPT"
  • "制作学术汇报PPT"
  • "上传了论文PDF,帮我做PPT"
  • "做journal club"
  • 任何涉及学术PPT制作、文献汇报的场景

核心流程

Step 1: PDF内容提取

使用pdfplumber提取PDF全文:

import pdfplumber

with pdfplumber.open('paper.pdf') as pdf:
    # 提取前15页(通常包含Introduction、Results)
    for page in pdf.pages[:15]:
        text = page.extract_text()
        if text:
            print(text)

关键信息提取:

  • 标题、作者、机构、DOI:第1页
  • 研究背景(Introduction):第1-3页
  • 研究方法(Methods):中间页
  • 核心结果(Results):主要图表所在页
  • 讨论与结论(Discussion/Conclusion):最后几页

Step 2: 背景调研

根据论文主题搜索相关文献补充背景:

  • 使用WebSearch搜索关键词
  • 补充该领域的研究现状
  • 引用权威综述文章

Step 3: 作者与机构信息

解析论文首页获取:

  • 第一作者、通讯作者
  • 单位机构
  • 研究团队背景(如有必要)
  • 参考文献引用信息

Step 4: 图片提取

从PDF提取Figure和Appendix图片:

import pdfplumber

with pdfplumber.open('paper.pdf') as pdf:
    # 提取图片
    for page in pdf.pages:
        for img in page.images:
            print(f"Image: {img['x0']}, {img['y0']}, {img['x1']}, {img['y1']}")

图片命名规范:

  • 主图:page{NN}_img{MM}.jpeg(如page03_img01.jpeg
  • 附图:page{NN}_img{MM}.png
  • 存储目录:{workspace}/meta1_figures/

Step 5: PPT脚本生成

生成基于pptxgenjs的Node.js脚本。

标准PPT结构(12-21页)

Slide内容说明
1Title标题、作者、DOI
2Background I领域概述
3Background II现有方法与局限
3.5Research Gaps研究空白(原论文描述)
4Background III技术基础(如CAST)
5Authors研究团队
6Results 1A核心结果1
7Results 1B核心结果2
8Results 1C核心结果3
...More Results继续结果页
LastConclusion总结与展望

配色方案(学术蓝金主题)

const C = {
  navyBg: `112340`,   // 深蓝背景
  blue: `1D4ED8`,     // 主蓝色
  blueMid: `3B82F6`,  // 中蓝色
  blueLt: `DBEAFE`,   // 浅蓝背景
  gold: `D4A574`,     // 金色强调
  goldLt: `FEF3C7`,   // 浅金背景
  text: `1E293B`,      // 深色文字
  muted: `64748B`,     // 次要文字
  card: `F8FAFC`,      // 卡片背景
  white: `FFFFFF`,     // 白色
};

关键函数

// 标题栏
function hdr(slide, title, subtitle) {
  slide.addShape(pres.shapes.RECTANGLE,{x:0,y:0,w:10,h:0.72,fill:{color:C.navyBg}});
  slide.addShape(pres.shapes.RECTANGLE,{x:0,y:0.72,w:10,h:0.04,fill:{color:C.blue}});
  slide.addText(title,{x:0.3,y:0,w:9.4,h:0.72,fontSize:20,...});
}

// 页脚(期刊引用)
function ftr(slide, n, total) {
  slide.addShape(pres.shapes.RECTANGLE,{x:0,y:5.47,w:10,h:0.155,fill:{color:C.blueLt}});
  slide.addText(`Authors et al., Journal DOI (Year)`,{...});
}

// 过渡问句
function addQ(slide, question) {
  slide.addShape(pres.shapes.RECTANGLE,{x:0.3,y:0.98,w:0.04,h:0.28,fill:{color:C.blue}});
  slide.addText(question,{x:0.42,y:0.98,w:9.2,h:0.28,fontSize:10.5,...});
}

// 图注
function addCap(slide, x, y, w, h, en, zh) {
  slide.addShape(pres.shapes.RECTANGLE,{x,y,w,h,fill:{color:C.blueLt},...});
  slide.addText(en + '\n' + zh,{...});
}

Step 6: 图片处理

  1. 将图片放入meta1_figures/目录
  2. 计算合适尺寸并插入PPT
function fitImg(origW, origH, maxW, maxH) {
  const ratio = origW / origH;
  let w = maxW, h = maxW / ratio;
  if (h > maxH) { h = maxH; w = maxH * ratio; }
  return { w, h };
}

Step 7: 生成与输出

node make_paper_ppt.js

输出文件:{workspace}/PaperName_JournalClub_v{version}.pptx

关键文件参考

文件路径说明
PPT模板脚本{workspace}/make_paper_ppt.js自动生成的PPT脚本
图片目录{workspace}/meta1_figures/Figure和Appendix图片
配色方案references/color_scheme.md学术蓝金配色
模板参考references/ppt_template.mdPPT模板结构

质量标准

  1. 忠实原文:所有描述必须基于原文,禁止编造数据
  2. 学术规范:中英双语图表标注
  3. 视觉统一:全篇使用统一配色方案
  4. 逻辑清晰:过渡问句连接各部分
  5. 引用准确:标注原文DOI和页码

常见问题

PDF编码问题

# 移除特殊字符
text = text.replace('\uf0a3', '')

Windows PowerShell输出

Set-Location workspace
& node script.js

图片宽高比

  • 保持原文宽高比
  • 主图最大尺寸:宽度5.0英寸,高度3.8英寸
  • 附图按比例缩小