将 Markdown 文档转换为微信公众号格式的技能。当用户需要将 Markdown 文件排版为微信公众号文章格式时使用此技能。支持自定义主题、字体、颜色、代码高亮等配置。触发词:微信排版、公众号格式、md转微信、markdown转wechat、公众号文章。
微信 Markdown 排版 (md-wechat)是一项面向实际任务的技能,主要用于Overview;将 Markdown 文档转换为适配微信公众号的 HTML 格式;
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
将 Markdown 文档转换为适配微信公众号的 HTML 格式。支持三种预设主题(经典、优雅、简洁),可自定义字体、颜色、代码高亮等样式,生成的 HTML 可直接复制粘贴到微信公众号编辑器使用。
版本 2.0.0 - 使用 Node.js 重写,完整支持所有功能!
~~删除线~~==高亮==++下划线++[文字]{注音} 或 [文字]^(注音)前提条件:Node.js >= 18.0.0
推荐安装方式(更安全):
# 手动安装依赖,可审查 package.json npm install # 然后运行转换 node scripts/convert.js article.md --no-auto-install
自动安装方式:
# 脚本会自动检测并安装缺失依赖 node scripts/convert.js article.md
安全提示:建议在隔离环境(Docker/沙盒)中首次运行,或使用
--no-auto-install参数手动控制依赖安装。
输入:
处理流程:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 读取 MD 文件 │ -> │ 解析 Markdown │ -> │ 渲染特殊元素 │ -> │ 生成 HTML │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │
v v
┌─────────────┐ ┌─────────────────────┐
│ marked 解析 │ │ KaTeX 渲染公式 │
│ 扩展语法处理 │ │ Puppeteer 渲染图表 │
└─────────────┘ └─────────────────────┘
输出:
{原文件名}-wechat.html生成的 HTML 特点:
md-config.json{
"version": "1.0.0",
"theme": {
"name": "default"
},
"style": {
"fontFamily": "-apple-system-font, BlinkMacSystemFont, Helvetica Neue, PingFang SC, sans-serif",
"fontSize": "16px",
"primaryColor": "#0F4C81",
"textColor": "#3f3f3f",
"bgColor": "#ffffff",
"lineHeight": 1.75
},
"codeBlock": {
"themeUrl": "https://cdn.jsdelivr.net/npm/highlight.js@11.9.0/styles/atom-one-dark.min.css",
"themeName": "atom-one-dark",
"isMacStyle": true,
"showLineNumber": false
},
"image": {
"legend": "alt-title",
"borderRadius": "4px"
},
"link": {
"citeStatus": false,
"color": "#0F4C81"
},
"content": {
"countStatus": true,
"useIndent": false,
"useJustify": false,
"padding": "20px"
},
"headingStyles": {
"h1": "default",
"h2": "default",
"h3": "default",
"h4": "default",
"h5": "default",
"h6": "default"
},
"customCSS": ""
}
从已排版好的 HTML 文件中提取样式配置,实现样式复用:
# 从渲染后的 HTML 提取配置 node scripts/extract-config.js example-result.html -o my-style.json # 同时提供 Markdown 源文件,增强分析 node scripts/extract-config.js example-result.html -m example.md -o my-style.json # 指定配置名称 node scripts/extract-config.js output.html --name "my-brand" -o my-brand-config.json
可提取的样式参数:
| 参数 | 说明 | 提取方式 |
|---|---|---|
| 主色调 | 链接、标题等元素的颜色 | 分析 HTML 中的颜色值 |
| 字体 | 文章正文字体 | 从 CSS 中提取 |
| 字号 | 正文字号 | 从 CSS 中提取 |
| 代码块主题 | highlight.js 主题 | 从 CSS URL 中识别 |
| Mac 风格代码块 | 是否有红黄绿按钮 | 检测 SVG 元素 |
| 背景色 | 文章背景色 | 从 body 样式中提取 |
| 文本颜色 | 正文颜色 | 从段落样式中提取 |
| 行高 | 文本行高 | 从 CSS 中提取 |
| 图片圆角 | 图片边框圆角 | 从 img 样式中提取 |
# 使用提取的配置文件进行转换 node scripts/convert.js article.md -c my-style.json -o article-output.html # 命令行参数覆盖配置文件 node scripts/convert.js article.md -c my-style.json --color "#FF6600"
md-wechat [options] 选项: -o, --output输出 HTML 文件路径 -c, --config 配置文件路径 (默认: md-config.json) --theme 主题名称 (default/grace/simple) --color 主题颜色 (覆盖配置文件) --font 字体系列 (覆盖配置文件) --font-size 字体大小 (覆盖配置文件) --bg-color 背景颜色 (覆盖配置文件) --text-color 文本颜色 (覆盖配置文件) --no-auto-install 禁用自动安装依赖
# 转换单个文件 node scripts/convert.js article.md # 指定输出路径 node scripts/convert.js article.md -o output.html # 使用自定义主题色 node scripts/convert.js article.md --color "#009874"
# 安装依赖 npm install # 测试转换 npm run test
import { MDToWechatConverter } from './scripts/convert.js';
const converter = new MDToWechatConverter({
primaryColor: '#0F4C81',
macStyleCode: true
});
const html = await converter.convert(markdownText);
console.log(html);
| 依赖 | 版本 | 用途 |
|---|---|---|
marked |
^12.0.0 | Markdown 解析 |
highlight.js |
^11.9.0 | 代码语法高亮 |
katex |
^0.16.9 | 数学公式渲染 |
juice |
^10.0.0 | CSS 内联化 |
puppeteer |
^22.0.0 | 图表渲染(无头浏览器) |
commander |
^12.0.0 | 命令行参数解析 |
chalk |
^5.3.0 | 终端彩色输出 |
脚本会自动检测缺失的依赖并安装:
node_modules 目录npm install对于 PlantUML 支持,需要安装 Java 运行时环境。
| 功能 | Python 版本 | Node.js 版本 |
|---|---|---|
| 基础 Markdown | ✅ | ✅ |
| GFM 扩展 | ✅ | ✅ |
| 删除线/高亮/下划线 | ✅ | ✅ |
| Ruby 注音 | ✅ | ✅ |
| 代码高亮 | ✅ | ✅ |
| 数学公式 | ❌ 原始代码 | ✅ KaTeX 渲染 |
| Mermaid 图表 | ❌ 原始代码 | ✅ SVG 渲染 |
| PlantUML | ❌ 原始代码 | ⚠️ 部分 |
| Infographic | ❌ 原始代码 | ⚠️ 部分 |
| 样式内联 | ❌ | ✅ juice |
convert.js
├── 扩展语法处理器
│ ├── strikethrough 删除线
│ ├── highlight 高亮
│ ├── underline 下划线
│ ├── rubyBrace Ruby 注音 {}
│ └── rubyCaret Ruby 注音 ^()
│
├── 数学公式渲染
│ ├── mathExtension 块级公式
│ └── inlineMath 行内公式
│
├── 图表渲染
│ └── mermaidExtension Mermaid → SVG
│
├── 代码块处理
│ └── codeBlockExtension 代码高亮 + Mac 装饰
│
└── 核心转换器
└── MDToWechatConverter
├── setupMarked() 配置解析器
├── convert() 主转换流程
├── renderMermaid() 渲染 Mermaid
└── wrapHTML() 包装输出
关键适配点:
Q: Puppeteer 安装失败? A: Puppeteer 需要下载 Chromium,可能需要配置镜像:
npm config set puppeteer_download_host=https://cdn.npmmirror.com/mirrors npm install puppeteer
Q: 数学公式显示异常? A: 确保 KaTeX CSS 正确加载,检查网络连接。
Q: Mermaid 图表渲染失败? A: 检查 Puppeteer 是否正确安装,可能需要额外的系统依赖。
Q: 复制到公众号后样式丢失? A:
Q: 图片不显示? A: 微信公众号不支持外链图片,需要:
md-wechat/
├── skill.md # 本文档
├── package.json # Node.js 依赖配置
├── md-config.json # 默认配置文件
├── scripts/
│ ├── convert.js # 核心转换脚本 (Node.js)
│ ├── extract-config.js # 配置提取脚本
│ └── convert.py # Python 备用脚本
├── references/
│ ├── config-reference.md # 配置参考
│ └── theme-reference.md # 主题参考
└── assets/
└── themes/
├── base.css # 基础样式
├── default.css # 经典主题
├── grace.css # 优雅主题
└── simple.css # 简洁主题
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.3万人学习
共49课时 | 82.7万人学习
最新文章