name: DocFormat description: | Word 文档一站式检查与格式化技能。当用户上传了 Word(.docx) 文档并需要检查错误、 生成检查报告、添加批注、或按照 GB/T 9704-2012 国标修正公文格式时,务必使用此技能。 适用场景包括但不限于:用户说"帮我检查文档"、"文档有没有问题"、"给文档加批注"、 "格式不规范帮我改"、"按国标排版公文"、"检查错别字"、"文档格式修正"等。 即使只是提到 Word 文档的质量、规范、排版、校对等话题,也应主动推荐此技能。
本技能对用户上传的 Word(.docx) 文档执行四个阶段的一站式处理:
DocFormat/ ├── SKILL.md # 技能主文件(触发规则 + 四阶段工作流指令) ├── scripts/ │ ├── orchestrate.py # 主控编排脚本(一键串联四阶段) │ ├── doc_checker.py # 文本提取 + 规则检查 + 批注写入 │ └── gb_t9704_formatter.py # GB/T 9704-2012 国标格式修正 └── references/ └── check_rules.md # 完整检查规则清单(6大类,供 LLM 参照)
用户上传 .docx 文档
│
▼
┌─ 阶段1: 检查 ──────────────────────────┐
│ 1.1 程序化规则检查 (doc_checker.py) │
│ → 标点、间距、错别字、编号等 14 种规则 │
│ 1.2 LLM 语义深度检查 │
│ → 病句、逻辑矛盾、术语一致性等 │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段2: 报告 ──────────────────────────┐
│ 合并所有 issues → 生成 Markdown 检查报告 │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段3: 批注 ──────────────────────────┐
│ 合并 issues → 在原文档中插入 Word 批注 │
│ (同一段落多条问题自动合并) │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段4: 格式修正 ──────────────────────┐
│ 按 GB/T 9704-2012 国标修正文档格式 │
│ → 页面、字体、段落、页码、网格等 │
└─────────────────────────────────────────┘
│
▼
输出 3 个文件:
📄
确认 python-docx 和 lxml 已安装:
pip install python-docx lxml
本技能的两个核心脚本位于 scripts/ 目录:
- doc_checker.py — 文本提取、规则检查、批注写入
- gb_t9704_formatter.py — GB/T 9704-2012 格式修正
按顺序执行以下四个阶段。每个阶段完成后告知用户当前进度。
此阶段分为两步——先运行程序化规则检查,再由 LLM 做语义深度检查。
运行 doc_checker.py 提取文本并执行规则检查:
python scripts/doc_checker.py extract <input.docx> --text-only --skip-empty -o /home/z/my-project/download/<stem>_paragraphs.json
python scripts/doc_checker.py check <input.docx> -o /home/z/my-project/download/<stem>_rule_issues.json
此步骤自动检测以下问题(无需 LLM 介入): - 中英文标点混用、省略号格式错误、英文直引号 - 全角数字、中英文间距、数值与单位间距 - 60+ 常见错别字(如"戴来→带来""既使→即使") - 口语化表达、极端敏感措辞 - 列表编号/图表编号不连续
读取步骤 1.1 输出的 <stem>_paragraphs.json,逐段分析以下检查项(这些需要语义理解,程序化规则无法覆盖):
必须逐条检查的项目(参照 references/check_rules.md):
| 检查类别 | 具体检查项 |
|---|---|
| 错别字 | 形近字混淆(己/已/巳)、词语误用(不以为然≠不以为意)、搭配错误、AI 生成常见错误(同字重复、输入法错误) |
| 标点符号 | 书名号/引号误用、句末标点遗漏、顿号与逗号混用 |
| 书写格式 | 数字格式(叙述用汉字、统计用阿拉伯数字)、标题层级一致性 |
| 学术规范 | 术语前后不一致、缩写未展开、中英混排顺序、量纲单位不统一 |
| 语言质量 | 词语重复、病句(主语缺失、成分残缺、语序混乱)、逻辑矛盾、指代不明 |
| 文档专项 | 图注/表注格式统一性、参考文献格式统一性、目录与正文标题一致性 |
LLM 输出格式 — 生成 /home/z/my-project/download/<stem>_llm_issues.json,严格遵循此 JSON 结构:
[
{
"paragraph_index": 0,
"category": "错别字",
"severity": "error",
"comment": "\"戴来\"应为\"带来\"",
"evidence": "戴来"
},
{
"paragraph_index": 3,
"category": "语言质量",
"severity": "warning",
"comment": "主语缺失:\"通过实验,证明了……\"应为\"我们通过实验,证明了……\"",
"evidence": "通过实验,证明了"
}
]
字段说明:
- paragraph_index:段落索引(与 paragraphs.json 中的 index 对应)
- category:问题分类,取值范围为:错别字 / 标点符号 / 书写格式 / 学术规范 / 语言质量 / 文档专项
- severity:严重程度,取值范围为:error(必须修改)/ warning(建议修改)/ info(仅供参考)
- comment:问题描述(将直接写入 Word 批注,需简洁明确)
- evidence:原文中出问题的片段
注意事项: - 只报告确定存在的问题,不要过度猜测 - 每个问题必须关联到具体的段落索引 - 程序化规则已检测过的标点、间距、错别字等不必重复报告(步骤 1.1 已覆盖)
将步骤 1.1 和 1.2 的检查结果合并,生成一份 Markdown 格式的检查报告。
报告模板:
# 文档检查报告
**文件名**:<原始文件名>
**检查时间**:<当前时间>
**问题总数**:<总数>(错误 <error数> / 警告 <warning数> / 提示 <info数>)
---
## 一、错误(必须修改)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第3段 | 错别字 | "戴来"应为"带来" | 戴来 |
## 二、警告(建议修改)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第5段 | 语言质量 | "特别厉害"为口语化表达 | 特别厉害 |
## 三、提示(仅供参考)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第8段 | 学术规范 | "Python"首次出现建议标注中文译名 | 使用Python |
---
## 四、格式检查结果(GB/T 9704-2012)
| 检查项 | 结果 |
|-------|------|
| 页面尺寸(A4: 210×297mm) | 符合/不符合 |
| 天头(37mm)/ 订口(28mm) | 符合/不符合 |
| 正文字体(3号仿宋) | 符合/不符合 |
| 标题字体(2号小标宋) | 符合/不符合 |
| 每面行数(22行)/ 每行字数(28字) | 符合/不符合 |
| 页码格式 | 符合/不符合 |
将报告保存为 /home/z/my-project/download/<stem>_检查报告.md,同时在对话中向用户展示报告摘要。
合并规则检查和 LLM 检查的所有 issues,调用 doc_checker.py annotate 一次性写入 Word 批注:
# 先合并两个 issues JSON 文件(规则检查 + LLM 检查)
# 可用 Python 一行合并:
python3 -c "
import json, sys
rule = json.load(open('/home/z/my-project/download/<stem>_rule_issues.json'))
llm = json.load(open('/home/z/my-project/download/<stem>_llm_issues.json'))
rule_list = rule.get('issues', rule) if isinstance(rule, dict) else rule
llm_list = llm if isinstance(llm, list) else llm.get('issues', llm)
merged = rule_list + llm_list
json.dump(merged, open('/home/z/my-project/download/<stem>_all_issues.json','w'), ensure_ascii=False, indent=2)
print(f'合并完成:{len(merged)} 条问题')
"
# 写入批注
python scripts/doc_checker.py annotate <input.docx> --issues /home/z/my-project/download/<stem>_all_issues.json -o /home/z/my-project/download/<stem>_批注版.docx
输出文件:<stem>_批注版.docx — 带批注的原文档(内容不变,仅添加批注)。
调用 gb_t9704_formatter.py 对文档进行 GB/T 9704-2012 格式修正:
python scripts/gb_t9704_formatter.py <input.docx> --advanced -o /home/z/my-project/download/<stem>_格式修正版.docx
此步骤修正的内容包括: - 页面设置:A4 纸、天头 37mm、订口 28mm、版心 156×225mm - 默认字体:3 号仿宋体、黑色 - 标题:2 号小标宋体、居中 - 结构层次:一级黑体、二级楷体、三四级仿宋 - 页码:4 号宋体、— X — 格式、奇右偶左 - 版头/版记要素格式修正 - 文档网格:每面 22 行、每行 28 字
7w4.net小葱技能。
重要:格式修正版基于原始文档处理(不包含批注),因为批注和格式修正需要分别操作原始文档以避免 XML 冲突。
输出文件:<stem>_格式修正版.docx
处理完成后,向用户提供以下文件:
| 文件 | 说明 |
|---|---|
<stem>_检查报告.md |
检查报告(Markdown 格式) |
<stem>_批注版.docx |
带批注的原文档 |
<stem>_格式修正版.docx |
国标格式修正后的文档 |
向用户说明: - 批注版保留了原始内容和格式,仅在问题位置添加了 Word 批注,方便逐条审阅 - 格式修正版按 GB/T 9704-2012 国标重新排版,建议在审阅完批注后再使用此版本 - 两份文档建议配合使用:先在批注版中确认问题,再在格式修正版中做最终修订
如果用户只需要部分功能,按需执行对应阶段:
| 用户意图 | 执行阶段 |
|---|---|
| "帮我检查文档有没有问题" | 阶段 1 + 阶段 2 |
| "给文档加批注" | 阶段 1 + 阶段 3 |
| "帮我按国标排版" | 阶段 4 |
| "检查并修改格式" | 全部四个阶段 |
| "只检查错别字" | 阶段 1(只保留错别字相关检查项) |
所有脚本相对于 Skill 根目录:
- scripts/doc_checker.py — 文本提取与批注工具
- scripts/gb_t9704_formatter.py — 国标格式修正工具
- references/check_rules.md — 完整检查规则清单
所有输出文件保存到 /home/z/my-project/download/ 目录。
这个 Skill 质量不错,能一次性完成 Word 文档的错别字检查、格式审查、添加批注和国标排版,流程完整、操作便捷。检查规则覆盖全面,支持中英文标点、错别字、书写格式等多维度检查,并能按公文国标修正格式。优点是功能集成度高,规则文档详细;不足是部分功能依赖用户手动操作,整体自动化程度还有提升空间。