1、Skill简介
这是一个面向研究生和科研工作者的 SCI 论文写作 Skill。输入一个研究主题(如"固态电池界面工程"),Agent 在 30 分钟内自动完成:实验数据解析 → 图表生成 → 论文撰写 → 格式排版 → 质量预检 → 会议推荐 → 多格式输出(DOCX / LaTeX / 交互式 HTML)。
一句话总结:从 CSV 到 Camera-ready,全自动论文生产线。
2、使用场景
为什么想做它?
去年写论文,发现时间分配完全颠倒:
- 写 Introduction 花了 3 天(漏斗叙事结构不会搭)
- 画图表花了 2 天(matplotlib 调参,配色丑陋)
- 排版花了 1 天(图片没嵌入、公式编号错乱、表格最优结果没加粗)
- 最后临投稿发现引用格式不对、页数超了
80% 的时间花在"格式合规"上,而不是"思考科学问题"。
它解决了什么麻烦?
| 麻烦 | Skill 解决方式 |
|---|---|
| 论文结构混乱 | 内置 ResNet (CVPR 2016 Best Paper) 提炼的漏斗叙事结构,Intro 7 段、Method 3.1-3.4、Experiments 4.1-4.3,强制不遗漏 |
| 图表不规范 | 色盲安全配色(#377EB8 / #E41A1C / #4DAF4A),300dpi,图注在图下方、表注在表上方 |
| 引用 hallucination | CrossRef + Semantic Scholar API 递进式检索,杜绝编造引用 |
| 图片没嵌入 | 物理嵌入强制规则:doc.add_picture() + 存在性检查 + 顺序验证 |
| 格式反复调 | code_templates.py 一键配置字体/页眉/页脚/编号 |
| 不知道投哪里 | 15 个 venue 数据库,关键词匹配 + 截稿倒计时 |
做出来之后能省掉哪些动作?
- 省掉 2-4 小时手动排版时间
- 省掉 1-2 小时 matplotlib 调参时间
- 省掉引用真实性核查时间(API 保证)
- 省掉投稿前反复检查清单的时间(预检脚本自动完成)
3、创作过程
用 SOLO 把想法变成 Skill
Skill 采用"规范驱动 + 模板复用 + 脚本增强"的三层架构。核心思想是:Agent 不直接写论文,而是读取规范契约、调用模板、执行检查清单,把论文写作变成可重复的工程流程。
第一层:规范契约(不可违背的底线)
参考 CVPR / NeurIPS / ICML / ACL 等顶会 Best Paper 的叙事结构,提炼出 3 份强制规范文件:
-
structure_contract.md:章节层级 + 叙事弧(Claim → Evidence → Interpretation)
-
style_contract.md:字体系统 + 数学符号 + 引用格式
-
figure_table_guidelines.md:图表位置 + 色盲安全配色 + 物理嵌入强制规则
第二层:代码模板(可复用的骨架)
code_templates.py 封装了 python-docx 的全部常用操作,Agent 不再从头写文档代码:
from code_templates import (
setup_document, add_section_heading, add_paragraph_with_style,
add_figure, add_table_with_caption, add_equation
)
# 初始化论文(标题/作者/摘要/页眉/页脚一次性配置)
doc = setup_document(title="Your Paper", authors="Author", venue="NeurIPS")
# 插入图片(物理嵌入 + 存在性检查 + 自动图注)
add_figure(doc, image_path="./fig1.png", caption="Figure 1. Architecture.")
# 插入表格(最优结果自动加粗)
add_table_with_caption(doc, headers=["Method", "Acc"], rows=[["Baseline", "85.2"], ["Ours", "89.4"]], bold_best_row=1)
# 插入编号公式(右对齐自动编号)
add_equation(doc, "y = f(x) + epsilon", eq_number=1)
第三层:增强脚本
识别出 6 个"大模型自身无法完成,必须依赖外部工具"的环节,逐个写成独立脚本:
| 脚本 | 为什么大模型做不到 | 技术路径 |
|---|---|---|
| data_to_charts.py | 无法解析 CSV/JSON 文件并生成符合 SCI 规范的 matplotlib 图表 | pandas + 智能类型推断(70+ 指标词 / 40+ 步骤词) |
| reference_fetcher.py | 会编造引用(hallucination),无法实时联网查真实文献 | CrossRef API + Semantic Scholar API + 多轮递进搜索 |
| docx_validator.py | 不具备解析 DOCX XML 结构的能力 | python-docx 遍历 + 6 维度规则引擎 |
| docx_to_latex.py | 不会操作 pandoc,也无法保证转换后格式正确 | 原生解析 + 5 个会议模板 |
| docx_to_html.py | 无法生成交互式 HTML(暗色模式/点击展开/引用跳转) | 原生 HTML + CSS 变量 + JS,base64 嵌入图片 |
| venue_recommender.py | 不了解各 venue 的截稿日期、接受率、匹配度 | 15 个 venue 数据库 + 关键词匹配评分 |
关键设计决策
1. 图片物理嵌入强制规则
初期版本出现严重缺陷:Agent 只在正文写了 “as shown in Fig. 2”,但没有真正调用 doc.add_picture() 嵌入图片。导致生成的 DOCX 打开后只有文字引用、没有图。
修复方案:
add_figure()函数强制物理嵌入(run.add_picture())- 插入前检查文件存在性(不存在则抛异常)
- 检查清单新增 4 项嵌入相关检查
docx_validator.py扫描 XML 中的graphicData节点验证
2. 智能表格 bold 检查
初期版本 docx_validator.py 对所有数值列取最大值检查 bold,导致大量误报:
- 材料属性表被误检(不同材料属性无"最优"概念)
- 阻抗表取最大值检查(实际电阻应越小越好)
修复后采用三层过滤:
- 属性表识别(material / parameter / specification 等 18 个关键词)→ 跳过
- 方向检测(minimize:resistance / impedance / loss;maximize:accuracy / capacity / energy)
- 未知方向 → 跳过不检查
4、使用步骤
方式一:对话触发(推荐)
直接对 Agent 说:
帮我写一篇关于深度强化学习在人形机器人中应用的论文
Agent 自动读取 SKILL.md ,执行 5 阶段工作流:
| 阶段 | 任务 | 产出 |
|---|---|---|
| Phase 1: Plan | 确定主题、目标会议(CVPR/NeurIPS/ICML)、输出格式 | 需求锁定 |
| Phase 2: Chart Assets | 生成全部图表(matplotlib, 300dpi)或 CSV → data_to_charts.py | 3-7 张 PNG |
| Phase 3: Draft | 加载 3 大规范契约,撰写 6 大章节 + 25 条引用 | 完整论文文本 |
| Phase 4: Polish | 排版、交叉引用、最优结果 bold、公式编号 | 格式合规 |
| Phase 5: Convert | 生成 DOCX,docx_validator.py 6 维度预检 | 可提交文档 |
方式二:独立使用脚本
# 1. 实验数据 → 自动图表
python data_to_charts.py experiment_data.csv --output-dir ./charts
# 2. 参考文献自动获取
python reference_fetcher.py --query "solid state battery garnet electrolyte" -n 5
# 3. DOCX 格式预检
python docx_validator.py paper.docx
# 4. DOCX → LaTeX
python docx_to_latex.py paper.docx --venue cvpr
# 5. DOCX → 交互式 HTML
python docx_to_html.py paper.docx --theme dark --output paper.html
# 6. 会议推荐
python venue_recommender.py --keywords "computer vision, object detection, transformer"
方式三:代码模板直接调用
import sys
sys.path.insert(0, './references')
from code_templates import setup_document, add_figure, add_table_with_caption
doc = setup_document(title="Your Paper", authors="Author", venue="NeurIPS")
add_figure(doc, "./fig1.png", "Figure 1. Architecture.")
add_table_with_caption(doc, ["Method", "Acc"], [["Ours", "89.4"]], bold_best_row=1)
doc.save("paper.docx")
5、效果展示
Before / After
| 维度 | 传统方式(Before) | Skill 方式(After) |
|---|---|---|
| 论文结构 | 凭经验拼凑,章节缺失或顺序混乱 | 强制 6 大章节 + 固定子节 (3.1-3.4, 4.1-4.3) |
| 图表生成 | 手动写 matplotlib 代码,调参 1-2 小时 | CSV 上传 → data_to_charts.py → 30 秒出图 |
| 图片嵌入 | 经常"有引用没图片",临投稿才发现 | add_figure() 物理嵌入 + 存在性检查 |
| 参考文献 | 手动查文献,易编造引用 | CrossRef API 递进检索,真实 DOI |
| 排版时间 | 2-4 小时手动调整字体/页眉/页脚 | 代码生成,5 分钟完成 |
| 质量检查 | 提交前发现图片没插、引用缺失 | docx_validator.py 0 errors, 0 warnings |
| 格式转换 | 手动转 LaTeX,格式全丢 | docx_to_latex.py 一键转换 |
| 会议选择 | 凭印象投稿,错过截稿日期 | venue_recommender.py 匹配评分 + 截稿倒计时 |
6、Skill 链接
- GitHub 仓库:GitHub - Guan-Yep/sci-paper-writing: 按照顶级会议惯例(CVPR、ICCV、NeurIPS、ICML、ICLR、ACL、EMNLP)撰写、排版与呈现可发表至学术期刊的科研论文。当用户要求撰写、起草、生成或排版科研论文、实证研究或学术手稿时,应使用此技能。触发场景包括:“起草一篇研究论文”、“生成一篇学术论文”、“排版我的手稿”、“帮我写论文章节”,或任何涉及科学写作(包含引言、方法、实验和参考文献等章节)的请求。 · GitHub
- LICENSE:MIT(可自由使用、修改、分发)
- 包含内容:
SKILL.md:技能定义(Agent 入口)README.md:完整项目文档(含 Mermaid 架构图 + 技术栈矩阵)references/:3 大规范契约 +code_templates.py代码模板scripts/:6 个增强功能脚本(数据→图表、文献获取、格式预检、LaTeX 转换、HTML 转换、会议推荐)
7、总结与思考
最满意的地方
- "规范驱动"设计:把论文写作从"凭经验"变成"按规范执行"。3 份契约文件(structure / style / figure-table)是 Skill 的灵魂,Agent 不自由发挥,而是严格执行规范。
- “Agent 做不到的事交给脚本”:识别出 6 个大模型自身无法完成的环节(解析 CSV、联网查文献、扫描 DOCX XML、生成交互式 HTML),逐个写成独立脚本。这是 Skill 区别于单纯 Prompt Engineering 的核心。
- 图片物理嵌入强制规则:从"有引用无图片"的严重缺陷,到
add_figure()的强制嵌入 +docx_validator.py的 XML 扫描验证,形成了一个完整的防错闭环。
后续优化方向
- 更多 Venue 模板:当前支持 CVPR / NeurIPS / ICML / ICLR / ACL 的 LaTeX 转换,计划扩展至 ECCV / EMNLP / Nature 系列
- 图表模板库:当前支持 4 种图表类型(training_curve / comparison_bar / ablation_bar / scatter),计划增加热力图、混淆矩阵、ROC 曲线等科研常用图表
- 引用网络可视化:
reference_fetcher.py已支持引文扩展(--expand),计划增加引用关系图谱输出 - 协作模式:支持多人同时编辑同一篇论文的 DOCX,自动合并修改









