Markdown 转 Word 文档转换器

SkillDocs & knowledge

将 Markdown 文件转换为格式化的 Word 文档。当用户想要将 .md 转换为 .docx、从 Markdown 创建 Word 文档或提及文档转换时调用此技能。

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Markdown 转 Word 文档转换器 skill

What this skill tells your AI

The instructions your AI receives, as published by pickle-an/md-to-docx-skill in skill/SKILL.md and read by ahel’s review.

本技能将 Markdown 文件转换为专业格式的 Word 文档(.docx)。

何时调用

在以下情况下调用此技能:

  • 用户想要将 Markdown 文件转换为 Word 文档
  • 用户要求从 Markdown 内容创建 Word 文档
  • 用户提及 .md.docx 的转换
  • 用户需要格式化的文档输出

处理流程

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   输入 MD 文件   │ ──▶ │  版本号管理处理  │ ──▶ │  格式规范化处理  │ ──▶ │   解析 MD 元素   │ ──▶ │  生成 Word 文档  │
└─────────────────┘     └─────────────────┘     └─────────────────┘     └─────────────────┘     └─────────────────┘
                                                      │
                                            ┌─────────┴─────────┐
                                            ▼                   ▼
                                      ┌───────────┐       ┌───────────┐
                                      │ 保存规范化 │       │ 应用模板   │
                                      │ 后的文件   │       │ 样式       │
                                      └───────────┘       └───────────┘

功能特性

1. 自动版本管理

技能自动管理输出文件的版本号:

场景输入文件输出文件
文件名无版本号document.mddocument_V1.docxdocument_V1_normalized.md
文件名含版本号document_V3.mddocument_V4.docxdocument_V4_normalized.md
目录中已有 V1document.mddocument_V2.docxdocument_V2_normalized.md

版本规则:

  • 如果输入文件名包含版本号(如 _V3),则从该版本号递增
  • 如果文件名无版本号,则扫描目录中已有版本并递增
  • 版本格式:_V{n},其中 n 为整数(V1、V2、V3...)
  • .docx_normalized.md 文件使用相同的版本号

2. Markdown 格式规范化

转换前,技能会自动规范化 Markdown 格式问题:

问题类型示例修复
未闭合的代码块 ```python 无闭合自动添加闭合```
标题后无空格###标题### 标题
标题中的中文数字## 一、核心原理## 1. 核心原理
标题中的中文数字### (一)技术细节### (1) 技术细节
无序列表无空格-项目- 项目
有序列表无空格1.项目1. 项目
分隔线变体---------
不匹配的粗体标记**只有开头移除无效标记
不匹配的斜体标记*只有开头移除无效标记
缺少表格分隔行表格无`---
表格列数不一致行的列数不同自动填充/截断
多个连续空行3+ 个连续空行压缩为 1 个
标题前缺少空行文本直接在标题前添加空行
有序列表间距列表项之间的空行保留(不移除)
段落首行空格 带首行空格的文本移除首行空格
段落间空行段落之间的单个空行移除(清理)

中文数字转换: 技能自动将标题中的中文数字序列转换为阿拉伯数字:

  • 支持:一、二、三、四、五、六、七、八、九、十(至二十)
  • 模式 1:一、1.(中文标点)
  • 模式 2:(一)(1)(括号形式)
  • 适用于所有标题级别(# ~ ######)

有序列表间距: 有序列表项之间的空行会被智能保留以保持文档可读性:

  • 如果两个编号列表项之间存在空行,该空行将被保留
  • 这允许列表项内容有更好的视觉分隔
  • 示例:1. 项目 1 →(空行)→ 2. 项目 2 将保留间距

空行管理: 技能根据上下文智能管理空行:

  • 移除:普通段落之间的空行(清理以获得更好的格式)
  • 保留:特殊元素周围的空行(标题、列表、代码块、表格、分隔线)
  • 保留:缩进内容周围的空行(列表项详情、嵌套项)
  • 压缩:多个连续空行减少为单个

段落首行空白: 普通段落的首行空白会自动移除以防止 Word 中出现双重缩进:

  • Word 文档自动为段落应用首行缩进
  • Markdown 中的首行空格会造成视觉不一致
  • 列表项缩进被保留(无序列表和有序列表)
  • 代码块和引用块保留其格式

3. 支持的 Markdown 元素

元素语法支持程度
标题# ~ ######完全支持
段落纯文本完全支持
粗体**文本**完全支持
斜体*文本*完全支持
粗体+斜体***文本***完全支持
无序列表- 项目 / * 项目完全支持
有序列表1. 项目完全支持
表格`
代码块```代码```完全支持
行内代码`代码`完全支持
链接[文本](url)完全支持
图片![替代文本](路径)完全支持
引用块> 引用完全支持
分隔线---完全支持
删除线~~文本~~完全支持
换行<br>\\完全支持

4. 文档格式规范

字体规范
元素类型中文字体英文字体字号说明
正文宋体Times New Roman12pt(小四)标准正文字号
一级标题宋体Times New Roman22pt(二号)大标题
二级标题宋体Times New Roman16pt(三号)章节标题
三级标题宋体Times New Roman15pt(小三)小节标题
四级标题宋体Times New Roman14pt(四号)条目标题
五级标题宋体Times New Roman14pt(四号)子条目标题
代码块ConsolasConsolas9pt(小五)略小于正文
行内代码ConsolasConsolas12pt(小四)与正文同字号
段落规范
属性设置值说明
首行缩进0.74cm约两个汉字宽度
行间距1.5 倍提升阅读舒适度
段前间距0pt保持紧凑排版
段后间距0pt保持紧凑排版
标题规范
标题级别Markdown 语法字号样式特点
文档标题# 标题22pt(二号)加粗、居中、可生成封面页
一级标题## 标题22pt(二号)加粗、段前自动分页
二级标题### 标题16pt(三号)加粗、不分页
三级标题#### 标题15pt(小三)加粗、不分页
四级标题##### 标题14pt(四号)加粗、不分页
五级标题###### 标题14pt(四号)加粗、不分页
表格规范
属性设置值说明
表格样式Table Grid带边框的标准表格
对齐方式居中表格整体居中显示
列宽自动计算根据内容智能分配
表头背景#D9D9D9浅灰色背景突出表头
表头对齐居中表头文字居中对齐
单元格对齐左对齐数据内容左对齐
代码块规范
属性设置值说明
字体Consolas等宽字体,代码清晰
字号9pt略小于正文
背景色#F5F5F5浅灰色背景区分代码
左缩进0.5cm突出代码块层次
语言标签斜体显示[python]
行内代码规范
属性设置值说明
字体Consolas等宽字体
字号同正文保持行高一致
背景色#F0F0F0浅灰背景突出显示
引用块规范
属性设置值说明
左边框#6366F1紫色竖线标识
边框宽度1.5pt清晰可见
左右缩进1cm突出引用内容
字体样式斜体区分引用文字
列表规范
属性设置值说明
左缩进0.74cm × 层级支持多级嵌套缩进
行间距1.5 倍与正文保持一致
无序列表符号实心圆点
有序列表格式1. 2. 3.数字加点
分隔线规范
属性设置值说明
样式底部边框段落下方的横线
颜色#CCCCCC浅灰色
段前段后间距6pt保持适当间隔
封面页规范
元素设置值说明
标题字号22pt与一级标题一致
标题样式加粗、居中突出文档标题
版本信息12pt、居中格式:版本:V1
日期信息12pt、居中格式:编制日期:2024年01月01日
前置空行3 行标题上方留白
后置空行14 行标题与版本信息间距
分页控制
规则说明
一级标题前分页每个一级标题自动另起一页
其他标题不分页二级及以下标题保持连续
封面页后分页封面页结束后自动分页

使用方法

基本转换

将此 Markdown 文件转换为 Word:
[提供 .md 文件路径或内容]

使用自定义模板

使用此模板将 Markdown 转换为 Word:
Markdown:[路径或内容]
模板:[.docx 模板路径]

带封面页

转换为带封面页的 Word:
[Markdown 内容]
标题:[文档标题]
版本:[版本号]
日期:[日期]

参数说明

参数类型必填描述
markdown_content字符串Markdown 文本或文件路径
output_path字符串输出 .docx 文件路径
template_path字符串自定义 .docx 模板路径
version字符串封面页版本号(未提供则自动生成)
date字符串封面页日期
normalize布尔值启用格式规范化(默认:true)
save_normalized布尔值保存规范化后的 MD 文件(默认:true)
use_versioning布尔值启用自动版本编号(默认:true)

实现原理

技能使用 Python 脚本,逻辑如下:

步骤 0:版本管理(version_manager.py

# 自动确定输出文件的版本号
version_info = get_versioned_output_paths(input_path, output_dir)
# 返回:{ 'version': 1, 'docx_path': 'document_V1.docx', 'normalized_md_path': 'document_V1_normalized.md' }

步骤 1:格式规范化(markdown_normalizer.py

# 自动修复常见的 Markdown 格式问题
normalizer = MarkdownNormalizer()
normalized_content = normalizer.normalize(content)
# 保存到:original_filename_normalized.md

步骤 2:解析 Markdown(md_to_docx.py

# 将规范化的 Markdown 转换为结构化元素
parser = MarkdownParser()
elements = parser.parse(normalized_content)

步骤 3:生成 Word 文档

# 创建带格式的 Word 文档
generator = DocxGenerator(template_path)
generator.create_document(output_path)
generator.generate(elements, version, date)
generator.save(output_path)

输出文件

转换后,生成以下文件:

文件描述
document_V{n}.docx带版本号的最终 Word 文档
document_V{n}_normalized.md带版本号的规范化 Markdown

版本号示例:

  • 首次转换:document_V1.docxdocument_V1_normalized.md
  • 第二次转换:document_V2.docxdocument_V2_normalized.md
  • 带版本输入:document_V3.mddocument_V4.docx

模板支持

使用自定义模板

如果提供了模板:

  • 继承页面设置(边距、纸张大小)
  • 继承样式定义(标题 1-6、正文)
  • 添加新内容前清除模板内容

内置样式(无模板)

本 Skill 可独立运行,无需外部模板文件。

如果未提供模板或模板文件不存在:

  • 自动创建空白文档
  • 使用默认页面设置(A4,2.54cm 边距)
  • 以编程方式创建样式
  • 应用一致的格式

这意味着本 Skill 可以在任何安装了 Python 和 python-docx 的环境中独立运行,无需依赖外部模板文件。

示例

示例 1:格式规范化

输入(含问题):

# 测试文档
## 一、表格测试
| 列1|列2|列3
|数据1|数据2|数据3
###标题无空格
-项目1无空格

规范化输出:

# 测试文档

## 一、表格测试

|列1|列2|列3|
|---|---|---|
|数据1|数据2|数据3|

### 标题无空格

- 项目1无空格

示例 2:简单转换

输入:

# 项目文档

## 概述
这是项目概述。

## 功能特性
- 功能 1
- 功能 2

输出:格式化的 Word 文档,具有正确的标题层级和项目符号列表。

示例 3:带表格

输入:

## API 端点

| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| GET | /api/users | 获取所有用户 |
| POST | /api/users | 创建用户 |

输出:带格式化表格的 Word 文档,表头行为灰色背景。

示例 4:带代码块

输入:

## 安装

```bash
npm install package-name

输出:带等宽字体代码块的 Word 文档。

## 错误处理

- **无效 Markdown**:记录警告,继续部分解析
- **模板缺失**:回退到内置样式
- **文件未找到**:返回清晰的错误消息
- **权限错误**:建议替代输出路径
- **格式问题**:在规范化阶段自动修复

## 依赖

- Python 3.x
- python-docx 库

## 模块文件

| 文件 | 描述 |
|------|------|
| `md_to_docx.py` | 主转换脚本 |
| `markdown_normalizer.py` | Markdown 格式规范化 |
| `version_manager.py` | 自动版本编号 |
| `create_template.py` | 模板生成脚本(可选) |
| `template.docx` | 默认 Word 模板(可选) |

**说明:**
- `template.docx` 是可选的模板文件,如果存在则使用,不存在则自动创建空白文档
- `create_template.py` 可用于重新生成符合格式规范的模板文件
- 本 Skill 可完全独立运行,无需外部依赖

Signals

GitHub stars
65
Forks
8
Last commit
Apr 2026
Advanced
Catalog kind
skill
Gateway key
md-to-docx-pickle-an
Source
github.com/pickle-an/md-to-docx-skill