DOCX Skill 详解
Word 文档的创建、编辑和分析
基本信息
| 属性 | 值 |
|---|---|
| 名称 | docx |
| 类别 | 文档处理 |
| 输出格式 | .docx |
| 许可证 | 专有(仅源码可见) |
yaml
name: docx
description: "Comprehensive document creation, editing, and analysis with
support for tracked changes, comments, formatting preservation, and text
extraction. When Claude needs to work with professional documents (.docx
files) for: (1) Creating new documents, (2) Modifying or editing content,
(3) Working with tracked changes, (4) Adding comments, or any other
document tasks"1. 核心概念
1.1 DOCX 文件本质
通俗比喻:.docx 文件本质上是一个 ZIP 压缩包,里面包含 XML 文件和其他资源。理解这一点是处理 Word 文档的关键。
1.2 决策树
mermaid
graph TD
A[任务类型?] --> B[读取/分析内容]
A --> C[创建新文档]
A --> D[编辑现有文档]
B --> B1[使用 pandoc 或 XML 访问]
C --> C1[使用 docx-js]
D --> D1{文档来源?}
D1 --> D2[自己的文档 + 简单修改]
D1 --> D3[他人的文档]
D1 --> D4[法律/学术/商业文档]
D2 --> D5[基本 OOXML 编辑]
D3 --> D6[红线标记工作流]
D4 --> D62. 读取和分析内容
2.1 文本提取(推荐)
bash
# 使用 pandoc 转换为 Markdown
pandoc --track-changes=all path-to-file.docx -o output.md
# 选项:
# --track-changes=accept 接受所有修订
# --track-changes=reject 拒绝所有修订
# --track-changes=all 显示所有修订2.2 原始 XML 访问
需要 XML 访问的场景:
- 批注(Comments)
- 复杂格式
- 文档结构
- 嵌入媒体
- 元数据
bash
# 解包文件
python ooxml/scripts/unpack.py <office_file> <output_directory>2.3 关键文件结构
| 文件路径 | 内容 |
|---|---|
word/document.xml | 主文档内容 |
word/comments.xml | 批注(被 document.xml 引用) |
word/media/ | 嵌入的图片和媒体文件 |
修订标记:
<w:ins>- 插入内容<w:del>- 删除内容
3. 创建新文档
3.1 工作流
使用 docx-js 库(JavaScript/TypeScript):
markdown
1. **必须完整阅读** docx-js.md 文件(~500行)
获取详细语法、格式规则和最佳实践
2. 创建 JS/TS 文件
使用 Document, Paragraph, TextRun 组件
3. 导出为 .docx
使用 Packer.toBuffer()3.2 代码示例
javascript
const { Document, Paragraph, TextRun, Packer } = require('docx');
const fs = require('fs');
// 创建文档
const doc = new Document({
sections: [{
children: [
new Paragraph({
children: [
new TextRun({
text: "Hello World",
bold: true,
size: 28
})
]
})
]
}]
});
// 导出
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("output.docx", buffer);
});4. 编辑现有文档
4.1 基本 OOXML 编辑
使用 Document library(Python 库):
markdown
1. **必须完整阅读** ooxml.md 文件(~600行)
获取 Document 库 API 和 XML 编辑模式
2. 解包文档
python ooxml/scripts/unpack.py <file.docx> <dir>
3. 创建并运行 Python 脚本
使用 Document library
4. 打包最终文档
python ooxml/scripts/pack.py <dir> <file.docx>5. 红线标记工作流(Redlining)
5.1 适用场景
markdown
**必须使用红线标记的情况**:
- 法律文档
- 学术文档
- 商业文档
- 政府文档
- 他人的文档
**推荐使用红线标记的情况**:
- 需要追踪修改的任何文档5.2 核心原则:最小化精确编辑
markdown
**原则**:只标记实际更改的文本
✗ 错误 - 替换整个句子:
<w:del><w:delText>The term is 30 days.</w:delText></w:del>
<w:ins><w:t>The term is 60 days.</w:t></w:ins>
✓ 正确 - 只标记更改部分:
<w:r><w:t>The term is </w:t></w:r>
<w:del><w:delText>30</w:delText></w:del>
<w:ins><w:t>60</w:t></w:ins>
<w:r><w:t> days.</w:t></w:r>5.3 红线标记工作流步骤
markdown
**1. 获取 Markdown 表示**
pandoc --track-changes=all path-to-file.docx -o current.md
**2. 识别并分组更改**
- 按章节分组(3-10 个更改/批次)
- 使用章节/标题编号定位
- 不要使用 Markdown 行号
**3. 读取文档并解包**
- 完整阅读 ooxml.md
- 解包文档
- 记录建议的 RSID
**4. 分批实现更改**
- 映射文本到 XML
- 创建并运行脚本
- 每批次后验证
**5. 打包文档**
python ooxml/scripts/pack.py unpacked reviewed-document.docx
**6. 最终验证**
pandoc --track-changes=all reviewed-document.docx -o verification.md
grep "original phrase" verification.md # 应该找不到
grep "replacement phrase" verification.md # 应该找到6. 文档转图片
6.1 两步转换流程
bash
# 1. DOCX 转 PDF
soffice --headless --convert-to pdf document.docx
# 2. PDF 转 JPEG
pdftoppm -jpeg -r 150 document.pdf page
# 生成:page-1.jpg, page-2.jpg 等
# 选项:
# -r 150 分辨率 150 DPI
# -jpeg 输出 JPEG(可用 -png)
# -f N 起始页
# -l N 结束页6.2 指定页面范围
bash
pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page
# 只转换第 2-5 页7. 代码风格指南
markdown
**重要**:生成 DOCX 操作代码时:
✓ 写简洁的代码
✓ 避免冗长的变量名
✓ 避免多余的操作
✗ 避免不必要的 print 语句8. 依赖项
| 工具 | 安装命令 | 用途 |
|---|---|---|
| pandoc | sudo apt-get install pandoc | 文本提取 |
| docx | npm install -g docx | 创建新文档 |
| LibreOffice | sudo apt-get install libreoffice | PDF 转换 |
| Poppler | sudo apt-get install poppler-utils | PDF 转图片 |
| defusedxml | pip install defusedxml | 安全 XML 解析 |
9. 使用示例
9.1 触发方式
"帮我创建一个 Word 文档"
"分析这个 docx 文件的内容"
"在这份合同中添加修订标记"
"extract text from this document"
"add tracked changes to this file"9.2 典型场景
| 场景 | 推荐方法 |
|---|---|
| 读取文本 | pandoc 转 Markdown |
| 创建新文档 | docx-js |
| 简单编辑 | 基本 OOXML |
| 合同审查 | 红线标记工作流 |
| 批注处理 | 原始 XML 访问 |
10. 本节小结
| 要点 | 说明 |
|---|---|
| 文件本质 | DOCX = ZIP 压缩的 XML |
| 创建工具 | docx-js (JavaScript) |
| 编辑工具 | Document library (Python) |
| 红线标记 | 法律/商业文档必须使用 |
| 最小编辑 | 只标记实际更改的文本 |
返回:Skills 目录