Back to skills
SKILL.md
Gzh Design Skill Wechat Markdown Formatter
ASecurityTransform Markdown into paste-ready WeChat Official Account HTML with 6 themes, auto-numbering, keyword highlighting, and compliance validation
- 6 stars
- 0 votes
- 0 copies
- 12 views
- Added September 8, 2026
Works with
Security analysis
100/100npx -y skills add Aradotso/design-skills --skill gzh-design-skill-wechat-markdown-formatter --agent claude-codeAre you the author of Gzh Design Skill Wechat Markdown Formatter?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aradotso-gzh-design-skill-wechat-markdown-formatter)---
name: gzh-design-skill-wechat-markdown-formatter
description: Transform Markdown into paste-ready WeChat Official Account HTML with 6 themes, auto-numbering, keyword highlighting, and compliance validation
triggers:
- "format this markdown for WeChat official account"
- "convert markdown to gongzhonghao HTML"
- "create WeChat article from this markdown"
- "generate WeChat official account post"
- "style this article for WeChat public account"
- "make this markdown ready for 公众号"
- "apply moyu-green theme to this article"
- "create custom WeChat article theme"
---
# gzh-design-skill: WeChat Official Account Markdown Formatter
> Skill by [ara.so](https://ara.so) — Design Skills collection.
This skill transforms Markdown documents into production-ready HTML for WeChat Official Accounts (微信公众号) with professional typesetting, automatic section numbering, keyword highlighting, and strict platform compliance. Ships with 6 battle-tested themes plus a theme generator.
## What It Does
- **One-click formatting**: Markdown → inline-styled HTML that pastes cleanly into WeChat's editor
- **6 curated themes**: Moyu Green (default), Red-White, Graphite Minimal, Zen Whitespace, Moyu Ticket, Olive Notes
- **Smart typography**: Auto section numbering, keyword underlining (1-3 per paragraph), full-width punctuation
- **Platform compliance**: All styles inline, text wrapped in `<span leaf="">`, no `<div>/<style>/class/position/grid`
- **Rich components**: Code blocks (light/dark), images, GIF badges, quotes, lists, product labels, intro cards
- **Quality gates**: Dual validation (source linting + output validation) ensures nothing breaks
## Installation
### Quick Install (Recommended)
```bash
npx skills add https://github.com/isjiamu/gzh-design-skill
```
### Manual Clone
```bash
# For Claude Code
git clone https://github.com/isjiamu/gzh-design-skill.git ~/.claude/skills/gzh-design
# For Cursor
git clone https://github.com/isjiamu/gzh-design-skill.git ~/.cursor/skills/gzh-design
# For Codex
git clone https://github.com/isjiamu/gzh-design-skill.git ~/.codex/skills/gzh-design
```
### Let AI Install It
Simply tell your agent:
> "Install the skill from https://github.com/isjiamu/gzh-design-skill"
## Core Workflow
The skill follows this deterministic pipeline defined in `SKILL.md`:
### 1. Theme Selection
```markdown
User: "Format this article for WeChat using moyu-green theme"
```
The agent will:
- Read `references/theme-index.md` to map theme name to file
- Load the theme component library (e.g., `references/theme-moyu-green.md`)
- Load `references/common-components.md` for universal components (code blocks, images)
### 2. Content Analysis
```markdown
User: "Convert article.md to WeChat HTML, auto-detect best theme"
```
The agent analyzes content type and recommends:
- **Tutorial/Guide** → Moyu Green (step labels, code blocks)
- **Opinion/Analysis** → Red-White or Graphite Minimal (emphasis on text hierarchy)
- **Product Review** → Moyu Ticket (card-based layout)
- **Minimalist Essay** → Zen Whitespace (breathing room)
### 3. HTML Assembly
The agent will:
- Parse Markdown structure (headings, paragraphs, code, images, lists)
- Apply automatic section numbering (末章 marked with ∞ or ///)
- Highlight 1-3 keywords per paragraph with theme-specific underlines
- Convert punctuation to full-width (正文 only, preserves half-width in code)
- Wrap all text nodes in `<span leaf="">` for paste safety
- Inline all styles (no external CSS)
### 4. Validation
Two-checkpoint quality gate:
```bash
# Source checkpoint: Lint component library
python3 scripts/component_lint.py .
# Output checkpoint: Validate final HTML
python3 scripts/validate_gzh_html.py output.html
```
Must achieve:
- 0 ERRORs in both checks
- 0 WARNs for half-width punctuation in body text
### 5. Delivery
Generates two files:
- `article_clean.html` — Clean HTML for direct paste
- `article_preview.html` — Preview with "Copy to WeChat" button (one-click copy to clipboard)
## Theme System
### Using Built-in Themes
```markdown
# Default (Moyu Green)
User: "Format article.md for WeChat"
# Specific theme
User: "Use red-white theme for this markdown"
User: "Apply zen-whitespace style to my essay"
```
### Theme Quick Reference
| Theme ID | Primary Color | Use Case | Underline Color |
|----------|---------------|----------|-----------------|
| `moyu-green` | `#059669` | Tutorials, tools, reviews | `#10b981` |
| `red-white` | `#dc2626` | Opinion, analysis | `#ef4444` |
| `graphite-minimal` | `#374151` | Design, tech commentary | `#6b7280` |
| `zen-whitespace` | `#64748b` | Essays, minimalist content | `#94a3b8` |
| `moyu-ticket` | `#059669` | Tool comparisons, creative reviews | `#10b981` |
| `olive-notes` | `#65a30d` | Case studies, internal reports | `#84cc16` |
Full specs in `references/theme-index.md`.
### Generating Custom Themes
```markdown
User: "Create a new WeChat theme inspired by tech magazines,
use deep blue (#1e40af) as primary color, clean and professional"
```
The agent will:
1. Read `references/theme-generator.md` for generation workflow
2. Collect requirements (description, colors, fonts)
3. Generate complete component library (30+ components)
4. Save to `references/theme-custom-{name}.md`
5. Generate preview blocks in `assets/theme-previews/`
From a reference image:
```markdown
User: "Generate a WeChat theme matching this screenshot: [attach image]
Call it 'emerald-tech'"
```
## Component Usage
### Code Blocks
Markdown:
```markdown
```python
def hello_wechat():
return "内联样式,等宽字体,不折行"
```
```
Renders with:
- Monospace font (Consolas/Monaco)
- Light background (`#f9fafb`) or dark (`#1f2937`) based on theme
- Horizontal scroll (no line wrapping)
- Preserved half-width punctuation
### Images
```markdown

```
Auto-formatted with:
- Max width 100%, responsive
- Border radius from theme
- Optional caption below
GIFs get an animated corner badge.
### Keyword Highlighting
Automatic in body text:
```markdown
这段讲**核心概念**和实现方式。
```
Becomes:
- Bold text gets theme-colored underline
- 1-3 keywords per paragraph max (not every bold)
- Uses `border-bottom` (not `text-decoration` for better mobile support)
### Section Numbering
```markdown
## First Chapter
Content...
## Second Chapter
Content...
## Conclusion
Final thoughts...
```
Auto-numbered as:
- 一、First Chapter
- 二、Second Chapter
- ∞ Conclusion (last chapter gets ∞ or ///)
### Intro Cards & TOC
```markdown
User: "Add intro card and table of contents to this article"
```
Agent extracts:
- Intro card: First 2-3 compelling sentences
- TOC: All H2 headers with jump links
### Product Badges
```markdown
User: "Add tech stack badges for React, TypeScript, Tailwind"
```
Renders inline pill badges with theme colors.
## Validation & Quality
### Platform Compliance Checks
WeChat Official Account editor strips/breaks:
- ❌ `<style>`, `<script>`, `<div>` tags
- ❌ `class`, `id` attributes
- ❌ `position: fixed/absolute/sticky`
- ❌ `display: grid`, `float`
- ❌ `@media`, `@keyframes`, CSS variables
- ❌ External fonts (must use system stack)
This skill ensures:
- ✅ All styles inline on elements
- ✅ Text wrapped in `<span leaf="">`
- ✅ Only safe tags: `<section>`, `<p>`, `<span>`, `<h*>`, `<pre>`, `<code>`, `<img>`, `<blockquote>`, `<ul>`, `<ol>`, `<li>`
### Running Validation
```bash
# Check component library source
python3 scripts/component_lint.py .
# Check final HTML output
python3 scripts/validate_gzh_html.py output.html
```
**Component Lint** catches:
- `white-space: pre` (causes layout breaks)
- Dotted borders around body text (visual noise)
- Forbidden CSS properties
**HTML Validation** catches:
- Missing `<span leaf="">` wrappers
- Half-width punctuation in body (should be full-width: 。、!?)
- Forbidden tags/attributes
- External styles
Both must show **0 ERRORs** before delivery.
### Reproducible Quality Loop
```bash
# 1. Edit component library
vim references/theme-moyu-green.md
# 2. Validate source
python3 scripts/component_lint.py .
# 3. Generate test HTML
# (via agent: "format test article")
# 4. Validate output
python3 scripts/validate_gzh_html.py test_output.html
# 5. Fix until both pass
```
Documented in `references/eval-cases.md`.
## Real-World Examples
### Example 1: Tutorial Article
**Input**: `tutorial.md`
```markdown
# 如何用 Claude Code 自动化排版
本文教你把 Markdown 一键转成公众号 HTML。
## 安装技能
先克隆仓库...
## 选择主题
推荐用**摸鱼绿**主题...
```bash
npx skills add https://github.com/isjiamu/gzh-design-skill
```
## 生成 HTML
运行命令后...
```
**Command**:
```markdown
User: "Format tutorial.md for WeChat, use moyu-green theme,
add step labels and intro card"
```
**Output**: HTML with:
- Auto-numbered sections (一、二、三)
- Keywords underlined in green (`#10b981`)
- Code block with light background
- Intro card extracted from first paragraph
- All punctuation converted to full-width
### Example 2: Opinion Essay
**Input**: `opinion.md`
```markdown
# AI 工具的本质是放大人的意图
很多人误解了 AI...
**核心观点**:工具不会取代思考...
```
**Command**:
```markdown
User: "Convert opinion.md to WeChat HTML, recommend best theme"
```
**Agent response**:
```
Analyzing content... This is an opinion/analysis piece.
Recommended theme: red-white (classic editorial style)
Proceed? [yes]
```
**Output**: HTML with:
- Red underlines on key terms (`#ef4444`)
- Pull quotes for 核心观点
- Generous line spacing (1.8)
- Centered bold quote blocks
### Example 3: Custom Theme Generation
**Command**:
```markdown
User: "Generate a WeChat theme called 'tech-purple' with:
- Primary: #7c3aed (purple)
- For developer tools content
- Modern, clean, slightly playful
- Code blocks with dark background"
```
**Agent workflow**:
1. Loads `references/theme-generator.md`
2. Generates component library with:
- Purple heading underlines
- Dark code blocks (`#1f2937` bg)
- Purple link hover states
- 30+ styled components
3. Saves to `references/theme-custom-tech-purple.md`
4. Generates preview: `assets/theme-previews/tech-purple-preview.html`
**Usage after generation**:
```markdown
User: "Format devtools.md using tech-purple theme"
```
### Example 4: Batch Conversion
**Command**:
```markdown
User: "Convert all markdown files in ./articles/ to WeChat HTML,
use moyu-green for tutorials, red-white for opinions.
Detect type automatically."
```
**Agent process**:
```python
for article in articles:
content_type = analyze_content_type(article)
theme = "moyu-green" if content_type == "tutorial" else "red-white"
generate_wechat_html(article, theme)
validate_output(output_file)
```
## Configuration Files
### Theme Index
`references/theme-index.md` — Single source of truth for themes:
```markdown
| 主题名称 | 文件 | 主色 | 适用场景 |
|---------|------|------|---------|
| 摸鱼绿 | theme-moyu-green.md | #059669 | 教程/测评 |
| 红白色系 | theme-red-white.md | #dc2626 | 观点/深度 |
```
### Theme Component Library Structure
Each `theme-*.md` contains:
```markdown
## 设计变量
- 主色: #059669
- 正文色: #374151
- 背景色: #ffffff
- 强调色: #10b981
## 文字组件
### 正文段落
<p style="margin:16px 0;line-height:1.8;color:#374151">
<span leaf="">正文内容</span>
</p>
### 小标题 (H3)
<h3 style="font-size:18px;font-weight:600;color:#059669;margin:24px 0 12px">
<span leaf="">小标题</span>
</h3>
## 配方表(按文章类型)
- 教程类: step-label + 代码块 + 编号列表
- 测评类: tool-label + 对比卡片 + 数据框
```
### Common Components
`references/common-components.md` — Cross-theme components:
```markdown
## 代码块(浅色)
<pre style="background:#f9fafb;padding:16px;border-radius:8px;overflow-x:auto">
<code style="font-family:Consolas,Monaco,monospace;font-size:14px;white-space:pre">
<span leaf="">代码内容</span>
</code>
</pre>
## 动图标记
<div style="position:relative;display:inline-block">
<img src="URL" style="max-width:100%">
<span style="position:absolute;top:8px;right:8px;background:rgba(0,0,0,0.6);
color:#fff;padding:4px 8px;border-radius:4px;font-size:12px">
<span leaf="">GIF</span>
</span>
</div>
```
## Troubleshooting
### Issue: Styles disappear after pasting
**Cause**: Used `<div>` or external `<style>` tags (WeChat strips them)
**Fix**: Ensure `validate_gzh_html.py` passes. All styles must be inline, structure must use `<section>`/`<p>`/`<span>`.
```bash
python3 scripts/validate_gzh_html.py output.html
# Look for ERRORs about forbidden tags
```
### Issue: Code blocks render with broken layout
**Cause**: `white-space: pre` without `overflow-x: auto`, or missing monospace font
**Fix**: Component lint will catch this:
```bash
python3 scripts/component_lint.py .
# ERROR: Found white-space:pre without overflow-x
```
Use the corrected code block component from `common-components.md`.
### Issue: Half-width punctuation warnings
**Cause**: Body text contains `,` `.` instead of `,` `。`
**Fix**: Validation shows WARNings:
```bash
python3 scripts/validate_gzh_html.py output.html
# WARN: Half-width comma at line 45
```
The agent should auto-convert during generation. If not, add explicit instruction:
```markdown
User: "Format article.md, ensure all punctuation in body is full-width"
```
### Issue: Keywords not highlighted
**Cause**: Markdown uses italics instead of bold, or too many bold items
**Fix**: Use `**keyword**` for emphasis. Agent auto-selects 1-3 per paragraph. If not triggering:
```markdown
User: "Highlight these keywords with underlines: 核心概念, 实现方式, 质量保证"
```
### Issue: Section numbering wrong
**Cause**: Markdown uses H1 for sections (should be H2)
**Fix**: Use H2 (##) for main sections, H3 (###) for subsections:
```markdown
## 第一章 (becomes 一、第一章)
### 小节 (becomes plain H3, no number)
```
### Issue: Custom theme not available
**Cause**: Theme generation created file but agent didn't index it
**Fix**: Regenerate theme and explicitly reference file:
```markdown
User: "Use the theme from references/theme-custom-tech-purple.md
to format this article"
```
Or update `theme-index.md` to add your custom theme.
## Best Practices
1. **Start with theme selection** — Let agent recommend based on content type before generating
2. **Validate every output** — Run both linters, 0 ERRORs is non-negotiable
3. **Keep component libraries DRY** — Reuse from `common-components.md`, don't duplicate in themes
4. **Test paste before publishing** — Open preview HTML, click "Copy to WeChat", paste in editor, check on mobile
5. **Use theme recipes** — Each theme's "配方表" section defines proven component combinations per article type
6. **Generate themes conservatively** — Built-in 6 themes cover 90% use cases; custom themes add maintenance burden
7. **Lock punctuation** — Body text must use full-width, code blocks must preserve half-width (linter enforces this)
8. **Minimize color usage** — Primary color should appear ≤5 times per article (headings, key underlines), rely on grayscale for body
## Advanced Usage
### Normalizing Non-Markdown Inputs
```markdown
User: "Convert report.docx to WeChat HTML using olive-notes theme"
```
Agent workflow:
1. Reads `references/format-normalize.md`
2. Extracts text from DOCX
3. Normalizes to Markdown (headings, lists, emphasis)
4. Applies theme and generates HTML
Supports: `.docx`, `.pdf`, plain text with ad-hoc formatting.
### Batch Processing with Validation
```bash
# Process all files, fail fast on validation errors
for file in *.md; do
echo "Processing $file..."
# (agent generates HTML via skill)
python3 scripts/validate_gzh_html.py "${file%.md}.html" || exit 1
done
```
### Theme Variants
Create theme variants by editing:
```markdown
User: "Create a dark mode variant of moyu-green called moyu-green-dark"
```
Agent duplicates `theme-moyu-green.md`, inverts colors:
- Background: `#1f2937` → `#ffffff`
- Text: `#374151` → `#f9fafb`
- Primary stays: `#059669`
(Note: WeChat doesn't support true dark mode, but useful for preview screenshots)
## Integration with AI Agents
### Claude Code
```markdown
# In Claude Code chat
User: "Load gzh-design skill and format my-article.md with moyu-green theme"
```
Claude reads `SKILL.md`, loads theme, generates HTML, runs validation.
### Cursor
```markdown
# In Cursor composer
User: "@gzh-design format article.md for WeChat, auto-detect theme"
```
Cursor references skill via `@` mention.
### Codex / Custom Agents
Add skill to agent's system prompt:
```python
system_prompt = f"""
You have access to gzh-design-skill for WeChat formatting.
Skill docs: {skill_md_content}
Theme index: {theme_index_content}
Always validate output with validate_gzh_html.py before delivering.
"""
```
## File Structure Reference
```
gzh-design/
├── SKILL.md # Main workflow (this skill's source)
├── references/
│ ├── theme-index.md # Theme registry (single source)
│ ├── theme-moyu-green.md # Default theme library
│ ├── theme-red-white.md # Editorial theme
│ ├── theme-graphite-minimal.md # Minimal theme
│ ├── theme-zen-whitespace.md # Zen theme
│ ├── theme-moyu-ticket.md # Ticket-style theme
│ ├── theme-olive-notes.md # Notes theme
│ ├── theme-generator.md # Custom theme creation workflow
│ ├── common-components.md # Universal components (code, images)
│ ├── format-normalize.md # DOCX/PDF → Markdown conversion
│ └── eval-cases.md # Test cases + quality loop
├── scripts/
│ ├── validate_gzh_html.py # Output validation (ERROR/WARN)
│ └── component_lint.py # Source linting (anti-patterns)
├── assets/
│ ├── sample-article.md # Demo input
│ └── theme-previews/ # Generated theme previews
└── docs/
├── all-themes.md # Full theme screenshots
└── gallery/
└── index.html # Interactive theme browser
```
## Version & Compatibility
- **HTML Output**: Tested on WeChat Official Account editor (微信公众平台) as of 2026-07
- **Python Scripts**: Require Python 3.7+
- **Agent Compatibility**: Claude Code, Cursor, Codex, any agent that can read Markdown docs and run shell commands
## License
AGPL-3.0 — See [LICENSE](LICENSE) file.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for:
- Adding new themes
- Improving component libraries
- Reporting validation edge cases
- Submitting test articles
## Links
- **GitHub**: https://github.com/isjiamu/gzh-design-skill
- **Theme Previews**: `docs/gallery/index.html` (open in browser)
- **Validation Docs**: `references/eval-cases.md`
- **Example Output**: `docs/all-themes.md`
---
**Quick Start Checklist**:
- [ ] Install skill: `npx skills add https://github.com/isjiamu/gzh-design-skill`
- [ ] Verify files: `ls ~/.claude/skills/gzh-design/references/`
- [ ] Format test article: "Format assets/sample-article.md using moyu-green"
- [ ] Validate output: `python3 scripts/validate_gzh_html.py output.html`
- [ ] Open preview: `open output_preview.html`
- [ ] Paste in WeChat editor and check mobile preview
You're ready to ship production-quality WeChat articles. 🚀
Attribution
Related skills
View all in tools →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.