# Guanrentang Writer

> 观仁堂中医公众号文章生成器。写文章 + 自动配图一体化。当用户说"写文章"、"帮我写一篇"、"公众号文章"时自动触发。支持随机选题和固定主题（古法熏蒸推广、放假通知），生成符合观仁堂风格的中医养生文章，并自动配图。

- Skill: `leoyeai-openclaw-master-skills/guanrentang-writer` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add leoyeai-openclaw-master-skills/guanrentang-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/leoyeai-openclaw-master-skills/guanrentang-writer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: LeoYeAI (https://skillmd.com/u/leoyeai-openclaw-master-skills)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/leoyeai-openclaw-master-skills/guanrentang-writer

---


# 观仁堂中医公众号文章生成器

**一站式完成**：选题 → 写文章 → 配图 → 输出成品

## 配置

| 配置项 | 默认值 | 说明 |
|-------|--------|------|
| `output_dir` | `{当前工作目录}/articles` | 文章输出目录 |
| `api_key` | 见下方优先级 | 智谱 API Key |
| `skill_dir` | `~/.claude/skills/guanrentang-writer` | Skill 安装目录 |

### 输出目录设置

**方式一：使用默认路径**
- 不指定时，自动输出到 `{当前工作目录}/articles/`

**方式二：用户指定路径**
- 对话中说 "输出到 ~/Desktop/my-article" 或 "保存到 ./output"
- AI 会使用用户指定的路径

### API Key 配置优先级

1. 环境变量 `ZHIPU_API_KEY`
2. `{skill_dir}/.env` 文件中的 `ZHIPU_API_KEY`

### 首次使用配置

**步骤 1**：获取智谱 API Key
- 访问 [智谱开放平台](https://open.bigmodel.cn/) 注册并获取 API Key

**步骤 2**：选择配置方式（二选一）

| 方式 | 命令 | 说明 |
|-----|------|------|
| **方式一：环境变量** | 在 `~/.zshrc` 或 `~/.bashrc` 中添加 `export ZHIPU_API_KEY=your_key` | 全局可用，适合多个项目 |
| **方式二：.env 文件** | 在 skill 目录下创建 `.env` 文件，内容为 `ZHIPU_API_KEY=your_key` | 仅此 skill 使用，已加入 .gitignore |

> **执行前检查**：如果未配置 API Key，应提示用户选择上述方式之一配置后再继续

## 固定素材

公众号文章开头和结尾需要固定图片（存放在 `{skill_dir}/assets/` 目录）：

| 文件名 | 用途 | 说明 |
|-------|------|------|
| `header-decorative.jpg` | 开头装饰图 | 文章开头装饰性图片 |
| `gufa-xunzheng-cover.jpg` | 古法熏蒸封面 | 古法熏蒸推广文章专用封面图 |
| `holiday-notice-cover.jpg` | 放假通知封面 | 放假通知文章专用封面图 |
| `ending-thanks.jpg` | 感谢图 | "您点的每个赞，我都认真当成了喜欢" + 中国传统元素 |
| `ending-divider.jpg` | 分隔装饰图 | 感谢图后的装饰性分隔图 |
| `ending-follow.png` | 关注引导图 | "关注我们" 引导图 |
| `ending-qrcode.jpg` | 二维码图 | "微信扫一扫 关注该公众号" + 公众号二维码 |

> **首次使用**：需要将这些图片放入 `{skill_dir}/assets/` 目录

## 公众号图片尺寸规范

| 位置 | 推荐尺寸 | 比例 | GLM-Image size | 备注 |
|------|---------|------|----------------|------|
| 正文配图 | 1080×810 px | 4:3 | `1472x1088` | AI 生成 |
| 食疗图 | 1080×1080 px | 1:1 | `1280x1280` | AI 生成 |
| 开头装饰图 | - | - | - | **固定素材** |
| 结尾系列图 | - | - | - | **固定素材**（4张） |

> **注意**：GLM-Image 尺寸需为 32 的整数倍，范围 512-2048

## 使用方式

| 用户说 | 效果 |
|-------|------|
| "帮我写一篇文章" | 自动选题，输出到默认目录 |
| "写个春季养生的" | 指定主题，输出到默认目录 |
| "随机写一篇" | 随机选题，输出到默认目录 |
| "古法熏蒸" / "写个熏蒸广告" | 固定主题：古法熏蒸推广文章 |
| "放假通知" / "写个放假通知" | 固定主题：放假通知（仅正文图片，用户提供） |
| "输出到 ~/Desktop" | 使用指定输出目录 |
| "保存到 ./my-articles" | 使用相对路径 |
| "只写文章" | 写文章但不配图（草稿模式） |

---

## 执行流程

### Step 1: 选题

1. 用户说"古法熏蒸"/"熏蒸广告" → **固定主题：古法熏蒸推广**
2. 用户说"放假通知"/"假期通知" → **固定主题：放假通知**
3. 用户指定其他主题 → 使用指定主题
4. 用户未指定 → 根据当前月份/节气自动选择（参考 STYLE.md 主题库）
5. 用户说"随机" → 从主题库随机选

**生成文件名**：使用日期前缀 + 文章标题（中文）
- 格式：`YYYY-MM-DD-文章标题.md`
- 例：`2026-03-22-清明养生：养肝明目，踏青防过敏.md`
- 例：`2026-03-19-回南天祛湿大作战.md`
- 图片目录：`images/文章标题/`（不带日期前缀）

### Step 2: 创建输出目录

```bash
# 创建文章和图片目录
mkdir -p "${OUTPUT_DIR}/images/${ARTICLE_TITLE}/"

# 复制固定素材到输出目录
cp -r "${SKILL_DIR}/assets" "${OUTPUT_DIR}/"
```

> **注意**：`SKILL_DIR` 默认为 `~/.claude/skills/guanrentang-writer`

### Step 3: 写文章 + 智能标记配图位置

按照 `STYLE.md` 中的风格撰写文章：
- 字数：1000-1500 字
- 结构：开头 → 原理 → 分点实操 → 注意事项 → 结尾
- 必须包含：中医理论 + 食疗方 + 穴位/注意事项
- 固定结尾语："您点的每个赞，我都认真当成了喜欢"

**智能配图规则**（根据文章内容自动判断）：

| 配图位置 | 触发条件 | 处理方式 |
|---------|---------|----------|
| **开头装饰** | 必有 | **固定素材**：header-decorative.jpg |
| **原理配图** | 有"中医认为"/理论段落 | AI 生成：根据理论内容（如"肝主疏泄"→肝脏示意） |
| **实操配图** | 每个实操要点后 | AI 生成：根据要点内容（穴位→穴位图，食疗→食材图） |
| **食疗特写** | 有具体食疗方 | AI 生成：食疗方名称 + 主要食材 |
| **结尾图** | 必有 | **固定素材**：使用已复制的 `assets/` 目录图片 |

**配图数量控制**：
- 1000 字文章：3-4 张 AI 图 + 1 张开头 + 4 张结尾 = 8-9 张
- 1200 字文章：4-5 张 AI 图 + 1 张开头 + 4 张结尾 = 9-10 张
- 1500 字文章：5-6 张 AI 图 + 1 张开头 + 4 张结尾 = 10-11 张

**文章中标记图片位置**（使用 .jpg/.png 格式）：

```markdown
![开头装饰](./assets/header-decorative.jpg)

## 正文开头
...

![配图：{图片内容描述}](./images/{文章标题}/content-1.jpg)

## 理论原理
...

![配图：{图片内容描述}](./images/{文章标题}/content-2.jpg)

## 食疗方推荐
...

![食疗：{食疗方名称}](./images/{文章标题}/recipe.jpg)

您点的每个赞，我都认真当成了喜欢

![结尾：感谢](./assets/ending-thanks.jpg)

![结尾：分隔](./assets/ending-divider.jpg)

![结尾：关注](./assets/ending-follow.png)

![结尾：二维码](./assets/ending-qrcode.jpg)
```

> **重要**：
> - 内容配图（配图、食疗）使用 AI 生成，alt 文本描述图片内容用于生成 Prompt
> - 开头和结尾图使用固定素材，路径为 `./assets/`（相对于文章目录）
> - 图片不需要 `<center>` 标签，在微信编辑器中手动居中即可

### Step 4: 保存文章草稿

保存文章到 `${OUTPUT_DIR}/YYYY-MM-DD-{文章标题}.md`

- 文件名格式：日期前缀 + 文章标题（中文）
- 图片目录：`images/{文章标题}/`（不带日期前缀）

### Step 5: 自动生成配图

**执行时机**：文章写完并保存后，立即开始配图

**自动化流程**：

1. **解析文章**：提取所有 `![类型：描述](路径)` 格式的图片标记
2. **生成 Prompt**：根据图片类型和描述自动生成 Prompt
3. **调用 API**：依次生成每张图片
4. **下载保存**：下载到对应路径
5. **更新进度**：每完成一张报告进度

**Prompt 自动生成规则**：

```
图片标记格式：
- 开头装饰：![开头装饰](路径) → 跳过（固定素材）
- 配图：![配图：描述](路径) → 使用内容模板 + 描述内容
- 食疗：![食疗：名称](路径) → 使用食疗模板 + 食疗方名称
- 结尾：![结尾：感谢/分隔/关注/二维码](路径) → 跳过（已复制固定素材）

类型识别：
- 开头装饰 → 跳过（使用 ./assets/header-decorative.jpg）
- 配图 → AI 生成
- 食疗 → AI 生成
- 结尾：感谢 → 跳过（使用 ./assets/ending-thanks.jpg）
- 结尾：分隔 → 跳过（使用 ./assets/ending-divider.jpg）
- 结尾：关注 → 跳过（使用 ./assets/ending-follow.png）
- 结尾：二维码 → 跳过（使用 ./assets/ending-qrcode.jpg）
```

**API 配置**：

| 配置项 | 值 |
|-------|-----|
| Endpoint | `https://open.bigmodel.cn/api/paas/v4/images/generations` |
| Model | `glm-image` |
| API Key | 优先级：环境变量 `ZHIPU_API_KEY` > `{skill_dir}/.env` |

**Prompt 模板**：

| 图片类型 | 尺寸 | Prompt 模板 |
|---------|------|------------|
| 配图 | `1472x1088` | `中医养生插画，{描述内容}，新中式水墨插画风格，中国传统色（黛青、朱砂、米白），淡雅晕染效果，留白构图，温暖治愈氛围，适合微信公众号配图` |
| 食疗 | `1280x1280` | `中式养生美食摄影，{食疗方名称}，陶瓷或木质器皿盛放，点缀中药材装饰，清新淡雅，养生氛围，暖色调，高清细节` |

**生成命令**（curl）：

```bash
# 1. 调用 API 生成图片
RESPONSE=$(curl -s -X POST "https://open.bigmodel.cn/api/paas/v4/images/generations" \
  -H "Authorization: Bearer $ZHIPU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-image",
    "prompt": "中医养生插画，春季养肝疏肝示意图，新中式水墨插画风格，中国传统色（黛青、朱砂、米白），淡雅晕染效果，留白构图，温暖治愈氛围，适合微信公众号配图",
    "size": "1472x1088"
  }')

# 2. 提取图片 URL
IMAGE_URL=$(echo "$RESPONSE" | jq -r '.data[0].url')

# 3. 下载图片到本地
curl -s -o "${OUTPUT_DIR}/images/${ARTICLE_TITLE}/content-1.jpg" "$IMAGE_URL"
```

**错误处理**：

| 错误类型 | 处理方式 |
|---------|---------|
| API 429 限流 | 等待 5 秒后重试，最多 2 次 |
| API 其他错误 | 记录错误，跳过此图，继续下一张 |
| 下载失败 | 重试 1 次，仍失败则跳过 |

**间隔要求**：每张图片之间间隔 2 秒，避免触发限流

**进度报告**：

```
🎨 配图进度：1/5 开头装饰（固定素材）✓
🎨 配图进度：2/5 肝脏示意 ✓
🎨 配图进度：3/5 枸杞菊花茶 ✓
🎨 配图进度：4/5 太冲穴 ✓
🎨 配图进度：5/5 结尾图（固定素材）✓
```

### Step 6: 输出结果

```
✅ 文章已完成！

📄 文章: ${OUTPUT_DIR}/{文章标题}.md
🖼️ 配图: X/Y 张成功
📁 图片: ${OUTPUT_DIR}/images/{文章标题}/
📁 素材: ${OUTPUT_DIR}/assets/

📊 统计: XXX 字，X 个标题
```

---

## 完整执行示例

```bash
# 1. 设置变量
SKILL_DIR="$HOME/.claude/skills/guanrentang-writer"
OUTPUT_DIR="${OUTPUT_DIR:-./articles}"
ARTICLE_TITLE="春季养肝全攻略"

# 2. 读取 API Key（优先级：环境变量 > skill 目录 .env）
if [ -z "$ZHIPU_API_KEY" ] && [ -f "$SKILL_DIR/.env" ]; then
  source "$SKILL_DIR/.env"
fi

# 3. 检查 API Key 是否配置
if [ -z "$ZHIPU_API_KEY" ]; then
  echo "❌ 未配置 ZHIPU_API_KEY"
  echo "请在 $SKILL_DIR/.env 中配置："
  echo "  ZHIPU_API_KEY=your_api_key_here"
  exit 1
fi

# 4. 创建目录
mkdir -p "${OUTPUT_DIR}/images/${ARTICLE_TITLE}/"

# 5. 复制固定素材到输出目录
cp -r "$SKILL_DIR/assets" "${OUTPUT_DIR}/"

# 6. 生成第一张配图（示例：春季养肝示意图）
curl -s -X POST "https://open.bigmodel.cn/api/paas/v4/images/generations" \
  -H "Authorization: Bearer $ZHIPU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"glm-image","prompt":"中医养生插画，春季养肝疏肝示意图，肝脏与人体气机运行，新中式水墨插画风格，中国传统色（黛青、朱砂、米白），淡雅晕染效果，留白构图，温暖治愈氛围","size":"1472x1088"}' \
  | jq -r '.data[0].url' \
  | xargs -I {} curl -s -o "${OUTPUT_DIR}/images/${ARTICLE_TITLE}/content-1.jpg" "{}"

# 7. 等待 2 秒
sleep 2

# 8. 生成下一张图...
```

---

## 注意事项

1. 每张图片生成约需 10-20 秒，整篇文章配图约需 1-2 分钟
2. 如果配图失败，仍然输出文章，但提示"配图部分失败"
3. 文件名和目录名可使用中文，但建议避免特殊字符
4. 图片不需要 `<center>` 标签，复制到微信编辑器后手动居中即可

---

## 文件结构

```
{skill_dir}/
├── SKILL.md          # 本文件（执行指南）
├── STYLE.md          # 写作风格指南 + 主题库
├── .env              # API Key（不提交）
├── .gitignore
└── assets/           # 固定素材目录
    ├── header-decorative.jpg    # 开头装饰图
    ├── gufa-xunzheng-cover.jpg  # 古法熏蒸专用封面
    ├── holiday-notice-cover.jpg # 放假通知专用封面
    ├── ending-thanks.jpg        # 感谢图（普通文章用）
    ├── ending-divider.jpg       # 分隔装饰图
    ├── ending-follow.png        # 关注引导图
    └── ending-qrcode.jpg        # 二维码图

{output_dir}/
├── {文章标题}.md      # 生成的文章
├── images/
│   └── {文章标题}/   # 文章配图（AI 生成）
│       ├── content-1.jpg
│       ├── content-2.jpg
│       └── ...
└── assets/           # 复制的固定素材
    ├── header-decorative.jpg
    ├── gufa-xunzheng-cover.jpg
    ├── holiday-notice-cover.jpg
    ├── ending-thanks.jpg
    ├── ending-divider.jpg
    ├── ending-follow.png
    └── ending-qrcode.jpg
```

---

## 固定主题文章：古法熏蒸

当用户说"古法熏蒸"、"熏蒸广告"、"写个熏蒸推广"时，触发此固定主题。

### 文章特点

| 项目 | 说明 |
|------|------|
| **用途** | 医馆古法熏蒸服务推广 |
| **字数** | 700-900 字 |
| **风格** | 简洁明了，突出好处，软性推广 |
| **配图** | 2-3 张 AI 生成 + 固定封面图 + 结尾图 |

### 文章结构

```
1. 开头（痛点切入：春困/冬寒/夏湿等季节痛点）
2. 中医原理解释（简短，1-2段）
3. 熏蒸好处（3-4点，每点1-2句）
4. 注意事项（温度、时间、禁忌人群）
5. 总结 + 推广语
```

> **注意**：古法熏蒸文章**不需要**"您点的每个赞，我都认真当成了喜欢"这句文案，结尾直接用推广语收尾即可。

### 必须包含的内容

1. **季节性切入点**：
   - 春季：春困、湿重、阳气升发
   - 夏季：湿热、空调病、排毒
   - 秋季：秋燥、收敛、养肺
   - 冬季：寒气、手脚冰凉、驱寒

2. **熏蒸好处**（选3-4点）：
   - 祛湿排寒
   - 疏通气血
   - 舒缓放松
   - 改善睡眠
   - 养护皮肤

3. **注意事项**：
   - 温度：40-45℃
   - 时间：15-20分钟
   - 频率：每周1-2次
   - 禁忌人群：高血压、心脏病、孕妇、皮肤破损者

4. **固定推广语**（结尾必加）：
   ```
   本医馆现新开展古法熏蒸服务，欢迎光临体验！
   ```

### 配图规则

| 配图位置 | 处理方式 |
|---------|----------|
| 开头装饰 | **固定素材**：header-decorative.jpg |
| 专用封面 | **固定素材**：gufa-xunzheng-cover.jpg |
| 原理配图 | AI 生成：熏蒸场景/气血循环示意 |
| 注意事项 | AI 生成：熏蒸后护理场景 |
| 结尾图 | **固定素材**：4张（感谢图、分隔图、关注图、二维码） |

### 配图标记示例

```markdown
![开头装饰](./assets/header-decorative.jpg)

## 正文...

![古法熏蒸封面](./assets/gufa-xunzheng-cover.jpg)

## 熏蒸原理
...

![配图：熏蒸场景](./images/{文章标题}/content-1.jpg)

## 注意事项
...

![配图：熏蒸后护理](./images/{文章标题}/content-2.jpg)

本医馆现新开展古法熏蒸服务，欢迎光临体验！

![结尾：感谢](./assets/ending-thanks.jpg)

![结尾：分隔](./assets/ending-divider.jpg)

![结尾：关注](./assets/ending-follow.png)

![结尾：二维码](./assets/ending-qrcode.jpg)
```

### 参考文章

- https://mp.weixin.qq.com/s/rVBzz5YQbY-yr4rt-vmCtQ（冬季版）
- https://mp.weixin.qq.com/s/m0sYk6cnRsro0yWqWPSCbg（春季版）

---

## 固定主题文章：放假通知

当用户说"放假通知"、"写个放假通知"、"假期通知"时，触发此固定主题。

### 文章特点

| 项目 | 说明 |
|------|------|
| **用途** | 医馆放假公告 |
| **字数** | 无正文，仅一张图片 |
| **风格** | 简洁通知 |
| **封面图** | 固定素材：holiday-notice-cover.jpg |
| **正文图片** | 用户提供（包含放假日期信息） |

### 执行流程

**Step 1: 询问标题**

询问用户文章标题，或根据节日自动生成：
- 春节 → "春节放假通知"
- 元旦 → "元旦放假通知"
- 清明 → "清明节放假通知"
- 劳动节 → "劳动节放假通知"
- 端午 → "端午节放假通知"
- 中秋 → "中秋节放假通知"
- 国庆 → "国庆节放假通知"

**Step 2: 询问正文图片**

> 由于每次放假日期不同，正文图片需要用户提供。

询问用户：
```
请提供放假通知的正文图片（包含放假日期信息）
```

**Step 3: 生成文章**

文章内容极简，仅包含：

```markdown
# {节日名称}放假通知

![放假通知](./images/holiday-notice.jpg)
```

### 配图规则

| 配图位置 | 处理方式 |
|---------|----------|
| 封面图 | **固定素材**：holiday-notice-cover.jpg |
| 正文图片 | **用户提供**：包含放假日期信息 |

### 文件结构

```
{output_dir}/
├── YYYY-MM-DD-{节日名称}放假通知.md
└── images/
    └── holiday-notice.jpg   # 用户提供的正文图片
```

### 注意事项

- **不需要**开头装饰图
- **不需要**AI 生成配图
- **不需要**结尾系列图（感谢图、分隔图、关注图、二维码）
- 封面图使用固定素材，正文图片由用户提供

### 参考文章

- https://mp.weixin.qq.com/s/2PyLUYX0iQUvjoJvvrKIuQ（春节版）

---

## 更新日志

### v1.4.0 (2026-03-29)
- 新增固定主题文章功能：放假通知
- 放假通知封面图使用固定素材，正文图片由用户提供
- 支持多种节日标题（春节、元旦、清明、劳动节、端午、中秋、国庆）

### v1.3.0 (2026-03-29)
- 新增固定主题文章功能：古法熏蒸推广
- 添加古法熏蒸专用封面图 gufa-xunzheng-cover.jpg
- 更新使用方式，支持"古法熏蒸"触发词
- 添加固定主题文章写作规范

### v1.2.1 (2026-03-29)
- 修复文档中的过时示例：移除封面图生成相关代码
- 更新 curl 示例为配图生成（非封面）
- 更新进度报告示例（开头装饰替代封面）
- 修复注意事项：移除封面相关提示
- 统一文件名格式说明（日期前缀 + 标题）

### v1.2.0 (2026-03-29)
- 新增开头装饰图 `header-decorative.jpg`
- 结尾图扩展为 4 张：感谢图、分隔图、关注图、二维码图
- 重命名素材文件，命名更清晰（thanks/divider/follow）
- 更新配图数量控制（固定素材从 2 张增至 5 张）
- 移除封面图生成（开头使用固定素材）
- **优化 AI 配图风格**：新中式水墨插画风格，使用中国传统色（黛青、朱砂、米白）
- **移除 `<center>` 标签**：图片在微信编辑器中手动居中即可

### v1.1.0 (2026-03-22)
- 修复 Step 编号错误
- 统一图片路径逻辑
- 添加 `skill_dir` 变量，解决路径占位符问题
- 添加草稿模式（"只写文章"不配图）
- 优化文件结构说明
- 文件名添加日期前缀：`YYYY-MM-DD-文章标题.md`

### v1.0.0
- 初始版本

