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 | 内容 | 说明 |
|---|---|---|
| 1 | Title | 标题、作者、DOI |
| 2 | Background I | 领域概述 |
| 3 | Background II | 现有方法与局限 |
| 3.5 | Research Gaps | 研究空白(原论文描述) |
| 4 | Background III | 技术基础(如CAST) |
| 5 | Authors | 研究团队 |
| 6 | Results 1A | 核心结果1 |
| 7 | Results 1B | 核心结果2 |
| 8 | Results 1C | 核心结果3 |
| ... | More Results | 继续结果页 |
| Last | Conclusion | 总结与展望 |
配色方案(学术蓝金主题)
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: 图片处理
- 将图片放入
meta1_figures/目录 - 计算合适尺寸并插入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.md | PPT模板结构 |
质量标准
- 忠实原文:所有描述必须基于原文,禁止编造数据
- 学术规范:中英双语图表标注
- 视觉统一:全篇使用统一配色方案
- 逻辑清晰:过渡问句连接各部分
- 引用准确:标注原文DOI和页码
常见问题
PDF编码问题
# 移除特殊字符
text = text.replace('\uf0a3', '')
Windows PowerShell输出
Set-Location workspace
& node script.js
图片宽高比
- 保持原文宽高比
- 主图最大尺寸:宽度5.0英寸,高度3.8英寸
- 附图按比例缩小