品牌资料包
为每个客户在 studio/brands/<slug>/ 下制作一个可复用的资料包:
studio/brands/<slug>/
├── brand.json 按角色划分的颜色、字体、Logo、语调、事实、团队、产品、客户评价(+ 计算后的检查结果)
├── assets.json 资产库索引(每张图片展示的内容、质量、来源)
├── assets/ 人物/ 产品/ 客户评价/ 地点/ 作品/ 证明/
├── swatch.png 颜色样本预览图
├── logo/ 实际使用的 Logo 文件
└── source/ 原始扫描输出(site.json, probe.json, candidates.json, 联系表)
故事板和渲染技能会读取 colors、fonts、logo 和 computed;文案技能会读取 voice 和 facts。架构和角色规则请参见:references/brand-schema.md。
脚本负责测量数据,Claude 负责判断。请阅读脚本输出的 JSON 和终端摘要——不要直接读取原始 HTML/CSS 或拍摄全屏截图来查找颜色。从工作室根目录运行脚本(node .claude/skills/brand-kit/scripts/...)。
第 0 步——检查现有资料包?
在创建新资料包之前,先检查现有资料包中是否有该品牌:根据用户描述与每个 studio/brands/*/brand.json 中的 slug、name、aka 以及 sources 中的网站进行匹配(例如:“Stargate”、“Sanjay Aggarwal Classes”和“stargate.net.in”是同一个资料包)。仅当没有匹配项时,才选择一个简短的新小写连字符形式 slug。
- 已批准的资料包: 直接从
brand.json获取答案并展示swatch.png——无需扫描或运行脚本。对于简单问题(如“Stargate 的颜色是什么?”)直接回答即可。仅在用户要求刷新或更新时才重建。 - 草稿资料包: 使用现有的 swatch 从第 7 步(批准)继续;不要重新扫描。
- 已批准但缺少资产库的资料包(没有
assets.json):仅运行第 5 步,然后重新批准。当故事板需要图片时会请求此操作。 - 刷新: 从第 1 步开始重新运行,保留所有用户手动设置的内容(
from: "user"),并递增version。
第 1 步——收集来源
使用所有可用的信息,按以下优先级排序:
- 用户的指示(如“我们的蓝色是 #1F3C88”)——始终优先。
- 用户提供或放入视频
assets/目录的品牌指南 / Logo 文件。 - 网站。
如果缺少任何会影响结果的信息,只问一次——通常只需问:“您有 Logo 文件或品牌指南吗?如果没有,我会从网站上获取。”不要因此阻塞流程。
第 2 步——扫描网站
- 静态扫描(始终执行):
node .claude/skills/brand-kit/scripts/site-extract.mjs <url> studio/brands/<slug>/source/site.json输出 CSS 颜色(网站与框架的计数、CSS 变量)、字体、Logo 候选、元数据、联系信息和标题。 - 渲染探测(当内置浏览器可用时——结果更准确,因为它测量实际屏幕上的内容):打开网站,然后在
javascript_tool中运行 scripts/browser-probe.js 的内容。将其 JSON 保存到source/probe.json。它会按屏幕面积报告背景颜色,按文本量报告文本颜色,按钮颜色,标题和正文的字体,以及 Logo 图片。
如果静态扫描未发现任何网站颜色(完全由 JS 渲染的网站)且没有可用的浏览器,则依赖 Logo 并说明情况。
第 3 步——Logo
选择最佳候选(依据 score、alt、尺寸以及探测器的 logos);优先选择 SVG 或最大的 PNG,避免使用 favicon,除非没有其他选择。然后运行:
node .claude/skills/brand-kit/scripts/logo-palette.mjs studio/brands/<slug>/logo <logo-url-or-path> [...]
这会将文件保存下来,并报告每个文件按颜色占比(忽略透明像素)得到的实际颜色及其色调(所需的背景色)。删除任何最终发现不是 Logo 的下载文件。如果只有 favicon 或照片存在,请告知用户并请求提供合适的 Logo 文件。
第 4 步——决定角色分配
填充 brand.json(格式见架构参考)。判断规则:
- 品牌颜色应来自品牌本身,而非插件。 忽略
framework颜色和主题默认值,除非探测结果确实显示它们在页面中占主导地位。 - 主色 = Logo 的主要彩色,并通过网站(页眉、大区块、品牌 CSS 变量)确认。如果 Logo 和网站不一致,优先选择 Logo 的颜色并备注。
- 强调色 = 网站主要按钮/CTA 的颜色(如果与主色不同);否则为 Logo 的第二种颜色;如果都没有,则推导出一个(互补或暖色对比)并标记为
derived。 - 次要色 仅在品牌明确使用第二种颜色时才设置。不要为了填充而随意设置。
- 背景色、表面色、墨色、柔和色 根据网站的实际背景和文本颜色设定,并根据屏幕进行调整:纯 #000 文本调整为接近主色的深色是可以接受的。
- 高亮色(可选):一种浅色、饱和度高的颜色,用于标记高亮,如果品牌有或适合。
- 字体 根据探测结果(或静态扫描):标题字体 = 标题使用的字体,正文字体 = 正文使用的字体。
- 语调和事实 根据网站的标题、元数据和联系信息提取:标语、口头使用的名称、默认 CTA 和联系详情、语调词汇、应避免的声明(无法证明的超级形容词、网站未实际显示的数字)。每个事实都附带来源和日期。
设置 status: draft,version: 1(或递增),updated: <今天日期>。
第 5 步——资产库
一次性收集品牌自己的图片,以便每个视频都可以使用真实的人物、产品和证明,而不是纯文字场景。适用于任何业务——通用类别如下:
| 类别 | 覆盖范围 |
|---|---|
people | 创始人、团队、员工、专家(医生、厨师、教师、顾问……) |
offering | 产品、服务、课程、菜单项、套餐、计划 |
testimonial | 客户照片、评论截图、结果/成果证明图片 |
place | 场所、商店、诊所、教室、办公室、活动 |
work | 作品集、画廊、项目、前后对比 |
proof | 奖项、证书、合作伙伴/客户 Logo、媒体报道 |
node .claude/skills/brand-kit/scripts/collect-assets.mjs studio/brands/<slug> <site-url>(对于不应遗漏的页面,可添加--pages url1,url2)。它会从所有类别中选择页面,下载每张图片的最大版本,删除图标/重复项/小文件,并输出source/candidates.json(尺寸、质量、猜测的类别、alt 文本、附近文本)以及 一份 联系表source/candidates-sheet.png。- 查看一次联系表;使用
candidates.json中的文本(名称、引用、说明)来识别主题。保留视频可能实际使用的图片;跳过占位图、其他品牌的素材以及高度重复的图片。 - 编写
assets.json(格式见架构参考):对每张保留的图片,记录其candidateid、目标file(<类别>/<描述性名称>.jpg)、kind、subject、一行description、bakedText(如果图片上印有文字/价格为 true)、可选的crop(用于去除内嵌的标签或边框)以及source。在描述中备注任何有时效性的信息(价格、日期)。 node .claude/skills/brand-kit/scripts/finalize-assets.mjs studio/brands/<slug>—— 将选中的文件复制/裁剪到assets/目录,并记录尺寸和quality(full≥ 700 像素,card≥ 300 像素,低于此的为avatar-only),然后删除候选文件。- 将匹配的文字事实添加到
brand.json(每个都附带来源和日期):team(姓名、角色、凭据、资产 id)、offerings(名称、详情、资产 id)、testimonials(姓名、简短原话引用、详情、资产 id),以及proof(如果有)。在保存前对照页面文本验证声明——引用必须是原话。
告知用户需要与客户确认客户照片的使用权限。
第 6 步——构建并检查
node .claude/skills/brand-kit/scripts/build-kit.mjs studio/brands/<slug>
该脚本会计算同色系颜色、色阶、对比度检查以及 Google Font 的可用性,将结果写入 computed,并生成 swatch.png。修复每个可修复的警告(调整 muted/ink 的明度,将字体替换为最接近的 Google Font 并将原始字体保留在 original 中),然后重新运行直到没有警告,或者剩余的警告都有合理解释。每个你接受而未修复的警告都会成为 usage 中的一条规则(例如“accent 是填充色;绝不要在白色上使用强调色文本”),以便故事板和渲染阶段能够遵守。然后查看一次 swatch.png —— 这是此技能需要查看的唯一图片。
第 7 步——批准
向用户展示色板和一个简短摘要:
- 每个角色 → 十六进制值、颜色名称、来源(标记任何
derived的内容) - 字体(以及任何替换)
- 使用的 Logo 文件及其需要的背景色
- 标语、默认 CTA、联系信息、应避免的声明列表
- 资产库:各类别数量、任何低分辨率或带有内置价格的图片、权限说明
- 任何遗留的警告
根据用户要求进行修改(用户设置的值会标记为 from: "user"),重新运行 build-kit.mjs,一旦获得批准,设置 status: approved 并再次运行一次,以便色板显示最终状态。
交接
当资料包获得批准后,如果正在制作视频,将 brand: <slug> 写入视频的 brief.md 中,并告知用户哪些阶段将使用它。保持结束语简短:资料包路径、主色/强调色十六进制值、字体。