>- 字数裁剪/摘要:把长文本压缩到指定字数,保留核心信息。支持硬裁剪(严格字数)、 摘要(保留要点)、金句提取(只保留最精华的句子)三种模式。 特别适合从长文生成平台适配的短文。 使用时机:用户说"裁到 140 字"、"压缩一下"、"太长了"、"摘要"、"精简"、 "缩写"、"字数裁剪"、"帮我缩短"、"提炼要点"。 和 text-polisher 的区别:polisher 润色文案不改长度,condenser 压缩篇幅不做质量提升。
npx skills add https://github.com/ZJU-REAL/Easel --skill text-condenser
> 把长文本压缩到指定字数,保留核心信息,适配不同平台的字数限制。
| 字段 | 必填 | 说明 |
|------|------|------|
| text | 是 | 待压缩的原文 |
| target_length | 否 | 目标字数(如 140、280、500);不指定则自动压缩到原文 30%-50% |
| mode | 否 | 压缩模式:strict / summary / extract(默认 summary) |
| platform | 否 | 目标平台(自动设定字数限制):weibo(140) / twitter(280) / xiaohongshu(1000) / zhihu_answer(自由) |
| preserve | 否 | 必须保留的关键信息/关键词列表 |
| tone | 否 | 压缩后的语气倾向:neutral(默认)/ punchy(有力)/ soft(柔和) |
| 模式 | 行为 | 适用场景 |
|------|------|----------|
| strict | 严格控制在目标字数 ±5%,逐字斟酌 | 有硬性字数限制的平台(微博、Twitter) |
| summary | 保留所有要点,允许字数浮动 ±15% | 生成摘要、文章导语 |
| extract | 只提取原文中最精华的原句,不改写 | 金句提取、精华摘录 |
outputs/ 目录> 字数以脚本为准:字数统计和达标判定一律用 skills/shared/scripts/wordcount.py,
> 不靠自己数。LLM 负责改写,脚本负责判定。
> 社媒计数口径(social_count)= 中文字符 + 英文单词 + 数字串 + 标点。
python3 skills/shared/scripts/wordcount.py count -f <原文>(或经 stdin 传入)根据保留率(目标字数 / 原文字数)选择策略:
| 保留率 | 策略 | 说明 |
|--------|------|------|
| > 70% | 轻度删减 | 删冗余修饰、合并重复表达 |
| 40%-70% | 中度压缩 | 删 P2 信息、精简句式、合并相似段落 |
| 20%-40% | 重度压缩 | 只留 P0/P1、改写为高密度表达 |
| < 20% | 极限压缩 | 只留 P0、一句话概括 |
按 mode 执行:
strict 模式(脚本兜底,闭环调整):
python3 skills/shared/scripts/wordcount.py check --target <N> -f <文件>(或经 stdin 传入)--tolerance 调整(如 --tolerance 0.1)summary 模式:
extract 模式:
wordcount.py check 退出码 0 为准;其他模式用 wordcount.py count 核对是否落在容差范围preserve 中的关键信息是否全部保留压缩报告:
- 原文: 2,350 字
- 目标: 500 字
- 实际: 487 字 (压缩率 79.3%,压缩率 = 已删减比例 = 1 − 实际/原文)
- 模式: summary
- 保留要点:
1. [P0] 核心论点 — 已保留
2. [P0] 关键数据 — 已保留
3. [P1] 案例说明 — 已精简
4. [P2] 背景介绍 — 已删除
style.md 读取品牌调性,压缩时保持一致的语言风格;参考 platforms.md 中的平台偏好,自动匹配最常用平台的字数规范summary 模式,压缩到原文 30%-50%> 自研溯源与参考项目见同目录 EASEL-META.md。
Take zju-real/text-condenser 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.