mcpField
S
slides-polish

slides-polish

github.com/wanshuiyin文档处理18.2k414 次安装4 天前更新
代码仓库

关于 slides-polish

slides-polish 是面向已有 Beamer 或 PPTX 演示文稿的版式与字体打磨技能。它逐页对照参考 PDF 审查并实施针对性修复,保留原文件且不改动内容。

主要功能

  1. 01逐页对照参考 PDF 审查
  2. 02修复字体与文本框布局
  3. 03调整标注框和排版细节
  4. 04保留原始文件并生成版本化输出

适用场景

  1. 01统一演示文稿与参考稿的视觉比重
  2. 02修正 PPTX 字体比例和文本框
  3. 03处理 Beamer 幻灯片的排版瑕疵

MCP 相关

该技能通过 MCP 路由调用审查者进行幻灯片审查;Codex 路由使用全新上下文逐页检查。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill slides-polish

安装后在 Claude Code 中输入/slides-polish确认已加载。

详细介绍

幻灯片润色:逐页 Codex 审阅与定向版式修复

每次审阅前,请遵循可选审阅者: 解析调用 → .aris/reviewer.json → 默认使用 Codex(全新的原生审阅者), 并通过规范的辅助解析器使用 reviewer_route.py,同时保留此审阅环节的等级、 全新上下文、源文件/图像输入和确定性门控。 下方的 Codex 示例/固定配置仅适用于 backend=codex;其他路由使用各自的 首次调用/回复契约。保存路由和实际返回的身份信息; 不可用的选项标记为 REVIEW_UNAVAILABLE。根据实际的系列/完成情况/范围 对验收进行分类。将调用中的审阅者/模型/effort 覆盖项 传递给包含审阅者的子任务。生成工作进程保持不变。

润色生成的幻灯片组——Beamer(.tex + .pdf)和/或 PPTX——通过对照参考视觉 逐页进行 Codex 审阅,并实施精准修复(字体缩放、文本框调整、标注框样式、 破折号间距、匿名占位符、中文字体提示、意外泄漏的斜体样式), 直到每张幻灯片的视觉分量都与参考图相当。

润色:$ARGUMENTS

本技能的作用——及不包含的内容

本技能仅润色版式和排版。 这是针对现有幻灯片组的生成后视觉检查。

严格的范围规则(不可或缺——参见“硬性不变量”):

  • 它不会改写内容、主张、数字、引文、URL、作者姓名、所属机构或实验结果。
  • 除非用户明确要求(例如,— add-slide/— drop-slide 标志),否则它不会添加、删除或重新排序幻灯片。
  • 它不会根据论文源文件生成大纲、演讲稿或新的 Beamer/PPTX。这是 /paper-slides 的工作。
  • 它不会更改图表或公式内容。

如果你还没有幻灯片组,请先运行 /paper-slides。如果你想更改内容,请返回 /paper-slides 的阶段 1-2(或手动重写大纲)——不要为此运行 /slides-polish。

常量

  • REVIEWER_MODEL = gpt-6-astra — 用于逐页审查的 Codex MCP 模型。xhigh 推理能力不可妥协(参见 ../shared-references/effort-contract.md)。如果账户无法使用 gpt-6-astra,请遵循 ../shared-references/reviewer-routing.md 中的规范能力回退链(模型回退从 gpt-6.1-sol+xhigh 开始;仅在用户明确指定时才使用 gpt-5.4)。
  • REVIEWER_REASONING = xhigh — 硬性不变项;effort 参数不会改变此设置。
  • CONTEXT_POLICY = fresh — 每次逐页审查都使用一次全新的 Codex 审查调用(使用 spawn_agent,绝不使用 send_input)。参见 ../shared-references/reviewer-independence.md。这样可以避免审查者受先前修复的影响。
  • REFERENCE_VISUAL — 用户希望精修后的演示文稿在视觉分量上(字体比例、色彩规范、标注密度)与之保持一致的 PDF 路径。必需输入。如果只精修 PPTX,同一场演讲的 Beamer 编译稿是理想参考。如果尚无参考资料,请询问用户;不要默认使用“Why-RF”或任何预设。
  • STYLE_PRESET = generic — 默认风格锚点。其他选项:why-rf(源自 2025 年学术演讲的学术极简风格)、neurips、icml、iclr、cvpr。预设会影响色彩规范和元素库;参考 PDF 才是视觉判断的准绳,而非预设。
  • PPTX_SCALE_HINT = 1.6× — 为使视觉分量匹配,在 16:9 的 13.33"×7.5" PowerPoint 中,将 Beamer 磅值转换为 PPTX 磅值的启发式倍率。范围为 1.5-1.8×。实际倍率始终通过视觉审查验证,绝不盲目应用。
  • INTERACTIVE = false — 为 false 时,自动应用推荐的修复并继续处理下一张幻灯片。为 true(— interactive)时,每次修复前都会暂停并等待用户确认。
  • OUTPUT_VERSIONING = on — 输出为带版本号的文件,命名为 <input-stem>_polished.<ext>(或 _polished_v2、_v3 等)。输入快照会保留为 <input-stem>_pre_polish.<ext>。**绝不覆盖原文件。**所有编辑操作都针对 _polished 工作副本。

💡 覆盖设置示例

  • /slides-polish talk_pptx/talk.pptx — reference: talk_beamer/main.pdf — style: why-rf
  • /slides-polish talk_beamer/ — reference: ./reference_talk.pdf — style: generic — effort: max
  • /slides-polish talk.pptx — reference: ./why_rf_2025.pdf — interactive

先决条件

该技能会在阶段 0 检测并报告缺少的先决条件;不会自动安装。必需项:

  • Python:python3 和 python-pptx>=0.6(pip install python-pptx)。
  • PDF 检查:pdfinfo,以及用于将幻灯片渲染为 PNG 的 pdftoppm(poppler,优先)或 mutool draw(mupdf)。逐页 Codex 调用必须能看到幻灯片的实际像素,而不只是文本提取结果,因此这些工具是必需的。渲染命令:pdftoppm -r 150 -png <pdf> <out-stem>(或 mutool draw -o <out-stem>-%d.png -r 150 <pdf>)。
  • PPTX → PDF 渲染:优先使用 soffice(LibreOffice 无头模式);否则用户必须在 PowerPoint/Keynote 中手动导出 PDF。
  • LaTeX(仅 Beamer 侧):xelatex(CJK)或 pdflatex,以及用于干净地重新编译的 latexmk。阶段 2 中的 Beamer 修复模式可能需要以下 LaTeX 宏包:microtype(章节标签中的字距调整)、array(左对齐的 p 列)、tcolorbox(横幅和标注框)、ctex 或 xeCJK(CJK)、tikz + tikz-cd(图表)。
  • 已选定的审查者:在阶段 0 之前解析路由。如果不可用,则以 REVIEW_UNAVAILABLE 停止;不要默认改用其他提供方。其图像/PDF 输入能力必须满足逐页视觉审查的要求。

回退规则:

  • 如果缺少 pdftoppm/mutool → 请用户安装,不要继续(未渲染页面的视觉审查会导致 Codex 反馈置信度较低)。
  • 如果缺少 soffice 且输入为 PPTX → 请用户使用其幻灯片工具导出 PDF;导出完成后再继续。

输入

从 $ARGUMENTS 和项目目录中自动发现:

  1. 幻灯片源文件:
    • 包含 *.pptx 的目录,或 talk_beamer/main.tex + main.pdf,或两者兼有。
    • 特定文件路径(talk.pptx 或 main.tex)。
  2. 参考 PDF(— reference: <path>,必填)。如果未提供,此技能会提示用户。不得静默替代。
  3. 样式预设(— style: <preset>,默认值为 generic)。会影响颜色十六进制代码和元素库;参见下文的“样式预设”。
  4. 工作量(— effort: lite | balanced | max | beast,默认值为 balanced)。参见“工作量级别”。
  5. 交互标志(— interactive)。每修复一张幻灯片后暂停。

输出布局

<deck-dir>/
├── <stem>.pptx                       # original (untouched)
├── <stem>_pre_polish.pptx            # snapshot before any edit
├── <stem>_polished.pptx              # versioned working output
├── <stem>_polished.pdf               # rendered (when conversion available)
└── ... (Beamer files mirrored)

.aris/slides-polish/<deck-stem>/
├── POLISH_STATE.json                 # phase + per-slide status + version pointer
├── INSPECT_<stem>.json               # pre-polish shape inventory
├── TRIAGE.md                         # Phase-1 verdict matrix (per-slide PASS/NEEDS-WORK/BLOCKER)
├── POLISH_CHANGELOG.md               # per-slide fix log (auditable)
└── traces/                           # codex traces (per-slide review JSON, see review-tracing.md)
    ├── slide_01.json
    ├── slide_02.json
    └── ...

此技能会在 .aris/slides-polish/<deck-stem>/ 下维护一个自包含的缓存。每次调用的 Codex 跟踪记录也遵循共享约定 .aris/traces/slides-polish/<date>_runNN/,详见 ../shared-references/review-tracing.md。如果存在 "status": "in_progress" 且文件未超过 24 小时的 POLISH_STATE.json,则可跨会话恢复。

注意:像 /paper-slides 这样的现有技能可能会使用同目录下的状态文件(例如 slides/SLIDES_STATE.json)。/slides-polish 会将其状态保存在 .aris/ 中,以免幻灯片目录中出现润色专用的杂项。

工作流

阶段 0:清点、检查、分类
  1. 发现输入:解析 $ARGUMENTS;定位幻灯片文件;检查先决条件;输出简要清点报告。
  2. 确认参考 PDF:验证文件存在,且页数与输入幻灯片相同(或至少不少于输入幻灯片页数)。如果不匹配,询问用户。
  3. 检查形状:运行检查器(下文的阶段 0 子步骤),生成 INSPECT_<stem>.json,列出每张幻灯片上的所有文本框和形状,包括:形状 ID、类型、文本内容(转义后)、每个文本运行的字号、以英寸为单位的边界框、填充色/线条颜色、图片尺寸,以及是否存在演讲者备注。此文件是后续按文本查找形状的依据。
  4. 创建原始快照:执行 cp <stem>.pptx <stem>_pre_polish.pptx(如果存在 Beamer,也复制 .tex)。之后的所有编辑都针对 _polished 副本进行。
  5. 必要时将 PPTX 渲染为 PDF(soffice --headless --convert-to pdf)。如果不可用,提示用户导出。
  6. 将 PDF 渲染为 PNG:pdftoppm -r 150 <pdf> .aris/slides-polish/<stem>/png/page 会为每张幻灯片生成一张 PNG;在逐页审查时将其传给 Codex。
  7. 分类检查:调用一次全新的 Codex,检查全部 N 张幻灯片,并将 PPTX-PDF(或 Beamer PDF)与参考文件进行比较。输出:逐页判定矩阵。
检查器约定

此技能为 inspect_pptx.py 提供约定,而非固定实现。**首次运行时,如果 .aris/slides-polish/<deck-stem>/inspect_pptx.py 下不存在此脚本,则根据此约定创建。**实现可以演进;下游阶段依赖的是此约定。

命令行接口:

python3 inspect_pptx.py --pptx <input.pptx> --out <state-dir>/INSPECT_<stem>.json
# exit 0 on success, 2 on missing python-pptx, 3 on parse failure

递归遍历组合形状;呈现表格单元格和占位符。通过 EMU_PER_INCH = 914400 将所有几何尺寸从 EMU 转换为英寸。计算 notes_text_hash,值为 sha256(notes_text),用于阶段 4 的字节级完整性检查。架构:

{
  "slide_count": 22,
  "slide_size_in": [13.33, 7.5],
  "slides": [
    {
      "index": 0,
      "page_number_text": "1 / 22",
      "has_notes": true,
      "notes_text_hash": "sha256:…",
      "shapes": [
        {
          "id": "13",
          "name": "TextBox 3",
          "shape_path": ["13"],
          "parent_group_ids": [],
          "type": "TEXT_FRAME",
          "placeholder_type": null,
          "table_cell": null,
          "text": "ARIS",
          "runs": [
            {"text": "ARIS", "font_pt": 80.0, "bold": false,
             "italic": false, "color_rgb": "1F1F1F"}
          ],
          "bbox_in": {"left": 0.5, "top": 1.6, "width": 12.33, "height": 0.95},
          "fill_rgb": null,
          "line_rgb": null,
          "image_size_px": null
        }
      ]
    }
  ]
}

架构说明:

  • shape_path:从最外层组合到叶形状的形状 ID 列表。
  • parent_group_ids:如果形状位于幻灯片根层,则为空。
  • type:以下之一:TEXT_FRAME | PICTURE | AUTO_SHAPE | GROUP | TABLE | CONNECTOR | PLACEHOLDER。
  • placeholder_type:例如 TITLE | BODY | OBJECT | NONE。
  • table_cell:如果形状是表格单元格,则为 {row, col};否则为 null。
  • 所有十六进制颜色均为 6 个字符的大写字母,不带前导 #。
  • 所有几何尺寸均以英寸为单位,四舍五入到小数点后 4 位。
分类检查的 Codex 提示词

请先解决此审查槽位;以下是 backend=codex 的示例。

spawn_agent:
  model: gpt-6-astra
  reasoning_effort: xhigh
  message: |
    Triage pass. For each of N slides in <pptx-pdf-path>, compared against
    <reference-pdf-path>, give one line:

      Slide K | PASS | NEEDS-WORK | BLOCKER — <one-sentence reason>

    Focus on: visual-weight match, text-frame overflow, page-number overlap,
    awkward title wraps, italic style leaks, Chinese tofu/missing-glyph
    boxes, callout-box color discipline, anonymity leaks (e.g., real titles
    appearing where placeholders should be).

    Do NOT rewrite content. Do NOT propose font scaling for slides that
    already read fine. Do NOT comment on speaker notes.

    End with a one-line summary: "K BLOCKERS, K NEEDS-WORK, K PASS."

将矩阵保存到 TRIAGE.md。在开始深入处理前,先呈现给用户。

第 1 阶段:逐页审查与修复循环

对于每张被标记为 NEEDS-WORK 或 BLOCKER 的幻灯片,开启一个专门的新线程调用 Codex。立即应用返回的修复(受 INTERACTIVE 限制),重新编译或保存,然后转到下一张幻灯片。

逐页循环,而非批量处理。 根据经验:逐页调用 Codex,经过 1–2 轮润色即可收敛;而单轮批量审查始终无法收敛。

逐页 Codex 提示词模板

先解决此审查项;以下是 backend=codex 示例。

spawn_agent:
  model: gpt-6-astra
  reasoning_effort: xhigh
  message: |
    SLIDE K review. Compare PPTX page K against reference page K.

    Files:
    - PPTX page rendering: <png-path>/page-K.png
    - Reference page rendering: <ref-png-path>/page-K.png
    - Source: <pptx-file-path> (slide index K-1) and/or <main-tex-path>
    - Inspector inventory for slide K: <inspect-json-slide-K-snippet>

    Slide K title (from inventory): "<title>".

    Style anchor: <style-preset> + reference PDF.

    Give:
    1. Status: PASS / NEEDS-WORK / BROKEN
    2. What's working (1-2 specifics)
    3. What's drifting vs reference (1-3 specifics)
    4. Concrete python-pptx (or .tex) fixes:
       - Identify shapes by their text content (NOT by index — index drifts).
       - Use unique-prefix substring matching; if duplicate matches, abort
         and request human disambiguation rather than touching the first.
       - Give before/after snippets.
    5. If a fix would change CONTENT (claims, numbers, anonymity placeholder
       text, etc.), STOP and report it instead of suggesting it.

    End: VERDICT: PASS | NEEDS-WORK | BROKEN. Under 500 words.
应用修复

Codex 返回结果后,调用 apply_fix(slide_index, fix_block),该函数会:

  1. 加载 _polished 工作副本。
  2. 通过 text_frame.text 子字符串定位每个目标形状;若匹配项不唯一则断言失败或中止。
  3. 应用编辑(字号、位置、颜色、斜体、行距)。
  4. 原子方式保存(写入临时文件后重命名)。
  5. 将更改记录到 POLISH_CHANGELOG.md(一行:Slide K | <change> | reason)。

每处理完 3 张幻灯片,就写入检查点快照 <stem>_polished_checkpoint_KK.pptx。

可靠的形状选择
def find_shape(slide, contains: str, *, kind: str | None = None):
    """Return the unique shape whose text_frame.text contains `contains`.
    Aborts if duplicate matches (caller must disambiguate by bbox or kind).
    """
    matches = []
    for sh in slide.shapes:
        if not sh.has_text_frame:
            continue
        if kind is not None and sh.shape_type != kind:
            continue
        if contains in sh.text_frame.text:
            matches.append(sh)
    if len(matches) == 0:
        raise LookupError(f"no shape contains {contains!r} on slide")
    if len(matches) > 1:
        raise AmbiguousMatch(f"{len(matches)} shapes contain {contains!r}; "
                             f"need disambiguator (kind, bbox, or longer needle)")
    return matches[0]

对于组合形状,如果 shape_type == GROUP,则递归遍历 shape.shapes。

第 2 阶段:Beamer 端润色(如果存在 Beamer 源文件)

采用相同的逐页审查模式,但针对 main.tex 源文件和编译后的 PDF。直接使用 Edit 工具操作 main_polished.tex 工作副本进行修复,然后用 xelatex 重新编译并重新渲染 PNG。保留原始 main.tex。

常见 Beamer 修复模式(内联目录,无需外部文件)

这些内容直接写入此 SKILL.md,因此此技能没有任何外部依赖:

  • 帧标题字号 + 细下划线:使用带 \hrule height 0.55pt 的 beamercolorbox 模板,将其放在标题文本之后;不要在 beamercolorbox 外直接使用 \rule{}(否则会渲染在右上方,而非标题下方)。
  • 用于蓝色小型大写标题的 \sectionlabel 宏:
    \newcommand{\sectionlabel}[1]{%
      {\sffamily\fontsize{8}{10}\selectfont
       \textcolor{<accent>}{\textls[200]{\MakeUppercase{#1}}}}}
    
    需要使用 microtype 才能使用 \textls。
  • 卡片中使用 >{\raggedright\arraybackslash}p{Xcm} 时需要 array 包。 否则,表格单元格会两端对齐,并在窄列中形成空隙或在单词中间断字。
  • 横幅必须使用真正的 tcolorbox,不要使用 \begin{center}\color{...}(这只会渲染为普通居中文字,而不是横幅)。
  • 破折号间距:优先使用 \textemdash{}(带显式花括号)或 \,---\,,不要直接使用 —。直接使用长破折号时,其周围空白经常会收缩。
  • \sectionlabel 内部颜色泄漏:\sectionlabel{... \textcolor{red}{...}} 会出错,因为 \MakeUppercase 会将颜色名称转为大写,导致未定义颜色错误。请将 \textcolor 放在外部,或定义带颜色的 \sectionlabel* 变体。
  • 中日韩文字 + 数学:使用 xelatex 时,请使用 \usepackage[fontset=fandol]{ctex} 或显式设置 EA 字体。标题中中英文混排时,需要提供 EA 字体提示,否则字符会回退到拉丁字体。
第 3 阶段:PPTX 端润色

先进行字体缩放(第 3a 阶段),再进行布局修复循环(第 3b 阶段)。 增大字体却不调整文本框大小会造成溢出。

第 3a 阶段:字体缩放(启发式表格)

使用 PPTX_SCALE_HINT,根据 Beamer 参考字号计算目标字号。参考映射:

Beamer 字号(pt)PPTX 目标字号用途
8 / 8.514-18,小型大写章节标签
10,斜体14,斜体灰色斜体提示 / 说明
11,正文22-24项目符号、段落
12,页码16右下角灰色“N / 总页数”(上限为 16)
14,强调正文22-24较大的子标题
16,标注内容24-28eqbox / yellowstrip 正文
17-22,大号数字28-36重点数据(例如“8.1k+”、漏斗“8/6/2/1”)
22,帧标题40-44每页标题
28,重点文字36-44重点文字
42,封面字标80-100,纯黑色封面(Why-RF 规范:不能使用彩色)

页码规则:字号绝不能超过 16pt。页码始终保持较小。

缩放后,务必重新检查第 1 阶段的分流结果——1.6× 提示仅为起点;有些幻灯片需要 1.5×,有些则需要 1.8×。

阶段 3b:文本框布局修复循环

字体放大后常见的两类问题:

  1. 标题与副标题/正文重叠:100pt 的标题放在高 0.95" 的文本框中,但字形约高 1.4",因此会向下溢出。修复方法:增加文本框高度,并重新定位下一个元素的顶部。
  2. 正文项目符号在句中换行:较长的名词短语项目符号会换行,导致最后一个名词单独落在下一行,因为文本框宽度是按旧的(较小)字号设置的。修复方法:加宽文本框,并缩窄相邻列。

每次针对单页的 Codex 调用都会返回具体的形状尺寸调整命令;使用检查器的 bbox 基元应用这些命令。

阶段 3c:常见 PPTX 陷阱(内嵌目录)
  • 图像宽高比:增大 width 而不调整 height 会拉伸嵌入的 PNG。务必按 height = width × (image_height_px / image_width_px) 计算。
  • 横幅 = 实际填充的矩形:使用相当于 tcolorbox 的实现(在 PPTX 中,是位于文本框后方的独立 MSO_SHAPE.RECTANGLE),而不只是彩色文字。
  • 曲线箭头:python-pptx 没有曲线箭头基元。可用两个直线 MSO_CONNECTOR_TYPE.STRAIGHT 连接符(垂直 + 水平)近似,或使用 add_freeform 贝塞尔曲线。记录所用的近似方案。
  • 斜体样式泄漏:源内容中的 \itshape 若没有花括号,会导致同一段落中后续所有文本运行继承斜体。用 {\itshape ...} 包裹,或将作用范围限定为单个文本运行。
  • 中文渲染:PowerPoint 需要东亚字体提示(macOS 使用 <a:ea typeface="PingFang SC"/>,Windows 使用 Microsoft YaHei)。没有该提示时,字符会回退到拉丁字体,渲染为方框字。
  • 破折号间距:标题中的裸 — 往往会渲染成空格被压缩的效果。插入字面空格(" — "),或使用数字空格。
  • 循环箭头/反馈环标签:确保标签的 bbox 位于幻灯片边界内(L > 0.4in、T > 0.4in)。PPTX 会静默裁切超出幻灯片的内容,靠近左侧/顶部边缘的曲线标签最容易出现此问题。
  • 匿名占位符规范:所有用于待审工作内容的占位符都必须使用通用措辞(例如,“为匿名审查而隐去”、“[anonymized]”)。切勿推断或填写真实标题、数量或 URL。参见 ../shared-references/experiment-integrity.md。
阶段 4:验证 + 重新分诊
  1. 将 PPTX 重新渲染为 PDF(使用 LibreOffice 或由用户导出)。
  2. 将 PDF 重新渲染为 PNG,以便进行视觉检查。
  3. 重新分诊:重新运行阶段 0.7 的提示词。目标:0 个 BLOCKERS,≤2 个 NEEDS-WORK。若仍有 > 2 个 NEEDS-WORK,则返回阶段 1 处理这些幻灯片。
  4. 演讲者备注完整性检查:断言每张幻灯片的 notes_slide 均存在,且与 _pre_polish.pptx 中的内容完全一致(润色轮次绝不能触碰备注内容)。
  5. 匿名性扫描:对最终 PPTX 执行 grep,查找已知敏感字符串(原始内容中不存在的真实作者姓名、LLM 添加的真实 URL、真实投稿数量)。若找到,则按失败关闭处理并报告。
  6. 最终输出:<stem>_polished.pptx(若已渲染,还包括 .pdf)。
阶段 5:变更日志

写入 POLISH_CHANGELOG.md:

Slide  1 cover  | bumped wordmark 80→86; subtitle 36→40; line spacing 0.9        | Codex per-page review
Slide  2 hook   | left body L=0.45 W=8.30; right cards 28→19pt; yellow strip 22→19 | wrap fix
Slide  3 …      | …                                                              | …

这样,每一轮润色都可审计且可撤销(每一行都对应一个 _polished_v{i} 检查点)。

样式预设

预设只影响默认颜色和元素库——参考 PDF 始终是视觉事实依据,而不是预设。

generic(默认)

黑色 + 一种强调色(默认值 #2563EB)。除了承载关键信息所需的单一中性色背景外,不使用标注框填充。

why-rf(academic-minimalist,示例预设)

锚点:一场关于 rectified flow 的 2025 年学术演讲,遵循以下规范。

元素BeamerPPTX(1.6× 提示)备注
页面标题\fontsize{22}{26}40-44pt 无衬线粗体+ 0.55pt 全宽细强调色下划线
正文11pt22-26pt相当于 Calibri / Helvetica Neue
卡片标题(chorebox)11pt 粗体20-26pt 粗体位于 chorebox 标注框内
章节标签8pt 小型大写字母16-18pt 小型大写字母,宽字距颜色 = 主强调色
灰色斜体提示\scriptsize\itshape12-14pt 斜体颜色 = pagegray
页码\footnotesize14-16pt右下角灰色
封面标题44pt 纯黑色80-100pt 纯黑色标题不着色

配色方案(仅在必要时少量使用):

  • 主强调色(例如 #2E75B6)
  • 深色强调色(芯片背景、大号数字,例如 #1F4E79)
  • 浅色标注框背景(例如 #DEEBF7)
  • 诚实披露用黄色(例如 #FFF4CC)
  • 审计错误用红色(仅用于安全免责声明,例如 #C00000)
  • 页面灰色(例如 #808080)
  • 深色文本(例如 #1F1F1F)

元素库(少量使用):

  • chorebox:白色背景 + 顶部细强调色线条 + 章节标签 + 粗体标题 + 正文
  • eqbox:浅强调色全宽横幅;仅用于关键假设 / 结论
  • yellowstrip:诚实披露用黄色 + 3pt 左侧橙色线条;仅用于诚实披露
  • redbox:浅红色 + 红色边框;仅用于安全免责声明
  • banner:浅强调色全宽条带;简短横幅说明文字

规范:使用的彩色文本框要少于典型的“设计感”模板。装饰性卡片改为普通项目符号;移除营销式修饰。

neurips / icml / iclr / cvpr

沿用 /paper-slides 中的配色方案。润色循环和字体缩放规则保持不变。

工作量级别

完整约定请参阅 ../shared-references/effort-contract.md。

effort行为
lite执行初步筛查,仅修复阻断项。跳过待改进幻灯片的逐页审查。约为完整令牌成本的 30%。
balanced(默认)执行初步筛查 + 对所有待改进和阻断项幻灯片进行逐页审查。不处理通过的幻灯片。
max对每一张幻灯片进行逐页审查(包括通过的幻灯片)。约需 2.5× 令牌。
beast在 max 基础上,于第 4 阶段重新筛查后再进行一轮润色;解决剩余不超过 2pt 的溢出 / 轻微换行问题。约需 5× 令牌。

所有级别均必须使用 reasoning_effort: xhigh,不可协商。

硬性不变量

以下要求不可妥协:

  1. 必须提供参考。 此技能不会在没有明确视觉锚点的情况下进行润色。如果没有参考 PDF,请向用户索取。风格预设不能替代参考。
  2. 绝不覆盖原文件。 所有编辑都针对 <stem>_polished.<ext>;<stem>_pre_polish.<ext> 快照是回滚目标。
  3. 逐字保留演讲者备注。 每次 PPTX 编辑都必须保留 slide.notes_slide 内容。阶段 4.4 会与快照逐字节核验。
  4. 不编辑内容。 不得新增主张、数字、引文、URL、作者姓名、所属机构或实验结果。不得更改公式或图表内容。不得改写正文——只能调整样式、排版和文本框。如果 Codex 提出的修复方案会改变内容,此技能将停止并报告。
  5. 不得重新排序、添加或删除幻灯片,除非用户明确传入标志(— add-slide-K-after-J、— drop-slide-K)。
  6. 独立使用新上下文:逐页 Codex 调用必须是新的 spawn_agent 调用,而不是 send_input。审阅者绝不会看到先前的修复清单;同一组内的初步判定均为暂定。
  7. 匿名占位符默认拒绝。 如果 Codex 提议将占位符替换为真实标题、数量或 URL,此技能会拒绝该提议,并将其提交给人工审核。参见 experiment-integrity.md。
  8. 页码不得超过 16pt。 遵循 Why-RF 原则;绝不增大字号。
  9. 所有 effort 级别的 reasoning_effort: xhigh 均为不变量。
  10. 稳健地选择形状:编辑时使用唯一前缀 text_frame.text 匹配,并断言匹配项唯一。如果存在重复匹配,则中止并请求消除歧义。

审阅追踪

每次逐页 Codex 调用后,按照 ../shared-references/review-tracing.md 保存追踪记录。每次调用的文件路径为 .aris/slides-polish/<stem>/traces/slide_KK.json,包含:

  • Codex agent_id
  • 提示词(原文)
  • 响应(原文)
  • 已应用的差异摘要(形状编辑列表,含修改前后的尺寸和边界框)
  • 验证状态(修复后重新渲染 PASS/FAIL)

分诊轮次和逐页轮次都必须记录追踪信息。

与先前技能的关系

  • 在 /paper-slides(或任何外部生成的演示文稿)之后运行。
  • 与 /paper-poster-html 工作流兼容(颜色规范相同),但输出节奏不同。
  • 使用与 /auto-paper-improvement-loop、/research-review 等相同的 spawn_agent MCP 基础设施。
  • 不会调用或组合 /paper-slides 的内容阶段——两者严格分离。

不适用场景

  • 幻灯片仍处于内容起草阶段——返回 /paper-slides 阶段 1-2。
  • 需要彻底重新设计(更换颜色、模板或宽高比)——重新运行 /paper-slides,而非进行润色。
  • 演示文稿少于 5 张幻灯片——逐页审阅的开销不值得,建议手动编辑。
  • 用户明确表示“不要用 Codex”——此技能按设计由 Codex 驱动。

经验来源

此技能源自 2026 年 5 月一次中文学术会议演讲的润色工作。由此得出的共同观察是:内容锁定后,剩下的工作量取决于逐页视觉还原度——相比单轮批量审阅无法收敛,逐页 Codex 审阅配合具体的 python-pptx / .tex 修复代码片段,通常能在 1-2 轮内收敛。阶段 2-3 中的修复模式目录(Beamer 模板注意事项、PPTX 字体缩放、布局修复循环、中文字体提示)是可长期复用的成果。

参数传递

通过 /research-pipeline 或其他编排器调用时,参数传递如下:

  • — effort → 参见 Effort Levels。
  • — reference → REFERENCE_VISUAL。
  • — style → STYLE_PRESET。
  • — interactive → INTERACTIVE = true。

其他参数(如 — venue)会被此技能忽略,且不会继续传递。

评论

支持 Markdown