营销裂变:用猜一猜谜语 API 做答题抽奖与互动游戏
# 营销裂变:用猜一猜谜语 API 做答题抽奖与互动游戏
> 接口/接入点:猜一猜谜语 API(151-2 随机) · 免费 · 适用人群:活动运营、营销/增长 · 阅读时间:约 6 分钟
## 核心要点
- 玩法骨架:用户答题 → 答对解锁抽奖/优惠券/积分。谜语由 151-2 免费供给,你只做"出题+判题+发奖"。
- **判题必须自建**:接口只返回 `Answer` 文本,对错由你比对(见 [答案校验](https://www.showapi.com/guides/riddle-answer-check-151))。
- **防刷是关键**:免费档位有限流,别让前端每次答题都直连接口;服务端建题池 + 频控(见 [频控与缓存](https://www.showapi.com/guides/riddle-rate-limit-151))。
## Why:这跟我有什么关系
拉新/促活活动想做个"答题闯关赢好礼",自己出题慢、版权和题库维护麻烦。猜一猜谜语 API 免费、题材多(搞笑/脑筋急转弯/成语),直接当活动题库,开发半天就能上线。
## What:接口速览
| 项 | 内容 |
|----|------|
| 取题 | 151-2 随机(`typeId` 可选,如 `njmy` 脑筋急转弯更适合互动) |
| 判题 | 自建(归一化比对 `Answer`) |
| 发奖 | 你方业务系统(抽奖/优惠券) |
| 风控 | 服务端题池 + 用户频控 + 答案不下发前端 |
## How:活动链路
### 步骤 1 — 服务端预热题池(减少实时调用)
```python
import requests
def build_pool(size=50, type_id="njmy"):
pool = []
url = "https://route.showapi.com/151-2"
for _ in range((size // 20) + 1):
r = requests.post(url, params={"appKey": "YOUR_APPKEY"},
data={"typeId": type_id}, timeout=10).json()
items = r["showapi_res_body"].get("pagebean", {}).get("contentlist", [])
for it in items:
pool.append({"title": it.get("Title"), "answer": it.get("Answer"),
"typeName": it.get("typeName")})
return pool # 缓存到 Redis,活动期复用
```
### 步骤 2 — 下发题目(不含答案)
```json
{ "qid": "abc123", "title": "问:…", "typeName": "脑筋急转弯" }
```
### 步骤 3 — 判题与发奖
```python
def normalize(s):
return "".join(ch for ch in s.replace("答:","").replace("谜底:","")
if ch.isalnum() or ch == " ")
def on_submit(qid, user_input, pool):
q = pool[qid]
if normalize(user_input) == normalize(q["answer"]):
return grant_reward() # 你方发奖逻辑
return {"ok": False, "hint": "再想想~"}
```
## 返回示例与解析
取题返回结构见 [返回字段全解](https://www.showapi.com/guides/riddle-response-fields-151)。
## 进阶/边界
- **答案不下发前端**:活动接口若把 `Answer` 回传前端,用户能作弊。答案只在服务端比对。
- **频控**:限制单用户答题频率(如每分钟 1 次),超频不调接口直接提示。
- **题池去重**:151-2 每次 20 条可能有重复,建池时按 `Title` 去重。
- **档位限制**:免费接口有调用档位,活动预估峰值 × 人均答题次数,超出需看官方 /free-api 或升级档位。
## FAQ
**Q1:用户答对了怎么确认?接口能判吗?**
不能,接口只给 `Answer` 文本。你用去前缀 + 归一化比对([答案校验](https://www.showapi.com/guides/riddle-answer-check-151))。
**Q2:活动人多会把免费额度打爆吗?**
有可能。务必服务端建题池 + 频控,把实时调用降到最低;额度以官方 /free-api 为准。
**Q3:脑筋急转弯适合做活动吗?**
适合,互动性强(`njmy`)。也可混 `gxmy` 搞笑、`cymy` 成语增加层次。
**Q4:能按关键词出"特定主题"题吗?**
151-2/151-4 均无关键词参数,只能按 `typeId` 类型取([151-4 真相](https://www.showapi.com/guides/riddle-search-by-type-151))。
**Q5:题库版权要注意什么?**
谜语内容来自接口提供方,商用活动建议确认授权范围与官方档位说明。
## 相关能力 / 下一步阅读
- [拿到谜底后怎么校验用户答案?API 不代判,需自建比对逻辑](https://www.showapi.com/guides/riddle-answer-check-151)
- [免费额度怎么用不超:猜一猜谜语 API 的调用频控与缓存建议](https://www.showapi.com/guides/riddle-rate-limit-151)
- [小程序/App 怎么接猜一猜谜语 API?社交娱乐趣味模块全链路设计](https://www.showapi.com/guides/riddle-wechat-mini-151)
- **本系列共 13 篇**:查看[猜一猜谜语 API 指南总目录](https://www.showapi.com/guides/riddle-guides-151)