公文格式转换
公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化,输出标准 docx。支持智能识别标题层级(一、/(一)/1./(1))、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Skill: 公文格式转换 Owner: cwyalpha Summary: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化,输出标准 docx。支持智能识别标题层级(一、/(一)/1./(1))、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化... Tags: latest:1.0.4 Version history: v1.0.4 | 2026-05-15T14:43:52.244Z | user doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”(如 1. 1.2.3)按源文档保留、不自动重排说明。 - 其他内容无变动,仅补充文档描述与功能说明,无代码更新。 v1.0.3 | 2026-05-01T02:02:42.975Z | user doc-
Rank
62
Safety
84
Downloads
1.2k
Updated
Oct 11, 2026
Version
1.0.4
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.2K downloadsadoption · observed Oct 11, 2026
- Latest release
- 1.0.4release · observed May 15, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17dwrya2j06j616dbs8mscvwd85smfr:doc-format- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/snapshot"
Documentation
CLAWHUB
50,811 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: doc-format
description: 公文格式排版工具。将 doc/docx/wps/txt/md 文档按照公文排版习惯自动格式化,输出标准 docx。支持智能识别标题层级(一、/(一)/1./(1))、题目/副标题、附件格式化、图表标题识别、页面边距、页码、行距、字体字号、TXT/MD 空行模式、自定义配置和目录批量处理。当用户需要排版公文、格式化文档、统一文档格式、调整字体字号行距边距时使用此技能。关键词:公文排版、文档格式化、字体设置、标题层级、格式统一、排版工具。
---
# doc-format — 公文格式排版工具
使用 `scripts/wfp_cli.py` 将文档按公文排版规则格式化为标准 `.docx`。原始文件不原地修改,Word/WPS 类文档会先复制或转换到临时副本,再执行排版。
## 核心能力
- 支持 `.docx`、`.doc`、`.wps`、`.txt`、`.md`。
- 支持单文件、多文件、重复 `-i`、位置参数输入,以及一个或多个目录;目录输入默认递归扫描,输出目录保留原结构。
- 自动识别题目、副标题、四级标题、二级标题段内正文、图/表标题、附件标识。
- 可选表格内容自动调整、数字和字母单独字体、符号标准化。
- TXT/MD 支持三种空行模式:不改动任何空行;删除单个空行,多个空行保留至 1 个空行;保留单个空行,多个空行保留至 1 个空行。
- TXT/MD 中手写数字编号(如 `1.`、`1.2.3`)按源文档保留,不自动递增重排。
- 支持自动读取当前目录 `wfp_config.json`、指定 JSON 配置文件、内联 JSON、`--set key=value` 和便利开关覆盖配置。
## 使用前检查
1. 确认脚本路径:脚本位于本 Skill 目录下的 `scripts/wfp_cli.py`。如果当前工作目录不是 Skill 目录,使用 `SKILL.md` 所在目录推导脚本绝对路径,或先 `cd` 到 Skill 目录。
2. 检查输入:如果用户没有给出文件或目录,请先要求提供输入路径;告知支持 `.docx/.doc/.wps/.txt/.md`,目录默认递归处理。
3. 检查配置:CLI 会自动读取当前工作目录的 `wfp_config.json`。如果用户指定 `--config` 或明确给出配置文件,使用用户指定配置;否则说明将使用当前目录配置或内置默认配置。
4. 检查转换条件:Windows 处理 `.doc/.wps` 时优先使用 WPS/Word 和 pywin32;macOS/Linux 或 COM 不可用时,CLI 会尝试调用 LibreOffice `soffice` 转为 `.docx`。如果转换失败,再提示用户安装 LibreOffice、用 `--soffice` 指定路径,或先另存为 `.docx`。
## 常用命令
```bash
# 单文件
python scripts/wfp_cli.py format -i report.docx
# 指定输出文件
python scripts/wfp_cli.py format -i report.docx -o report_final.docx
# 目录批量处理,默认递归并保留目录结构
python scripts/wfp_cli.py format -i ./documents -o ./documents_formatted
# 多文件
python scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output
# 目录批量处理,只处理当前目录
python scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive
# 使用自定义配置
python scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json
# macOS/Linux 或 COM 不可用时,可指定 soffice 处理 .doc/.wps 转换
python scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Contents/MacOS/soffice
# 临时覆盖配置
python scripts/wfp_cli.py format -i input.docx --set body_size=12 --enable-table-formatting
# 内联 JSON 覆盖配置
python scripts/wfp_cli.py format -i input.docx --config-json "{\"force_a4\": true, \"line_spacing\": 30}"
# TXT/MD 文件转换
python scripts/wfp_cli.py format -i draft.md
# 查看默认配置
python scripts/wfp_cli.py show-config
# 保存默认配置模板
python scripts/wfp_cli.py save-config
# 显示 LibreOffice 安装提示
python scripts/wfp_cli.py install-help
# 运行内置单元测试
python scripts/wfp_cli.py test
```
## 配置处理流程
当用户要求调整字体、字号、边距、行距、表格、符号等配置时:
1. 运行 `show-config` 了解当前配置来源和值。
2. 将用户自然语言需求映射到配置字段。
3. 用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`,或保存到用户指定路径。
4. 再运行 `format` 处理文档。
用户只要求一次性临时调整时,可用 `--config-json` 或 `--set` 直接运行 `format`。
## 输出行为
- 成功生成的 `.docx` 绝对路径写入 stdout。
- 详细日志仅在使用 `-v/--verbose` 时写入 stderr。
- 退出码 `0` 表示全部成功,非 `0` 表示没有找到可处理文件或至少一个文件失败。
- 目录处理中单个文件失败不会阻止后续文件继续处理。
- 处理失败时,最终回复应说明失败文件和错误原因。
## 完成后必读
每次完成格式化后,都要提醒用户打开输出文件抽查题目、副标题、标题层级、附件、图/表标题、页码和表格。
如果处理过 `.doc/.wps` 或 Word/WPS 类文档,尤其要检查自动编号。自动编号未能确认转换成功时,编号文本、段落缩进、字体字号可能没有正常格式化;如果编号无法单独选中,说明可_meta.json
{
"ownerId": "kn79hzn4zapay7zmdpvynrys6981vxne",
"slug": "doc-format",
"version": "1.0.4",
"publishedAt": 1778856232244
}references/cli-reference.md
# CLI Reference ## 命令格式 主命令: ```bash python scripts/wfp_cli.py <子命令> [参数] ``` 格式化: ```bash python scripts/wfp_cli.py format [输入路径...] [-i <输入路径>] [-o <输出路径>] [配置参数] [其他参数] ``` 查看配置: ```bash python scripts/wfp_cli.py show-config ``` 保存配置: ```bash python scripts/wfp_cli.py save-config [配置参数] [-o <配置文件路径>] ``` 安装提示: ```bash python scripts/wfp_cli.py install-help ``` 运行测试: ```bash python scripts/wfp_cli.py test ``` ## `format` 参数 | 参数 | 默认值 | 说明 | |---|---:|---| | `paths` | 可选 | 位置参数输入路径,可一次传入多个文件或目录 | | `-i, --input` | 可选 | 输入文件或目录,可重复。与 `paths` 可同时使用 | | `-o, --output` | 自动生成 | 输出文件或目录。多文件或目录输入时必须是目录 | | `--config` | 自动读取当前目录 `wfp_config.json` | 指定 JSON 配置文件,会覆盖默认配置中的同名字段 | | `--config-json` | 无 | 内联 JSON 对象,会覆盖配置文件中的同名字段 | | `--set key=value` | 无 | 覆盖单个配置项,可重复使用 | | `--enable-table-formatting` | 关闭 | 启用表格内容自动调整 | | `--disable-table-formatting` | 关闭 | 关闭表格内容自动调整 | | `--enable-custom-english-font` | 关闭 | 启用数字和字母单独字体 | | `--disable-custom-english-font` | 关闭 | 关闭数字和字母单独字体 | | `--english-font <字体>` | `Times New Roman` | 设置数字和字母字体;使用后自动启用 `use_custom_english_font` | | `--normalize-punctuation` | 关闭 | 启用符号标准化 | | `--disable-normalize-punctuation` | 关闭 | 关闭符号标准化 | | `--blank-line-mode` | 删除单个空行,多个空行保留至1个空行 | 覆盖 TXT/MD 空行处理模式 | | `--no-recursive` | 关闭 | 目录输入时不递归子目录;默认递归 | | `--soffice <路径>` | 自动查找 | 指定 LibreOffice `soffice` 路径,用于 `.doc/.wps` 转 `.docx` | | `--soffice-timeout <秒>` | `120` | LibreOffice 单文件转换超时秒数 | | `-v, --verbose` | 关闭 | 显示详细日志 | `--blank-line-mode` 可选值: - `不改动任何空行` - `删除单个空行,多个空行保留至1个空行` - `保留单个空行,多个空行保留至1个空行` ## `show-config` ```bash python scripts/wfp_cli.py show-config ``` 输出 JSON,包含当前配置来源、当前目录自动读取的 `wfp_config.json` 路径、支持的输入类型、字号名称对照、空行模式、常用可选增强项、所有配置项的值、名称和说明。 `show-config` 也支持 `--config`、`--config-json`、`--set` 和便利开关,用来查看覆盖后的配置效果。 ## `save-config` ```bash python scripts/wfp_cli.py save-config ``` - 默认输出到当前目录 `wfp_config.json`。 - 会先读取 `--config` 或当前目录已有 `wfp_config.json`,再应用 `--config-json`、`--set` 和便利开关,最后保存合并后的配置。 - 保存后提醒用户还可启用表格内容自动调整、数字和字母字体、符号标准化。 ## `test` ```bash python scripts/wfp_cli.py test ``` 运行内置单元测试,覆盖文本处理、Markdown 清理、空行模式、OOXML 保护、表格辅助判断、临时文件路径和 TXT 转换等纯函数或轻量流程。 ## 使用示例 ```bash # DOCX 单文件 python scripts/wfp_cli.py format -i report.docx # 指定输出文件 python scripts/wfp_cli.py format -i report.docx -o report_final.docx # TXT/MD 输入 python scripts/wfp_cli.py format -i meeting_notes.txt python scripts/wfp_cli.py format -i draft.md --blank-line-mode "不改动任何空行" # 多文件 python scripts/wfp_cli.py format a.docx b.txt c.md -o ./formatted_output python scripts/wfp_cli.py format -i a.docx -i b.txt c.md -o ./formatted_output # 目录批量处理,默认递归 python scripts/wfp_cli.py format -i ./documents -o ./documents_formatted # 不递归子目录 python scripts/wfp_cli.py format -i ./documents -o ./documents_formatted --no-recursive # 使用配置文件 python scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json # 指定 LibreOffice soffice 转换旧格式 python scripts/wfp_cli.py format -i old.doc --soffice /Applications/LibreOffice.app/Conten
references/config-reference.md
# Config Reference
## 根据用户需求修改配置
当用户要求调整字体、字号、边距、行距、表格、符号等配置时:
1. 运行 `show-config` 了解默认配置字段和值。
2. 将用户自然语言需求映射到配置字段。
3. 使用 `save-config --set ...` 或便利开关保存到当前目录 `wfp_config.json`,或保存到用户指定路径。
4. 使用 `format` 处理文档;CLI 会自动读取当前目录的 `wfp_config.json`。
用户只要求一次性临时调整时,可用 `--config-json` 或 `--set` 直接运行 `format`。
## 常见自然语言到配置字段
| 用户需求 | 配置字段或命令 |
|---|---|
| 正文字体改为宋体 | `--set body_font=宋体` |
| 正文字号改为小四 | `--set body_size=12` |
| 题目字体改为华文中宋 | `--set title_font=华文中宋` |
| 题目字号改为小二 | `--set title_size=18` |
| 一级标题字体改为黑体 | `--set h1_font=黑体` |
| 二级标题字体改为楷体 | `--set h2_font=楷体` |
| 页码字体改为 Times New Roman | `--set page_number_font="Times New Roman"` |
| 正文行距改为 30 磅 | `--set line_spacing=30` |
| 题目行距改为 33 磅 | `--set title_line_spacing=33` |
| 副标题行距改为 33 磅 | `--set subtitle_line_spacing=33` |
| 强制 A4 | `--set force_a4=true` |
| 不设置大纲级别 | `--set set_outline=false` |
| 不启用附件格式化 | `--set enable_attachment_formatting=false` |
| 启用表格内容自动调整 | `--enable-table-formatting` |
| 启用表格智能对齐 | `--set table_smart_align=true` |
| 数字和字母使用 Times New Roman | `--enable-custom-english-font --english-font "Times New Roman"` |
| 启用符号标准化 | `--normalize-punctuation` |
| TXT/MD 不改动任何空行 | `--set blank_line_mode="不改动任何空行"` |
| TXT/MD 删除单个空行,多个空行保留至 1 个 | `--set blank_line_mode="删除单个空行,多个空行保留至1个空行"` |
| TXT/MD 保留单个空行,多个空行保留至 1 个 | `--set blank_line_mode="保留单个空行,多个空行保留至1个空行"` |
旧配置中的 `remove_blank_lines` 仍可读取;如未提供 `blank_line_mode`,CLI 会按旧字段映射到新的 TXT/MD 空行模式。
## 常用字号对照
| 字号名称 | pt 值 |
|---|---:|
| 一号 | 26 |
| 小一 | 24 |
| 二号 | 22 |
| 小二 | 18 |
| 三号 | 16 |
| 小三 | 15 |
| 四号 | 14 |
| 小四 | 12 |
| 五号 | 10.5 |
| 小五 | 9 |
## 配置文件示例
```json
{
"body_font": "宋体",
"body_size": 12,
"line_spacing": 30,
"force_a4": true,
"enable_table_formatting": true,
"use_custom_english_font": true,
"english_font": "Times New Roman",
"normalize_punctuation": true,
"blank_line_mode": "删除单个空行,多个空行保留至1个空行"
}
```
配置文件不需要包含所有字段;只写需要覆盖默认值的字段即可。若使用 `save-config` 导出的完整模板,可直接在模板中修改对应值。
## 使用配置处理文档
```bash
# 保存配置到当前目录 wfp_config.json
python scripts/wfp_cli.py save-config \
--set body_font=宋体 \
--set body_size=12 \
--set line_spacing=30 \
--enable-table-formatting \
--english-font "Times New Roman" \
--normalize-punctuation
# 使用当前目录自动配置
python scripts/wfp_cli.py format -i ./documents -o ./documents_formatted
# 使用指定配置文件
python scripts/wfp_cli.py format -i input.docx --config ./wfp_config.json
# 使用内联 JSON 临时覆盖
python scripts/wfp_cli.py format -i input.docx --config-json "{\"force_a4\": true, \"line_spacing\": 30}"
# 使用 --set 临时覆盖
python scripts/wfp_cli.py format -i input.docx --set force_a4=true --set title_size=18
```references/formatting-rules.md
# Formatting Rules ## 标题层级 | 类型 | 识别规则 | 默认字体 | 默认字号 | |---|---|---|---:| | 题目 | 文档开头连续居中且字体字号一致的段落;TXT/MD 首个非层级标题段落 | 方正小标宋简体 | 22 | | 副标题 | 题目下方居中且字体字号不同的段落 | 楷体_GB2312 | 16 | | 一级标题 | `一、`、`二、` 等 | 黑体 | 16 | | 二级标题 | `(一)`、`(二)` 等 | 楷体_GB2312 | 16 | | 三级标题 | `1.`、`2.`、`1.` 等 | 仿宋_GB2312 | 16 | | 四级标题 | `(1)`、`(1)` 等 | 仿宋_GB2312 | 16 | | 正文 | 其他普通段落 | 仿宋_GB2312 | 16 | 二级标题与正文在同一段落且以句号分隔时,会尝试在段内拆分标题部分和正文部分,分别应用二级标题和正文字体。 ## 页面和段落 - 页边距:上 3.7cm / 下 3.5cm / 左 2.8cm / 右 2.6cm。 - 页脚距:2.5cm。 - 正文行距:28 磅。 - 题目/副标题行距:33 磅。 - 页码:默认奇偶分页,奇数页右对齐,偶数页左对齐。 - 页码字体:宋体,14pt。 - 正文和标题会清理残留缩进,再设置标准首行缩进 2 字符。 - `force_a4=false` 时 Word/WPS 文档保留原纸张大小;TXT/MD 默认使用 A4。 段落包含图片、嵌入对象等特殊内容时,只处理必要文字格式,保留段落行距等布局,避免图片或对象显示不全。 ## TXT/MD 特殊处理 - `.txt` 会按文本行生成段落。 - `.md` 会清理 Markdown 标记,包括标题 `#`、粗体/斜体、链接、图片语法、引用、分隔线等。 - TXT/MD 中手写数字编号(如 `1.`、`1.2.3`)按源文档保留,不自动递增重排。 - 默认空行模式为:删除单个空行,连续多个空行合并为 1 个空行。 - 可通过 `--blank-line-mode` 或配置字段 `blank_line_mode` 改为空行不处理,或保留单个空行但压缩多个空行。 空行模式: | 模式 | 行为 | |---|---| | `不改动任何空行` | TXT/MD 原始空行保持不变 | | `删除单个空行,多个空行保留至1个空行` | 单个空行删除,连续多个空行合并为 1 个 | | `保留单个空行,多个空行保留至1个空行` | 单个空行保留,连续多个空行合并为 1 个 | ## 表格、图表和附件 - 表格内容自动调整默认关闭,避免改变复杂表格布局。 - 启用后可设置表头字体、表格字体、字号、行距、行高、表格宽度、边框、列宽和智能对齐。 - 表格智能对齐启用后,会尝试将表头、合计/总计、序号列、短文本居中,将数字内容右对齐。 - 图/表标题通过图片或表格上下相邻的居中 `图...` / `表...` 段落识别。 - 附件标识默认启用格式化,识别 `附件`、`附件1`、`附件:` 等形式,并会段前分页。 - 附件标识后会继续尝试识别附件题目和副标题;如果没有附件题目/副标题,不应跳过紧随其后的正文段落。 ## 符号和特殊内容 - 符号标准化默认关闭,可通过配置 `normalize_punctuation: true` 启用。 - 启用后会较保守地处理中文语境中的英文标点、引号、括号、省略号等,避免影响数字、小数、英文内容。 - 段落含域代码时会跳过符号标准化,避免破坏自动域、书签、批注引用等特殊内容。 - 删除段首空白 run 时会检查 run 内是否含有非文本 OOXML 子元素,避免破坏域代码、书签、批注引用等特殊内容。 ## 平台和自动编号 - Windows 环境下,会尽量通过 WPS/Word COM 接受修订,并将自动编号转为普通文本。 - `.doc/.wps` 转 `.docx` 在 Windows 优先使用 WPS/Word COM;macOS/Linux 或 COM 转换失败时,会尝试调用 LibreOffice `soffice`。 - 如果 `soffice` 自动查找失败,可在 CLI 中使用 `--soffice <路径>` 指定;如果转换仍失败,应先手动另存为 `.docx` 后再处理。 - 非 Windows 或 COM 不可用时,会跳过需要 WPS/Word 的预处理步骤。 - 自动编号转换失败或被跳过时,输出文件中编号样式可能仍由 Word/WPS 自动编号控制,字体字号和缩进需要人工检查。
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/cwyalpha/skills/doc-format",
"sourceUrl": "https://clawhub.ai/cwyalpha/skills/doc-format",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T01:09:54.921Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T01:09:54.921Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.2K downloads",
"href": "https://clawhub.ai/cwyalpha/doc-format",
"sourceUrl": "https://clawhub.ai/cwyalpha/doc-format",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T01:09:54.921Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.4",
"href": "https://clawhub.ai/cwyalpha/doc-format",
"sourceUrl": "https://clawhub.ai/cwyalpha/doc-format",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-05-15T14:43:52.244Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-cwyalpha-doc-format/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.4",
"description": "doc-format 1.0.4 - 新增 TXT/MD 格式下“手写数字编号”(如 1. 1.2.3)按源文档保留、不自动重排说明。 - 其他内容无变动,仅补充文档描述与功能说明,无代码更新。",
"href": "https://clawhub.ai/cwyalpha/doc-format",
"sourceUrl": "https://clawhub.ai/cwyalpha/doc-format",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-05-15T14:43:52.244Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
