agentleFS
ZimaBlueAIZimaBlueAI/skills/gzh-design/SKILL.md

gzh-design

Skill2 starsChanged 4 months agoApache-2.0View on GitHub

微信公众号文章排版引擎,将 Markdown、Word(.docx)、PDF、纯文本或网页富文本转换为可直接粘贴到微信公众号编辑器且样式不丢失的 HTML。用于“公众号排版”“微信排版”“把文章排成公众号 HTML”“gzh”“一键排版/自动排版”、为公众号文章生成或选择主题模板、按参考图/描述生成自定义公众号主题组件库等场景。内置多主题组件库,包括教程测评、观点分析、科技感、极客终端、AI风、文艺杂志、自媒体、产品宣发、公益倡议等。不要用于普通网页、落地页、PPT 或通用前端页面。

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

gzh-design:微信公众号文章排版

把一篇文章排成微信公众号编辑器可粘贴的正文 HTML,并额外交付一个带“一键复制”按钮的预览页。正文片段必须保持干净:只包含公众号正文允许的标签和内联样式,不含预览页按钮、脚本或页面外壳。

主题信息以 references/theme-index.md 为单一来源。具体 HTML 组件从主题库和 references/common-components.md 读取,不凭记忆手写新组件。

工作流

1. 归一化输入

用户可能给 Markdown、.md 文件、.docx、PDF、.txt、网页富文本或纯文字。

  • Markdown 直接进入结构解析。
  • 非 Markdown 先读 references/format-normalize.md 并转换成 Markdown 草稿。
  • .docx 优先用 scripts/extract_docx.py 抽取。
  • PDF 分页读取后清洗标题、段落、引用、表格和图片占位。
  • 什么内容都没给时,向用户索要原文。

用户明确说“直接排”“自动排”“一键排版”“不用问”时进入全自动模式:自行推断结构、选择主题、排版和校验,交付时说明选择理由。

2. 选择主题

先读 references/theme-index.md。

  • 用户已指定主题:直接使用。
  • 题材明显:推荐最匹配主题,除非用户要求全自动,否则给 1 次确认。
  • 题材不明显:默认推荐第一行主题,并提供 2-4 个备选。
  • 全自动模式:不追问,按题材选择;仍要在交付说明里写明主题。
  • 用户想要新风格:读 references/theme-generator.md,按自定义主题流程生成预览、转换主题库、登记索引。

常见题材映射:

  • 教程、测评、工具清单:摸鱼绿、摸鱼票据风、极客终端风。
  • 深度观点、行业判断:红白色系、石墨极简风、科技蓝图。
  • AI 产品、模型、智能体、自动化:AI 星云风。
  • 设计、生活方式、随笔、书影音:留白禅意风、文艺杂志风、橄榄手记。
  • 自媒体栏目、个人号、内容运营:自媒体栏目风。
  • 新品发布、功能介绍、增长活动:产品宣发风。
  • 公益倡议、志愿者、ESG、公共议题:公益倡议风。

3. 读取组件库

读取两类文件:

  1. 所选主题的 references/theme-*.md。
  2. 通用增量库 references/common-components.md,用于代码块、图片/GIF、素材占位、小标签标题等跨主题组件。

后续生成必须遵守主题库的骨架、配方和 Markdown 映射规则。同一篇文章只使用一套主题,不跨主题混用。

4. 解析文章结构

识别:

  • 标题:# 标题 或 frontmatter title。
  • 开头引言:文章开头连续 > 引用块。
  • 章节:##,子章节:###。
  • 强调:**加粗**、==高亮==、<u>下划线</u>、++下划线++。
  • 图片/GIF:![说明](url),空 alt 不编造说明。
  • 代码、命令、Prompt:围栏代码块或行内代码。
  • 列表、分割线、表格:按主题映射处理。

结构解析后判断主导文章类型:教程/操作指南、工具清单、观点分析、人物访谈、数据报告、案例复盘、生活随笔、产品推广、公益倡议等。

5. 装配正文 HTML

按主题库的“完整文章模板骨架”和“文章类型 → 组件组合配方表”装配。

必须执行的智能处理:

  • 章节按 ## 顺序自动编号,末章若是总结/结语可用主题指定的变体。
  • 每个正文段落主动找 1-3 个关键词短语,用主题索引里的“正文下划线 CSS”标记。
  • 开头引言提炼核心词并高亮。
  • 有目录组件时,从 ## 里精选 3 个核心看点,不机械列全量。
  • 尾部作者签名区只出现一次;用户没给署名时保留 {{作者名}}、{{一句话简介}} 占位。
  • 正文中文标点使用全角;代码、URL、英文专名内部保持原样。
  • 代码和 Prompt 必须用通用库代码块,不塞进普通段落。

6. 平台红线

正文片段禁止:

  • <style>、<script>、<div>、<link>。
  • class、id。
  • position:fixed/absolute/sticky、float、display:grid、CSS 变量、@media、@keyframes、外部字体。

正文片段必须:

  • 全部样式写在 style。
  • 中文文字节点用 <span leaf="">文本</span> 包裹。
  • 产物从全局 <section> 容器开始,不要 <!DOCTYPE>、<html>、<head>、<body>。

7. 校验

写出正文 HTML 后必须运行:

<SKILL_ROOT>/scripts/validate_gzh_html.py <正文.html>

ERROR 必须清零。WARNING 原则上也要修完;若保留,交付时说明原因。

维护主题库时运行:

<SKILL_ROOT>/scripts/component_lint.py <SKILL_ROOT>

8. 输出

输出两个文件。面向用户打开的主交付必须是带“一键复制”按钮的预览页;干净正文片段只作为校验与手动兜底文件。

  1. 干净正文片段:{原文件名}_排版_{主题中文名}({主题标识}).html。
  2. 主交付:带“一键复制”按钮的预览页:
<SKILL_ROOT>/scripts/wrap_preview.py <正文.html>

预览页生成 {正文文件名}_预览.html。用户打开后点击右上角“一键复制”,再到微信公众号编辑器粘贴即可。按钮、工具栏和 JS 只存在于预览外壳,不进入被复制的正文 section。交付时优先给这个预览页路径,避免用户误打开干净正文后找不到按钮。

最终回复给用户:

  • 预览页路径,并说明这是主交付,打开后点“一键复制”。
  • 干净正文路径,并说明它是兜底片段,不带按钮。
  • 使用主题和选择理由。
  • 校验结论。
  • 若保留作者占位,提醒替换 {{作者名}} / {{一句话简介}}。

自定义主题

用户要求“生成一套新主题”“按这张图做公众号风格”“想要 XX 风格”时,读 references/theme-generator.md 并执行完整流程:

  1. 一次性收集主题描述、参考图、颜色、字体、圆角、阴影和适用场景。
  2. 生成完整 Block 区块预览到 assets/theme-previews/{theme-id}.html。
  3. 用户确认后转换为 references/theme-{id}.md。
  4. 登记到 references/theme-index.md。
  5. 跑 component_lint.py 到 0 ERROR。

新增主题库必须包含:设计变量速查表、组件完整 HTML、完整文章模板骨架、文章类型配方表、Markdown 映射规则表。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.