> 内容模板的保存、复用、管理。把成功的内容结构保存为模板,下次直接套用,支持模板分类和版本管理。 当用户说"保存模板"、"用模板"、"模板管理"、"模板列表"、"复用上次的结构"、 "常用模板"时使用。 与 post-formatter(帖子框架)的区别:post-formatter 提供通用营销框架(PAS/AIDA/BAB), template-library 管理用户自己沉淀的个性化模板。 与 social-content(社媒内容)的区别:social-content 从零生成内容, template-library 基于已有模板快速复制结构。
npx skills add https://github.com/ZJU-REAL/Easel --skill template-library
> 保存、复用、管理内容模板 — 把成功经验变成可复制的结构
| 字段 | 必填 | 说明 |
|------|------|------|
| action | 是 | 操作类型:save / use / list / edit / delete / get |
| template_name | 视操作 | 模板名称(save / use / edit / delete / get 时必填) |
| source_file | 否 | 要保存为模板的源文件路径(save 操作时使用) |
| source_text | 否 | 要保存为模板的文本内容(save 操作时,与 source_file 二选一) |
| category | 否 | 模板分类:xiaohongshu / weibo / douyin / zhihu / wechat / x / general |
| variables | 否 | 模板变量的填充值,JSON 格式(use 操作时使用) |
| topic | 否 | 使用模板时的主题/话题(use 操作时使用) |
| profile_name | 否 | 绑定画像名称(有 Profile 上下文时自动填入) |
## 模板已保存
**名称**: {template_name}
**分类**: {category}
**存储位置**: templates/{category}/{template_name}.md
### 提取的模板结构
| 部分 | 结构描述 | 可变区域 |
|------|----------|----------|
| 标题 | 数字 + 痛点提问 | {{title_number}}, {{pain_point}} |
| 开头 | 反常识钩子 | {{hook_statement}} |
| 正文 | 3 段式(问题-方案-证据) | {{problem}}, {{solution}}, {{evidence}} |
| 结尾 | 行动号召 + 互动引导 | {{cta}}, {{question}} |
### 模板变量
共提取 {n} 个变量,下次使用时填入具体内容即可。
## 模板应用结果
**使用模板**: {template_name}
**主题**: {topic}
---
{根据模板结构 + 变量填充生成的内容}
---
> 基于模板 `{template_name}` 生成,可进一步调整。
## 模板库
**总数**: {n} 个模板
### 按分类
#### 小红书 ({n1} 个)
| 模板名 | 说明 | 变量数 | 使用次数 | 创建日期 |
|--------|------|--------|----------|----------|
| 种草对比 | 双产品对比种草结构 | 8 | 5 | 2026-07-10 |
| 教程步骤 | N 步教程卡片结构 | 6 | 3 | 2026-07-08 |
#### 微博 ({n2} 个)
| 模板名 | 说明 | 变量数 | 使用次数 | 创建日期 |
|--------|------|--------|----------|----------|
| 热点评论 | 热搜话题评论结构 | 5 | 7 | 2026-07-12 |
#### 通用 ({n3} 个)
| ... | ... | ... | ... | ... |
> 模板文件读写、INDEX.json 维护、usage_count 自增、{{var}} 提取与替换已固化为
> scripts/templates.py(纯 stdlib,argparse 子命令)。**LLM 只做意图路由、内容结构分析
> (把成功内容改写成含 {{var}} 占位符的模板正文)和结果呈现,不手写 JSON、不手动
> 增删文件。** 索引与模板文件均原子写入(临时文件 + rename),增删模板同步更新 INDEX.json。
saveuselisteditdeleteget{{变量名}}占位符(如产品名 → {{product_name}}、痛点 → {{pain_point}}),再把改写后的正文
通过 --text 或 --file 交给脚本。脚本负责提取变量清单、写文件、登记索引。
--var/--vars 传入。脚本负责替换、usage_count 自增、原子写回索引。
--root templates): S=skills/openclaw/template-library/scripts/templates.py
python3 $S save 种草对比 --category xiaohongshu --description "双产品对比" \
--text "标题:{{title}} A={{product_a}} vs B={{product_b}} CTA={{cta}}"
python3 $S list --category xiaohongshu # 按分类列出,按使用次数降序
python3 $S get 种草对比 # 预览内容 + 元信息
python3 $S use 种草对比 --var title=夏日防晒 --var product_a=安耐晒
python3 $S use 种草对比 --vars '{"title":"夏日防晒","cta":"点赞收藏"}'
python3 $S edit 种草对比 --category general --description "改描述" --text "新正文 {{x}}"
python3 $S delete 种草对比 # 预览(dry-run)
python3 $S delete 种草对比 --apply # 确认后真正删除
save 同名默认报错,需 --force 覆盖;edit 改分类会移动文件并清理旧文件use 未填的变量保留 {{占位符}} 并在 stderr 警告,不会静默出错delete 默认 dry-run,仅打印将删除的模板,加 --apply 才真正删并清理索引profile: {画像名称}profile: shared(共享模板)> 自研溯源与参考项目见同目录 EASEL-META.md。
Take zju-real/template-library from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.