跳转到内容
GitHub

介绍

书源是 TRNovel 接入网络小说的方式:一份声明式 JSON,告诉引擎如何在某个网站上搜索、浏览分类、读取书籍信息、列出目录(含分卷)、抓取正文

TRNovel 的书源是 trnovel-booksource/v2 格式。和传统的「紧凑字符串 DSL」(如 [property=og:novel:book_name]@content##简介:)不同,v2 里每个字段都是一个结构化的「规则」对象:

// 旧式紧凑 DSL(不再使用)
"name": "[property=og:novel:book_name]@content"

// v2 结构化规则
"name": { "via": "css", "select": "[property=\"og:novel:book_name\"]", "extract": { "attr": "content" } }

这样做的好处:

  • 可读、可校验:字段含义一目了然,JSON Schema 能静态约束。
  • 对 AI 友好:结构清晰,AI 能可靠地生成与修改 —— 配套的 booksource-generator skill 可以据网站 URL 自动生成书源(见制作书源)。
  • schema 永不漂移:book-source.schema.json 由 Rust 类型自动生成,与引擎行为始终一致。
字段必填说明
schema固定为 "trnovel-booksource/v2"
name书源名称
url站点根地址(模板里的 {{base}})
group分组(便于管理)
http请求配置:headers / cookies / warmup / charset / 取页模式 / 超时 / 重试 / 限速
search搜索能力
explore分类浏览能力
bookInfo书详情页的字段抽取
toc目录(章节 + 分卷)
content正文抽取
samples黄金样例,驱动 doctor 校验与运行期自愈

字段详解见书源结构,规则语法见规则语法。规则的取值后端支持 CSS / XPath / JSONPath / 正则;clean 流水线内置 加解密(AES/DES)、编解码(base64/hex/url)、哈希(md5/sha/hmac)、繁简转换,足以应对正文加密与 URL 签名等反爬;极少数动态场景另有 JS 逃生舱

minimal.v2.json
{
  "schema": "trnovel-booksource/v2",
  "name": "示例书源",
  "url": "https://example.com",
  "bookInfo": {
    "name": { "via": "css", "select": "h1.book-title", "extract": "text" },
    "tocUrl": { "via": "css", "select": "a.catalog", "extract": { "attr": "href" } }
  },
  "toc": {
    "list": { "via": "css", "select": ".chapter-list a" },
    "name": { "via": "raw" },
    "url": { "via": "css", "select": "a", "extract": { "attr": "href" } }
  },
  "content": {
    "value": { "via": "css", "select": "#content", "extract": "html" }
  }
}
据网站逆向/AI 生成 → trn doctor 校验 → trn import 导入 → trn -n 选用