by isjiamu
把 Markdown 一键排成可直接粘进公众号编辑器的精致 HTML —— 6 套精选主题 + 主题生成器 + 双关卡校验。An AI-agent skill that turns Markdown into paste-ready WeChat article HTML.
# Add to your Claude Code skills
git clone https://github.com/isjiamu/gzh-design-skillGuides for using ai agents skills like gzh-design-skill.
gzh-design-skill is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by isjiamu. 把 Markdown 一键排成可直接粘进公众号编辑器的精致 HTML —— 6 套精选主题 + 主题生成器 + 双关卡校验。An AI-agent skill that turns Markdown into paste-ready WeChat article HTML. It has 102 GitHub stars.
gzh-design-skill's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/isjiamu/gzh-design-skill" and add it to your Claude Code skills directory (see the Installation section above). gzh-design-skill ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
gzh-design-skill is primarily written in HTML. It is open-source under isjiamu on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh gzh-design-skill against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
把一篇 Markdown 文章转换为可直接复制粘贴进微信公众号编辑器、且粘贴后样式不丢失的 HTML。
核心资产是 references/ 下的主题组件库(每套一个主题:设计变量 + 各组件完整 HTML + 模板骨架 + 映射规则)外加 1 套通用增量库(代码块 / 图片·GIF / 小标签标题,所有主题共用)。主题清单以 references/theme-index.md 为单一来源。本 SKILL.md 只负责流程与决策,具体 HTML 代码一律从组件库取,不要凭记忆手写。
用户可能给:Markdown 文本或 .md 路径(直接进第 1 步)、.docx、.pdf、.txt/无标记纯文本、网页富文本。非 Markdown 输入必须先读 references/format-normalize.md 按其规则转成 Markdown 草稿并做结构确认(docx 用 scripts/extract_docx.py,PDF 用 Read 分页读取+清噪,纯文本按标题启发式推断结构)。什么都没给时,向用户索要。
用户说「直接排 / 自动排 / 一键 / 不用问」时进全自动模式:跳过结构确认与选主题提问,自动推断结构、按题材自选主题、排版校验,交付时附决策说明(章节结构、自拟标题、选题理由)。
读 references/theme-index.md(主题信息的单一来源)。据文章题材主动推荐最契合的主题,再让用户一步确认——推荐但不擅自定死:
用户定下主题后,才进入该主题内部的组件匹配(第 3、4 步:判定文章类型 → 按该主题的配方表选组件组合)。
(1) 据 theme-index 中该主题的"组件库文件"列,Read 该主题专属组件库 references/theme-{标识}.md(含引言卡、章节标题、正文标记、签名等主题专属组件)。
(2) 同时 Read 通用增量库 references/common-components.md——代码块、图片/GIF、小标签标题这三类所有主题共用,套用当前主题主色即可。
后续生成完全依据这两份组件库,HTML 一律从中取、不要手写。
| 元素 | 识别规则 |
|---|---|
| 文章标题 | # 标题 或 frontmatter title |
| 开头引言 | 文章最开头的 > 引用 块 |
| 章节标题 | ## 标题 |
| 子章节 | ### 标题 |
| 加粗 / 高亮 / 下划线 | **文字** / ==文字== / <u>文字</u> 或 ++文字++ |
| 引用段落 | 非开头的 > 文字 |
| 图片 / GIF | 、(GIF 与图片同样处理) |
| 代码 / 命令 / Prompt | ``` 围栏代码块 ```、行内 `code` |
| 分割线 / 列表 | ---、*** / - 项 或 1. 项 |
| 表格 | | 分隔的 Markdown 表格(常来自 docx 转换)→ 优先用主题库的表格/卡片组件(主题库映射规则为准) |
解析完结构后,判定文章类型(取主导类型,可复合):教程/操作指南、盘点/工具清单、观点/深度分析、访谈/人物特稿、数据复盘/报告、生活/情感随笔、案例实战。判定依据:步骤和命令多→教程;并列条目多→盘点;引语和人物叙事多→访谈;数字和对比多→数据;论证推演多→观点。
先查所选主题库的「文章类型 → 组件组合配方」表,按文章类型确定本篇的核心组件组合与点缀组件——不要拿到组件库就逐段随机选组件,配方保证同类文章的排版气质稳定。配方之外的元素再按主题库映射规则表补充。
然后依主题库的**"完整文章模板骨架"章节**装配,把每个 Markdown 元素替换为对应组件:
**加粗**→主色加粗;==高亮==→渐变背景高亮;<u>文字</u> 或 ++文字++→下划线;~~文字~~→荧光笔(底部半高亮);>引用→引用高亮块。``` 代码块 ```→ 1a 深色 / 1b 浅色代码块,行内 `code`→ 1c;→ 2a 图片(有说明才加说明组件)、.gif→ 2b GIF;需要突出的小标题/强调→ 3a 左竖条小标题或 3b 药丸标签,金句→ 3d、提示旁注→ 3e。优先级:先查主题库映射规则表——该主题有等价语义组件(如自己的金句/提示块)就用主题库版本保持气质一致;主题库没有对应组件时才用通用库 3x 并按其换色规则换成主题色。dashed border)套一个标题,那样笨重抢戏。把生成的 HTML 写入目标文件后,必须运行校验脚本,ERROR 清零才算完成:
# 用脚本所在 skill 的绝对路径调用,HTML 参数也用其实际路径(两者目录通常不同)
<SKILL_ROOT>/scripts/validate_gzh_html.py <生成的.html 的实际路径>
它确定性地检查平台禁用项和 <span leaf> 包裹。报 ERROR 就回到第 4 步修;半角标点 WARNING 同样要修复到 0 再交付(这是实际使用中最高频的返工点)。
产物格式:纯 <section>…</section> 正文片段,从全局容器开始,不要包 <!DOCTYPE>/<html>/<head>/<body>——公众号编辑器只接受正文片段,多余的文档外壳会被丢弃或干扰粘贴。
{原文件名}_排版_{主题中文名}({英文标识}).html(英文标识 = theme-index 组件库文件名去掉 theme- 前缀与 .md 后缀)。这份用于校验和手动粘贴兜底。<SKILL_ROOT>/scripts/wrap_preview.py <上面的干净正文.html>
产出 {...}_预览.html——浏览器打开后右上角有「复制到公众号」按钮,点一下即把渲染后的富文本复制到剪贴板(等价 Ctrl+A/Ctrl+C),再到公众号编辑器 Ctrl/⌘+V 粘贴。按钮和脚本只在预览外壳里、不在被复制的 section 内,所以粘到公众号的仍是干净合规正文。{...}_预览.html → 点右上角「复制」→ 公众号编辑器粘贴;并给出干净正文文件路径作为兜底。附校验脚本结论(已通过 / 剩余 warning)。## 出现顺序分配 01/02/03…;末章若为结语/总结类,用主题库指定的结语编号变体(如 ∞),主题库未指定时沿用数字编号。## 取前 3 个作为导读/目录要点(主题库有目录组件时)。{{作者名}} 占位,见第 7 条)。我是 {{作者名}},{{一句话简介,如:热衷于分享 AI 观察与干货}}——用户在请求/偏好里给了署名或简介就直接填入;没给就保留 {{作者名}} / {{简介}} 占位,并在交付时提示用户替换成自己的署名。如果你觉得今天这篇有收获,欢迎**点赞、在看、转发**三连,我们下篇见, . ! ? : 和英文直引号 " '。生成 HTML 时就直接写弯引号""'',不要先写直引号再事后替换——原文里的直引号在转写时当场转换。例外:代码块、行内代码、英文专名/URL/代码标识符内部保持原样。| 层级 | 作用 | 频率 | 手段 |
|---|---|---|---|
| 锚点层 | 最强锚点:产品名/步骤/CTA/核心金句 | 全文 ≤ 5 处 | 主色加粗、深色底白字引用 |
| 标记层 | 正文关键词,每段 1–3 处 | 高频 | 下划线标记 |
| 容器层 | 引用块、概念标签、长句强调 | 按需 | 浅底引用、荧光笔、徽章 |
<style>/<script>/<div>、class/id 属性、position:fixed/absolute/sticky、float、@media/@keyframes、display:grid、CSS 变量、外部字体/CSS。style;所有文字节点用 <span leaf="">文字</span> 包裹(否则粘贴后样式丢失)。display:flex(有限)、linear-gradient、border-radius、box-shadow、<section>/<p>/<span>/<strong>/<img>/<h3>。<span leaf> 包裹是最常见致命错——粘贴到公众号后样式整片丢失。靠第 5 步校验脚本兜底,别跳过。## 顺序,不要跳号;结语编号变体只用于末章,中间章节不能用。 里真有说明文字才生成说明组件; 空 alt 不要编造说明。<img> 一律 max-width:100%;height:auto;display:block;margin:0 auto——按图片自身尺寸显示、居中,大图缩到容器宽、小图保持原尺寸。不用 width:100%(会把小图也拉伸变糊);只有表格 / 封面卡 / 流程图这类布局元素才用 width:100%。<img src="...名片或引导图URL">),没有真实图片 URL 时整行删掉,不要把占位符留在产物里。border:…dashed 四周虚线框包标题。例外:主题库明确定义的虚线组件(如摸鱼绿的 quote-box 引用框、oneliner-card 亮点卡)是该主题的风格特征,按主题库用法正常使用。" ' 都要改成全角;但代码块/行内代码内的半角符号保持原样,不要"全角化"代码。<p style=\"margin:0\">"写法,绝不用 white-space:pre——它会把 HTML 源码里 span 前的缩进和行间换行原样渲染成大左缩进 + 空行;缩进只用全角空格 ,行距靠 line-height:1.6。【插入…】、待录屏 / GIF / 视频 / 成果图等占位,用通用库 2c 居中素材占位板块(浅底柔虚线框 + 居中图标与说明),不要用左对齐的提示块。用户想要内置主题之外的新风格(说「生成一套新主题 / 自定义风格 / 按这张参考图做一套组件库」,或对现有主题都不满意)时,读 references/theme-generator.md 并严格按其流程执行:
assets/theme-previews/{theme-id}.html——全部区块在同一页面连续排布,用户浏览器打开整页一次浏览确认风格,不逐块展示确认。references/theme-{标识}.md(必须补 <span leaf=""> 包裹、去掉预览用 id、补齐五章节,规则详见 theme-generator.md 第三步),登记 theme-index.md,跑 component_lint.py 到 0 ERROR。生成阶段以提示词规则为准;转换进主题库阶段以本文件「平台红线」和「添加新主题的规范」为准(两者冲突时后者优先,因为主题库直接决定排版产物)。
新主题以 references/theme-{英文标识}.md 命名,内容必须包含:
<span leaf=""> 包裹,遵守上面"平台红线")添加后在 references/theme-index.md 登记一行(主题名 / 主色 / 适用场景 / 组件库文件 / 正文下划线 CSS),并跑 python3 scripts/component_lint.py . 确认组件库无反模式(0 ERROR)。
触发与主题选择的回归用例见
references/eval-cases.md(维护时用于回归核对,不影响单次生成)。
🤝 本项目由 甲木 × 「摸鱼小李」 联名共建 —— 排版组件、主题设计与质量标准凝聚了两人的公众号实践与共同打磨,特别感谢小李。
把 Markdown 一键排成可直接粘贴进微信公众号编辑器的精致 HTML
6 套精选主题 + 主题生成器 · 代码块/图片/GIF · 自动章节编号与关键词标记 · 双关卡质量校验
English | 中文
一个给 AI Agent(Claude Code / Codex / Cursor 等)用的公众号排版 Skill。你写完 Markdown,它按你选的主题,生成样式全内联、粘贴到公众号编辑器不掉格式的 HTML——自动编章节号、标关键词下划线、配引言卡与目录、处理代码块和图片、合并作者签名,并用脚本确定性地兜住公众号平台的各种限制。
references/theme-generator.md)。<span leaf=""> 包裹,规避 <style>/<div>/class/grid/position 等公众号会过滤的写法。component_lint.py(组件库源头)+ validate_gzh_html.py(最终产物),构成可复现的「改→验→修」闭环。6 套主题各排同一篇长文(真实长图,含配图、引言卡、编号章节、金句、名词旁注等完整组件):
📚 6 套完整长图 → docs/all-themes.md | 克隆后浏览器打开
docs/gallery/index.html可看可交互的完整 HTML。
✅ 适合:观点/深度分析 · 教程/操作指南 · 测评/工具盘点 · 知识整理/方法论 · 访谈/人物特稿 · 数据复盘/报告 · 生活/情感随笔 · 案例实战 —— 把 Markdown / Word / PDF / 纯文本长文,一键排成可直接粘进公众号编辑器的 HTML;也能按描述或参考图生成自定义主题。
❌ 不适合:普通网页/落地页(用前端 skill)· PPT(用 PPT skill)· 纯图片海报/社交卡片(用社交卡片类 skill)· 非公众号平台的排版 · 代写文章(本 skill 只排版、不写作——先有 Markdown 再用它)。
| 你的内容 | 推荐怎么排 |
|---|---|
| 观点 / 深度长文 | 红白 或 石墨极简;关键词下划线 + 金句引用 + 居中金句 |
| 产品测评 / 工具盘点 | 摸鱼绿 或 摸鱼票据;step/tool-label + 卡片,按配方表走 |
| 教程 / 操作指南 | 摸鱼绿;step-label + 代码块 + 编号列表 |
| 数据复盘 / 年度报告 | 摸鱼绿 或 橄榄手记;数据卡 + 表格 |
| 禅意 / 极简随笔 | 留白禅意;大留白 + 居中衬线引用 |
| 内刊 / 深度评测 / 案例复盘 | 橄榄手记;编者按 + 分节 + 暗色摘要框 |
| Word / PDF 稿转公众号 | 先自动格式归一化 → 再按题材选主题 |
| 想要现成之外的风格 | 主题生成器:一句话或参考图现造一套 |
覆盖绝大多数公众号题材,每套都打磨到「拿来即用」:
| 主题 | 适合 |
|---|---|
| 摸鱼绿(默认) | 教程、测评、清单、工具盘点(卡片丰富、信息密度高) |
| 红白色系 | 深度分析、观点、力量感话题(经典编辑风) |
| 石墨极简风 | 设计、科技评论、专业观点、高端品牌 |
| 留白禅意风 | 禅意、极简生活、深度随笔(呼吸感最强) |
| 摸鱼票据风 | 工具对比、创意评测(票据视觉隐喻) |
| 橄榄手记 | 内刊手记、深度评测、案例复盘(编辑部内刊质感) |
npx skills add https://github.com/isjiamu/gzh-design-skill
对任意 Agent(Claude Code / Codex / Cursor 等)说一句:
请帮我查找并自动安装 https://github.com/isjiamu/gzh-design-skill 这个 skill
它会自行 clone 到对应的 skills 目录并接入。
git clone https://github.com/isjiamu/gzh-design-skill.git ~/.claude/skills/gzh-design
装好后,直接对 Agent 说:
用摸鱼绿把这篇文章排成公众号 HTML:
article.md
validate_gzh_html.py,ERROR 清零才交付。生成的 HTML 严格遵守:禁 <style>/<script>/<div>、class/id、position:fixed/absolute/sticky、float、@media/@keyframes、display:grid、CSS 变量、外部字体;样式全部内联;所有文字用 <span leaf=""> 包裹。这些由校验脚本确定性检查,而非靠模型自觉。
改组件库或工作流后,用双关卡闭环防回归:
python3 scripts/component_lint.py . # 源头关:扫组件库反模式
python3 scripts/validate_gzh_html.py out.html # 产物关:扫最终 HTML 合规
white-space:pre(大空白)、正文四周虚线框、平台禁用项 —— 须 0 ERROR。<span leaf> 包裹、半角标点 —— 须 0 ERROR / 半角 0 WARN。references/eval-cases.md。<span leaf=""> 包裹,专门规避公众号会过滤的写法,粘进去不塌。component_lint + 产物 validate_gzh_html)确定性检查平台红线和标点,不靠模型「记得住」。gzh-design/
├── SKILL.md # 排版工作流主文档(Agent 入口)
├── references/
│ ├── theme-index.md # 6 套主题索引(主色/适用/下划线,单一来源)
│ ├── theme-*.md # 6 套主题组件库(theme-moyu-green.md 等)
│ ├── theme-generator.md # 主题生成器(按描述/参考图生成新主题)
│ ├── common-components.md # 跨主题通用增量组件(代码块/图片/小标签)
│ ├── format-normalize.md # 格式归一化(docx/pdf/纯文本 → Markdown)
│ └── eval-cases.md # 触发用例 + 可验证循环
├── scripts/
│ ├── validate_gzh_html.py # 产物合规校验
│ └── component_lint.py # 组件库源头检查
├── assets/
│ ├── sample-article.md # 演示输入
│ └── theme-previews/ # 主题生成器产出的区块库预览
└── docs/gallery/ # 主题浏览器预览
内置 6 套不够用时不必等更新——让 AI 现造一套。背后是 references/theme-generator.md 定义的第二条工作流:
assets/theme-previews/{id}.html,浏览器整页一次浏览确认风格(不逐块问)。references/theme-{id}.md(补 <span leaf>、补齐五章节:变量表 / 组件 / 骨架 / 配方表 / 映射表),登记进 theme-index,跑 component_lint.py 到 0 ERROR。怎么触发:
按「黑白杂志、克莱因蓝点睛、衬线字体」的气质,给公众号排版生成一套新主题
按这张参考图(附图)做一套公众号排版组件库
仓库里 assets/theme-previews/theme-mono-blue-editorial.html 就是这样生成的一套「墨蓝刊读风」样例。
每套主题的视觉都建立在一张设计变量色板上——配色不是拍脑袋,而是固定的角色分工:
| 角色 | 作用 | 取色思路 |
|---|---|---|
| 主色 | 章节编号、锚点强调、封面点睛 | 一个有辨识度的品牌色(#059669 emerald / #DC2626 正红 …) |
| 浅底 / 浅边框 | 卡片背景、引用块、标签底 | 主色同色系的极浅色(主色 + 大量白) |
| 点睛高亮色 | 每段 1~2 处黄底 / 渐变高亮 | 与主色冷暖对比的第二色(绿配黄) |
| 中性灰阶 | 正文 / 标题 / 辅助 / 分割线 | #111827 → #9CA3AF 一套灰阶,承担 90% 的文字 |
| 下划线标记色 | 正文关键词逐段标记 | 主色的浅色版(#A7F3D0 / #FECACA),温和不抢戏 |
克制三原则:① 主色只在锚点出现(全文 ≤5 处);② 大面积白底 + 灰阶,彩色只点缀;③ 一段内高亮 ≤2 种。
让 AI 自动配:只给一个主色或一句气质描述,主题生成器就据此推导整套协调色板——浅底、边框、高亮、灰阶、下划线色自动生成并保证可读对比度:
以
#7C9EB2雾蓝为主色,生成一套清新旅行随笔风的公众号主题
Q:粘贴到公众号后样式会掉吗?
A:不会。所有样式内联、文字 <span leaf=""> 包裹,这正是校验脚本强制的重点。
Q:能自己加主题吗?
A:两种方式。① 让 AI 生成:说「按这个风格 / 这张图生成一套公众号主题」,它会走 references/theme-generator.md 的流程生成组件库、登记并复用。② 手写贡献:照 CONTRIBUTING.md 的「新增一套主题风格」,跑通可验证循环即可提 PR。
Q:只能在 Claude Code 用吗?
A:不限。任何能读取 Skill 目录的 Agent(Codex / Cursor 等)都能用,工作流在 SKILL.md。
Q:对模型有要求吗?国产模型行不行? A:不挑模型,国内外模型都能跑出一致效果。排版逻辑全部沉淀在组件库和校验脚本里,不依赖某家模型的特殊能力——Claude、GPT、Gemini,以及 DeepSeek、Kimi、通义千问、智谱 GLM 等国产模型都可以。模型只负责按规则填充内容,硬约束由校验脚本确定性兜底,所以换模型不会导致排版走样。
Q:能一次出多套主题对比吗? A:能。说「用这几套主题各排一遍这篇」即可批量生成多套供你挑。
Q:怎么更新到最新版?
A:重新跑 npx skills add https://github.com/isjiamu/gzh-design-skill,或到安装目录 git pull。
Q:Agent 写出来不合规怎么办?
A:跑 scripts/validate_gzh_html.py,报 ERROR 就回到装配步骤修;两关全绿才交付,仍有问题欢迎开 Issue。
| 主色 | 主题 | 适用 |
|---|---|---|
#059669 |
摸鱼绿(默认) | 教程、测评、清单、工具盘点 |
#DC2626 |
红白色系 | 深度分析、观点、力量感话题 |
#52525B |
石墨极简风 | 设计、科技评论、专业观点、高端品牌 |
#4A5D52 |
留白禅意风 | 禅意、极简生活、深度随笔 |
#059669 |
摸鱼票据风 | 工具对比、创意评测(票据视觉隐喻) |
#1e1f23 |
橄榄手记 | 内刊手记、深度评测、案例复盘 |
每套主题的英文标识、组件库文件、下划线 CSS 见
references/theme-index.md。 需要别的风格?让 AI 用 主题生成器 现生成一套。
欢迎新主题、修复与文档改进,请先读 CONTRIBUTING.md。
AGPL-3.0 © 2026 甲木 × 摸鱼小李
本项目采用 GNU AGPL-3.0 协议,要点:
完整条款见 LICENSE。
🤝 *