Back to skills
extension
Category: Data & AnalyticsNo API key required

番茄小说榜单分析

番茄小说榜单抓取与分析,支持阅读榜/新书榜、男频/女频、19个男频+18个女频细分品类。

personAuthor: user_7079a474hubcommunity

番茄小说榜单分析

通过番茄小说官方 API 获取排行榜数据,内置自定义字体解码,提供完整字段用于分析。

Quick Start

Genre 参数支持 ID 或中文名(模糊匹配):-g 1140 / -g "东方仙侠" / -g "都市" 均可。

支持 PythonNode.js 两种运行时,任选其一即可。

看榜

# 指定品类排行(Python 或 Node.js 均可)
python3 scripts/fetch_rank.py -c 1 -t 0 -g 1140 -l 10   # 男频·阅读榜·东方仙侠 Top10
node scripts/fetch_rank.js -c 2 -t 1 -g 248 -l 20       # 女频·新书榜·玄幻言情 Top20

# 全站总榜(跨品类聚合,按热度排序)
python3 scripts/fetch_rank.py -c 1 -t 0 -g 0 -l 30      # 男频阅读总榜 Top30

找书

# 按关键词搜(书名/作者/简介)
python3 scripts/fetch_rank.py -c 1 -t 0 -g 0 --filter "系统" -l 30

# 看新书(新书榜,发现上升期作品)
node scripts/fetch_rank.js -c 1 -t 1 -g 0 -l 20

# 看简介(含最新章节、更新时间和内容简介)
python3 scripts/fetch_rank.py -c 2 -t 0 -g 248 -l 10 -v

导出分析

# 导出 CSV,进 Excel / Python 分析
python3 scripts/fetch_rank.py -c 1 -t 0 -g 0 -l 50 -f csv -O 男频总榜.csv

# 导出 JSON,程序化处理
node scripts/fetch_rank.js -c 2 -t 1 -g 0 -l 30 -f json -O 女频新书.json

# 强制刷新(忽略缓存)
python3 scripts/fetch_rank.py -c 1 -t 0 -g 1140 -l 10 --no-cache

参数体系

| 参数 | 值 | 说明 | | -------------- | -------------- | ------------------------------------------ | | -c, --category | 1, 2 | 1=男频, 2=女频 | | -t, --type | 0, 1 | 0=阅读榜, 1=新书榜 | | -g, --genre | ID或名称 | 品类过滤。0=全部。支持模糊匹配如"都市" | | -l, --limit | N | 返回条数(默认20) | | -f, --format | table/json/csv | 输出格式(默认table) | | -O, --output | 文件路径 | 输出到文件 | | -v, --verbose | flag | 详细模式:显示最新章节、更新时间、简介预览 | | --filter | 关键词 | 按书名/作者/简介过滤结果 | | --no-cache | flag | 跳过本地缓存,强制实时请求 |

完整品类映射见 categories.md

数据字段

| 字段 | 含义 | | --------------------- | ------------------------------------- | | bookId | 书籍唯一 ID | | bookName | 书名 | | author | 作者 | | abstract | 书籍简介 | | thumbUri | 封面图 URL | | wordNumber | 总字数 | | read_count | 在读人数/热度值 | | creationStatus | "0"=已完结, "1"=连载中 | | lastChapterTitle | 最新章节标题 | | lastChapterUpdateTime | 最后更新 UNIX 时间戳 | | currentPos | 当前排名 | | rankPosDiff | 排名变化(正数上升,负数下降,0不变) |

能力清单

基于 API 实际返回的字段,以下分析均可直接执行。

📊 看榜 — 基础查询

| 能力 | 怎么做 | 拿到什么 | | ------------ | ------------------------ | ------------------------------------------ | | 指定品类排行 | -g <品类> 指定单一品类 | 该品类阅读榜/新书榜 Top N | | 全站总榜 | -g 0 跨品类聚合 | 19/18 品类去重后按热度总排序,含品类标签 | | 新书发现 | -t 1 切换到新书榜 | 上升期作品,rankPosDiff 看爬升速度 | | 排名变动 | 看 rankPosDiff 字段 | ▲N / ▼N / —,识别飙升/暴跌作品 | | 关键词搜书 | --filter "系统" | 在书名/作者/简介中模糊匹配,适合找特定题材 |

📈 品控 — 内容评估

| 能力 | 怎么做 | 拿来干嘛 | | -------- | --------------------------------------- | ------------------------------------------------------- | | 看简介 | -v 详细模式输出 abstract | 快速了解故事设定、世界观、金手指类型 | | 追更判断 | -v 输出 lastChapterTitle + 更新时间 | 看是否还在活跃更新、最后一次更新距今多久 | | 字数评估 | wordNumber 字段 | 判断是幼苗(<50万字)、成长期(50-150万)、还是肥书(>150万) | | 热度判断 | read_count 在读人数 | 横向对比同品类热度水位 | | 完结判断 | creationStatus 字段 | "0"=已完结可宰,"1"=连载中需追 |

📊 分析 — 趋势洞察(导出 CSV/JSON 后分析)

| 场景 | 方法 | 产出 | | -------------- | --------------------------------- | ---------------------------------------- | | 品类热度对比 | 抓取多品类,对比平均 read_count | 哪个品类竞争最激烈 / 流量最大 | | 热门题材趋势 | 从 abstract 提取高频关键词 | 系统流、重生、穿越、赘婿、快穿… 各占多少 | | 作者势力分布 | 聚合作者上榜次数,识别跨品类作者 | 谁在霸榜,谁是新人黑马 | | 连载 vs 完结比 | 统计 creationStatus 分布 | 该品类是追更为主还是宰书为主 | | 字数分布 | 分档统计 wordNumber | 幼苗/成长期/肥书各多少,判断品类成熟度 | | 更新活跃度 | 统计 lastChapterUpdateTime | 最近 24h/3d/7d 内更新的比例 | | 新书爬升速度 | 新书榜 rankPosDiff 分析 | 哪些新书势头最猛 | | 男女频对比 | 同品类跨性别对比 | 男频东方仙侠 vs 女频玄幻言情差异 | | 跨榜对比 | 同一品类阅读榜 vs 新书榜 | 老书统治力 vs 新书冲击力 |


限制说明

做不到的事: 历史趋势追踪(API 只返回当前快照,无时间序列)、章节正文内容、读者评论/评分、作者主页详情、自定义搜索(只能 --filter 已抓取的结果)。

可扩展: 搭配 cronjob 定时抓取存库,可自行构建历史趋势数据。

技术说明

所有数据均通过番茄官方 /api/rank/category/list API 获取。API 返回的文本字段(书名、作者、简介)仍使用自定义字体编码,脚本内置 DIT_DATA 解码表自动还原为可读中文。全品类模式通过并发请求(最多 4 路,带随机延迟防反爬)各子品类 API 后去重聚合。内置指数退避重试(最多 3 次)应对瞬时网络故障,本地文件缓存(5 分钟 TTL,--no-cache 强制刷新)。脚本启动时自动校验 GENRE_MAPcategories.md 一致性,不一致打 WARNING。

双运行时支持

提供 PythonNode.js 两个完整实现,功能完全一致:

| 文件 | 运行时 | 依赖 | | ------------------------------ | ----------- | ----------------------- | | scripts/fetch_rank.py | Python 3.x | 标准库 | | scripts/fetch_rank.js | Node.js 14+ | 标准库 | | scripts/shared/dit_data.json | 共享 | 字体解码映射表(362条) |

字体解码映射表 (DIT_DATA) 从硬编码提取为 scripts/shared/dit_data.json,两个版本共享同一份数据,维护一份即可。

参考