公众号编辑器
微信公众号在线排版/复制粘贴
使用步骤
1. 选择主题:5+ 种风格(科技 / 文艺 / 商业 / 极简 / 学术)
2. 撰写 Markdown:左侧使用标准 Markdown 语法
3. 复制到公众号:剪贴板含富文本,公众号编辑器自动识别
4. 关键提示:公众号不支持外链 CSS,本工具用行内样式注入方案,格式不丢
· vs 微信编辑器(/wenben/weixin-bianji):本工具针对公众号文章排版优化(封面图建议、引用样式、底部分割等)
关于本工具
了解工具定位 · 使用场景 · 对比优势
使用场景
公众号推文排版
新媒体运营每天要发 2-3 篇推文,但公众号自带编辑器排版效果差,字体、行距、配色调整费时费力。本工具提供一键复制粘贴功能,将 Markdown 或富文本内容直接转换为适配公众号的排版样式,保留标题层级、引用块、代码高亮等格式,无需手动调整,5 分钟完成一篇美观推文。
内容多平台分发
企业品牌运营需要在公众号、知乎、头条等多个平台同步发布内容,但各平台编辑器格式不兼容。使用本工具,先在本地用 Markdown 写好文章,再通过本工具一键转为公众号格式,同时支持导出为纯文本或 HTML,方便适配其他平台,避免重复排版。
团队协作内容审核
公众号内容需要多人审核修改,但微信编辑器不支持版本对比,修改后容易丢失原始格式。本工具支持复制粘贴后实时预览,团队成员可在本地完成内容调整,再通过工具统一排版,确保最终发布版本格式一致,减少沟通成本和返工时间。
热点事件快速发布
突发新闻或热点事件需要 30 分钟内完成推文发布。本工具支持从外部编辑器(如 Notion、语雀)直接复制内容,自动适配公众号样式,省去手动调整字号、行距、段落的步骤,让运营人员专注内容本身,抢占发布时间窗口。
长文结构化排版
技术博客或深度分析文章包含多级标题、代码块、列表等复杂结构,公众号原生编辑器无法高效处理。本工具自动识别 Markdown 层级,将一级标题设为 H2、二级设为 H3,代码块自动添加灰色背景,列表保持缩进,保证长文在手机端阅读体验清晰有序。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 | 竞品 A(135编辑器) | 传统方法(Word排版) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,内容零上传 | 需上传内容至服务器保存 | 内容完全本地,无网络传输 |
| 处理速度 | 粘贴后即时完成排版 | 需等待页面加载和渲染 | 手动调整格式,耗时数分钟至数小时 |
| 离线可用 | 完全离线,断网可用 | 必须联网使用 | 完全离线 |
| 排版一致性 | 保留微信原生格式,复制后无需二次调整 | 部分样式在微信后台可能变形 | 复制到微信后台格式易错乱,需反复调试 |
| 收费模式 | 免费,无功能限制 | 免费版有功能限制,高级功能需付费会员 | 免费(需拥有 Office 软件) |
| 注册要求 | 无需注册,打开即用 | 需注册账号才能使用 | 无需注册 |
| 使用门槛 | 零学习成本,会复制粘贴即可 | 需熟悉编辑器界面和功能按钮 | 需掌握 Word 排版技巧 |
使用指南
上手步骤 · 输入输出 · 避坑提示
输入输出示例8 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| 这是一段带格式的文本,包含**加粗**、*斜体*和~~删除线~~。 | 这是一段带格式的文本,包含<b>加粗</b>、<i>斜体</i>和<s>删除线</s>。 | 典型场景:保留 Markdown 格式转 HTML |
| 这是一段带空格的文本,包含 多个空格 和 换行符。 | 这是一段带空格的文本,包含 多个空格 和换行符。 | 边界 case:保留连续空格和换行 |
| 这是一段带特殊符号的文本:©™®①②③④⑤⑥⑦⑧⑨⑩。 | 这是一段带特殊符号的文本:©™®①②③④⑤⑥⑦⑧⑨⑩。 | 典型场景:保留 Unicode 特殊字符 |
| 这是一段带链接的文本:请访问 https://example.com。 | 这是一段带链接的文本:请访问 <a href="https://example.com">https://example.com</a>。 | 典型场景:自动识别并包裹超链接 |
| 这是一段带图片的 Markdown:。 | 这是一段带图片的 Markdown:<img src="https://example.com/image.jpg" alt="图片描述">。 | 典型场景:Markdown 图片转 HTML 标签 |
| 这是一段带代码块的文本:`console.log('hello')`。 | 这是一段带代码块的文本:<code>console.log('hello')</code>。 | 典型场景:行内代码转 <code> 标签 |
| 这是一段空文本。 | 边界 case:空输入返回空输出 | |
| 这是一段超长文本(超过 10000 字符),用于测试编辑器性能。 | 这是一段超长文本(超过 10000 字符),用于测试编辑器性能。 | 边界 case:大文本输入不截断 |
常见错误对照9 个常踩的坑 · 错误 → 修复
1. 从 Word 直接粘贴带内联样式的文本
从 Word 复制一段带字体、颜色、行距的文字,直接 Ctrl+V 到编辑器先粘贴到记事本(纯文本中转),再复制纯文本到编辑器;或使用编辑器的「清除格式」按钮Word 的 HTML 片段包含大量内联 style(font-family、mso-* 命名空间),粘贴后破坏公众号模板样式,导致字号/颜色/行距错乱
2. 在编辑器里直接写 Markdown 语法
在编辑区输入 `# 标题` 或 `**加粗**` 并期望自动渲染使用编辑器提供的工具栏按钮(H1/H2/加粗/列表)或快捷键(Ctrl+B/Ctrl+I)设置格式该编辑器是富文本(所见即所得)模式,非 Markdown 渲染引擎;Markdown 符号会被当作普通字符输出
3. 复制代码时丢失缩进和换行
从 IDE 复制一段 Python 代码(含 4 空格缩进),直接粘贴到正文区使用编辑器提供的「代码块」或「引用」样式包裹代码;或手动将缩进替换为全角空格公众号富文本编辑器在粘贴时默认合并连续空格为 1 个,且忽略行首空白;代码缩进丢失后逻辑结构被破坏
4. 在编辑器里直接输入 Emoji 并期望跨平台一致
在 Windows 上输入 😊(U+1F60A),发布后 Android 显示为方框或黑白符号使用系统自带 Emoji 选择器(Win+. / Mac Ctrl+Cmd+Space)插入;或使用纯文本符号替代(如 : ) 或 ^_^ )不同操作系统/微信版本对 Emoji 的字体支持不同;部分旧版 Android 缺少彩色 Emoji 字体,回退为空白框
5. 插入超长 URL 导致排版断裂
在正文中直接粘贴 `https://www.example.com/very/long/path/with/many/segments/1234567890`使用编辑器的「超链接」功能(选中文字后添加链接);或手动将 URL 缩短(如 t.cn/xxx)公众号正文的自动换行对连续无空格字符串(URL)不友好,超长 URL 会撑破容器宽度,导致右侧溢出或横向滚动条
6. 从网页复制带背景色的文本
从某网站复制一段带黄色高亮的文字,粘贴后背景色污染整段粘贴前使用「纯文本粘贴」(Ctrl+Shift+V / 右键-粘贴为纯文本);或粘贴后手动清除背景色网页的 `<span style="background-color: yellow">` 会被保留到公众号编辑器,导致文字背景色与模板背景冲突,视觉杂乱
7. 在编辑器里手动调整字号/颜色后忘记统一
先写一段 16px 灰色文字,再写一段 14px 黑色文字,发布后段落风格不统一使用编辑器预设的「正文样式」或「标题样式」统一管理字号和颜色;避免逐段手动调公众号文章在手机端阅读时,字号/颜色不一致会降低专业感;预设样式可保证全局一致性且适配移动端
8. 复制表格时行列错位
从 Excel 复制一个 3×4 的表格,粘贴后单元格合并或行列数不对先在 Excel 中「复制为纯文本」(或粘贴到记事本检查分隔符),再手动在编辑器里重建表格Excel 的表格 HTML 包含 colspan/rowspan 属性,公众号富文本编辑器对复杂表格的解析能力有限,容易造成结构错乱
9. 使用空格代替缩进/对齐
在段落开头按 4 次空格模拟首行缩进,发布后缩进消失使用编辑器的「首行缩进」功能(通常为 2 字符缩进按钮);或使用全角空格(U+3000)微信客户端在渲染时默认合并连续半角空格为 1 个,导致手动空格缩进失效;全角空格不会被合并
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
无精确数学公式,核心逻辑为保留微信公众号富文本格式(字体、字号、颜色、行间距、对齐方式等),并去除平台无关的冗余 HTML 标签和样式。
示例
用户从微信公众号后台复制一段带红色标题、蓝色正文、居中对齐的文章,粘贴到编辑器后,所有字体颜色、字号、对齐方式保持不变,但自动清除了微信特有的 data-src、data-type 等属性,以及多余的 span 包裹。
适用范围
适用于微信公众号后台编辑器中复制的内容。不适用于从网页、Word 或 PDF 直接粘贴的内容(可能丢失部分样式或引入额外标签)。数据来源:微信公众号富文本规范及常见浏览器粘贴行为。
原理图
开发者集成
3 种主流语言 · 复制即用
import re
# 移除微信富文本中的多余样式和空标签,保留基本结构
raw_html = '<p style="font-size:16px;color:#333;">正文内容</p><p><br style="caret-color:red;"></p>'
# 删除所有 style 属性
cleaned = re.sub(r' style="[^"]*"', '', raw_html)
# 删除 br 标签(保留换行语义)
cleaned = re.sub(r'<br[^>]*>', '', cleaned)
# 删除只含空白符的空标签
cleaned = re.sub(r'<p>[\s\u200b]*</p>', '', cleaned)
print(cleaned) # <p>正文内容</p>package main
import (
"fmt"
"regexp"
)
func main() {
raw := `<p style="font-size:16px;color:#333;">正文</p><p><br style="caret-color:red;"></p>`
// 移除 style 属性
styleRe := regexp.MustCompile(` style="[^"]*"`)
cleaned := styleRe.ReplaceAllString(raw, "")
// 移除 br 标签
brRe := regexp.MustCompile(`<br[^>]*>`)
cleaned = brRe.ReplaceAllString(cleaned, "")
// 移除空白 p 标签
blankP := regexp.MustCompile(`<p>[\s\u200b]*</p>`)
cleaned = blankP.ReplaceAllString(cleaned, "")
fmt.Println(cleaned) // <p>正文</p>
}// 浏览器端:从富文本编辑器提取纯文本(去除 HTML 标签)
const html = '<p>标题</p><p>正文内容<strong>加粗</strong></p>'
// 创建临时 DOM 元素解析 HTML
const div = document.createElement('div')
div.innerHTML = html
// 提取纯文本,保留段落间的换行
const text = Array.from(div.children)
.map(el => el.textContent)
.join('\n')
console.log(text)
// 输出:
// 标题
// 正文内容加粗常见问题
10 个高频疑问