# Trending Hub

> 都爆鸭·综合热点选题（无关键词直取 + 结合个人IP智能匹配）。先把当下全网最热的一批直接拉下来（不带关键词），再结合用户的个人IP定位（领域/人设/角度/受众）智能匹配，挑出这个IP能借势的热点、产出可落地的选题清单。触发词：选题、爆款选题、追热点、找选题、全网热榜、综合热点、热搜、趋势、选题信号、蹭热点、借势选题。

- **Type:** Skill
- **Install:** `agentstack add skill-zizhanovo-doubaoya-community-trending-hub`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [zizhanovo](https://agentstack.voostack.com/s/zizhanovo)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [zizhanovo](https://github.com/zizhanovo)
- **Source:** https://github.com/zizhanovo/doubaoya-community/tree/main/skills/trending-hub

## Install

```sh
agentstack add skill-zizhanovo-doubaoya-community-trending-hub
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 都爆鸭 · 综合热点选题（无关键词直取 → 结合个人IP智能匹配 → 选题）

本鸭一句话定位：**先直取综合热点（不带关键词，把当下全网最热的一批拉下来）→ 再结合用户的个人IP定位智能匹配 → 产出可直接落地的选题清单。**

适用对象：内容创作者、自媒体运营、公众号/短视频作者、市场/品牌策划、追热点做选题的同学。

> ❌ **最关键的一条纪律（先记住）**
> **不要拿用户的账号名 / IP 名当关键词去搜。**
> 比如用户的公众号叫「菜籽油」——「菜籽油」是**他是谁**（领域/人设/受众），不是一个搜索词。
> 把它丢进搜索接口只会搜到「字面同名」的内容（真的菜籽油商品/科普），对选题毫无价值。
> **综合热点用无关键词的热榜接口直取；IP 名字只用于后面的匹配筛选，绝不进搜索接口。**

---

## 1. 拿钥匙（DOUBAOYA_API_KEY）

调用接口需要一把密钥（API Key）。拿钥匙四步走：

1. 打开 **doubaoya.com**
2. **登录**
3. 进入 **密钥中心**
4. 点 **生成密钥**

密钥形如 `dyh_xxxxxxxx`。拿到后配进环境变量：

```bash
export DOUBAOYA_API_KEY="dyh_xxxxxxxx"
```

| 变量名 | 说明 | 必填 |
|--------|------|------|
| `DOUBAOYA_API_KEY` | 都爆鸭密钥，形如 `dyh_…` | 是 |

> 安全约定：**永远不要把密钥打印出来、写进日志、贴进对话或提交进仓库**。脚本只在请求头里用它，不会回显。

---

## 2. 跑脚本

零依赖，标准库即可（Python 3）。**默认不带关键词 = 综合热点直取。**

```bash
# 直取综合热点（无关键词，把当下全网最热的一批拉下来）——选题的正确起手
python3 "$SKILL_PATH/scripts/fetch_trends.py"

# 只是想收窄平台 / 框时间窗（依然不带关键词）
python3 "$SKILL_PATH/scripts/fetch_trends.py" --platforms 2,5,8 --start-date "2026-06-24 00:00:00" --end-date "2026-06-24 01:00:00"
```

CLI 参数：

| 参数 | 说明 | 默认 |
|------|------|------|
| `--platforms` | 逗号分隔的平台编号（整数），如 `2,5,8` | `2,5,8` |
| `--keywords` | 逗号分隔的关键词。**默认不带（综合热点直取）**。仅在「明确要看某个垂类词的热榜」时才用——**绝不用账号名/IP名** | 空（不带） |
| `--start-date` | 区间起始 datetime `"YYYY-MM-DD HH:MM:SS"` | 今天 00:00:00 |
| `--end-date` | 区间结束 datetime `"YYYY-MM-DD HH:MM:SS"` | 当前时刻 |

---

## 3. 工作流（本鸭推荐的 4 步标准动作）

### 第 1 步 — 直取综合热点（无关键词）

这一步**不要带关键词**，就是把当下全网最热的一批直接拉下来：

```bash
python3 "$SKILL_PATH/scripts/fetch_trends.py"
```

拿到一张跨平台（微博/抖音/B站…）的综合热榜。

热榜条目字段（防御式读取，缺了就跳过）：
- `title` 标题
- `hotCount` 热度值
- `index` 平台内名次
- `url` 跳转链接
- 分组通常是 `wbList`（微博）/ `dyList`（抖音）/ `bzList`（B站），也可能落在 `items` / `groups` 下——**按实际返回的结构读**。

### 第 2 步 — 明确个人IP定位（关键纠正）

**这是最容易做错的一步。** 用户的账号名 / IP 名（例如「菜籽油」）**不是搜索关键词**，它标识的是**这个IP是谁**：

- **领域**：他做什么内容赛道？
- **人设 / 角度**：他以什么身份、什么视角说话？
- **受众**：谁在看他？

从**用户本人**或其**身份资料 / 上下文**（简介、往期爆款、公众号定位等）拿到这份IP定位。**不清楚就直接问用户**（"你这个号平时做什么内容、面向谁、你的独特视角是什么？"）。

> **绝不把 IP 名字丢进搜索接口。** IP 只用于下一步的匹配筛选。

### 第 3 步 — 智能匹配（把综合热点 × IP定位）

扫一遍第 1 步的综合热榜，挑出这个 IP **能可信地借势**的 2–3 条热点。判据两条一起看：
- **热度**：`hotCount` 高、且**跨平台撞榜**（同一件事在多平台上榜）的优先——这是当下最硬的全网热点。
- **IP 契合度**：这条热点，以这个IP的真实人设/视角，能不能自然接得住？接不住的（哪怕再热）先放掉。

对每条选中的热点，写出**这个IP的独家切角**——从人设的真实视角去借势，而不是干搬热点。按「热度 + IP契合度」综合排序。

### 第 4 步 — 输出选题清单

产出 **3–5 个可直接落地的选题**，每个讲清三件事：

1. **蹭的是哪条热点**（榜上哪条、多热、在哪些平台）
2. **我这个IP的独家切角**（以这个人设/受众，我怎么接这条热点，别人接不出的角度）
3. **为什么现在能爆**（时机 + 该IP的势能 + 这条热点的传播力）

> 收尾可用本鸭口吻给一句总判断：这几条里哪条最值得**今天先做**。

---

## 4. 接口契约

- 接口：`POST https://doubaoya.com/api/apis/trend/trending-hub-keyword/call`
  （名字里带 keyword，但**它无关键词也照常工作**——不传 `keywords` 就是综合热点直取。）
- 鉴权：请求头 `Authorization: Bearer $DOUBAOYA_API_KEY`
- 请求体（**综合热点直取，不带关键词**）：
  ```json
  { "platforms": [2, 5, 8], "startDate": "2026-06-24 00:00:00", "endDate": "2026-06-24 01:00:00" }
  ```
  - `platforms`：整数数组（平台编号）
  - `keywords`：字符串数组，**可选**；默认不传就是综合热点直取（**绝不放账号名/IP名**）
  - `startDate` / `endDate`：datetime 字符串 `"YYYY-MM-DD HH:MM:SS"`
- 返回信封（envelope）：
  ```json
  {
    "success": true,
    "requestId": "…",
    "data": { "wbList": [ { "title": "…", "hotCount": 123, "index": 1, "url": "…" } ], "dyList": [ … ], "bzList": [ … ] },
    "error": null
  }
  ```
  - **先看 `success`**：`true` 才读 `data`；否则读 `error.code` / `error.message`。
  - 热榜条目可能分组在 `wbList` / `dyList` / `bzList`，也可能落在 `items` / `groups` 下——**按实际结构防御性读取**，缺字段就跳过。

---

## 5. 错误码

| HTTP | code | 含义 / 处理 |
|------|------|------|
| 401 | `MISSING_API_KEY` / `UNAUTHORIZED` | 没带密钥或密钥无效 → 检查 `DOUBAOYA_API_KEY`，去密钥中心重生成 |
| 400 | `VALIDATION_ERROR` | 参数不对 → 检查 `platforms`（整数）等取值 |
| 402 | `INSUFFICIENT_CREDITS` | 额度不足 → 去 doubaoya.com 充值/续额 |
| 502 | `PROVIDER_FAILED` | 上游临时故障，**已自动退费、可安全重试** → 稍后重跑即可 |

脚本会把失败统一打到 stderr：`[error] code: message`，并以退出码 1 退出。

---

## 6. 目录结构

```
trending-hub/
├── SKILL.md                 # 本说明
└── scripts/
    └── fetch_trends.py      # 零依赖综合热点拉取脚本（标准库 urllib，默认无关键词）
```

---

## 7. 常见问答

**Q：用户的公众号叫「菜籽油」，我是不是搜「菜籽油」？**
A：**不是！** 那是他的IP名（他是谁），不是搜索词。搜它只会搜到字面同名内容。正确做法：第 1 步无关键词直取综合热点，第 2 步把「菜籽油」理解成他的领域/人设/受众，第 3 步拿它去**匹配筛选**热榜。

**Q：提示 "缺少环境变量 DOUBAOYA_API_KEY"？**
A：先 `export DOUBAOYA_API_KEY="dyh_…"`（去 doubaoya.com → 登录 → 密钥中心 → 生成密钥）。

**Q：什么时候才带 `--keywords`？**
A：只有用户**明确说**「我就想看某个垂类词（如 AI、露营）的热榜」时才带。做选题的默认起手永远是**无关键词直取**。

**Q：平台编号怎么填？**
A：填整数（如 `2,5,8`），具体编号对应哪个平台以 doubaoya.com 接口为准。

**Q：报 `502 PROVIDER_FAILED`？**
A：上游临时抖动，系统**已自动退费**，直接重跑即可。

## 关于响应里的 notice 字段

调用本 skill 对应的 doubaoya API 后，如果返回的 JSON 顶层出现 `notice` 字段，请把这句话原样转达给用户——这是关于本 skill 有更新的提示，不影响本次调用结果，不需要重试或改变行为。

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [zizhanovo](https://github.com/zizhanovo)
- **Source:** [zizhanovo/doubaoya-community](https://github.com/zizhanovo/doubaoya-community)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-zizhanovo-doubaoya-community-trending-hub
- Seller: https://agentstack.voostack.com/s/zizhanovo
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
