text-condenser · git:20260828.21694dd · 2026-08-28 · sha256 f9ee36b2495e1805

text-condenser git:20260828.21694ddA

Immutable. This exact content is served forever at /api/v1/blob/f9ee36b2495e1805.

---
name: text-condenser
description: >-
  字数裁剪/摘要:把长文本压缩到指定字数,保留核心信息。支持硬裁剪(严格字数)、
  摘要(保留要点)、金句提取(只保留最精华的句子)三种模式。
  特别适合从长文生成平台适配的短文。
  使用时机:用户说"裁到 140 字"、"压缩一下"、"太长了"、"摘要"、"精简"、
  "缩写"、"字数裁剪"、"帮我缩短"、"提炼要点"。
  和 text-polisher 的区别:polisher 润色文案不改长度,condenser 压缩篇幅不做质量提升。
layer: produce
---

# 字数裁剪/摘要

> 把长文本压缩到指定字数,保留核心信息,适配不同平台的字数限制。

## 输入

| 字段 | 必填 | 说明 |
|------|------|------|
| `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`)= 中文字符 + 英文单词 + 数字串 + 标点。

### Step 1 — 原文分析

1. 统计原文字数:`python3 skills/shared/scripts/wordcount.py count -f <原文>`(或经 stdin 传入)
2. 提取核心信息结构:
   - 中心论点 / 核心事实
   - 关键论据 / 支撑数据
   - 次要信息 / 补充说明
   - 修饰性内容 / 过渡句
3. 对每条信息标注优先级(P0 必留 / P1 尽量留 / P2 可删)

### Step 2 — 裁剪策略

根据保留率(目标字数 / 原文字数)选择策略:

| 保留率 | 策略 | 说明 |
|--------|------|------|
| > 70% | 轻度删减 | 删冗余修饰、合并重复表达 |
| 40%-70% | 中度压缩 | 删 P2 信息、精简句式、合并相似段落 |
| 20%-40% | 重度压缩 | 只留 P0/P1、改写为高密度表达 |
| < 20% | 极限压缩 | 只留 P0、一句话概括 |

### Step 3 — 执行压缩

按 `mode` 执行:

**strict 模式(脚本兜底,闭环调整):**
1. 先裁到目标字数的 120%
2. 逐句精简,去掉每句中可删的词
3. **调用脚本校验**:`python3 skills/shared/scripts/wordcount.py check --target <N> -f <文件>`(或经 stdin 传入)
   - 退出码 0 = 达标;非 0 = 未达标,脚本会给出「还需增/删 X 字」
   - 平台硬限制默认 ±5%,可用 `--tolerance` 调整(如 `--tolerance 0.1`)
4. **未达标则继续改写并重新 check,直到脚本判定 pass(退出码 0)**,不得凭感觉收尾
5. 确认无断句、无残句

**summary 模式:**
1. 按信息优先级筛选内容
2. 用自己的话重写,不受原文句式约束
3. 确保逻辑连贯、可独立阅读

**extract 模式:**
1. 对每句打分(信息密度 x 表达质量)
2. 按得分降序选句,直到接近目标字数
3. 调整句序使其连贯
4. 不改写原句(最多做衔接过渡)

### Step 4 — 质量检查

- 字数是否达标:**strict 模式必须以 `wordcount.py check` 退出码 0 为准**;其他模式用 `wordcount.py count` 核对是否落在容差范围
- `preserve` 中的关键信息是否全部保留
- 压缩后是否可独立阅读(不需要看原文就能理解)
- 是否有信息失真(压缩导致意思改变)
- 句子是否完整(无残句、无悬空指代)

### Step 5 — 输出压缩报告

```
压缩报告:
- 原文: 2,350 字
- 目标: 500 字
- 实际: 487 字 (压缩率 79.3%,压缩率 = 已删减比例 = 1 − 实际/原文)
- 模式: summary
- 保留要点:
  1. [P0] 核心论点 — 已保留
  2. [P0] 关键数据 — 已保留
  3. [P1] 案例说明 — 已精简
  4. [P2] 背景介绍 — 已删除
```

## Profile 感知

- **有 Profile**:从 `style.md` 读取品牌调性,压缩时保持一致的语言风格;参考 `platforms.md` 中的平台偏好,自动匹配最常用平台的字数规范
- **无 Profile**:按用户指定的参数压缩;未指定平台时默认 `summary` 模式,压缩到原文 30%-50%

> 自研溯源与参考项目见同目录 `EASEL-META.md`。