playlet-bili-feed · git:20260818.cc24eab · 2026-08-18 · sha256 a1383d9445d6281d

playlet-bili-feed git:20260818.cc24eabA

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

---
name: playlet-bili-feed
description: B站短剧爆款内容追踪工具,每日自动扫描B站短剧创作内容,按点赞量筛选爆款作品,智能聚类题材后生成可视化HTML日报与创作趋势分析。⚠️查询前脚本先做输入校验:关键词需命中短剧题材词库(topic_keywords 中规定的题材名+全部相关词,如「打脸」命中逆袭题材相关词),命中后直接使用该关键词查询数据;不满足时提醒'关键词不满足查询条件'并推荐相关词,且不发起接口请求。数据每日15:00更新前一天数据,目标日期无数据时必须先告知用户并等待确认后才能调用接口,禁止自动获取。当用户需要查询B站短剧爆款日报、分析短剧题材趋势、查看热门达人表现或生成短剧创作趋势报告时使用。
---

# 短剧-B站信息源

## 简介

B站短剧爆款内容追踪工具,每日自动扫描B站短剧创作内容,按点赞量筛选爆款作品,智能聚类题材后生成可视化HTML日报与创作趋势分析。

通过数据驱动的方式,帮助短剧创作者、MCN机构和内容运营人员精准把握B站短剧流量风口。

你可以:
- 📊 每日获取B站短剧爆款榜单
- 🏷️ 自动识别热门题材方向(穿越/霸总/重生/悬疑等)
- 📈 深度分析爆款标题特征与达人表现
- 📄 一键生成深色主题HTML可视化日报

适用于短剧创作者、MCN机构、内容运营人员等需要追踪B站短剧趋势的场景。

> **重要**:数据每日15:00更新前一天数据(实际可能延迟,以脚本真实探活为准)。查询前脚本先做输入校验:关键词需命中短剧题材词库(`topic_keywords` 中规定的**题材名+全部相关词**,如「打脸」命中逆袭题材相关词),**命中后直接使用该关键词查询数据**;不符合时**不请求任何接口**,直接提醒"关键词不满足查询条件"并推荐相关词。**无数据确认制**:查询无匹配数据或全量数据不足时,禁止自动发起任何额外查询(禁止自动降级全量、禁止自动扩展题材),先展示推荐题材关键词并询问用户,用户确认后才可发起查询;日期超出有效查询范围时提醒并自动回退最近有数据日期,无需用户确认。

## 功能特性

### 🎯 核心功能

| 功能模块 | 能力描述 | 核心价值 |
|---------|---------|----------|
| 爆款发现 | 从B站短剧中按点赞量筛选热门内容 | 精准定位高热度短剧作品 |
| 题材聚类 | 自动识别题材方向(穿越/霸总/重生/悬疑等) | 每天题材分类由内容动态决定 |
| 智能查询 | 默认查询全部短剧,关键词命中词库(题材名+相关词)直接查询,数据不足时提示推荐题材等待确认 | 节省接口额度,高效获取数据 |
| 自定义查询 | 用户可指定任意题材/达人/关键词定向查询 | 灵活覆盖任意短剧细分方向 |
| 创作洞察 | 分析爆款标题特征、题材趋势、达人表现 | 深度挖掘创作规律 |
| 可视化日报 | 深色主题HTML,封面图+互动数据+作品直链 | 直观展示每日短剧热点 |
| 一键订阅 | `--subscribe` 开启每日自动产出 | 日报自动攒在本地文件夹 |

### ✨ 特色亮点

- **⚡ 探活式日期预检**:调用前先用轻量请求(无keyword, pageSize=1)真实探测目标日期是否有数据,替代纯本地时钟推断,自动拦截无效查询,避免浪费API额度
- **🧭 前置输入校验**:查询前先判断用户的分类/关键词是否符合短剧题材词库(题材名+全部相关词,命中后**直接使用该关键词查询数据**)、日期是否在有效查询范围;全部不满足时**不请求任何接口**,直接提醒"关键词不满足查询条件"并推荐相关分类和关键词;混合词保留有效关键词查询
- **🔄 自动回退**:`--latest` 自动向前回退最多7天,找到最近有数据的日期再出日报,彻底告别"查到空就报错"
- **⏸️ 无数据确认制**:查询无匹配数据或全量数据不足时,**不自动扩展题材、不自动降级全量**,提示推荐题材关键词并等待用户确认后再查询
- **🧠 结构化空因**:空结果时明确输出原因(数据源无数据/关键词无匹配/接口异常)并给出下一步建议
- **🎨 B站风格日报**:深色主题 + B站蓝(#00A1D6),封面图懒加载,BV号直链跳转
- **📊 零值隐藏**:互动指标为0时自动隐藏,日报信息更清爽

## 一键安装

### 前置条件

- Python 3 运行环境
- 已注册红狐Hub账号并获取 API Key

### API Key 获取

前往 [红狐Hub 官网](https://redfox.hk?source=github) 注册,登录后在个人中心获取,格式为 `ak_xxxxxxxx`。新注册用户获赠免费积分。

### 环境变量配置

数据查询接口通过请求头 `X-API-KEY` 鉴权,Key 从环境变量 `REDFOX_API_KEY` 获取。

| 变量名 | 必填 | 说明 |
|--------|------|------|
| `REDFOX_API_KEY` | 是 | 红狐Hub API 访问密钥,格式 `ak_xxxxxxxx` |

**配置方式**:

- **macOS/Linux**:将 `export REDFOX_API_KEY=<值>` 追加到 `~/.zshrc` 或 `~/.bashrc`,然后 `source` 使其生效
- **Windows**:`[Environment]::SetEnvironmentVariable("REDFOX_API_KEY", "<值>", "User")`(需重启终端)
- 配置后验证:`echo $REDFOX_API_KEY`(macOS/Linux)或 `echo %REDFOX_API_KEY%`(Windows)

> 接口调用时通过 `source` 字段(值为 `短剧B站信息源-GitHub`)同步记录来源,无需额外请求保存接口。

## 使用指南

> **详细执行流程、字段映射、HTML规则、指标展示规则**见 [core_workflow.md](references/core_workflow.md)

### 基础使用

#### 1. 日期预检(每次查询前自动执行)

- **前置校验(v2.2)**:先判断日期是否在有效查询范围——格式必须为 YYYY-MM-DD、不能晚于今天;超出范围时提醒"日期超出有效查询范围"并推荐最近可用日期
- **估算起点**:15:00前最新可用日期 = T-2(前天),15:00后 = T-1(昨天)——仅作初始起点
- **真实探活**:脚本会用 `pageSize=1` 不带 keyword 的轻量请求**实际探测**目标日期是否有数据,以接口返回为准(数据源实际更新时间可能晚于15:00)
- **自动兜底(v2.1)**:用户查询的日期未更新或超过查询时间范围时,脚本自动向前回退获取最近时间范围数据,并明确告知用户"当前查询时间未更新或超过查询时间范围,已为您自动获取最近时间范围数据",无需人工确认
- `--latest` 模式同样自动向前回退(最多7天)定位最近有数据的日期
- 若回退 7 天内均无数据,提示用户稍后再试或联系数据源确认更新状态

#### 2. 生成爆款日报

> 用户:查一下最新的B站短剧日报
>
> 助手:检查日期可用性 → 执行脚本生成日报 → 输出趋势分析

```bash
# 生成最新一期日报(用户确认后,自动跳过无数据日期,不扣积分)
python3 "$SKILL_PATH/scripts/playlet_bili_daily.py" --latest

# 生成指定日期日报(历史日期已有数据,无需确认)
python3 "$SKILL_PATH/scripts/playlet_bili_daily.py" --date 2026-06-10
```

> **查询策略**:默认查询全部短剧(pageSize=200),数据不足(<100条)时自动追加热门题材(穿越→霸总→重生→悬疑→甜宠→逆袭),所有题材通过批量接口一次性查询。查询前自动探活目标日期,空结果自动重试1次。

#### 3. 创作趋势分析

日报生成后,**必须**基于聚类结果自动执行创作趋势分析:

1. 读取题材聚类结果,选取 TOP 5 热门题材
2. 分析每个题材的爆款数量、平均互动数据、头部作品特征
3. 识别新兴起量题材(数量少但互动高)
4. 输出结构化创作趋势报告(格式见下方输出模板)

### 高级使用

#### 自定义题材查询

用户可指定任意题材组合进行定向查询与分析:

```bash
# 查询穿越题材热门短剧
python3 "$SKILL_PATH/scripts/playlet_bili_daily.py" --topics "穿越,时空,重生"

# 查询霸总/甜宠题材
python3 "$SKILL_PATH/scripts/playlet_bili_daily.py" --topics "霸总,甜宠,总裁,虐恋"

# 查询悬疑/反转题材
python3 "$SKILL_PATH/scripts/playlet_bili_daily.py" --topics "悬疑,推理,反转,惊悚"
```

**自定义查询逻辑**:
- 用户提供的所有题材通过批量接口一次性查询,无需逐个调用
- 查询结果自动去重,题材聚类、趋势分析均基于查询结果生成
- **前置校验(v2.2)**:查询前先判断关键词/分类是否符合短剧题材词库(穿越/霸总/重生/甜宠/悬疑/逆袭/年代/战神/古装等)。不满足时明确提醒"关键词不满足短剧查询条件",并**推荐相关分类和关键词**(优先从无效词中提取题材词,再补热门题材)
- **无效条件零请求(v2.3)**:关键词/分类全部不符合短剧题材词库时,**不请求任何接口**(含探活),直接提示并推荐后停止;混合词场景保留有效关键词继续查询,无效词自动忽略
- **关键词兜底(v2.1)**:符合题材词但查询后无匹配数据时,脚本自动降级为全量查询获取数据,并明确告知用户"关键词未匹配,已为您自动获取全量数据",无需人工确认

### 输出格式(强制执行)

> ⛔ **严格执行规则**:
> - 以下模板是**唯一合法输出格式**,禁止任何自由发挥、省略、简化或重新组织
> - 禁止输出模板中未定义的额外内容(如"我来帮你…""以下是…"等口语化文字)
> - 禁止合并、跳过任何板块,即使某板块数据为"暂无"也必须保留该板块标题
> - 日报生成后,对话回复**只能**包含以下内容,不得包含其他任何文字
> - **禁止**在日报末尾追加"📝 写一篇完整执行计划?"等任何执行计划类引导提醒(2026-08-18 用户明确要求移除)

每次运行日报后,对话输出**必须严格**按以下模板原样输出(仅替换 `{...}` 占位符):

```
## 短剧-B站信息源 · {日期} 日报

**扫描 {N} 部热门短剧,聚类 {M} 个题材方向**

---

### 题材概览

| 题材 | 数量 | 占比 | 爆款亮点 |
|------|------|------|---------|
| #{题材名} | {N}部 | {X}% | 头部作品亮点描述 |
| ... | ... | ... | ... |

---

### 创作趋势分析

**一、新兴起量信号**

- 🔥 **#{题材}** — 仅{N}部但均互动{X}+,描述
(若无新兴题材,输出:暂无新兴起量信号)

**二、爆款标题特征**

| 特征模式 | 出现次数 | 典型案例 | 平均互动 |
|---------|---------|---------|---------|
| {特征1} | {N}次 | 《{标题}》 | {X}w |
| ... | ... | ... | ... |
(若无标题数据,输出:暂无爆款标题数据)

**三、核心达人榜**

| 达人 | 作品数 | 总赞 | 代表作 |
|------|--------|------|--------|
| @{达人} | {N}部 | {X}w | 《{作品}》 |
| ... | ... | ... | ... |
(若无达人数据,输出:暂无核心达人数据)

**四、题材趋势报告**

**题材**:#{题材1}
**作品数**:{N}部
**平均点赞**:{X}w
**头部作品**:《{标题}》-{点赞}w

**题材特征**:{描述该题材的共性特征}
**创作建议**:{针对该题材的创作建议}

**五、#{题材2}**

(同上格式)

**六、#{题材3}**

(同上格式)

**七、跨题材对比建议**

- **{题材}** — 建议同步关注{相关题材}的联动创作,观察题材融合趋势
(若无建议,输出:暂无跨题材对比建议)

---

**日报地址**:{HTML文件绝对路径}

> 数据说明:每日15:00更新昨天的数据
```

> 以上格式为**强制规范**,所有字段不可省略,板块标题(一、二、三、四、五、六、七)必须保留。若某模块无数据则在该板块内标注"暂无",不得删除板块本身。

### 命令速查

| 命令/参数 | 功能 | 默认值 |
|----------|------|--------|
| `--latest` | 自动使用最新有数据的日期(向前回退最多7天,跳过无数据区间) | — |
| `--date YYYY-MM-DD` | 指定日期查询(超出有效范围时提醒+推荐最近日期,未更新时自动回退) | 今天 |
| `--topics "关键词,..."` | 自定义题材查询,逗号分隔(全部不符合题材词时不请求接口直接提示+推荐;混合词保留有效词) | 全量查询 |
| `--count N` | 扫描作品数量,满足即停 | `200` |
| `--start-time` | 自定义开始时间 YYYY-MM-DD HH:MM:SS | — |
| `--end-time` | 自定义结束时间 YYYY-MM-DD HH:MM:SS | — |
| `--output-dir` | 输出目录 | `~/Downloads/QoderReports` |
| `--api-key` | 指定 API Key(覆盖环境变量) | — |
| `--subscribe` | 开启每日订阅 | — |
| `--unsubscribe` | 关闭每日订阅 | — |
| `--from-cache` | 使用缓存数据 | — |

## 使用场景

### 场景一:短剧创作者选题参考

**角色**:短剧编剧/导演

**需求**:了解当前B站短剧热门题材和爆款趋势,指导创作方向

**使用方式**:
1. 每日查看短剧日报,关注题材聚类分布
2. 分析爆款标题特征和互动数据
3. 针对新兴起量题材提前布局内容

**预期收益**:精准把握流量风口,提升作品曝光概率

---

### 场景二:MCN 机构内容运营

**角色**:MCN 运营人员

**需求**:追踪旗下达人的短剧内容表现,优化运营策略

**使用方式**:
1. 订阅每日日报,持续追踪B站短剧赛道
2. 通过核心达人榜了解竞品表现
3. 使用自定义题材查询定向分析关注领域

**预期收益**:提升内容运营效率,及时发现潜力达人

---

### 场景三:品牌方/制作方竞品监测

**角色**:短剧制作公司

**需求**:监测竞品短剧在B站的表现数据

**使用方式**:
1. 定期查询目标题材日报
2. 分析竞品爆款作品的标题特征和互动规律
3. 结合跨题材对比建议探索融合创作

**预期收益**:数据驱动内容投资决策,降低试错成本

## 项目架构

### 目录结构

```
短剧-B站信息源/
├── SKILL.md                          # Skill主文档(本文件)
├── scripts/
│   └── playlet_bili_daily.py        # 核心脚本(v2.3.1:前置校验零请求/相关词命中直查/推荐/探活/自动回退/无数据确认制)
└── references/
    ├── core_workflow.md              # 核心执行流程、字段映射、HTML规则
    └── examples.md                   # 使用示例与常见用法组合
```

### 技术栈

| 项目 | 说明 |
|------|------|
| 运行环境 | Python 3 |
| 开发语言 | Python(脚本 `playlet_bili_daily.py`) |
| 数据接口 | HTTP 调用红狐Hub B站短剧API(`queryPlayletMsgs`,`platform=6`) |
| 前端渲染 | HTML 生成日报(B站蓝 `#00A1D6` 主题色,`<img>` 懒加载,BV号直链) |
| 来源标识 | `source: "短剧B站信息源-GitHub"` |

### 数据流转

```
用户查询 → 前置输入校验(关键词命中题材词库-题材名+相关词) → 日期预检(真实探活) → API调用(queryPlayletMsgs) → 数据去重 → 题材聚类 → HTML日报生成 → 浏览器打开
              ↓(关键词/分类全部不满足)            ↓(日期未更新/超范围)       ↓(数据不足)           ↓(关键词无匹配)
       不请求接口,直接提示+推荐停止        自动回退最近有数据日期并告知  提示推荐题材等待确认(不自动扩展)  提示推荐题材等待确认(不自动降级全量)
                                              ↓
                                    终端输出趋势分析报告
```

## 常见问答

### 使用相关

**Q1: 为什么查询"今天"的数据却提示未更新?**

A: 数据每日15:00更新前一天的数据(实际更新时间可能延迟)。15:00前最新可用日期为前天,15:00后为昨天。**无需手动处理**——查询日期未更新或超过查询时间范围时,脚本会自动向前回退获取最近时间范围数据,并明确告知"当前查询时间未更新或超过查询时间范围,已为您自动获取最近时间范围数据";也可使用 `--latest` 直接定位最近有数据的日期。

**Q2: 如何查询特定题材的短剧?**

A: 使用 `--topics` 参数,多个题材用逗号分隔,如 `--topics "穿越,霸总,重生"`。所有题材批量一次性查询,无需逐个调用。查询前脚本会**先校验关键词/分类**:符合短剧题材词库(穿越/霸总/重生/悬疑/甜宠/逆袭等)才参与查询;全部不符合时**不请求任何接口**,直接提醒"关键词不满足短剧查询条件"并**推荐相关分类和关键词**,混合词场景保留有效关键词查询。

**Q3: 日报生成在哪里?**

A: 默认保存在 `~/Downloads/QoderReports/` 目录,文件名格式为 `短剧B站日报_YYYY-MM-DD.html`,生成后自动在浏览器打开。

**Q4: 如何开启/关闭每日订阅?**

A: 使用 `--subscribe` 开启每日自动产出,`--unsubscribe` 关闭。

### 故障排除

**Q5: 脚本运行报 UnicodeEncodeError 怎么办?**

A: Windows PowerShell 的 GBK 编码问题。执行前设置环境变量:`$env:PYTHONIOENCODING='utf-8'`,然后重新运行脚本。

**Q6: 提示"未找到 REDFOX_API_KEY 环境变量"?**

A: 请按"一键安装"章节配置环境变量。Windows 用户配置后需**重启终端**才能生效。

**Q7: HTML日报中图片加载不出来?**

A: B站CDN(hdslb.com)无防盗链限制,通常不会出现此问题。若遇到请检查网络连接或图片URL是否过期。

### B站短剧改造说明(从抖音版迁移)

**Q8: B站版本与抖音版本有哪些差异?**

A: 主要改造点如下:

| 改造项 | 抖音版本 | B站版本 |
|-------|---------|--------|
| platform参数 | 1 | 6 |
| 主题色 | #FB7299(粉) | #00A1D6(蓝) |
| 链接格式 | douyin.com/video/{id} | bilibili.com/video/{BV号} |
| 文件名 | 短剧抖音日报 | 短剧B站日报 |
| 图片防盗链 | 需referrerpolicy | 无需(B站CDN无限制) |
| 展示指标 | 播放/点赞/评论 | 分享/点赞/评论(零值隐藏) |
| url字段 | 有效 | None(用BV号拼接) |

**字段映射详情**见 [core_workflow.md](references/core_workflow.md)

### 验证清单

- [x] 脚本语法正确(py_compile通过)
- [x] API接口地址已更新为B站
- [x] platform参数已改为6(B站)
- [x] photoId是BV号格式,用于拼接链接
- [x] readCount有真实数据,但不展示
- [x] shareCount展示为分享数
- [x] likeCount作为主排序指标
- [x] url字段为None,用BV号拼接bilibili.com链接
- [x] coverUrl为B站CDN(hdslb.com),无需referrerpolicy
- [x] HTML主题色改为B站蓝(#00A1D6)
- [x] 指标展示:分享/点赞/评论(零值隐藏)
- [x] 链接格式:bilibili.com/video/{BV号}
- [x] source字段:短剧B站信息源-GitHub

### 获取帮助

如有其他问题,可通过项目 GitHub 仓库提交 Issue。

## 📚 参考文档

- [core_workflow.md](references/core_workflow.md) — 核心执行流程、字段映射、HTML规则、指标展示规则、与抖音差异对比
- [examples.md](references/examples.md) — 使用示例与常见用法组合