qwen_agent/skills_developing/z-card-image/SKILL.md
2026-03-17 21:55:10 +08:00

91 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: z-card-image
version: 1.1.0
description: 生成配图、封面图、卡片图、文字海报、公众号文章封面图、微信公众号头图、X 风格帖子分享图、帖子长图、社媒帖子长图。适用于帖子类型数据、post data、social posts、tweet/thread、转发推文、转发帖子、小绿书配图、图片封面、card image。
metadata:
openclaw:
requires:
bins:
- python3
- google-chrome
---
# z-card-image
将用户提供的文案渲染成 PNG 卡片图。
支持短文案封面图、长文分页图、X 风格帖子分享长图,以及公众号文章封面图。只要输入是“帖子类型数据”并希望导出成 X 风格长图,都应走 `x-like-posts`
## 环境要求
- Python 3
- Google ChromemacOS`/Applications/Google Chrome.app`Linux`chromium` 需修改脚本路径)
## 执行流程
0. **环境提示**(用户触发时检测一次,有问题给提示,不中止流程):
- `python3 --version` → 失败则告知:「⚠️ 未检测到 Python 3渲染可能失败」
- 检查 Chrome 路径 → 失败则提示安装
1. **识别场景**
- 短文案封面图 → `poster-3-4`
- 长文分页图 → `article-3-4`
- X 风格帖子分享图 / 帖子长图 / 帖子类型数据 → `x-like-posts`
- 公众号文章封面图 → `wechat-cover-split`
2. **查模板规则**:根据模板在「模板索引」中找到对应规范文档,读取后按其规则处理文案和参数。**如用户要求高亮:整行用 `--hl1/hl2/hl3`,按词用 `--highlight-words`(逗号分隔),两者可同时使用,不能忽略**
3. **确认署名**:先询问用户底部署名文字(`--footer`),如:「请告诉我你的署名,例如"公众号 · 你的名字"」。用户未回答或要求跳过时,使用脚本默认值。
4. **确定配色**:拿到署名后,再确定配色方案:
- 用户提到"小红书配图" → 推荐方案 B热情红
- 用户提到"小绿书"或"公众号配图" → 推荐方案 A清新绿
- 用户提到"推特长图"/"X 风格" → 使用 `render_x_like_posts.py` 自带默认值Twitter 蓝白灰)
- 其他场景 → 询问用户选择下方配色方案:
| 方案 | 风格 | `--bg` | `--highlight` | 适用场景 |
|------|------|--------|--------------|---------|
| A. 清新绿 | 公众号/小绿书 | `#e6f5ef` | `#22a854` | 公众号配图、小绿书 |
| B. 热情红 | 小红书 | `#fdecea` | `#e53935` | 小红书配图 |
| C. 科技蓝 | 知乎/技术 | `#e8f4fd` | `#1976d2` | 技术文章、知乎 |
| D. 暖橙黄 | 活力/营销 | `#fff8e1` | `#f57c00` | 活动海报、营销 |
| E. 优雅紫 | 时尚/文艺 | `#f3e5f5` | `#7b1fa2` | 文艺、时尚类 |
| F. 经典黑白 | 极简 | `#f5f5f5` | `#212121` | 极简风格 |
用户也可自定义 `--bg``--highlight`。用户未回答或要求跳过时,使用脚本默认值,不做额外覆盖。
5. **渲染输出**
- `poster-3-4` → 执行 `render_card.py`
- `article-3-4` → 执行 `render_article.py`
- `x-like-posts` → 执行 `render_x_like_posts.py`
- `wechat-cover-split` → 执行 `render_card.py`
- 默认 `--out``tmp/...png`;如用户指定导出位置,可直接传绝对路径或相对路径
6. **输出产物**:生成 PNG 到指定路径,供后续发送、裁切或复用;如需给外部工具上传,仍应避免写入系统 `/tmp/`
## x-like-posts 导航
`x-like-posts` 用于“帖子类型数据 → X 风格分享长图”。
当命中这条路线时,继续读取:
- [references/x-like-posts.md](references/x-like-posts.md):输入 JSON 格式、可显示字段、时间规则、导出规则
- [references/tweet-thread.md](references/tweet-thread.md):旧命名兼容说明
## 输入校验
- **比例不存在**:驳回请求,告知当前支持的比例列表,询问是否新增模板
- **文案超出模板字数上限**:先自动拆分/缩写后再渲染,不要直接塞入
- **帖子过多**:按规范拆成多张 `Part 1 / Part 2`,不要把超长内容强行塞进一张
- **公众号封面标题过长**:先压缩成 2~3 行短标题,再渲染,不能把完整长标题硬塞进模板
## 模板索引
| 模板名 | 比例 | 尺寸 | 用途 | 规范文档 |
|--------|------|------|------|---------|
| `poster-3-4` | 3:4 | 900×1200 | 文字海报(金句/大字报/封面) | [references/poster-3-4.md](references/poster-3-4.md) |
| `article-3-4` | 3:4 | 900×1200 | 长文分页卡片 | [references/article-3-4.md](references/article-3-4.md) |
| `x-like-posts` | 自适应长图 | 900px 宽 | X 风格帖子分享长图 | [references/x-like-posts.md](references/x-like-posts.md) |
| `wechat-cover-split` | 335:100 | 1340×400 | 公众号文章封面长条图(左标题右 icon | [references/wechat-cover-split.md](references/wechat-cover-split.md) |
## 新增模板
1. 新建 `assets/templates/<name>.html`
2.`render_card.py``size_map` 里注册尺寸
3. 在上方模板索引中添加一行
4. 创建对应 `references/<name>.md`,记录该模板的参数、字数上限、配图选取规则