一个简洁的 Markdown 实时排版工具,支持多种主题模板和一键导出。
- 🎨 13 种主题模板 - 覆盖商务、创意、技术、极简、故事 5 大场景
- 📱 微信公众号适配 - 完全内联样式,直接复制粘贴到公众号编辑器
- 🚀 实时预览 - 边写边看,所见即所得
- 💾 一键导出 - 支持导出为 HTML 和 PNG 图片
- 🔧 命令行工具 - 支持批量处理和自动化
- 🌐 OpenClaw 调度 - 可通过 OpenClaw 直接调用
直接在浏览器中打开 index.html 即可使用。
npm installnode cli.js <markdown-file> [options]--template <name>- 选择模板(wechat/modern/minimal/tech),默认: modern--output <file>- 输出文件路径,默认: 输出到标准输出
| 模板 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
business |
商务风格 | 专业商务排版,适合企业内容 | 企业报告、商业计划 |
financial |
金融风格 | 金融行业专业排版 | 财报分析、投资报告 |
magazine |
杂志风格 | 杂志式排版,视觉冲击力强 | 品牌故事、深度报道 |
nyt |
纽约时报 | 经典报刊排版 | 新闻报道、时事评论 |
| 模板 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
literary |
文学风格 | 优雅文学排版 | 散文、诗歌、文学评论 |
elegant |
优雅风格 | 精致优雅排版 | 生活方式、艺术鉴赏 |
apple |
Apple 风格 | 简约现代,科技感 | 产品发布、设计分享 |
| 模板 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
tech |
技术风格 | 深色主题,等宽字体 | 技术文档、代码教程 |
anthropic |
Anthropic 风格 | AI 研究风格排版 | AI 论文、技术博客 |
| 模板 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
minimal |
极简风格 | 纯白背景,衬线字体 | 学术文章、正式文档 |
deepread |
深度阅读 | 专注阅读体验 | 长文阅读、深度思考 |
wechat |
微信公众号 | 完全内联样式,适配微信公众号 | 公众号文章 |
| 模板 ID | 名称 | 描述 | 适用场景 |
|---|---|---|---|
story |
故事风格 | 叙事性强,沉浸式阅读 | 小说、故事、游记 |
latepoint |
深夜风格 | 深夜氛围,情感共鸣 | 情感文章、夜读专栏 |
node cli.js article.md --template wechat --output wechat.html生成的 HTML 可以直接在浏览器中打开,然后复制粘贴到微信公众号编辑器,样式完全保留。
node cli.js README.md --template modern --output output.htmlnode cli.js tech.md --template tech > result.htmlfor file in *.md; do
node cli.js "$file" --template wechat --output "${file%.md}.html"
done微信公众号编辑器有严格的限制:
- ❌ 不支持外部 CSS 样式表(
<style>标签会被过滤) - ❌ 不支持 class 和 id 选择器
- ✅ 只支持内联样式(
style属性) - ✅ 只支持部分 CSS 属性(白名单机制)
-
生成 HTML
node cli.js article.md --template wechat --output wechat.html
-
在浏览器中打开
open wechat.html # macOS # 或直接双击 wechat.html
-
全选复制
- 按
Cmd+A(macOS)或Ctrl+A(Windows)全选 - 按
Cmd+C(macOS)或Ctrl+C(Windows)复制
- 按
-
粘贴到公众号
- 打开微信公众号后台
- 新建图文消息
- 直接粘贴(
Cmd+V或Ctrl+V) - ✅ 样式完全保留!
微信公众号模板使用的所有 CSS 属性都在白名单内:
- ✅ 字体:
font-family,font-size,font-weight,font-style - ✅ 颜色:
color,background-color - ✅ 间距:
margin,padding,line-height - ✅ 边框:
border,border-left,border-bottom - ✅ 布局:
text-align,display - ✅ 其他:
border-radius(部分支持)
以下样式在微信公众号中会被过滤:
- ❌
box-shadow(阴影) - ❌
gradient(渐变) - ❌
transform(变换) - ❌
animation(动画) - ❌
position: fixed/absolute(定位)
可以通过 OpenClaw 直接调用 PageSkill:
// 在 OpenClaw 中调用
window.open('file:///path/to/PageSkill/index.html?markdown=' + encodeURIComponent(markdownText));或使用 postMessage:
const iframe = document.querySelector('iframe');
iframe.contentWindow.postMessage({
type: 'loadMarkdown',
markdown: markdownText
}, '*');- Markdown 解析: marked
- 代码高亮: highlight.js
- 纯前端: 无需服务器,直接在浏览器中运行
PageSkill/
├── index.html # 主页面(在线编辑器)
├── cli.js # 命令行工具
├── package.json # 依赖配置
├── README.md # 说明文档
└── CLI.md # CLI 详细文档
在 cli.js 中的 templates 对象添加新模板:
const templates = {
mytemplate: {
id: 'mytemplate',
name: '我的模板',
description: '模板描述',
css: `
/* 你的 CSS 样式 */
`
}
};对于需要内联样式的模板(如微信公众号),设置 inline: true 并实现自定义渲染器。
MIT
欢迎提交 Issue 和 Pull Request!
🎯 核心更新:微信公众号完美适配
- ✨ 微信公众号专用模板 - 完全内联样式,解决公众号编辑器样式丢失问题
- ✨ 智能样式转换 - 自动将 CSS 转换为微信白名单内的内联样式
- 🎨 4 种预设模板 - wechat / modern / minimal / tech
- 📝 完整使用指南 - 从生成到发布的完整流程说明
- 🔧 自定义渲染器 - 基于 marked.js 的完全可控渲染
- 🎯 零依赖输出 - 生成的 HTML 完全独立,无外部依赖
- 📦 批量处理支持 - 支持命令行批量转换
- 🚀 OpenClaw 集成 - 可通过 OpenClaw 工作流直接调用
- 🐛 修复样式复制到公众号后丢失的问题
- 🐛 修复 class/id 选择器在公众号中不生效的问题
- 🐛 修复部分 CSS 属性被过滤的问题
- 📝 新增微信公众号使用指南
- 📝 新增 CLI 详细文档
- 📝 新增模板对比表格
- 📝 新增常见问题解答
使用示例:
# 生成微信公众号格式
node cli.js article.md --template wechat --output wechat.html
# 在浏览器打开,全选复制,粘贴到公众号编辑器
# ✅ 样式完全保留!- 🎉 首次发布
- ✨ 支持 3 种主题模板(modern / minimal / tech)
- ✨ 实时预览功能
- ✨ 命令行工具
- ✨ OpenClaw 调度支持


