跳到主要内容

打包 .channekcard

.channekcard 是频道卡的分发形态:一个 zip 单文件包 = 频道的做法那一半 + 可选的 plugins/(按 requires 收进来的全局插件)。

分享是拷贝做法,不拷作品与身份​

导出一个频道,带走的是「这类创作怎么做」,不是你做出来的东西,也不是你本人:

内容
会带走channel.json(去掉顶层 id / slug)、sop/ 这类做法文件、频道插件(卡的 plugins 点名的目录)、layout.sections 里标了 recipe 的区;按 requires 收携带的全局插件
不会带走layout.contentDir 与没标 recipe 的 sections(做出来的东西)、点开头的本机状态(.channek/、.claude/)、node_modules 这类生成物,以及 bundle.omit 声明的部分
改成问题questions 点名的字段(人设、口号这类):导出时撤下你的原值、改作示例,收卡人开频道时被问到,可以不填
"questions": {
"profile.persona": { "label": "人设" },
"profile.slogan": { "label": "口号", "optional": true }
}

问卷只认这里点名的字段——收卡人不能借问卷改卡的任意字段。导出时系统还会扫一遍做法文件,把写死了频道名或人设的地方指给你:别人用这张卡时 AI 也会照着说,建议改成通用说法。导出回执会讲清哪些内容留在你这儿、哪几项不带走。

导出用 app 的导出功能,不要手工 zip——导出器负责剥本机路径、排除内容与本机状态、撤下问卷字段的原值。

组合包:一起分发,各归各位​

导出时,打包器可以把卡 requires 里声明、且本机已装的全局插件一并收进包里——收卡人拿到一个文件就是完整的一套。导入时拆包分道处理:

  • 卡进卡库——纯数据,免代码信任门,但过容器安检(逐条目拒绝路径逃逸、软链、超限体积等,防的是压缩包本身的攻击面);用卡开频道时,做法文件与频道插件整套拷进新文件夹;
  • plugins/ 逐个走插件安装——各过各的信任门与签名校验,逐项向用户披露 id / 版本 / 信任级 / 权限并要求确认;
  • 频道插件跟着新频道落盘,不在导入时装——收卡人第一次打开那个频道时,先过一张信任卡(见卡与插件的关系)。

channel.json 本身恒无插件实体——组合包里的全局插件只是分发时的同行,不是嵌套。

bundle 段:出门时不带什么、带一条什么样​

"bundle": {
"omit": [
{
"path": "brand/ip-actions", // 频道根内相对路径,前缀匹配
"reason": "IP 动作素材与形象绑定,请用你自己的形象生成一套"
}
],
"demo": {
"path": "示例/first-video", // 随卡示例内容(频道里的独立目录)
"license": "sample-only", // sample-only(默认) / cc-by / inherit
"reel": "示例/reel.mp4" // 可选样片(≤30s,市场种草用)
}
}

omit 声明「收卡人应该自己产出」的部分。一条声明同时服务两处:打包时跳过、导入披露时告诉对方「这块要你自己做」——分成两个字段就可能不一致,而不一致的表现是「包里没有、也没人告诉我要补」。

demo 是随卡的示例内容:一条能空跑一遍的样例,让收卡人不建内容就看得出「这张卡产出的东西长什么样」。它住频道里的独立目录、不进内容目录——示例不是频道的内容,混进去会污染条目列表与进度判据。license 默认 sample-only:作者带一段自己的片子作样例,不代表授权拿去商用;写 inherit 才跟随卡本身的许可。

瘦身:不是优化,是前提​

品牌套件动辄几百 MB 到上 GB,不可能整包塞进卡包。打包要挑「买家真正需要的」:

  • 带走:授权允许的字体、logo、色板、复用片段、提示词、文档;
  • omit 掉:与作者形象绑定的素材(用 reason 说清怎么补)、生成物缓存、超大参考视频;
  • 展示物料(封面/截图/预告片)优先走 meta 的外链,别打进包。

安全边界(作者也该知道)​

  • 打包与导入共用同一套容器硬化:绝对路径、逃根、软链/硬链、设备条目、超限体积与文件数、异常压缩比,任何一条命中即拒——别试图用「聪明的」目录结构绕;
  • 组合包内的 T1/T2(带代码)插件必须携带有效签名,否则拒装而非警告;
  • 导入第一屏(任何解包落盘前)会披露「本包含 N 个可执行插件 · 最高信任级」——插件确认与卡导入在界面上视觉分离,「以卡之名诱装插件」这条路是被堵死的。
备注

命名空间提醒:卡 id 用 <publisher>.<name>(点分割,publisher 全局注册、只允许小写字母数字连字符),channek.* 保留给第一方。id 是不可变主键——发布后永不改名,要改名等于发一张新卡。