跳转到内容

插件清单与格式字段

本页是 Kabegame 插件 package.json(KGPG v3 自描述清单)的字段速查。格式的整体结构见 插件格式,后端选择见 爬虫后端

「最低版本」标注插件用到该字段/能力时应在 engines.kabegame 声明的最低应用版本。基线:V8 / WebView 插件本身自 4.3.0 起就绪;标注更高版本的字段是后续增量。

.kgpg 目录结构

plugin-name.kgpg
├── package.json # v3 自描述清单
├── dist/main.js 或 crawl.js # main 指向的脚本
├── icon.png # kbIcon
├── configs/*.json # kbRecommendedConfigs
├── providers/*.json5 # kbPathQLProviders
├── metadata_migrations/migrate.js # kbMetadataMigration
├── doc_root/ # kbDoc
└── templates/description.ejs # kbDescriptionTemplate

package.json 字段

标准 npm 字段

字段类型必填最低版本说明
namestring4.3.0显示名回退(无点后缀)。真实插件 ID 是目录名 / .kgpg 文件名,不是 name。支持多语言点键。
versionstring4.3.0语义化版本 major.minor.patch,每段 ≤255。同 ID 升级必须 bump。
descriptionstring4.3.0默认描述,支持多语言点键。
authorstring | object4.3.0作者。对象形式取 author.name
privateboolean纯 npm 语义,Kabegame 不读;样例常写 true 防误发 npm。
mainstring4.3.0入口脚本的包内相对路径。经安全校验(禁 .. / 绝对路径)。
engines.kabegamestring否(强烈建议)4.3.0最低应用版本,仅支持 >=X.Y.Z。是 minAppVersion 的权威来源。
scriptsobjectnpm 构建脚本(如 rspack build);Kabegame 不读,仅打包前本地构建用。

多语言点键name / description 以及 kbConfig 里的 name / descripts / options[].name 都用扁平点号键(不是嵌套对象):namename.zhname.enname.janame.koname.zhtw。无点后缀的作为 default 回退。前端按当前 locale 取值。

kb* 专有字段

字段类型必填最低版本说明
kbPackageVersionnumber4.3.0清单格式版本,必须 ≥3。当前生态一律 3
kbBackendstring4.3.0脚本后端:"v8""webview""rhai" 报「Rhai 后端已停止支持」;其它值报错。
kbBaseUrlstring4.3.0基础 URL。运行时作为 common.base_url 注入;WebView 后端还用作任务窗口初始 URL。空串合法。
kbConfigarray4.3.0采集对话框表单变量定义数组,顺序即展示顺序。见 kbConfig 变量
kbLabelsarray4.4.0插件声明的标签数组。见 kbLabels
kbIconstring4.3.0包内图标 PNG 相对路径。
kbDocobject4.3.0多语言文档映射:键 default/zh/en/ja/ko/zhtw,值为 .md 相对路径。
kbRecommendedConfigsstring[]4.3.0推荐运行配置文件路径数组(configs/*.json)。
kbPathQLProvidersstring[]4.3.0PathQL provider DSL 文件路径数组(providers/*.json5),后端用。
kbDescriptionTemplatestring4.3.0图片描述模板 .ejs 路径。
kbMetadataMigrationstring4.3.0单一 metadata 迁移脚本路径(须 .js,ES module,export migrate)。

所有 kb* 路径字段统一走安全校验:非空、包根相对、禁 ..、禁绝对路径 / 盘符 / 前导 /

kbConfig 变量

kbConfig 是变量对象数组。每个变量:

字段类型必填说明
keystring变量名;脚本中 V8 用 custom[key],WebView 用 Kabegame.vars[key]
typestring变量类型(见下表)。
namestring(+ 多语言点键)展示名。
descriptsstring(+ 多语言点键)说明文案(注意拼写是 descripts)。
default随 type默认值。
min / maxnumberint / float 的取值范围。
optionsarrayoptions/checkbox 必填选项列表,元素为 { name, variable, when? }name 支持多语言点键)。
whenobject条件显示:{ otherKey: [值...] },某 key 当前值 ∈ 数组才显示;多 key 之间为 AND。可挂变量或单个 option 上。
formatstringdatedayjs 格式,决定提交的日期字符串;默认 YYYY-MM-DD
dateMin / dateMaxstringdate可选日期范围:YYYY-MM-DD 或关键字 today / yesterday

变量类型

type脚本收到的值说明
intnumber(整数)min / max
floatnumbermin / max
stringstring单行文本
booleanbool开关
datestringformat / dateMin / dateMax 控制
optionsstring(选中项的 variable单选下拉;UI 显示 name,脚本收到 variable
liststring[]可变长字符串列表;options 为字符串建议项
checkbox对象 { [variable]: bool }多选;脚本中通过 key.akey.b 访问;default 可为勾选项数组或 {variable:bool}
path / file / folder / file_or_folderstring路径选择器(分别为文件或文件夹 / 仅文件 / 仅文件夹 / 二者)。前端已实现,未写入 schema,主要面向本地导入类插件。

options 示例

{
"key": "quality",
"type": "options",
"name": "图片质量",
"options": [
{ "name": "高清", "variable": "high" },
{ "name": "中等", "variable": "medium" }
],
"default": "high"
}

checkbox 示例(脚本中 wallpaper_type.desktopwallpaper_type.mobile

{
"key": "wallpaper_type",
"type": "checkbox",
"name": "壁纸类型",
"options": [
{ "name": "桌面壁纸", "variable": "desktop" },
{ "name": "手机壁纸", "variable": "mobile" }
],
"default": ["desktop", "mobile"]
}

when 条件显示示例sourceuser / bookmark 时才显示 artist_id

{
"key": "artist_id",
"type": "string",
"name": "画师 UID",
"when": { "source": ["user", "bookmark"] }
}

kbLabels

4.4.0 插件声明的标签,渲染在源列表 / 详情里。数组元素:

字段类型必填说明
idstring标签 id。命中预定义集合时用内置文案 + 颜色。
namestring未知 id 的回退显示名。
descstring仅未知 id 的回退说明。

预定义标签

命中下列 id 时只填 id 即可,文案与颜色由应用提供:

id含义颜色
auth.needCookie该源可能需要先在畅游里登录取得 cookie 才能爬取warning
auth.needProxy该源在中国大陆可能需要代理才能完整访问warning
content.res.mobile提供移动端 / 竖屏分辨率壁纸primary
content.res.desktop提供桌面端 / 横屏分辨率壁纸primary
content.nsfw可能含 NSFW / R-18 内容danger
content.type.video提供视频 / 动图壁纸success
{
"kbLabels": [
{ "id": "auth.needCookie" },
{ "id": "content.nsfw" }
]
}

完整示例骨架

{
"name": "myplugin", // 显示名回退;真实 ID = 目录名
"version": "0.1.0",
"description": "",
"description.en": "",
"author": "You",
"private": true, // npm 语义,Kabegame 忽略
"engines": { "kabegame": ">=4.4.0" }, // = minAppVersion 权威来源
"kbPackageVersion": 3, // 必须 ≥3
"kbBackend": "v8", // v8 | webview
"main": "dist/main.js", // v8: dist/main.js;webview: crawl.js
"kbBaseUrl": "https://example.com", // → common.base_url
"kbLabels": [{ "id": "auth.needCookie" }], // 4.4.0+
"kbConfig": [ /* 变量定义 */ ],
"kbIcon": "icon.png",
"kbDoc": { "default": "doc_root/doc.md", "en": "doc_root/doc.en.md" },
"kbRecommendedConfigs": ["configs/x.json"],
"kbPathQLProviders": ["providers/tag_provider.json5"],
"kbDescriptionTemplate": "templates/description.ejs",
"kbMetadataMigration": "metadata_migrations/migrate.js"
}

延伸阅读