official-doc-writer

GitHub 作者 wonderqi@163.com

党政机关公文生成技能,支持通知、报告、请示、函等公文类型,符合GB/T 9704-2012标准。当用户需要生成党政机关公文、创建正式文件、导出Word格式公文时调用。无论用户使用何种表述方式(如'帮我写个报告'、'生成一份通知'、'制作公文'等),只要涉及公文文档生成,都应使用此技能。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install github:LeoYeAI~openclaw-master-skills~official-doc-writer
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/github%3ALeoYeAI~openclaw-master-skills~official-doc-writer/file -o official-doc-writer.md
# 党政机关公文生成技能

## 概述

本技能用于生成符合《党政机关公文处理工作条例》和GB/T 9704-2012《党政机关公文格式》国家标准的公文文档,支持多种公文类型,并可导出为标准格式的Word文档。

## 快速开始

### 使用可执行脚本

本技能提供了一个完整的Python脚本,可以直接生成符合标准的Word文档:

```bash
python scripts/generate_official_doc.py
```

脚本位置:`scripts/generate_official_doc.py`

### 基本使用流程

1. **收集公文要素**:从用户输入中提取公文类型、发文机关、主送机关、标题、正文等关键信息
2. **调用生成脚本**:使用`scripts/generate_official_doc.py`生成Word文档
3. **保存文档**:将生成的文档保存到用户指定位置

## 字体安装

### 概述

根据GB/T 9704-2012《党政机关公文格式》国家标准,公文生成需要以下特殊字体。本技能提供了完整的字体安装解决方案。

### 必需字体清单

| 字体名称 | 用途 | 文件名 | 是否必需 |
|---------|------|--------|---------|
| 方正小标宋_GBK | 发文机关标志、标题 | FZXBSJW.TTF | 是 |
| 仿宋_GB2312 | 正文、发文字号 | SIMFANG.TTF | 是 |
| 黑体 | 一级标题、密级 | SIMHEI.TTF | 是 |
| 楷体_GB2312 | 二级标题、签发人姓名 | SIMKAI.TTF | 是 |
| 宋体 | 页码 | SIMSUN.TTF | 是 |

### 自动安装(推荐)

使用skill提供的自动安装脚本:

```bash
# 进入skill目录
cd .trae/skills/official-doc-writer

# 运行安装脚本
python scripts/install_fonts.py
```

**注意**:
- Windows系统需要以管理员身份运行
- macOS/Linux系统可能需要输入密码

### 手动安装

#### Windows系统

1. **从系统字体目录复制**:
   ```
   复制字体文件到:C:\Windows\Fonts
   ```

2. **或从fonts目录安装**:
   - 右键点击字体文件
   - 选择"为所有用户安装"

#### macOS系统

1. **复制字体文件**:
   ```
   复制字体文件到:~/Library/Fonts
   ```

2. **验证安装**:
   - 打开"字体册"应用
   - 检查字体是否已安装

#### Linux系统

1. **创建字体目录**:
   ```bash
   mkdir -p ~/.fonts
   ```

2. **复制字体文件**:
   ```bash
   cp fonts/*.ttf ~/.fonts/
   ```

3. **更新字体缓存**:
   ```bash
   fc-cache -fv
   ```

### 字体下载

如果系统缺少所需字体,可以从以下渠道获取:

#### 方式1:从Windows系统字体目录复制(推荐)

Windows 10/11系统已自带所有必需字体(除方正小标宋外):
```
C:\Windows\Fonts
```

复制以下文件到skill的fonts目录:
- `SIMFANG.TTF`(仿宋_GB2312)
- `SIMHEI.TTF`(黑体)
- `SIMKAI.TTF`(楷体_GB2312)
- `SIMSUN.TTF`(宋体)

#### 方式2:从官方渠道下载

**方正小标宋_GBK**:
- 官方网站:http://www.foundertype.com/
- 注意:需要商业授权

**Windows系统字体**:
- 微软官网下载页面
- 或从Windows系统字体目录复制

#### 方式3:使用开源字体替代

- **思源宋体**(替代宋体)
- **思源黑体**(替代黑体)

### 验证字体安装

运行字体安装脚本会自动检查系统已安装的字体,并显示检查结果。

### 详细说明

完整的字体下载和安装说明请参考:
- **字体下载说明**:`fonts/README.md`
- **字体安装脚本**:`scripts/install_fonts.py`

## 对话交互模式

### 概述

本技能支持**智能对话交互模式**,通过逐步引导的方式收集公文要素,提供更友好的用户体验。

### 对话要素清单

#### 核心要素(必须交互)

| 要素 | 交互方式 | 示例对话 |
|------|---------|---------|
| **公文类型** | 选择式对话 | "您需要生成什么类型的公文?\n1. 通知\n2. 报告\n3. 请示\n4. 函\n..." |
| **发文机关** | 开放式对话 | "请告诉我发文机关的全称(如:XXX公司)" |
| **主送机关** | 开放式对话 | "请告诉我主送机关(接收单位)" |
| **公文标题** | 引导式对话 | "请简要描述公文事由,我将帮您生成规范标题" |
| **成文日期** | 确认式对话 | "成文日期是今天(2026年3月13日)吗?" |
| **正文内容** | 多行输入 | "请描述公文的主要内容要点" |

#### 可选要素(智能交互)

| 要素 | 触发条件 | 交互方式 |
|------|---------|---------|
| **发文字号** | 用户需要 | 开放式对话 |
| **密级** | 用户提及保密 | 选择式对话 |
| **紧急程度** | 用户提及紧急 | 选择式对话 |
| **签发人** | 上行文(请示、报告) | 开放式对话 |
| **附件** | 用户提及附件 | 确认式对话 |
| **抄送机关** | 用户提及抄送 | 开放式对话 |
| **印发机关** | 默认值确认 | 确认式对话 |
| **印发日期** | 默认值确认 | 确认式对话 |

### 智能提示系统

#### 开头语建议

根据公文类型自动推荐合适的开头语:
- **通知**:为...,现...如下:
- **报告**:现将...报告如下:
- **请示**:关于...的请示
- **函**:关于...的函

#### 结尾语建议

根据公文类型自动推荐合适的结尾语:
- **通知**:特此通知。
- **报告**:特此报告。
- **请示**:妥否,请批示。
- **函**:请予研究函复。

### 技术实现

#### 对话管理器

使用`scripts/dialog_manager.py`管理对话状态:

```python
from scripts.dialog_manager import create_dialog_manager

# 创建对话管理器
dialog = create_dialog_manager()

# 获取下一个提示
prompt = dialog.get_next_prompt()

# 处理用户输入
dialog.process_user_input(user_input)

# 获取公文内容
content = dialog.get_document_content()
```

#### 智能提示系统

使用`scripts/smart_prompts.py`获取智能提示:

```python
from scripts.smart_prompts import create_smart_prompt_system

# 创建智能提示系统
prompts = create_smart_prompt_system()

# 获取开头语建议
opening_prompts = prompts.get_opening_prompt("通知")

# 获取结尾语建议
ending_prompts = prompts.get_ending_prompt("通知")

# 获取结构建议
structure_hints = prompts.get_structure_hint("通知")
```

### 对话模式优势

1. **用户友好**:逐步引导,降低使用门槛
2. **智能提示**:提供专业的公文语言建议
3. **灵活性强**:支持随时修改和调整
4. **质量保证**:确保所有必要要素齐全
5. **学习价值**:帮助用户了解公文规范

### 使用示例

#### 示例1:生成通知

```
AI: 您好!我将帮您生成一份公文。请问您需要生成什么类型的公文?
    1. 通知
    2. 报告
    3. 请示
    4. 函
    ...

用户: 通知

AI: 好的,生成通知。请告诉我发文机关的全称:
用户: XXX公司

AI: 收到。请问主送机关(接收单位)是?
用户: 各部门

AI: 请简要描述通知的事由,我将帮您生成规范标题:
用户: 开展2026年度安全检查工作

AI: 我为您生成的标题是:"关于开展2026年度安全检查工作的通知",是否满意?
用户: 满意

AI: 请提供发文字号(格式:机关代字〔年份〕序号号):
用户: 沈数据〔2026〕1号

AI: 成文日期是今天(2026年3月13日)吗?
用户: 是的

AI: 这份公文需要标注密级吗?
用户: 不需要

AI: 这份公文的紧急程度是?
用户: 不需要

AI: 请描述通知的主要内容要点:
用户: 检查时间、检查范围、检查要求

AI: 这份公文有附件吗?
用户: 没有

AI: 是否需要抄送给其他单位?
用户: 需要抄送给沈阳市应急管理局

AI: 印发机关是发文机关办公室吗?
用户: 是的

AI: 印发日期与成文日期相同吗?
用户: 是的

AI: 现在生成公文预览,请确认...
[预览内容]

AI: 请确认公文内容是否正确?
用户: 确认无误,生成文档

AI: 公文已生成完成!
```

### 技术实现

#### 对话管理器

使用`scripts/dialog_manager.py`管理对话状态:

```python
from scripts.dialog_manager import create_dialog_manager

# 创建对话管理器
dialog = create_dialog_manager()

# 获取下一个提示
prompt = dialog.get_next_prompt()

# 处理用户输入
dialog.process_user_input(user_input)

# 获取公文内容
content = dialog.get_document_content()
```

#### 智能提示系统

使用`scripts/smart_prompts.py`获取智能提示:

```python
from scripts.smart_prompts import create_smart_prompt_system

# 创建智能提示系统
prompts = create_smart_prompt_system()

# 获取开头语建议
opening_prompts = prompts.get_opening_prompt("通知")

# 获取结尾语建议
ending_prompts = prompts.get_ending_prompt("通知")

# 获取结构建议
structure_hints = prompts.get_structure_hint("通知")
```

### 对话模式优势

1. **用户友好**:逐步引导,降低使用门槛
2. **智能提示**:提供专业的公文语言建议
3. **灵活性强**:支持随时修改和调整
4. **质量保证**:确保所有必要要素齐全
5. **学习价值**:帮助用户了解公文规范

## 支持的公文类型

| 类型 | 适用场景 | 文种特点 | 结尾语 |
|------|----------|----------|--------|
| 通知 | 发布、传达要求下级机关执行和有关单位周知或者执行的事项 | 指导性、告知性 | 特此通知。 |
| 通报 | 表彰先进、批评错误、传达重要精神和告知重要情况 | 典型性、教育性 | 特此通报。 |
| 报告 | 向上级机关汇报工作、反映情况,回复上级机关的询问 | 陈述性、汇报性 | 特此报告。 |
| 请示 | 向上级机关请求指示、批准 | 请求性、期复性 | 妥否,请批示。 |
| 函 | 不相隶属机关之间商洽工作、询问和答复问题、请求批准和答复审批事项 | 商洽性、灵活性 | 请予研究函复。 |
| 纪要 | 记载会议主要情况和议定事项 | 纪实性、提要性 | - |
| 决定 | 对重要事项作出决策和部署、奖惩有关单位和人员、变更或撤销下级不适当的决定事项 | 决策性、权威性 | - |
| 意见 | 对重要问题提出见解和处理办法 | 指导性、建议性 | - |
| 批复 | 答复下级机关请示事项 | 针对性、回复性 | - |
| 命令(令) | 公布行政法规和规章、宣布施行重大强制性措施、批准授予和晋升衔级、嘉奖有关单位和人员 | 强制性、严肃性 | - |

## 公文格式规范(GB/T 9704-2012)

### 一、纸张与版面要求

#### 1.1 纸张规格
- **纸张类型**: A4型纸
- **成品幅面尺寸**: 210mm × 297mm

#### 1.2 页边距与版心
| 参数 | 尺寸 |
|------|------|
| 天头(上白边) | 37mm ± 1mm |
| 订口(左白边) | 28mm ± 1mm |
| 版心尺寸 | 156mm × 225mm |

#### 1.3 字体字号规范
| 要素 | 字体 | 字号 | 颜色 |
|------|------|------|------|
| 发文机关标志 | 小标宋体 | - | 红色 |
| 标题 | 小标宋体 | 2号 | 黑色 |
| 正文 | 仿宋体 | 3号 | 黑色 |
| 一级标题 | 黑体 | 3号 | 黑色 |
| 二级标题 | 楷体 | 3号 | 黑色 |
| 三级/四级标题 | 仿宋体 | 3号 | 黑色 |
| 发文字号 | 仿宋体 | 3号 | 黑色 |
| 签发人 | 仿宋体(标签)/ 楷体(姓名) | 3号 | 黑色 |
| 密级/紧急程度 | 黑体 | 3号 | 黑色 |
| 抄送机关 | 仿宋体 | 4号 | 黑色 |
| 印发机关/日期 | 仿宋体 | 4号 | 黑色 |
| 页码 | 宋体 | 4号半角 | 黑色 |

#### 1.4 行数与字数
- **每面行数**: 22行
- **每行字数**: 28个字
- **撑满版心**: 是

### 二、公文要素编排规则

#### 2.1 版头(公文首页红色分隔线以上部分)

**发文机关标志**
- 内容:发文机关全称或规范化简称 + "文件"二字
- 位置:居中排布,上边缘至版心上边缘35mm
- 字体:红色小标宋体字

**发文字号**
- 格式:`〔年份〕序号号`
- 位置:发文机关标志下空二行,居中排布
- 规则:年份用六角括号`〔〕`,序号不编虚位

**版头分隔线**
- 位置:发文字号之下4mm处
- 规格:红色,与版心等宽

#### 2.2 主体(红色分隔线以下至版记之前)

**标题**
- 字体:2号小标宋体字
- 位置:红色分隔线下空二行,居中排布
- 格式:发文机关名称 + 事由 + 文种
- 回行规则:词意完整,梯形或菱形排列

**主送机关**
- 位置:标题下空一行,居左顶格
- 格式:机关名称后标全角冒号

**正文**
- 字体:3号仿宋体字
- 位置:主送机关名称下一行
- 缩进:每个自然段左空二字,回行顶格
- 结构层次序数:
  - 第一层:`一、`(黑体)
  - 第二层:`(一)`(楷体)
  - 第三层:`1.`(仿宋体)
  - 第四层:`(1)`(仿宋体)

**附件说明**
- 位置:正文下空一行,左空二字
- 格式:`附件:附件名称`
- 多附件时使用阿拉伯数字标注顺序号

**发文机关署名**
- 位置:成文日期之上,居中编排
- 联合行文时按发文机关顺序排列

**成文日期**
- 格式:阿拉伯数字,年月日标全
- 位置:居中编排
- 规则:月、日不编虚位(1不编为01)

#### 2.3 版记(公文末页分隔线以下部分)

**分隔线**
- 首条和末条:粗线(0.35mm)
- 中间:细线(0.25mm)
- 宽度:与版心等宽

**抄送机关**
- 字体:4号仿宋体字
- 位置:印发机关和印发日期之上一行
- 格式:`抄送:机关名称。`

**印发机关和印发日期**
- 字体:4号仿宋体字
- 位置:末条分隔线之上
- 格式:印发机关左空一字,印发日期右空一字

## 工作流程

### 步骤1:需求收集

从用户输入中提取以下信息:

1. **公文类型**:通知/报告/请示/函/通报/纪要等
2. **发文机关**:单位全称
3. **主送机关**:接收单位
4. **发文字号**:如"沈数据〔2026〕1号"
5. **标题**:公文标题
6. **正文内容**:核心内容要点
7. **成文日期**:如"2026年3月13日"
8. **附件**:是否有附件(可选)
9. **抄送机关**:抄送单位(可选)

### 步骤2:生成文档

使用`scripts/generate_official_doc.py`脚本生成Word文档:

```python
from scripts.generate_official_doc import create_official_document

content = {
    'issuer': '发文机关名称',
    'doc_number': '发文字号',
    'title': '公文标题',
    'recipient': '主送机关',
    'body': ['正文段落1', '正文段落2'],
    'signer': '发文机关署名',
    'date': '成文日期',
    'attachment': '附件说明(可选)',
    'copy_to': '抄送机关(可选)'
}

doc = create_official_document('公文类型', content)
doc.save('输出文件路径.docx')
```

### 步骤3:格式校