Community图像github.com

研究海报生成

将PDF格式的摘要转换为美观、可编辑的科学会议海报(.pptx + PDF + 预览图),风格统一,包含真实图表、可验证引用、大号易读排版以及渲染与质量检测循环。

研究海报生成 是什么?

该技能能够自动将PDF格式的学术摘要转化为用于会议展示的科研海报(例如RSNA、AHA、ASH、ASCO等会议),生成可编辑的PowerPoint文件(.pptx)以及可直接提交的PDF和预览PNG。它能够从用户提供的参考海报中提取样式特征(如配色、字体、布局),并严格遵循会议主办方或机构的视觉规范。技能内置了多项质量保障机制:所有数据与引用均需从原始来源验证,图表自动生成且默认保持PowerPoint原生可编辑性(避免触发修复弹窗),并通过字体大小、文字重叠、图表安全性的自动化检查确保海报的最终效果。同时,支持自主运行模式,可根据默认参数快速生成初稿,也支持交互式确认以精确满足用户需求。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adam-j-ali/research-poster-skill/tree/HEAD/skills/research-poster

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

引用是必需的,不可省略

本技能附带 6 份参考文件 和两个工作示例(位于 references/examples/ 目录)。 在需要执行某个步骤之前,请先阅读对应的参考文件,切勿在事后检查时再阅读。

  • references/data-integrity.md: 根据源数据复现摘要内容(阶段 1)
  • references/venues.md: 查找并确定会议场所的规则以及机构品牌套件(阶段 0 和阶段 2)
  • references/design-rules.md: 可读性底线、字体比例、布局、风格(阶段 3)
  • references/build-and-charts.md: 原生图表、修复触发机制、python-pptx 陷阱(阶段 4)
  • references/rendering-qa.md: 渲染、可读性与重叠检查、二维码(阶段 5)
  • references/citations.md: 验证、格式化、添加超链接(阶段 2)

目标

根据 PDF 格式的摘要,制作一份符合会议要求且风格统一的科研海报。最终交付物为可编辑的 PowerPoint (.pptx) 文件、PDF 文件以及预览 PNG 图像。默认情况下,所有元素(文字、分区色块、统计卡片、图表)均为原生且可编辑的状态。数据、数字和引用必须真实且经过验证;设计应确保远距离可读、留有足够呼吸空间,并与作者的风格(如果提供了参考海报,则从中提取)相匹配。

本技能包含一套经过实践检验的工作流程。在需要执行某个步骤之前,请务必先阅读对应的参考文件,切勿在事后检查时再阅读(此时错误已存在于输出中);不要重新发明已经解决的部分(如图表安全性、渲染、字体排版比例)。脚本位于 ${CLAUDE_SKILL_DIR}/scripts/ 目录;工作示例和详细指南位于 ${CLAUDE_SKILL_DIR}/references/ 目录。渲染功能使用 LibreOffice(跨平台)或 macOS 上的 Microsoft PowerPoint;请参阅 references/rendering-qa.md。


要求

  • Python 3 及以下库:python-pptx (>= 1.0)、matplotlib、pdfplumber、pypdfium2、pillow、pypdf、pymupdf。
  • 一个渲染器:LibreOffice(soffice/libreoffice 在系统 PATH 中,任何操作系统)或安装了 Microsoft PowerPoint 的 macOS。 图表修复检查脚本(scripts/check_charts.py)仅需 Python,可在任何操作系统上运行。
  • 安装命令:pip install python-pptx matplotlib pdfplumber pypdfium2 pillow pypdf pymupdf(如需二维码功能可添加 qrcode 库,或使用 macOS 上的 scripts/qr.swift 脚本)。如果 pip 因 "externally-managed-environment" 报错,请使用虚拟环境: python3 -m venv ~/.venvs/poster && ~/.venvs/poster/bin/pip install <相同列表>,然后使用该虚拟环境的 Python 运行生成脚本,并在执行 render.sh 时传入 PYTHON=~/.venvs/poster/bin/python。

配套技能

本技能所需的一切都已捆绑;构建、渲染和检查均依赖于本目录内的脚本。以下可选技能可增加效果。请使用任何已安装的技能。如果缺少某个技能,请继续执行,无需中止,并向用户告知一次该技能的一行安装命令。

技能添加的功能安装命令 (在 Claude Code 中)
Anthropic 的 pptx + pdf (document-skills)编辑现有海报、处理难以解析的 PDF/plugin marketplace add anthropics/skills, 然后 /plugin install document-skills@anthropic-agent-skills
frontend-design调色板、字体配对、布局方向/plugin install frontend-design@claude-plugins-official
K-Dense 的 citation-management (MIT 许可证)PubMed / DOI 查询、格式化参考文献将 github.com/K-Dense-AI/scientific-agent-skills 仓库中的 skills/citation-management 目录复制到 ~/.claude/skills/
K-Dense 的 scientific-visualization (MIT 许可证)期刊风格的 matplotlib 图表(图像图表路线)同一仓库,skills/scientific-visualization 目录

不要使用 K-Dense 的 pptx-posters(它使用 HTML/CSS 制作海报,会与当前需求冲突)和 scientific-writing(它专门处理学术文章正文,不适用于海报所需的要点列表)。引用检查无需额外技能:通过网络搜索和 fetch 工具查询 PubMed / Crossref / doi.org 即可完成。


执行上下文

可以交互式运行,也可以完全自主运行。下方每个“门”都是一个 AskUserQuestion 操作,并带有清晰标记的推荐默认值,因此自主运行模式可以直接使用默认值并声明已采用该默认值。

  • 🟢 自动(无需询问):读取输入、研究、提取风格、构建、渲染、自我质量检测并迭代、在海报专属工作目录中执行 git init 并提交、清理中间文件。
  • 🟡 询问(附带推荐默认值):海报尺寸 / 会议规范、作者 + 单位 + 徽标确认、语言风格、引用深度、图表引擎(可编辑原生 vs. 图像)、数据是否为最终版本。
  • 🔴 禁止:捏造任何数字、结果或引用;篡改研究报告的发现;覆盖用户已最终确定的文件(始终另存新副本);输出会触发 PowerPoint 修复提示的文件;将患者的个体数据复制出作者的文件或发送到任何网络服务(应原地读取,仅保存聚合统计数据)。

原则

  • 在构建前(特别是在与用户协作时)重申计划并确认;在提问时附上推荐建议,以便流程也能自主运行。
  • 探索并验证,而非凭空假设。使用网络搜索和网页阅读器进行研究;在使用任何 API 前,查阅其最新文档。验证每条引用的准确性(与 PubMed 或 DOI 对照)。
  • 保持简洁和 DRY(不重复自己)。复用捆绑的脚本和示例;进行适配,而非重写。所有图表和标注数据来自同一个可编辑数据块,确保数字更新一处即可同步。
  • 精心设计:强有力的视觉层级、充足的留白、高对比度、远距离可读的字体。避免使用霓虹色、重度渐变、发光效果和 AI 生成的图像。遵循作者的会议场所惯例。
  • 轻量 TDD:在构建前,断言每个图表的百分比与原始数据重新计算的数值一致。
  • 在向用户展示前进行严格自我质量检测:渲染、检查、修复、重复。
  • 绝不捏造数据或引用,也绝不篡改研究报告的发现。

流程

阶段 0:输入接收与确认

  1. 收集输入:摘要 PDF(必需);可选的参考海报(.pptx,用于提取风格);可选的徽标文件;任何更新的数据。
  2. 复述你理解的内容,然后批量处理询问(一次或两次 AskUserQuestion 调用,每个选项都标记推荐默认值)。推荐默认值 [方括号内]:
    • 尺寸 / 会议场所:首先验证会议场所的电子海报规范 [默认];否则采用 16:9 单页幻灯片 (48x27 英寸),该尺寸与大多数屏幕电子海报查看器兼容。
    • 作者、单位和徽标:与作者本人确认,而非摘要的提交信息(通常非最终版)。多个机构意味着多个徽标 [询问使用哪个]。
    • 语言风格:适度的学术精饰 [默认];数据和发现绝不更改。
    • 引用:4-6 条经过验证的参考文献,带有可点击的 DOI/URL 链接 [默认]。
    • 图表引擎:可编辑的原生图表 [默认];如需更精美的图像图表可提出。
    • 数据是最终版本,还是后续还会补充?如果是持续进行中的工作,则构建时应确保数字易于更新(使用单一数据块),并保留初步性框架。
    • 是一页式的海报还是演讲幻灯片组?“会议用的 PowerPoint” 可能指代两者 [海报]。
    • 如果作者提供了数据文件,且数据与摘要内容不一致:以作者的分析文件为准;否则重新计算并复现(参见 data-integrity.md)。
    • 二维码的链接(如视频、全文)。缺失的链接将成为带标记的占位符 [默认]。
    • 上传截止日期:询问接收邮箱中的通知邮件;截止日期可能已经很近了。
  3. 自主模式:采用默认值,声明已采用,继续执行。

阶段 1:完整读取所有输入

  1. 如果环境中有可用的配套技能(如文档/pptx 和 pdf、数据可视化、前端设计、引用管理、科学可视化),可以选用。它们是增强手段; 以下工作流程通过 python-pptx、matplotlib 和渲染器即可独立完成。
  2. 完整读取摘要:使用 pdfplumber 提取文本(如果是 .docx 格式则使用 python-docx)、进行视觉渲染以及 OCR/图像检查,确保不遗漏任何图表。捕获标题、作者、单位、所有数字及其对应的 n/N。
  3. 如果作者提供了底层数据,先读取其结构,然后使用 analysis.py 根据数据重现摘要中的每一个数字,该脚本将断言一致性并将聚合数据写入 data.json。检查标准差 (SD) 与标准误 (SE)、配对组均值与分组均值、每个数字各自的 n、类别标签与原始注释是否一致,以及第一行数据。参见 references/data-integrity.md。
  4. 如果提供了参考海报,提取其风格:幻灯片尺寸、调色板(色块和强调色填充)、字体和字号、分区栏结构以及徽标。使用 bash ${CLAUDE_SKILL_DIR}/scripts/render.sh 渲染它以查看效果。参见 references/design-rules.md。
  5. 确认 Python 依赖:pip install python-pptx matplotlib pdfplumber pypdfium2 pillow pypdf pymupdf。

阶段 2:研究

  1. 在学会的官方网站上验证本年度会议场所的电子海报规范(长宽比、字体、媒体格式、上传供应商、截止日期、要求的披露声明),并注明日期。确认每个来源所对应的组织。参见 references/venues.md,该文件还涵盖了如何从已发布的机构品牌套件中提取调色板、字体和徽标。
  2. 验证并获取引用:必须是真实的、经过 PubMed/DOI 检查的引用,带有超链接和访问日期;包括作者实际使用的注册数据和灰色文献来源,而不仅仅是期刊。参见 references/citations.md。绝不捏造引用。
  3. 获取引言所需的任何背景信息。在构建时查阅当前最新的库文档。

阶段 3:设计

  1. 设定风格令牌、列网格、清晰的视觉层级、海报级别的字体排版、充足的留白和强对比度。参见 references/design-rules.md。
  2. 诚实地选择图表类型:环形图/饼图仅用于部分与整体的关系;条形图用于独立或非互斥的比例关系;大号数字卡片用于单个数值。为每个图表标注其 n/N。参见 references/build-and-charts.md。
  3. 定义一个可编辑的数据块,用于驱动所有图表和标注。

阶段 4:构建 (python-pptx, TDD-lite)

  1. 根据内容和风格,适配 references/examples/build_poster_example.py(可编辑原生图表)或 references/examples/make_charts_example.py(matplotlib 图像图表)。
  2. 仅使用 PowerPoint 安全的样式构建原生可编辑图表。唯一硬性规则:切勿设置环形图/饼图的数据标签位置 (position),该设置正是导致 PowerPoint 修复并删除图表的元凶。单个扇区填充、图例、百分比标签、数字格式和坐标轴字体都是安全的。将环形图百分比放在图例中,并在中心孔洞放置大数字。完整方法参见 references/build-and-charts.md。
  3. 轻量 TDD:在保存前,断言每个显示的百分比与源数字重新计算的结果一致。
  4. 根据阶段 0 的确认结果正确填写作者、单位和徽标。
  5. 可读性检查:根据一个具有底线(22 磅,在 48 英寸幻灯片上)的单一字体比例表设置所有字号,设置每个图表的 chart.font.size,并在构建结束时检查保存文件中的任何字号是否低于底线(使用 scripts/check_fonts.py)。参见 references/design-rules.md。
  6. 就绪检查:将尚未确认的项目(如作者列表、单位、披露声明、链接)保存在构建脚本中的 CONFIRMED 检查列表中。直至所有项目均为 True,输出文件应命名为 ..._DRAFT.pptx,在海报上清晰标记每个缺失项,并打印出仍待解决的项。

阶段 5:渲染与自我质量检测循环

  1. 使用 bash ${CLAUDE_SKILL_DIR}/scripts/render.sh <pptx> <out.pdf> <out.png> 1.7 进行渲染(使用 LibreOffice,或 macOS 上的 PowerPoint),然后查看 PNG。
  2. 对于原生图表,运行 python3 ${CLAUDE_SKILL_DIR}/scripts/check_charts.py <pptx>:如果任何环形图/饼图带有数据标签位置设置(会导致 PowerPoint 打开时删除图表),该脚本将失败。
  3. 运行 scripts/check_fonts.py <pptx> 和 scripts/check_overlap.py <rendered.pdf>,然后将渲染图缩小到 1920x1080,并查看最密集区域 1:1 的截图。解码渲染图中的每个二维码。参见 references/rendering-qa.md。
  4. 对照 references/rendering-qa.md 中的检查清单进行修复:无溢出或裁剪、字体足够大、有足够的呼吸空间、高对比度、列对齐、数字正确。持续迭代直到效果真正令人满意,然后才展示给用户。

阶段 6:交付、Git 与清理

  1. 另存为一个独立的、命名清晰的新副本;切勿覆盖用户已最终确定的文件。
  2. 交付 .pptx 文件、用于提交的 PDF 文件以及预览 PNG 文件。
  3. 如果需要,在海报工作目录中执行 git init 并提交,附带清晰的消息(如果是在现有海报上迭代,则先提交基线版本,以便保留之前的版本)。
  4. 删除中间渲染文件和临时文件;保留可重复的构建脚本。

成功标准

  • 交付物为可编辑的 .pptx 文件以及匹配的 PDF 文件(验证页面尺寸)和预览 PNG 文件
  • 图表是原生且可编辑的(默认),在 PowerPoint 中打开时不会出现修复提示
  • 每个百分比与源数字重新计算的结果一致;显示 n/N;如果数据是进行中的,则保留初步框架
  • 所有引用均为真实且经过验证,带有 DOI/URL 超链接
  • 作者、单位和徽标已与用户确认
  • 摘要中声明的每个数字均从源数据重现(当提供了数据时)
  • 没有低于底线大小的文本(check_fonts.py 检查通过),没有重叠的文本(check_overlap.py 检查通过),在 1080p 视图的 1:1 截图下清晰可读;留白充足,对比度强,列对齐
  • 渲染图中的每个二维码都能解码到其正确的链接;占位符的存在使文件保持为 DRAFT 状态
  • 如果提供了参考海报,风格与之匹配
  • 另存了新副本;用户的最终文件未被覆盖

相关技能