发布到市场
插件市场是由 GitHub 承载的社区插件目录,没有后端——App 直接从本仓库拉取目录文件,投稿就是普通的 PR 流程。
权威规则
提交规则、字段 Schema、审核 Checklist 和 CI 校验以 modules/README.md 为准。本页是快速上手。
目录结构
modules/
├── registry.json # 面向 App 的目录索引
├── submissions.json # CI 生成的 PR/贡献者元数据
├── README.md # 投稿指南
└── <plugin-folder>/ # 每个插件包App 同时拉取 registry.json 和 submissions.json,只展示两边都存在的插件,保证市场目录和已合并 PR 严格对齐。
添加插件
在
modules/下建一个 kebab-case 文件夹:modules/my-plugin/ ├── plugin.json # 必需 ├── plugin.html # 必需 —— 页面脚本(`<script type="hcj/page">`)+ 面板文档合一 └── icon.png # 可选,≤256KB旧版
main.js/style.css/panel.html多文件包仍可通过校验并安装;新投稿请用单文件plugin.html。在
registry.json中加条目:json{ "id": "my-plugin", "path": "my-plugin", "name": "My Plugin", "description": "做什么的", "icon": "star", "category": "CONTENT_ENHANCE", "tags": ["demo"], "version": "1.0.0", "author": { "name": "You" }, "runAt": "DOCUMENT_END", "permissions": ["STORAGE"], "urlMatches": [{ "pattern": "*://example.com/*" }], "hasCss": false }注册表保留旧字段名(大写下划线的
runAt、对象形式的urlMatches、hasCss),保证旧客户端可用——plugin.json用新字段名(document_end、matches)。保持
plugin.json与registry.json一致——id、name、version必须相同。已退役的module.json格式会被 CI 拒绝。提 PR,CI 自动跑校验。
CI 校验什么
python3 .github/scripts/ci/validate_modules.py 检查:
- JSON 合法性与必填字段(
plugin.json、registry.json) - 枚举取值(
runAt、permissions、registry 枚举) plugin.json↔registry.json一致性(id/name/version)- kebab-case 文件夹名;无孤儿/幽灵条目;
id/path不重复 - 必需文件齐全;
hasCss与style.css是否存在一致 iconUrl大小/扩展名限制- 页面脚本(
hcj/page块 /main.js)无顶层return
浏览器扩展另算
社区市场只收录 HCJ 插件包。MV3 浏览器扩展不是社区目录——浏览器扩展 tab 实时搜索 Chrome Web Store。见 Chrome MV3 扩展。
镜像
目录文件和插件图标优先走全球镜像,raw.githubusercontent.com 与 jsDelivr 自动兜底,各地(含中国大陆)都快。客户端默认缓存一小时,插件合入后无需发版即可触达。
