十万个为什么 API 家长/教育类 App 方案:统一管理科普问答内容
十万个为什么 API教育类App内容中台统一管理科普问答 # 十万个为什么 API 家长/教育类 App 方案:统一管理科普问答内容
> 接口:十万个为什么(apiCode=1706)· 接入点:列表(1706-1) + 详情(1706-2) · 免费 · 适用人群:教育产品 / 儿童内容从业者 · 阅读时间:约 7 分钟
## 核心要点
- 面向教育类 App,把十万个为什么 API 作为"科普问答内容中台":统一检索、统一缓存、统一内容治理。
- 推荐沉淀自有内容库(落库 `id`/`title`/`content`),把接口当作"源"而非"实时前端直连",降低档位压力并支持二次加工。
- 结合主题聚合(天文、动物、自然…)做栏目化运营,提升儿童学习体验。
## Why:为什么教育产品要"统一管理"
直接在前端逐个调接口,短期能跑,长期会出现:重复调用耗档位、内容无法二次编排、不同端展示不一致。教育产品更合适的做法是把接口内容"收口"到后端内容服务,再做主题聚合、适龄改写、栏目分发。
## What:方案组件
| 组件 | 职责 |
|------|------|
| 检索层 | 列表接入点,按关键词取 `id`+`title` |
| 内容层 | 详情接入点,按 `id` 取 `title`+`content`,落库 |
| 缓存层 | 按 `id`/`keyword+page` 缓存(见[《免费档位下:用缓存策略节省调用次数》](https://www.showapi.com/guides/why100k-free-tier-cache-1706)) |
| 编排层 | 主题打标、适龄简化、栏目分发 |
## How:内容中台骨架
```python
import requests, redis, json
APP_KEY = "YOUR_APPKEY"
r = redis.Redis(decode_responses=True)
BASE = "https://route.showapi.com"
def ensure_content(qid: str) -> dict:
"""详情入中台:缓存/落库优先,接口兜底"""
key = f"why:detail:{qid}"
cached = r.get(key)
if cached:
return json.loads(cached)
body = requests.post(f"{BASE}/1706-2", data={"id": qid},
params={"appKey": APP_KEY},
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=10).json()["showapi_res_body"]
if body.get("ret_code") != "0":
raise RuntimeError(body.get("remark"))
data = {"id": qid, "title": body["title"], "content": body["content"]}
r.setex(key, 86400, json.dumps(data))
return data
def topic_feed(keyword: str, page: str = "1") -> list:
"""主题聚合:列表拿 id,按需补全内容摘要"""
body = requests.post(f"{BASE}/1706-1", data={"keyword": keyword, "page": page},
params={"appKey": APP_KEY},
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=10).json()["showapi_res_body"]
return [{"id": it["id"], "title": it["title"]} for it in body.get("contentlist", [])]
```
## 返回示例与解析
列表返回 `contentlist[{id,title}]` 用于建"主题卡片";详情 `title`+`content` 落库中台,后续可做栏目("天文馆""动物世界")按 `keyword` 聚合展示。
## 进阶 / 边界
- **适龄二次加工**:接口返回通用科普文,教育产品建议由运营/编辑做适龄简化,接口不提供年龄段字段。
- **多媒体**:文档称有多媒体内容但未给独立视频字段,实际以返回为准。
- **档位治理**:统一收口后,所有调用经缓存层,档位消耗可控(见缓存篇)。
## FAQ
**Q1:要不要每个端都直连接口?**
不建议。统一收口到后端内容服务,便于缓存、治理与多端一致。
**Q2:能做主题栏目吗?**
可以,用 `keyword`(如"星星""恐龙")聚合列表结果形成栏目。
**Q3:内容能二次改写吗?**
可以,落库后由产品侧做适龄化、精简等加工,接口只负责原始内容。
**Q4:档位不够怎么办?**
以[官方档位说明](https://www.showapi.com/free-api)为准;技术侧靠缓存把重复查询转为命中。
**Q5:有批量接口能一次拉全吗?**
文档未提供批量能力,需分页遍历(见[《分页查询详解》](https://www.showapi.com/guides/why100k-pagination-1706))。
## 相关能力 / 下一步阅读
- [十万个为什么 API 家长辅助教育场景:儿童科学问答小程序集成](https://www.showapi.com/guides/why100k-kids-education-1706)
- [十万个为什么 API 免费档位下:用缓存策略节省调用次数](https://www.showapi.com/guides/why100k-free-tier-cache-1706)
- [十万个为什么 API:列表→详情两接入点串联的全链路设计](https://www.showapi.com/guides/why100k-list-detail-flow-1706)
- **本系列共 11 篇**:查看[十万个为什么 API 指南总目录](https://www.showapi.com/guides/why100k-guides-1706)