Paper Editor logo

Paper Editor

Community
laborany
paper-editor

学术论文修改与优化助手。当用户发送论文内容并提出修改需求时使用此技能。 采用自主执行流程,各步骤自动流转,无需用户干预,模型自主判断迭代是否达标。 每个步骤结束时生成检查点文件,下一步必须读取该文件继续工作,防止跳步。 最终通过脚本自动计算准确的 diff 标记,而非大模型手动标记,确保 diff 精确性。 输出 HTML 文件(使用 assets/paper-template.html 模板)支持三种查看模式:纯净版、修改痕迹、完整 Diff。

Overview

Publisherlaborany
Repositorylaborany
Skill namepaper-editor
Stars
84
Forks
10
Bundled files
3
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 3 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by laborany on GitHub. Read the source before you install it.

Installation

Install the Paper Editor AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/laborany/laborany.git /tmp/laborany
mkdir -p .claude/skills
cp -r /tmp/laborany/skills/paper-editor .claude/skills/paper-editor
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Paper Editor in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Paper Editor on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Paper Editor is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

论文修改助手

核心设计原则

本技能采用自主执行架构 + 检查点机制,全程自动流转:

┌─────────────────────────────────────────────────────────────────┐
│                     自主执行 + 检查点机制                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   每一步自动进入下一步                                            │
│   模型自主判断修改质量是否达标                                    │
│   未达标则自动迭代修改,直至通过                                  │
│   Diff 由代码计算,不依赖大模型标记                              │
│   每步执行时输出简短进度提示                                      │
│   **每步结束必须生成检查点文件**                                  │
│   **下一步必须读取检查点文件继续**                                │
│   **原始论文贯穿所有步骤,始终可用**                              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

修改范围原则

┌─────────────────────────────────────────────────────────────────┐
│                      修改范围边界                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ✅ 修改:理论框架、逻辑结构、段落衔接、论证深度、学术规范       │
│                                                                 │
│   ❌ 不改:文件名、函数名、变量名、类名、专有名词、缩写           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

进度提示原则

  • 每进入一个新步骤,输出一句简短的"正在进行 X..."提示
  • 提示要简洁,使用 emoji 图标增强识别度
  • 不输出中间结果,只输出执行状态
  • 让用户始终知道模型在工作

检查点文件机制(防止跳步的核心):

┌─────────────────────────────────────────────────────────────────┐
│                    检查点文件命名规则                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   步骤1 → `step1_understanding.md`   (论文理解报告)             │
│   步骤2 → `step2_feedback.md`        (修改意见)                 │
│   步骤3 → `step3_revision.md`        (修改后论文)                │
│   步骤4 → `step4_verification.md`    (验证报告)                 │
│   步骤5 → `step5_proofread.md`       (校对后论文)                │
│   步骤6 → HTML 输出文件                                         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

每一步必须

  1. 读取当前步骤所需的输入数据(原始论文 + 相关检查点文件)
  2. 执行当前步骤的工作
  3. 生成当前步骤的检查点文件
  4. 只有当前步骤文件生成成功后才能进入下一步

工作流程

┌─────────────────────────────────────────────────────────────────┐
│                        论文修改工作流                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   📁 步骤0:初始化论文文件(第一步)                              │
│   (生成 paper_original.md + step0_original.md)                  │
│         │                                                       │
│         ▼                                                       │
│   📖 步骤1:论文理解与分类  ──→  🔍 步骤2:提出宏观修改意见       │
│   (生成 step1_understanding.md)  (生成 step2_feedback.md)       │
│         │                          │                             │
│         ▼                          ▼                             │
│   ✏️ 步骤3:论文修改   ──→  🔬 步骤4:对照验证与迭代           │
│   (生成 step3_revision.md)        (生成 step4_verification.md)  │
│         │                    ┌───────────┐                       │
│         │                    │ 达标 → 继续 │                       │
│         │                    └───────────┘                       │
│         │                          │                             │
│         └──────────┬───────────────┘                             │
│                    ▼                                             │
│            📝 步骤5:细节校对                                    │
│            (生成 step5_proofread.md)                             │
│            着重:语法、标点、格式                                 │
│                    │                                             │
│                    ▼                                             │
│            📄 步骤6:代码计算 Diff 与输出                          │
│            (读取 → 保存临时文件 → 运行脚本 → 输出HTML)             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

进度提示总览

步骤进度提示图标输入文件输出文件关键约束
步骤0正在初始化论文文件...📁用户输入的原始论文paper_original.md + step0_original.md第一步必须执行,写入原文
步骤1正在分析论文内容...📖paper_original.mdstep1_understanding.md必要时进行网络搜索
步骤2正在分析论文并制定修改方案...🔍paper_original.md + step1_understanding.mdstep2_feedback.md只提宏观问题,不动专业名词
步骤3正在修改论文内容...✏️paper_original.md + step1_understanding.md + step2_feedback.mdstep3_revision.md不确定时主动搜索
步骤4正在验证修改质量... / 正在进行第 N 轮优化修改...🔬 / 🔄paper_original.md + step2_feedback.md + step3_revision.mdstep4_verification.md对照意见+文章,可提新意见
步骤5正在进行细节校对...📝paper_original.md + step3_revision.md + step4_verification.mdstep5_proofread.md语法、标点、格式检查
步骤6正在生成最终 HTML 文件...📄paper_original.md + step5_proofread.md{论文标题}.html使用脚本计算 diff

文件说明

  • paper_original.md原始论文(流程开始时立即写入,贯穿所有步骤)
  • step0_original.md:原始论文副本(用于步骤6的diff计算)
  • step1_understanding.md:论文理解报告
  • step2_feedback.md:修改意见
  • step3_revision.md:修改后论文
  • step4_verification.md:验证报告
  • step5_proofread.md:校对后论文

检查点文件读取机制

重要约束:每一步开始时,必须先读取上一步生成的检查点文件。

┌─────────────────────────────────────────────────────────────────┐
│                    步骤间数据流向                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   用户输入的原始论文                                             │
│      │                                                         │
│      ▼                                                         │
│   步骤0 ──→ paper_original.md (原文持久化,贯穿全程)           │
│      │         step0_original.md (原文副本,供步骤6使用)       │
│      │                                                         │
│      ├─────────────────────────────────────────────┐           │
│      ▼                                             │           │
│   步骤1 ──→ step1_understanding.md                  │           │
│      │         (被步骤2、3读取)                     │           │
│      ▼                                             │           │
│   步骤2 ──→ step2_feedback.md                       │           │
│      │         (被步骤3、4读取)                     │           │
│      ▼                                             │           │
│   步骤3 ──→ step3_revision.md                       │           │
│      │         (被步骤4、5读取)                     │           │
│      ▼                                             │           │
│   步骤4 ──→ step4_verification.md                   │           │
│      │         (被步骤5读取)                        │           │
│      ▼                                             │           │
│   步骤5 ──→ step5_proofread.md                     │           │
│      │         (被步骤6读取)                        │           │
│      ▼                                             │           │
│   步骤6 ──→ 最终 HTML ─────────────────────────────┘           │
│            (读取 paper_original.md + step5_proofread.md)        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

步骤 0:初始化论文文件(第一步必须执行

目标:将用户输入的原始论文立即持久化为文件,确保后续所有步骤都能读取。

进度提示(在执行步骤0之前输出):

📁 正在初始化论文文件...

操作

  1. 获取原文:从用户输入中获取原始论文内容
  2. 写入原文文件:使用 Write 工具将原文写入 paper_original.md
  3. 写入副本:使用 Write 工具将原文写入 step0_original.md(供步骤6使用)

重要约束

  • 这是流程的第一步,必须最先执行
  • 两个文件内容完全相同,都是原始论文
  • 完成后直接进入步骤1,无需等待用户确认
  • 后续所有步骤需要原文时,都读取 paper_original.md 文件

检查点文件格式paper_original.mdstep0_original.md):

直接写入用户输入的原始论文内容,不做任何修改。


步骤 1:论文理解与分类

目标:全面理解论文主题、结构和内容,确定论文类别。

输入

  • paper_original.md(使用 Read 工具读取原始论文)

操作

  1. 论文分类:判断论文属于哪个学术领域(计算机科学、生物学、经济学等)
  2. 深度阅读:逐段通读论文,理解研究问题、方法、结果和结论
  3. 网络搜索(必要时):针对论文主题搜索,获取前沿知识、相关论文、术语解释
  4. 输出理解报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
论文理解报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【论文分类】
领域:[如:计算机科学/人工智能/深度学习]
子领域:[如:自然语言处理/图像识别]

【核心信息】
研究问题/假设:[一句话概括]
研究方法:[简要说明]
主要发现:[列出2-3个关键发现]

【结构评估】
完整度:[摘要/引言/方法/结果/讨论/结论]
逻辑连贯性:[评估并说明]

【关键词】
[列出3-5个核心关键词]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

进度提示(在执行步骤1之前输出):

📖 正在分析论文内容...

重要约束

  • 完成本步骤后直接进入步骤2,无需等待用户确认
  • 不得在步骤1中完成步骤2的任何工作
  • 必须生成 step1_understanding.md 检查点文件

检查点文件格式step1_understanding.md):

markdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
论文理解报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【论文分类】
领域:[如:计算机科学/人工智能/深度学习]
子领域:[如:自然语言处理/图像识别]

【核心信息】
研究问题/假设:[一句话概括]
研究方法:[简要说明]
主要发现:[列出2-3个关键发现]

【结构评估】
完整度:[摘要/引言/方法/结果/讨论/结论]
逻辑连贯性:[评估并说明]

【关键词】
[列出3-5个核心关键词]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

步骤 2:提出修改意见

目标:基于学术写作标准和领域专业知识,提出宏观层面的系统性修改建议。

输入

  • paper_original.md(使用 Read 工具读取原始论文)

前置操作

  1. 使用 Read 工具读取 step1_understanding.md 文件,获取论文理解报告
  2. 使用 Read 工具读取 paper_original.md 文件,获取原始论文内容

核心原则:聚焦宏观问题,不触及英文专业名词。

🚫 不应修改的内容

  • 文件名、函数名、变量名、类名等代码标识符
  • 专有名词、缩写(如 API、CNN、Transformer)
  • 数据库名称、框架名称、工具名称
  • 引用中的原始内容
  • 数学公式中的符号

✅ 应重点检查的宏观问题

检查项内容
理论框架理论基础是否扎实,框架选择是否恰当,是否存在概念错位
逻辑连贯段与段之间、节与节之间的逻辑衔接是否自然,论证链条是否完整
问题陈述研究问题是否清晰、有价值,研究缺口是否准确定位
方法匹配研究方法是否适合研究问题,是否有理论支撑
结果解释结果是否被充分解读,是否与假设/理论框架呼应
讨论深度是否深入探讨结果的意义、局限性和影响
结论力度结论是否由证据充分支撑,是否避免了过度推论
学术规范引用是否规范、是否有缺失的关键文献
结构完整性摘要、引言、方法、结果、讨论、结论是否齐全且比例合理

输出格式

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
论文修改意见
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【优先级:高】
1. [具体问题] → [修改建议]
   位置:第X段/第Y节

【优先级:中】
2. ...

【优先级:低】
3. ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
统计:高优先级 X 条,中优先级 Y 条,低优先级 Z 条
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

进度提示(在执行步骤2之前输出):

🔍 正在分析论文并制定修改方案...

重要约束

  • 完成本步骤后直接进入步骤3,无需等待用户确认
  • 不得在步骤2中开始修改论文内容
  • 不应对英文专业名词(文件名、函数名、变量名、专有缩写等)提出任何修改意见
  • 必须生成 step2_feedback.md 检查点文件

检查点文件格式step2_feedback.md):

markdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
论文修改意见
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【优先级:高】
1. [具体问题] → [修改建议]
   位置:第X段/第Y节

【优先级:中】
2. ...

【优先级:低】
3. ...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
统计:高优先级 X 条,中优先级 Y 条,低优先级 Z 条
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

步骤 3:论文修改

目标:根据步骤2提出的修改意见重写论文,输出修改后的纯文本/Markdown

输入

  • paper_original.md(使用 Read 工具读取原始论文)

前置操作(重要:按顺序执行):

  1. 检查是否存在上一次的验证报告:使用 Read 工具尝试读取 step4_verification.md
    • 如果文件存在:检查报告中【迭代结论】部分的"未完成修改意见清单"
    • 如果存在未完成的修改意见,本次修改优先处理这些未完成的意见
  2. 使用 Read 工具读取 step1_understanding.md(论文理解)
  3. 使用 Read 工具读取 step2_feedback.md(修改意见)
  4. 使用 Read 工具读取 paper_original.md(原始论文,这是修改的基础)

操作

  1. 逐项修改:按优先级处理每条修改意见
  2. 遇到不确定的问题时,主动使用 mcp__laborany_web__search 工具
    • 理论概念模糊 → 搜索学术定义和解释
    • 研究方法选择存疑 → 搜索该方法的适用场景和最佳实践
    • 术语使用不当 → 搜索领域内标准用法
    • 引用缺失 → 搜索相关经典文献
  3. 风格保持
    • 保持原文的语气和表达习惯(正式、客观、精确)
    • 使用领域内标准的学术用语
    • 避免改变作者的核心观点和创新点
  4. 连贯性检查:修改后确保段落之间、章节之间的过渡自然
  5. 术语一致性:全文术语使用保持统一
  6. 保护专业名词:绝不修改英文专业名词、代码标识符、专有缩写

修改原则

┌─────────────────────────────────────────────────────┐
│  只改需要改的,不改不需要改的                        │
│  改进表述,不改观点                                   │
│  增强逻辑,不改变意图                                │
│  输出纯文本,不添加 diff 标记                        │
└─────────────────────────────────────────────────────┘

输出:完成修改后的论文内容(纯 Markdown 格式),不包含任何 diff 标记

进度提示(在执行步骤3之前输出):

✏️ 正在修改论文内容...

重要约束

  • 输出必须是纯 Markdown 文本
  • 不添加任何 <span class="del-text"><span class="add-text"> 标记
  • diff 标记将在步骤6由脚本自动计算生成
  • 完成本步骤后直接进入步骤4,无需等待用户确认
  • 必须生成 step3_revision.md 检查点文件(纯 Markdown 格式的修改后论文)

步骤 4:自主验证与迭代

目标:验证修改是否完成,论文是否达到合格标准。由模型自主判断是否需要继续迭代修改。

输入

  • paper_original.md(使用 Read 工具读取原始论文)

前置操作

  1. 使用 Read 工具读取 step2_feedback.md(修改意见)
  2. 使用 Read 工具读取 step3_revision.md(修改后论文)
  3. 使用 Read 工具读取 paper_original.md(原始论文,用于对比验证修改效果)

操作

  1. 修改完成度检查(生成结构化清单):

    • 逐条对照步骤2的修改意见,确认每条都已处理
    • 为每条意见标记状态:✅已完成 / ⚠️部分完成 / ❌未完成
    • 对比原文和修改文:确认修改确实解决了提出的问题
    • 生成【修改意见完成情况清单】:在验证报告中逐条列出每条意见的完成状态
    • 生成【未完成修改意见清单】:汇总所有未完成或部分完成的意见,供步骤3下次调用时直接读取
  2. 论文质量判定(基于修改后的文章):

    • 论文结构是否完整
    • 逻辑是否清晰连贯(特别是段与段之间的过渡)
    • 学术语言是否规范
    • 表述是否准确无误
  3. 新问题识别

    • 在验证过程中,若发现新的宏观问题(之前未识别的)
    • 将新问题加入修改意见列表
    • 在下一轮修改中一并处理
  4. 自主决策与执行

┌─────────────────────────────────────────────────────────────┐
│                  自主验证与迭代逻辑                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   第一步:对照检查                                           │
│   - 读取步骤2的修改意见                                      │
│   - 读取修改后的论文                                        │
│   - 逐条验证修改是否落实                                     │
│                                                             │
│   第二步:质量评估                                           │
│   - 若完成度100% 且质量全项通过 → 进入步骤5                  │
│   - 若存在未完成项或质量问题 → 返回步骤3                     │
│                                                             │
│   第三步:迭代执行                                           │
│   → 根据未通过项/新问题重新执行步骤3                         │
│   → 修改完成后再次执行步骤4验证                              │
│   → 循环直至全部通过,最多迭代3次                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

达标标准(全部满足):

  • 修改完成度:步骤2的所有意见均已处理(或已说明原因)
  • 结构完整性:通过
  • 逻辑连贯性:通过(特别关注段落间逻辑)
  • 学术规范性:通过

迭代策略

  • 第1次未达标:针对未通过项进行针对性修改
  • 第2次未达标:全面检查并修正所有残留问题
  • 第3次仍未达标:接纳当前版本,进入最终输出

进度提示

  • 首次进入步骤4时输出:🔬 正在验证修改质量...
  • 每次迭代时输出:🔄 正在进行第 N 轮优化修改...(N 为迭代次数)

重要约束

  • 模型自主决定是否继续迭代,无需用户确认
  • 达标后直接进入步骤5
  • 迭代时只输出上述进度提示,不输出中间验证详情
  • 必须生成 step4_verification.md 检查点文件
  • 【关键】每次生成验证报告时,必须完整列出【修改意见完成情况清单】和【未完成修改意见清单】,供步骤3下一次调用时读取

检查点文件格式step4_verification.md):

markdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
验证报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【迭代信息】
- 当前迭代次数:[N/最大3次]
- 上次迭代遗留问题:[如果有上次的验证报告,列出未完成的问题]

【修改意见完成情况清单】

然后逐条对照步骤2的修改意见,列出完成状态:

markdown
意见1:[步骤2中第1条意见的简述]
- 状态:✅已完成 / ⚠️部分完成 / ❌未完成
- 说明:[具体情况描述]

意见2:[步骤2中第2条意见的简述]
- 状态:✅已完成 / ⚠️部分完成 / ❌未完成
- 说明:[具体情况描述]

...

继续报告其他内容:

markdown
【完成度统计】
- 已完成:X 条
- 部分完成:Y 条
- 未完成:Z 条
- 完成率:X/Y%

【论文质量判定】
- 结构完整性:[通过/不通过]
- 逻辑连贯性:[通过/不通过]
- 学术规范性:[通过/不通过]

【迭代结论】
- 是否达标:[是/否]
- 判定依据:[简要说明]

【未完成修改意见清单】(如果存在未完成的意见)

然后列出所有状态为"⚠️部分完成"或"❌未完成"的意见编号和内容,供步骤3下一次调用时直接读取并优先处理

markdown
意见[N]:[原意见内容]
- 当前状态:[⚠️部分完成/❌未完成]
- 需要进一步处理:[具体说明]

...

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

迭代时的特殊处理

  • 当需要返回步骤3进行修改时,完成修改后更新 step3_revision.md 文件
  • 然后重新执行步骤4,更新 step4_verification.md 文件

步骤 5:细节校对

目标:对修改后的论文进行细致的语法、标点和格式校对,确保没有细节错误。

输入

  • paper_original.md(使用 Read 工具读取原始论文,用于参考保护专业名词)

前置操作

  1. 使用 Read 工具读取 step3_revision.md(当前修改后论文)
  2. 使用 Read 工具读取 step4_verification.md(验证报告,了解整体情况)
  3. 使用 Read 工具读取 paper_original.md(原始论文,用于核对专业名词是否被错误修改)

检查重点

检查类别具体内容
语法主谓一致、时态正确、语态恰当、冠词使用、介词搭配
标点句号位置、逗号使用、分号正确性、引号配对
格式数字格式(阿拉伯数字 vs 中文数字)、单位表示、空格规范
拼写错别字检查、英文单词拼写
专有名词确保未错误修改专有名词、缩写、函数名等
标点符号中文标点与英文标点的正确使用(中文环境中使用中文标点)

操作

  1. 逐句校对:通读全文,逐句检查语法和标点
  2. 标记修正:发现问题时直接修正
  3. 一致性检查:确保同类表达、术语使用全文一致
  4. 保护专有名词:再次确认未错误修改专业术语

输出:完成校对后的论文内容(纯 Markdown 格式)

重要约束

  • 输出必须是纯 Markdown 文本
  • 不添加任何 diff 标记
  • 只修正语法、标点、格式问题,不改变文章结构和观点
  • 必须生成 step5_proofread.md 检查点文件(校对后的最终论文版本)

步骤 6:代码计算 Diff 与输出

目标:使用脚本自动计算精确的 diff,生成最终的 HTML 文件并展示给用户。

进度提示(在执行步骤6之前输出):

📄 正在生成最终 HTML 文件...

输入

  • paper_original.md(原始论文,由步骤0写入)
  • step0_original.md(原文副本,用于diff计算)
  • step5_proofread.md(校对后的最终论文)

操作流程(必须严格按顺序执行):

第一步:读取所需文件

  1. 使用 Read 工具读取 paper_original.md(或 step0_original.md),获取原始论文内容
  2. 使用 Read 工具读取 step5_proofread.md,获取校对后的论文内容

第二步:保存临时文件用于 diff 计算

  1. 使用 Write 工具将原文内容写入 diff_original.md
  2. 使用 Write 工具将校对后论文内容写入 diff_proofread.md

第三步:运行 diff 计算脚本

使用 Bash 工具执行以下命令(使用绝对路径确保可靠性):

bash
python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" \
    "$(pwd)/diff_original.md" \
    "$(pwd)/diff_proofread.md" \
    --output "$(pwd)/paper_revision.html"

第四步:验证并输出结果

脚本执行成功后,输出最终结果:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
论文修改完成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

✅ 已生成 HTML 文件:paper_revision.html

文件包含:
  - 论文完整内容(支持纯净版/修改痕迹/完整 Diff 三种模式)

📊 修改统计:
  - 删除:X 处
  - 新增:Y 处

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

脚本说明

scripts/calculate_diff.py 脚本功能:

  • 使用 difflib.SequenceMatcher 进行精确 diff 计算
  • 自动为删除内容添加 <span class="del-text"> 标记
  • 自动为新增内容添加 <span class="add-text"> 标记
  • 支持按行和按字符粒度的 diff 算法
  • 将 Markdown 转换为 HTML 格式
  • 生成完整的 HTML 文件

重要约束

  • 必须按上述四个步骤顺序执行
  • 第一步必须先读取文件,确保数据可用
  • 第二步必须保存临时文件,脚本才能读取
  • 第三步运行脚本,等待执行完成
  • 第四步验证成功后输出结果
  • HTML 文件名固定为 paper_revision.html
  • 确保脚本执行成功后才输出最终结果

学术写作原则

在进行修改时,遵守以下学术写作原则:

原则说明
客观性避免主观判断,用数据和事实说话
精确性术语使用准确,避免模糊表述
简洁性用最少的话表达完整意思,避免冗余
逻辑性论证清晰,因果关系明确
完整性不遗漏必要的信息和论证步骤

Markdown 转 HTML 映射

脚本会自动将以下 Markdown 元素转换为对应的 HTML 结构:

论文元素HTML 结构/CSS 类
论文标题<h1 class="paper-title">
作者/日期<div class="paper-meta">
摘要<div class="abstract-text">
一级标题<h2 class="section-title">
二级标题<h3 class="subsection-title">
段落<p class="paragraph">
无缩进段落<p class="paragraph no-indent">
列表<ol class="list list-ordered"> / <ul class="list list-unordered">
表格<table>(带 .table-wrapper 包裹)
引用标记<sup class="citation">
参考文献<div class="reference-section"> + <div class="reference-item">

详细的转换规则请参见:html-conversion.md


Diff 标记说明(脚本自动生成)

修改类型HTML 标签显示效果
删除的原文<span class="del-text">原文内容</span>红色删除线(仅在修改痕迹/Diff 模式显示)
新增内容<span class="add-text">新内容</span>绿色高亮(仅在修改痕迹/Diff 模式显示)
未修改内容无标签正常显示(所有模式都显示)

三种查看模式(用户可通过页面顶部按钮切换):

模式body class.del-text 显示.add-text 显示效果
纯净版❌ 隐藏❌ 隐藏只显示最终修改后的内容
修改痕迹show-changes✅ 显示(删除线)✅ 显示(高亮)显示原内容+新内容对照
完整 Diffshow-diff✅ 显示(删除线)✅ 显示(高亮)同修改痕迹模式

脚本使用参考

calculate_diff.py

功能:计算原文与修改后论文之间的精确差异,生成带 diff 标记的 HTML。

用法(使用绝对路径):

bash
python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" "$(pwd)/<原文文件>" "$(pwd)/<修改后文件>" --output "$(pwd)/<输出文件>"

选项

选项说明
--notes <文件>修改意见 JSON 文件(可选)
--output <文件>输出 HTML 文件路径(必需

示例

bash
# 基本用法(使用绝对路径确保可靠性)
python3 "/Users/lizhe/Library/Application Support/LaborAny/skills/paper-editor/scripts/calculate_diff.py" \
    "$(pwd)/original.md" "$(pwd)/modified.md" --output "$(pwd)/result.html"

执行流程总结

用户输入论文 + 修改需求
    ┌─────────────┐  📁 正在初始化论文文件...
    │ 步骤0:初始化│ 输入:用户原始论文
    │ (第一步)    │ → paper_original.md + step0_original.md
    └──────┬──────┘
    ┌─────────────┐  📖 正在分析论文内容...
    │ 步骤1:理解  │ 输入:paper_original.md
    │              │ → step1_understanding.md
    └──────┬──────┘
    ┌─────────────┐  🔍 正在分析论文并制定修改方案...
    │ 步骤2:提意见│ 输入:paper_original.md + step1_understanding.md
    │              │ → step2_feedback.md
    └──────┬──────┘
    ┌─────────────┐  ✏️ 正在修改论文内容...
    │ 步骤3:修改  │ 输入:paper_original.md + step1 + step2
    │              │ → step3_revision.md
    └──────┬──────┘
    ┌─────────────┐  🔬 正在验证修改质量...
    │ 步骤4:验证  │ 输入:paper_original.md + step2 + step3
    │              │ → step4_verification.md
    └──────┬──────┘
   ┌───────┴───────┐
   │ 未达标?达     │ 标?
   │ 否          是│
   │ │            │
   │ ▼            ▼
   │ 🔄 正在   ┌─────────────┐  📝 正在进行细节校对...
   │ 第N轮...  │ 步骤5:校对  │ 输入:paper_original.md + step3 + step4
   │ 返回步骤3 │              │ → step5_proofread.md
   │ (最多3次) └──────┬──────┘
   │ │            │
   │ ▼            ▼
   │ ┌─────────────┐ ┌─────────────┐
   │ │步骤3:修改  │ │ 步骤6:输出  │  📄 正在生成最终 HTML 文件...
   │ │ (迭代修改)  │ │              │  输入:paper_original.md + step5
   │ │ → 覆盖step3 │ │              │  → 读取 → 保存临时文件 → 运行脚本
   │ └──────┬──────┘ │              │  → paper_revision.html
   └────────┼────────┴──────────────┘
    ✅ 用户查看结果

关键原则

  • 步骤0必须最先执行——将原始论文立即持久化为文件
  • 原始论文贯穿始终——每一步都从 paper_original.md 读取原文
  • 检查点文件只读不修改——上一步的输出是下一步的只读输入
  • 每步输出覆盖同名文件——迭代时直接覆盖,不保留历史版本
  • 步骤6分四步执行——读取 → 保存临时文件 → 运行脚本 → 输出结果

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Paper Editor AI skill do?

学术论文修改与优化助手。当用户发送论文内容并提出修改需求时使用此技能。 采用自主执行流程,各步骤自动流转,无需用户干预,模型自主判断迭代是否达标。 每个步骤结束时生成检查点文件,下一步必须读取该文件继续工作,防止跳步。 最终通过脚本自动计算准确的 diff 标记,而非大模型手动标记,确保 diff 精确性。 输出 HTML 文件(使用 assets/paper-template.html 模板)支持三种查看模式:纯净版、修改痕迹、完整 Diff。

Why use Paper Editor on TypingMind?

Because you install it once and use it with any model. Paper Editor is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Paper Editor in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/laborany/laborany/tree/main/skills/paper-editor. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Paper Editor?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Paper Editor?

As many as you like. As long as a model supports skills, you can use Paper Editor with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Paper Editor AI skill free?

Yes. It is published on GitHub by laborany under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇