Install any skill in seconds. Free to start, no credit card required.
Get Started Free →观仁堂中医公众号文章生成器。写文章 + 自动配图一体化。当用户说"写文章"、"帮我写一篇"、"公众号文章"时自动触发。支持随机选题和固定主题(古法熏蒸推广、放假通知),生成符合观仁堂风格的中医养生文章,并自动配图。
.claude/skills/guanrentang-writer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
一站式完成:选题 → 写文章 → 配图 → 输出成品
| 配置项 | 默认值 | 说明 | |-------|--------|------| | output_dir | {当前工作目录}/articles | 文章输出目录 | | api_key | 见下方优先级 | 智谱 API Key | | skill_dir | ~/.claude/skills/guanrentang-writer | Skill 安装目录 |
方式一:使用默认路径
{当前工作目录}/articles/方式二:用户指定路径
ZHIPU_API_KEY{skill_dir}/.env 文件中的 ZHIPU_API_KEY步骤 1:获取智谱 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" | 使用相对路径 | | "只写文章" | 写文章但不配图(草稿模式) |
生成文件名:使用日期前缀 + 文章标题(中文)
YYYY-MM-DD-文章标题.md2026-03-22-清明养生:养肝明目,踏青防过敏.md2026-03-19-回南天祛湿大作战.mdimages/文章标题/(不带日期前缀)bash# 创建文章和图片目录 mkdir -p "${OUTPUT_DIR}/images/${ARTICLE_TITLE}/" # 复制固定素材到输出目录 cp -r "${SKILL_DIR}/assets" "${OUTPUT_DIR}/"
> 注意:SKILL_DIR 默认为 ~/.claude/skills/guanrentang-writer
按照 STYLE.md 中的风格撰写文章:
智能配图规则(根据文章内容自动判断):
| 配图位置 | 触发条件 | 处理方式 | |---------|---------|----------| | 开头装饰 | 必有 | 固定素材:header-decorative.jpg | | 原理配图 | 有"中医认为"/理论段落 | AI 生成:根据理论内容(如"肝主疏泄"→肝脏示意) | | 实操配图 | 每个实操要点后 | AI 生成:根据要点内容(穴位→穴位图,食疗→食材图) | | 食疗特写 | 有具体食疗方 | AI 生成:食疗方名称 + 主要食材 | | 结尾图 | 必有 | 固定素材:使用已复制的 assets/ 目录图片 |
配图数量控制:
文章中标记图片位置(使用 .jpg/.png 格式):
markdown ## 正文开头 ...  ## 理论原理 ...  ## 食疗方推荐 ...  您点的每个赞,我都认真当成了喜欢    
> 重要: > - 内容配图(配图、食疗)使用 AI 生成,alt 文本描述图片内容用于生成 Prompt > - 开头和结尾图使用固定素材,路径为 ./assets/(相对于文章目录) > - 图片不需要 <center> 标签,在微信编辑器中手动居中即可
保存文章到 ${OUTPUT_DIR}/YYYY-MM-DD-{文章标题}.md
images/{文章标题}/(不带日期前缀)执行时机:文章写完并保存后,立即开始配图
自动化流程:
 格式的图片标记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 结尾图(固定素材)✓✅ 文章已完成!
📄 文章: ${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. 生成下一张图...
<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. 总结 + 推广语> 注意:古法熏蒸文章不需要"您点的每个赞,我都认真当成了喜欢"这句文案,结尾直接用推广语收尾即可。
本医馆现新开展古法熏蒸服务,欢迎光临体验!
| 配图位置 | 处理方式 | |---------|----------| | 开头装饰 | 固定素材:header-decorative.jpg | | 专用封面 | 固定素材:gufa-xunzheng-cover.jpg | | 原理配图 | AI 生成:熏蒸场景/气血循环示意 | | 注意事项 | AI 生成:熏蒸后护理场景 | | 结尾图 | 固定素材:4张(感谢图、分隔图、关注图、二维码) |
markdown ## 正文...  ## 熏蒸原理 ...  ## 注意事项 ...  本医馆现新开展古法熏蒸服务,欢迎光临体验!    
当用户说"放假通知"、"写个放假通知"、"假期通知"时,触发此固定主题。
| 项目 | 说明 | |------|------| | 用途 | 医馆放假公告 | | 字数 | 无正文,仅一张图片 | | 风格 | 简洁通知 | | 封面图 | 固定素材:holiday-notice-cover.jpg | | 正文图片 | 用户提供(包含放假日期信息) |
Step 1: 询问标题
询问用户文章标题,或根据节日自动生成:
Step 2: 询问正文图片
> 由于每次放假日期不同,正文图片需要用户提供。
询问用户:
请提供放假通知的正文图片(包含放假日期信息)Step 3: 生成文章
文章内容极简,仅包含:
markdown# {节日名称}放假通知 
| 配图位置 | 处理方式 | |---------|----------| | 封面图 | 固定素材:holiday-notice-cover.jpg | | 正文图片 | 用户提供:包含放假日期信息 |
{output_dir}/
├── YYYY-MM-DD-{节日名称}放假通知.md
└── images/
└── holiday-notice.jpg # 用户提供的正文图片header-decorative.jpg<center> 标签:图片在微信编辑器中手动居中即可skill_dir 变量,解决路径占位符问题YYYY-MM-DD-文章标题.md| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.