一键导入
wps-gongwen
公文排版。按国标GB/T 9704格式排版通知、请示、批复、函件等公文, 红头文件格式自动处理。 用于帮助用户排版公文。当用户提到公文、红头文件、通知、请示、批复时触发。 Chinese government document formatter per GB/T 9704.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
公文排版。按国标GB/T 9704格式排版通知、请示、批复、函件等公文, 红头文件格式自动处理。 用于帮助用户排版公文。当用户提到公文、红头文件、通知、请示、批复时触发。 Chinese government document formatter per GB/T 9704.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
考勤打卡统计。把考勤机导出的打卡数据丢进来,自动统计每个人的 迟到、早退、缺勤、加班时长,生成月度考勤汇总表,异常考勤自动标红。 用于帮助HR处理考勤数据。当用户提到考勤、打卡、迟到、加班统计时触发。 Attendance tracker - generates summary reports from clock-in records.
文档批量格式转换。把一个文件夹里的Word全转文本、Excel全导出CSV、 Markdown转Word,支持docx/txt/xlsx/csv/md等格式批量互转,一次搞定。 用于帮助用户批量转换文档格式。当用户提到批量转换、格式转换、导出时触发。 Batch converts documents between formats (docx/pdf/xlsx/csv/md).
预算表一键生成。部门年度预算、项目预算、活动经费预算,选个模板填数字就行, 小计合计公式自动写好,还有预算vs实际对比和执行率自动计算。 用于帮助财务和行政制作预算表。当用户提到预算、费用表、经费时触发。 Budget spreadsheet generator with formulas and variance analysis.
证书奖状批量生成。给一份名单,批量生成荣誉证书、结业证书、聘书、感谢信, 每人一份独立文件,年终评优、培训结业、表彰活动必备工具。 用于帮助用户批量生成证书。当用户提到证书、奖状、聘书时触发。 Batch certificate/award generator from a list of recipients.
数据图表一键生成。不知道数据该用什么图表?告诉我你的数据和目的, 自动推荐最佳图表类型并生成,柱状图折线图饼图散点图都支持,还帮你调配色。 用于帮助用户制作数据可视化图表。当用户提到图表、柱状图、折线图、饼图时触发。 Chart generator - recommends best chart type and creates professional charts.
日历排班值班表。生成带法定节假日和调休标注的月度/年度日历表, 还能做三班倒/两班倒排班表和节假日值班安排,颜色区分不同班次一目了然。 用于帮助用户生成日历和排班表。当用户提到日历、排班、值班、节假日时触发。 Chinese calendar with holidays, shift scheduling, and duty rosters.
| name | wps-gongwen |
| description | 公文排版。按国标GB/T 9704格式排版通知、请示、批复、函件等公文, 红头文件格式自动处理。 用于帮助用户排版公文。当用户提到公文、红头文件、通知、请示、批复时触发。 Chinese government document formatter per GB/T 9704. |
| license | MIT |
| user-invocable | true |
| argument-hint | [文种] [主题/内容描述] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"公文排版","description_zh":"按国标GB/T 9704格式排版通知、请示、批复、函件等公文","tags":["公文","GB/T 9704","红头文件","python-docx","WPS"],"version":"1.0.2","license":"MIT"} |
按 GB/T 9704-2012《党政机关公文格式》 标准,自动生成规范公文 .docx 文件。
docx-writerjsa-macro| 文种 | 适用场景 | 行文方向 |
|---|---|---|
| 通知 | 发布规章、转发公文、安排工作 | 下行 |
| 通报 | 表彰先进、批评错误、传达情况 | 下行 |
| 请示 | 请求上级批准或指示 | 上行 |
| 报告 | 向上级汇报工作、反映情况 | 上行 |
| 批复 | 答复下级请示 | 下行 |
| 函 | 平级或不相隶属单位间商洽 | 平行 |
| 纪要 | 记载会议主要情况和议定事项 | — |
| 决定 | 对重要事项作出决策和部署 | 下行 |
| 意见 | 对重要问题提出见解和处理办法 | 多向 |
| 命令(令) | 公布规章、嘉奖有功人员 | 下行 |
| 公告 | 向国内外宣布重要事项 | 下行 |
| 通告 | 在一定范围内公布应当遵守事项 | 下行 |
| 议案 | 提请审议事项 | 上行 |
| 决议 | 经会议讨论通过的重大决策事项 | 下行 |
| 公报 | 公开发布重要决定或重大事件 | 下行 |
向用户确认以下公文要素(未提供的合理推断或询问):
必填要素:
可选要素(有则填写):
根据文种特点撰写内容,遵循以下原则:
语言规范:
结构规范:
成文日期:
使用 python-docx 生成标准格式公文文件。
先确保依赖已安装:
pip install python-docx 2>/dev/null || pip3 install python-docx 2>/dev/null
生成脚本必须严格遵循以下格式标准:
纸张:A4 (210mm × 297mm)
上边距:37mm(上行文为37mm)
下边距:35mm
左边距:28mm
右边距:26mm
页码:外侧,4号半角阿拉伯数字
份号(如有):顶格,3号阿拉伯数字
密级和保密期限(如有):3号黑体
紧急程度(如有):3号黑体
发文机关标志:红色(小标宋体/黑体),上边缘至版心上边缘 35mm
字号根据机关名称长度调整,推荐使用上22下20区间
发文字号:3号仿宋,居中(联合行文居中)
签发人(上行文):3号仿宋,"签发人:"后标3号楷体人名
分隔线:红色,上距发文字号4mm
标题:2号方正小标宋(备选华文中宋),居中,行距固定值28.95pt
可分一行或多行排列,回行时做到词意完整
主送机关:3号仿宋,顶格,回行时顶格
正文:3号仿宋_GB2312,首行缩进2字符
行距:固定值28.95pt
每面排22行,每行排28个字
结构层次序号:
第一层 "一、" 黑体
第二层 "(一)" 楷体
第三层 "1." 仿宋
第四层 "(1)" 仿宋
附件说明:正文下一行,左空2字,3号仿宋
"附件:1. XXXXX"
发文机关署名:右空4字,发文机关全称或规范简称
成文日期:右空4字,阿拉伯数字,"XXXX年X月X日"
印章:端正、居中下压发文机关署名和成文日期
分隔线:版记上方,与正文间隔一行
抄送机关(如有):4号仿宋,"抄送:XXXX。"
印发机关和日期:4号仿宋,左标印发机关,右标印发日期
from docx import Document
from docx.shared import Pt, Mm, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.section import WD_ORIENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml
import os
def create_gongwen(
title, # 公文标题
doc_type, # 文种(通知/请示/批复等)
issuing_org, # 发文机关
doc_number, # 发文字号
main_recv, # 主送机关
body_text, # 正文内容(段落列表)
date_str, # 成文日期
cc_orgs=None, # 抄送机关
attachments=None,# 附件列表
urgency=None, # 紧急程度
secret_level=None,# 密级
signer=None, # 签发人(上行文)
output_path=None # 输出路径
):
doc = Document()
# === 页面设置 ===
section = doc.sections[0]
section.page_width = Mm(210)
section.page_height = Mm(297)
section.top_margin = Mm(37)
section.bottom_margin = Mm(35)
section.left_margin = Mm(28)
section.right_margin = Mm(26)
# === 辅助函数 ===
def add_para(text, font_name='仿宋_GB2312', size=16, bold=False,
align=WD_ALIGN_PARAGRAPH.JUSTIFY, space_before=0,
space_after=0, first_indent=None):
p = doc.add_paragraph()
p.alignment = align
p.paragraph_format.space_before = Pt(space_before)
p.paragraph_format.space_after = Pt(space_after)
p.paragraph_format.line_spacing = Pt(28.95)
if first_indent:
p.paragraph_format.first_line_indent = Pt(first_indent)
run = p.add_run(text)
run.font.size = Pt(size)
run.font.name = font_name
run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)
run.bold = bold
return p, run
# === 版头:发文机关标志(红头) ===
p_org = doc.add_paragraph()
p_org.alignment = WD_ALIGN_PARAGRAPH.CENTER
p_org.paragraph_format.space_before = Pt(60)
p_org.paragraph_format.space_after = Pt(0)
run_org = p_org.add_run(issuing_org)
run_org.font.size = Pt(22)
run_org.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
run_org.font.name = '方正小标宋简体'
run_org._element.rPr.rFonts.set(qn('w:eastAsia'), '方正小标宋简体')
run_org.bold = True
# "文件" 二字(如需要)
if not issuing_org.endswith('文件'):
run_wj = p_org.add_run('文件')
run_wj.font.size = Pt(22)
run_wj.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
run_wj.font.name = '方正小标宋简体'
run_wj._element.rPr.rFonts.set(qn('w:eastAsia'), '方正小标宋简体')
run_wj.bold = True
# === 发文字号 ===
if doc_number:
add_para(doc_number, '仿宋_GB2312', 16, False, WD_ALIGN_PARAGRAPH.CENTER)
# === 红色分隔线 ===
p_line = doc.add_paragraph()
p_line.paragraph_format.space_before = Pt(4)
p_line.paragraph_format.space_after = Pt(0)
# 使用底部边框模拟红线
pPr = p_line._element.get_or_add_pPr()
pBdr = parse_xml(
f'<w:pBdr {nsdecls("w")}>'
f' <w:bottom w:val="single" w:sz="12" w:space="1" w:color="FF0000"/>'
f'</w:pBdr>'
)
pPr.append(pBdr)
# === 标题 ===
add_para(title, '方正小标宋简体', 22, False, WD_ALIGN_PARAGRAPH.CENTER,
space_before=10, space_after=10)
# === 主送机关 ===
add_para(main_recv + ':', '仿宋_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.LEFT)
# === 正文 ===
for para_text in body_text:
# 检测结构层次
if para_text.strip().startswith(('一、','二、','三、','四、','五、',
'六、','七、','八、','九、','十')):
add_para(para_text, '黑体', 16, False,
WD_ALIGN_PARAGRAPH.JUSTIFY, first_indent=32)
elif para_text.strip().startswith(('(一)','(二)','(三)','(四)','(五)')):
add_para(para_text, '楷体_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.JUSTIFY, first_indent=32)
else:
add_para(para_text, '仿宋_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.JUSTIFY, first_indent=32)
# === 附件说明 ===
if attachments:
attach_text = '附件:'
for i, att in enumerate(attachments, 1):
if i == 1:
attach_text += f'{i}. {att}'
else:
attach_text += f'\n {i}. {att}'
add_para(attach_text, '仿宋_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.LEFT, first_indent=32)
# === 发文机关署名 + 成文日期 ===
doc.add_paragraph() # 空行
add_para(issuing_org, '仿宋_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.RIGHT)
add_para(date_str, '仿宋_GB2312', 16, False,
WD_ALIGN_PARAGRAPH.RIGHT)
# === 版记 ===
if cc_orgs:
# 版记分隔线
p_sep = doc.add_paragraph()
pPr = p_sep._element.get_or_add_pPr()
pBdr = parse_xml(
f'<w:pBdr {nsdecls("w")}>'
f' <w:top w:val="single" w:sz="6" w:space="1" w:color="000000"/>'
f'</w:pBdr>'
)
pPr.append(pBdr)
cc_text = '抄送:' + ','.join(cc_orgs) + '。'
add_para(cc_text, '仿宋_GB2312', 14, False, WD_ALIGN_PARAGRAPH.LEFT)
# === 保存 ===
if not output_path:
safe_title = title.replace(' ', '_')[:30]
output_path = f'{safe_title}.docx'
doc.save(output_path)
return os.path.abspath(output_path)
# 生成一份放假通知
/wps-gongwen 通知 关于2026年清明节放假安排的通知
# 生成一份请示
/wps-gongwen 请示 关于申请增加办公设备采购预算的请示
# 生成一份会议纪要
/wps-gongwen 纪要 关于第三季度工作推进会议纪要
输出:在当前目录生成 关于2026年清明节放假安排的通知.docx,用WPS打开即为标准红头公文格式。
详细格式标准见 reference/gb-t-9704.md。 中文排版通用规范见 ../shared/chinese-typesetting.md。