Md Wechat

Polar Sponsor
爱发电 赞助
.NET 9.0

将 Markdown 文档转换为微信公众号格式的技能。当用户需要将 Markdown 文件排版为微信公众号文章格式时使用此技能。支持自定义主题、字体、颜色、代码高亮等配置。触发词:微信排版、公众号格式、md转微信、markdown转wechat、公众号文章。

微信 Markdown 排版 (md-wechat)

功能概述

微信 Markdown 排版 (md-wechat)是一项面向实际任务的技能,主要用于Overview;将 Markdown 文档转换为适配微信公众号的 HTML 格式;

核心要点

  • 支持三种预设主题(经典、优雅、简洁),可自定义字体、颜色、代码高亮等样式,生成的 HTML 可直接复制粘贴到微信公众号编辑器使用;
  • 版本 2.0.0 - 使用 Node.js 重写,完整支持所有功能!
  • 标题 :h1-h6,带样式装饰。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

微信 Markdown 排版 (md-wechat)

Overview

将 Markdown 文档转换为适配微信公众号的 HTML 格式。支持三种预设主题(经典、优雅、简洁),可自定义字体、颜色、代码高亮等样式,生成的 HTML 可直接复制粘贴到微信公众号编辑器使用。

版本 2.0.0 - 使用 Node.js 重写,完整支持所有功能!

核心功能

基础语法

  • 标题:h1-h6,带样式装饰
  • 段落:自动排版,支持缩进和两端对齐
  • 列表:有序/无序列表,支持嵌套
  • 引用:单层和多级嵌套引用
  • 表格:GFM 表格语法
  • 分隔线:水平分割线

扩展语法

  • 删除线:~~删除线~~
  • 高亮:==高亮==
  • 下划线:++下划线++
  • Ruby 注音:[文字]{注音} 或 [文字]^(注音)

高级功能

  • 代码高亮:使用 highlight.js,支持 100+ 语言
  • Mac 风格代码块:带红黄绿装饰按钮
  • 数学公式:KaTeX 渲染,支持行内和块级公式
  • Mermaid 图表:流程图、时序图、饼图等
  • PlantUML 图表:UML 类图、时序图等
  • Infographic 信息图:数据可视化图表

Workflow

1. 环境准备

前提条件: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 参数手动控制依赖安装。

2. 转换流程

输入:

  • Markdown 文件路径(必需)
  • 配置选项(可选)

处理流程:

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│ 读取 MD 文件 │ -> │ 解析 Markdown │ -> │ 渲染特殊元素 │ -> │ 生成 HTML   │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                         │                   │
                         v                   v
                ┌─────────────┐    ┌─────────────────────┐
                │ marked 解析  │    │ KaTeX 渲染公式      │
                │ 扩展语法处理 │    │ Puppeteer 渲染图表  │
                └─────────────┘    └─────────────────────┘

输出:

  • 文件名:{原文件名}-wechat.html
  • 特点:样式内联,可直接复制到微信公众号

3. 输出格式

生成的 HTML 特点:

  • 所有样式内联(微信公众号要求)
  • 支持 GFM(GitHub Flavored Markdown)
  • 代码块带 Mac 风格装饰
  • 图片带图注
  • 外链自动添加引用标记
  • 数学公式已渲染为 HTML
  • 图表已渲染为 SVG

Configuration

配置文件 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       禁用自动安装依赖

Usage Examples

基础用法

# 转换单个文件
node scripts/convert.js article.md

# 指定输出路径
node scripts/convert.js article.md -o output.html

# 使用自定义主题色
node scripts/convert.js article.md --color "#009874"

npm scripts

# 安装依赖
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);

Dependencies

核心依赖

依赖 版本 用途
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 终端彩色输出

自动安装机制

脚本会自动检测缺失的依赖并安装:

  1. 检查 node_modules 目录
  2. 缺失时自动执行 npm install
  3. 安装完成后继续执行

可选依赖

对于 PlantUML 支持,需要安装 Java 运行时环境。

功能支持矩阵

功能 Python 版本 Node.js 版本
基础 Markdown ✅ ✅
GFM 扩展 ✅ ✅
删除线/高亮/下划线 ✅ ✅
Ruby 注音 ✅ ✅
代码高亮 ✅ ✅
数学公式 ❌ 原始代码 ✅ KaTeX 渲染
Mermaid 图表 ❌ 原始代码 ✅ SVG 渲染
PlantUML ❌ 原始代码 ⚠️ 部分
Infographic ❌ 原始代码 ⚠️ 部分
样式内联 ❌ ✅ juice

Implementation Notes

架构设计

convert.js
├── 扩展语法处理器
│   ├── strikethrough  删除线
│   ├── highlight      高亮
│   ├── underline      下划线
│   ├── rubyBrace      Ruby 注音 {}
│   └── rubyCaret      Ruby 注音 ^()
│
├── 数学公式渲染
│   ├── mathExtension  块级公式
│   └── inlineMath     行内公式
│
├── 图表渲染
│   └── mermaidExtension  Mermaid → SVG
│
├── 代码块处理
│   └── codeBlockExtension  代码高亮 + Mac 装饰
│
└── 核心转换器
    └── MDToWechatConverter
        ├── setupMarked()     配置解析器
        ├── convert()         主转换流程
        ├── renderMermaid()   渲染 Mermaid
        └── wrapHTML()        包装输出

关键技术点

  1. marked 扩展系统:使用 marked 的 extension API 实现自定义语法
  2. KaTeX 服务端渲染:在 Node.js 中直接渲染数学公式为 HTML
  3. Puppeteer 无头浏览器:渲染 Mermaid 等 JavaScript 依赖的图表
  4. CSS 内联化:使用 juice 库将 CSS 样式内联到 HTML 元素

微信公众号适配

关键适配点:

  1. 样式内联:所有 CSS 必须内联到 style 属性
  2. 选择器限制:不支持 class 选择器,使用标签和内联样式
  3. 外部链接:微信会屏蔽外链,建议添加引用标记
  4. 图片处理:需上传到微信服务器或使用支持的图床
  5. 代码块:使用 pre + code 标签,添加 Mac 装饰
  6. KaTeX 样式:通过 CDN 引入,复制时需保留

Troubleshooting

常见问题

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:

  1. 使用浏览器打开 HTML 文件
  2. 全选复制(Ctrl+A)
  3. 粘贴到公众号编辑器

Q: 图片不显示? A: 微信公众号不支持外链图片,需要:

  1. 上传图片到微信后台
  2. 使用微信支持的图床(如腾讯云)

File Structure

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          # 简洁主题

Version History

  • 2.0.0 (2024-03) - 使用 Node.js 重写,完整支持数学公式和图表渲染
  • 1.0.0 (2024-03) - Python 版本,支持基础 Markdown 和扩展语法

Based on

  • doocs/md - 原始项目灵感来源
  • marked - Markdown 解析器
  • KaTeX - 数学公式渲染
  • Mermaid - 图表渲染

相关专题

更多
Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

2026.11.12

0

15

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

2026.11.12

0

15

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

2026.11.12

0

15

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.3万人学习