---
name: swing-wechat-html
description: 将 Markdown 文章转换为微信公众号兼容的内联样式 HTML，抟微科技 Tiny Wings 品牌排版风格。替代秀米(xiumi.us)手动排版。支持技术干货、行业洞察、企业文化、营销推广等多种主题配色。包含文章批量抓取和排版风格分析能力，可从已发布文章中提取真实配色并生成排版模板。当需要将文章内容排版为微信公众号格式、生成微信兼容 HTML、进行公众号排版、抓取公众号文章、分析排版风格时使用。
---

# 微信公众号排版格式 Skill

## 概述

本 Skill 包含三个核心能力：

1. **排版转换**（`md_to_wechat.py`）：将 Markdown 转为微信公众号内联样式 HTML，替代秀米手动排版
2. **文章抓取**（`fetch_articles.py`）：批量获取公众号已发布文章，支持 API、URL、搜狗搜索三种方式
3. **风格分析**（`analyze_styles.py`）：分析已发布文章的 CSS 样式，自动提取品牌配色并生成排版模板

排版风格基于对「抟微科技 Tiny Wings」公众号已发布文章的深度分析，配色方案从 5 篇参考文章中提取（2026-08-10 更新，第108-112篇）：
- 第112篇：一纸客诉查不出源头：MOM改造笔记
- 第110篇：困在"按图施工"里的管道预制
- 第109篇：MES实施：这五大关键点
- 第108篇：SFC逻辑深度全解④

本 Skill 将 Markdown 格式的文章转换为微信公众号编辑器兼容的内联样式 HTML，完全替代秀米 (xiumi.us) 手动排版流程。

排版风格基于对「抟微科技 Tiny Wings」公众号已发布文章的深度分析，包含：
- 品牌专属头部元素（文章序号、作者署名）
- PART 分节标题样式（英文编号+中文标题）
- 大号数字序号（01/02/03 风格）
- 关键词加粗高亮
- 品牌标准尾部（·END·、CTA、联系信息）
- 4 种主题配色方案

## 使用场景

- 将写好的 Markdown 文章一键转为微信公众号排版 HTML
- 批量生成多篇文章排版
- 配合 `swing-wechat-markdown`（内容生成）和 `swing-wechat-publish`（发布）使用

## 使用方法

### 基础用法

```bash
# 生成完整 HTML 文件（含预览页面）
python scripts/md_to_wechat.py article.md -o article.html

# 生成 HTML 片段（直接粘贴到微信编辑器）
python scripts/md_to_wechat.py article.md --fragment -o article_fragment.html

# 复制到剪贴板
python scripts/md_to_wechat.py article.md --clipboard --fragment
```

### 主题选择

```bash
# 技术干货类（蓝色系，默认）
python scripts/md_to_wechat.py article.md --theme tech

# 行业洞察类（深蓝系）
python scripts/md_to_wechat.py article.md --theme industry

# 企业文化类（暖棕系）
python scripts/md_to_wechat.py article.md --theme culture

# 营销推广类（红色系）
python scripts/md_to_wechat.py article.md --theme marketing
```

### 在 WorkBuddy 中使用

直接告诉 AI：
> "帮我把这篇 Markdown 文章排版成微信公众号格式"
> "用技术干货主题排版这篇文章"

AI 会自动调用本 Skill 的脚本完成转换。

## Markdown 输入规范

文章应遵循以下 Markdown 结构以获得最佳排版效果：

```markdown
# 文章主标题

这是抟微科技陪伴你的第113篇文章

作者 ▌抟微科技

## 前言

正文段落内容...

## PART.01 旧系统的"六道坎"

### 01 系统僵化、操作繁琐

正文内容...

### 02 追溯链条断裂

正文内容...

## 结语

总结段落...

·END·

如果您所在的企业尚未完成数字化转型的征程，我们诚挚地邀请您联系抟微科技。抟微科技以MES系统为核心，为企业提供功能匹配、性价比高的整体数字化解决方案，以"贴身定制方案，终生伴随服务"为特点，解决工业企业数字化升级过程中高费用、低效果、难抉择、不落地的实际问题，真诚、扎实的与客户一起在实现数字化的道路上共同发展成长。

地址: 西安市高新区汇鑫中心C座
电话: 133-5918-6216 / 029-81145921
网址: www.tiny-wings.com
邮箱: TinyWings@tiny-wings.com
```

## 支持的 Markdown 元素

| 元素 | Markdown 语法 | 排版效果 |
|------|-------------|---------|
| 主标题 | `# 标题` | 居中加粗大字 |
| 分节标题 | `## PART.01 标题` | 品牌色背景标签 |
| 子标题 | `### 标题` | 左侧圆点+品牌色 |
| 段落 | 普通文本 | 15px 行高1.8 |
| 加粗 | `**文字**` | 深色加粗 |
| 引用 | `> 文字` | 左边框+浅背景 |
| 图片 | `![描述](url)` | 圆角+阴影 |
| 分隔线 | `---` | 装饰性分隔符 |
| 列表 | `- 项目` / `1. 项目` | 标准列表 |
| 链接 | `[文字](url)` | 品牌色下划线 |
| 代码 | `` `代码` `` | 浅背景+圆角 |
| 文章序号 | 特定格式 | 灰色居中小字 |
| 作者行 | 特定格式 | 品牌色居中 |
| END标记 | `·END·` | 圆角边框居中 |
| CTA段 | 特定关键词触发 | 浅背景框 |
| 联系信息 | 地址/电话/网址/邮箱 | 标签+值格式 |

## 主题配色

> tech 主题配色已通过分析实际发布文章更新（2026-08-10），其余主题为预设配色，可在获取更多文章后用 `analyze_styles.py` 自动更新。

| 主题 | 适用文章类型 | 主色 | 辅色 | 来源 |
|------|------------|------|------|------|
| tech | 技术干货 | #386AC3 品牌蓝 | #0063C0 深蓝 | 文章分析 |
| industry | 行业洞察 | #1A5276 深青 | #2E86C1 中青 | 预设 |
| culture | 企业文化 | #8B4513 暖棕 | #CD853F 浅棕 | 预设 |
| marketing | 营销推广 | #C0392B 砖红 | #E74C3C 亮红 | 预设 |
| default | 默认 | #333333 深灰 | #666666 中灰 | 预设 |

## 输出说明

- **完整 HTML** (`-o output.html`)：包含 `<html>` 包装，可在浏览器中预览排版效果
- **HTML 片段** (`--fragment`)：仅包含 `<div>`/`<p>` 等内容标签，所有 CSS 内联，可直接粘贴到微信公众号编辑器
- **剪贴板** (`--clipboard`)：将结果直接复制到系统剪贴板

---

## 文章抓取功能 (fetch_articles.py)

### 三种获取方式

#### 方式一：通过微信公众号 API 批量获取（推荐，需配置凭证）

获取公众号所有已发布文章，包括 HTML 内容和元数据。

```bash
python scripts/fetch_articles.py --api --output ./articles/
python scripts/fetch_articles.py --api --output ./articles/ --max 50
```

需要配置 `~/.wechat/config.json`（包含 app_id 和 app_secret），并将 IP 加入白名单。

#### 方式二：通过文章 URL 获取

直接传入一个或多个微信文章链接。

```bash
python scripts/fetch_articles.py \
  --urls "https://mp.weixin.qq.com/s/xxx" "https://mp.weixin.qq.com/s/yyy" \
  --output ./articles/
```

#### 方式三：通过 URL 文件批量获取

将文章 URL 写入文件（每行一个），批量抓取。

```bash
python scripts/fetch_articles.py --url-file urls.txt --output ./articles/
```

### 自动分类

脚本会根据文章标题和内容自动分类：
- **tech**：技术干货（含 MES、数字化、系统等关键词）
- **industry**：行业洞察（含趋势、行业分析等关键词）
- **exhibition**：展会资讯（含展会、参展、工博会等关键词）
- **culture**：企业文化（含开工、节日、祝福等关键词）
- **marketing**：营销推广（含神器、种草等关键词）

### 输出文件

```
articles/
├── 001_tech.html              # 文章 HTML 内容
├── 001_tech_meta.json         # 文章元数据（标题、作者、日期、URL）
├── 002_tech.html
├── 002_tech_meta.json
└── style_profile.json         # 自动生成的风格分析报告
```

---

## 排版风格分析功能 (analyze_styles.py)

### 分析已抓取的文章并生成模板

```bash
python scripts/analyze_styles.py ./articles/ --output ./templates/
python scripts/analyze_styles.py ./articles/ --output ./templates/ --verbose
```

### 分析能力

| 分析维度 | 说明 |
|---------|------|
| 文字颜色 | 提取所有 inline style 中的 color 属性，支持 hex 和 rgb() 格式 |
| 背景颜色 | 提取 background/background-color 属性 |
| 边框颜色 | 提取 border 属性中的颜色值 |
| 字号分布 | 统计各字号使用频率（14px、15px、18px 等） |
| 行高分布 | 统计 line-height 使用频率 |
| 字间距 | 统计 letter-spacing 使用频率 |
| 圆角值 | 统计 border-radius 使用频率 |
| 结构元素 | 检测文章序号、作者行、END标记、CTA、联系信息等固定元素 |
| 分节模式 | 检测 PART 分节、数字序号、中文序号等分节方式 |

### 自动生成模板

分析完成后自动生成：

1. **`themes.json`**：按文章类型分类的主题配色 JSON，可直接用于 `md_to_wechat.py`
2. **`analyzed_themes.py`**：Python 格式的主题配置文件
3. **`style_profile.json`**：完整的风格分析报告

### 从分析结果更新主题

```bash
# 1. 抓取文章
python scripts/fetch_articles.py --api --output ./articles/

# 2. 分析并生成模板
python scripts/analyze_styles.py ./articles/ --output ./templates/

# 3. 查看生成的模板
cat templates/themes.json

# 4. 将分析结果更新到 md_to_wechat.py 的 THEMES 字典
# （手动复制或让 AI 自动更新）

# 5. 用更新后的主题测试排版
python scripts/md_to_wechat.py article.md --theme tech
```

### 实际分析结果（2026-08-10）

对两篇已发布文章的分析结果：

| 维度 | 分析结果 |
|------|---------|
| 品牌主色 | #386AC3（蓝色，出现 6 次） |
| 品牌深色 | #0063C0（深蓝，出现 6 次） |
| 品牌浅色 | #5F9CEF（浅蓝，出现 2 次） |
| 背景浅色 | #CDE2FB（极浅蓝，出现 8 次） |
| 背景中色 | #9DC1F3（中浅蓝，出现 12 次） |
| 正文颜色 | #3E3E3E（深灰，出现 4 次） |
| 标题颜色 | #144A74（深蓝，出现 3 次） |
| 正文字号 | 14px / 15px |
| 标题字号 | 18px |
| 文章序号 | 100% 包含 |
| 作者署名 | 100% 包含 |
| END标记 | 100% 包含 |
| CTA段 | 100% 包含 |
| 联系信息 | 100% 包含 |
| PART分节 | 50% 使用 |
| 前言/结语 | 50% 使用 |

> 两篇文章均为技术干货类型，排版风格高度一致。建议后续获取更多文章（特别是展会、企业文化类）以生成差异化模板。

---

## baoyu-skills 风格候选集成（v3 新增）

### 概述

本 Skill 集成 baoyu-skills 的 23 种风格 + 4 种调色板，在排版阶段为用户提供 2+ 候选方案。

### 风格候选池（科技感筛选）

| 分类 | 风格 | 说明 | 推荐度 |
|------|------|------|--------|
| ✅ 主推 | blueprint | 技术蓝图风，网格底、蓝白配色 | ★★★★★ |
| ✅ 主推 | vector-illustration | 干净扁平矢量，大胆几何 | ★★★★★ |
| ✅ 主推 | scientific | 学术精准图表 | ★★★★ |
| ✅ 主推 | editorial | 杂志风格信息图 | ★★★★ |
| ✅ 主推 | ink-notes | 纯白底黑墨 + 语义色 | ★★★★ |
| ✅ 可选 | elegant | 精致商务风 | ★★★ |
| ✅ 可选 | minimal | 超简洁禅意 | ★★★ |
| ✅ 可选 | flat | 现代大胆几何 | ★★★ |
| ✅ 可选 | intuition-machine | 技术简报 + 旧纸张 | ★★★ |
| ✅ 可选 | vintage | 旧羊皮纸历史感 | ★★ |
| ❌ 排除 | sketch-notes | 纯手绘暖色笔记 | 不适合科技公司 |
| ❌ 排除 | chalkboard | 黑板粉笔风 | 不适合科技公司 |
| ❌ 排除 | playful | 活泼粉彩涂鸦 | 不适合科技公司 |
| ❌ 排除 | flat-doodle | 可爱扁平涂鸦 | 不适合科技公司 |
| ❌ 排除 | fantasy-animation | 吉卜力/迪士尼风 | 不适合科技公司 |
| ❌ 排除 | pixel-art | 复古像素风 | 不适合科技公司 |
| ❌ 排除 | watercolor | 水彩画 | 不适合科技公司 |
| ❌ 排除 | warm | 温暖友好风 | 仅企业文化类可选 |

### 内容信号 → 类型 → 风格映射表

| 内容信号 | 逻辑关系 | 推荐类型 | 推荐风格（优先级排序） |
|---------|---------|---------|---------------------|
| 流程/步骤/工作流/教程 | 线性流程 | flowchart | ① blueprint ② vector-illustration ③ ink-notes |
| 架构/模型/框架/原理 | 层级结构 | framework | ① blueprint ② vector-illustration ③ scientific |
| 对比/优劣/前后/方案选型 | 并列对比 | comparison | ① vector-illustration ② ink-notes ③ editorial |
| 数据/指标/统计/报告 | 数据展示 | infographic | ① blueprint ② vector-illustration ③ editorial |
| 时间线/演进/历程/阶段 | 时序变化 | timeline | ① editorial ② vector-illustration ③ elegant |
| 概念/知识/教程/入门 | 概念图解 | infographic | ① vector-illustration ② blueprint ③ ink-notes |
| 业务/战略/企业/管理 | 架构关系 | framework | ① elegant ② vector-illustration ③ blueprint |
| 复杂系统/多模块/集成 | 网状关联 | framework | ① blueprint ② scientific ③ vector-illustration |
| 闭环/循环/持续改进 | 循环流程 | flowchart | ① blueprint ② vector-illustration |
| 前后对比/转型/升级 | 变化对比 | comparison | ① ink-notes ② vector-illustration |

### 候选方案生成逻辑

```
1. 分析章节内容 → 识别内容信号
2. 查映射表 → 获取推荐类型 + 风格优先级列表
3. 查 Type × Style 兼容性矩阵 → 过滤不兼容组合
4. 生成 2-3 个候选方案（类型+风格+配色组合）
5. 如有 2+ 合理方案 → 让用户选
6. 如只有 1 个方案 → 直接推荐，简述理由
7. 用户说"按默认" → 执行优先级最高的
```

### 与 swing-wechat-layout 的集成

排版时自动调用 `swing-wechat-layout` 的固定模板：
- 文章编号、作者署名 → 自动插入
- END 标记 → 自动插入
- 联系我们区块 → 自动套用标准模板（配色跟随主色）
- 章节大标题 → 使用用户在门控3选定的样式
- 小标题 → 使用用户在门控3选定的样式

### 与 baoyu-markdown-to-html 的关系

| 维度 | swing-wechat-html (Python) | baoyu-markdown-to-html (TypeScript) |
|------|------------------------------|-------------------------------------|
| 运行环境 | Python 3.10+（纯标准库） | Node.js 18+ + tsx |
| 主题 | 6 套品牌主题（基于真实文章分析） | 4 套通用主题（default/grace/simple/modern） |
| 配色 | 品牌真实配色（#0455A2/#375EB5/#4D9AF3/#F9A912） | 13 种预设色 + 自定义 hex |
| 品牌固定结构 | ✅ 内置（文章编号/作者/END/联系我们） | ❌ 无品牌固定元素 |
| 图片占位符 | 无 | MDTOHTMLIMGPH 占位符 |
| 推荐场景 | 品牌排版（主选） | 风格对比（备选） |

**在 v3 工作流中**：默认使用 swing-wechat-html（品牌定制），如用户在 Phase 3 选择 baoyu 排版风格，则使用 baoyu-markdown-to-html。

选择品牌默认排版时不需要安装任何 Baoyu Skill。只有用户明确选择 Baoyu HTML 主题时，才由 `swing-wechat-env-config` 请求 `layout` 能力：已安装 `baoyu-markdown-to-html` 时直接调用，缺失时只补装该 Skill，不安装其他 Baoyu Skill。

---

## 与其他 Skill 配合

1. **swing-wechat-env-config**：先检查环境是否就绪
2. **swing-wechat-markdown**：生成文章 Markdown 内容
3. **swing-wechat-layout**：提供品牌固定结构模板
4. **swing-wechat-html**（本 Skill）：将 Markdown 转为排版 HTML
5. **swing-wechat-publish**：将 HTML 发布到微信公众号

完整流程请参考 `swing-wechat-workflow` v3 编排 Skill。

## 搜索公众号文章

除了本 Skill 的 API 和 URL 方式，还可以使用 `wechat-article-search` Skill（基于搜狗微信搜索）来搜索公众号文章：

```bash
# 搜索特定公众号
python scripts/sogou_search.py --type gzh "抟微科技Tiny Wings"

# 搜索关键词相关文章
python scripts/sogou_search.py "MES系统" --days 30

# 获取文章原文
python scripts/sogou_search.py "抟微科技" --fetch-content --limit 10
```

## 技术说明

- 所有 CSS 样式使用内联方式（`style="..."`），确保微信公众号编辑器兼容
- 不依赖外部 CSS 文件或 JavaScript
- 不使用微信公众号不支持的 CSS 属性（如 `position: fixed`、`animation` 等）
- 图片使用 `max-width: 100%` 确保移动端适配
- 三个脚本均纯 Python 标准库实现，无第三方依赖
- 支持 hex (#xxxxxx) 和 rgb()/rgba() 两种颜色格式解析
