新闻媒体如何集成生成文章摘要?从稿件到要点提炼的全链路
# 新闻媒体如何集成生成文章摘要?从稿件到要点提炼的全链路
> 接口 961-1 · 免费(受使用档次限制) · 请求方式 POST/GET · 返回格式 JSON · 适用人群:媒体技术、产品经理、全栈工程师 · 阅读时间:约 8 分钟
## 核心要点
- 典型链路:稿件入库 → 触发摘要 → 存 `list` → 前端展示要点列表。
- 用 `num` 控制详略:列表页用少条(如 3),详情页可用多些。
- 免费接口每次从额度扣 1 次,批量稿件要做限流与配额管理。
## Why:媒体为什么需要它
编辑每天面对大量稿件,读者又没耐心读长文。把正文自动压成 3~5 条要点,既能做稿件导读、资讯快报,也能喂给推荐位和推送标题。接口免费、调用简单,适合作为内容中台的一个轻量预处理器。
## What:接口速览
| 项目 | 说明 |
|------|------|
| 接口地址 | `https://route.showapi.com/961-1?appKey={your_appKey}` |
| 接入点 | `961-1` |
| 返回 | `showapi_res_body.list`(摘要字符串数组) |
| 计费 | 免费,受使用档次限制(每次扣 1 次额度) |
## How:全链路设计
### 数据表设计
```sql
-- 稿件表增加摘要字段
ALTER TABLE article ADD COLUMN summary_list JSON NULL COMMENT '生成文章摘要返回的 list';
ALTER TABLE article ADD COLUMN summary_status TINYINT NOT NULL DEFAULT 0 COMMENT '0待生成 1成功 2失败';
```
### 触发与调用(Python)
```python
import requests, json
APPKEY = "YOUR_APPKEY"
def gen_summary(text: str, num: int = 3) -> list:
resp = requests.post(
"https://route.showapi.com/961-1",
params={"appKey": APPKEY},
data={"text": text, "num": str(num)},
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=30,
)
data = resp.json()
if str(data.get("showapi_res_code")) != "0":
raise RuntimeError(data.get("showapi_res_error"))
body = data["showapi_res_body"]
if str(body.get("ret_code")) != "0":
raise RuntimeError(f"业务失败 ret_code={body.get('ret_code')}")
return body["list"] # 字符串数组
```
### 前端展示要点列表
```html
<ul id="summary"></ul>
<script>
fetch('/api/article/123')
.then(r => r.json())
.then(a => {
const ul = document.getElementById('summary');
(a.summary_list || []).forEach(t => {
const li = document.createElement('li');
li.textContent = t;
ul.appendChild(li);
});
});
</script>
```
> 展示前判空:`list` 可能为 0 条或少于 `num`(短稿件信息点不足),前端需有「暂无要点」兜底。
## 返回示例与解析
```json
{
"showapi_res_code": 0,
"showapi_fee_num": 1,
"showapi_res_body": {
"ret_code": "0",
"list": ["提升学习效率", "AI带来的不仅是效率提升", "在制造领域"]
}
}
```
## 进阶 / 边界
- **异步化**:大批量稿件不要同步阻塞,建议稿件入库后丢消息队列,由消费者异步调用并回写 `summary_list`。
- **配额管理**:免费额度有限,批量跑前先估算稿件数 × 1 次/篇,避免超额;超额需购资源包。
- **短稿兜底**:信息量低的稿件返回条数少,UI 上用「全文导读生成中 / 暂无要点」占位,不要报错。
## FAQ
**Q1:一篇稿子调用一次还是多次?**
A:一次请求即可得到 `num` 条要点;不要为同一篇稿子重复调用,避免浪费免费额度。
**Q2:列表页和详情页要点数量不同怎么处理?**
A:以一次调用存库的 `list` 为准,前端按需截取前 N 条展示,不必多次调用。
**Q3:稿件更新了,摘要要重算吗?**
A:正文变更后建议把 `summary_status` 置回「待生成」并重新调用,保证要点与正文一致。
**Q4:`list` 顺序有规律吗?**
A:按接口提炼顺序排列,通常对应原文信息重要度,展示时按原序即可。
**Q5:免费额度不够跑全站历史稿件怎么办?**
A:分批跑、只处理近 N 天稿件,或购买资源包后继续;详见 [免费 API 说明](https://www.showapi.com/free-api)。
## 相关能力 / 下一步阅读
- [长文与批量摘要处理:超时、限流与免费配额的最佳实践](https://www.showapi.com/guides/article-summary-batch-961)
- [生成文章摘要参数详解:text 与 num 的正确用法](https://www.showapi.com/guides/article-summary-params-guide-961)
- **本系列共 8 篇**:查看[生成文章摘要指南总目录](https://www.showapi.com/guides/article-summary-guides-961)