Communitygithub.com

品牌资料包技能

为客户创建或更新品牌资料包(颜色、字体、Logo、标语、语调、联系方式、已验证事实及资产库),存入 `studio/brands/<slug>/`,供后续所有视频复用。

品牌资料包技能 是什么?

该技能(visalnaqvi/video-generator-skill)的核心功能是为每个客户创建一个可复用的品牌资料包,存储在 `studio/brands/<slug>/` 目录下。它从用户提供的网站、Logo、品牌指南或图形文件中提取信息,并自动映射出品牌颜色(按角色分配,如主色、强调色)、字体、Logo 文件、标语、语调、联系方式和呼吁行动(CTA)细节。此外,它还会构建一个资产库,包含该品牌自己的图片(人物、产品、客户评价、地点、作品、证明等),并验证事实,确保所有信息准确无误。该技能适用于 Claude Code、Cursor 等支持自定义技能的 AI 编码代理平台。当用户为一个新客户或新品牌开始制作视频、提供网站或 Logo 以“获取品牌颜色”、要求设置/检查/修复/刷新品牌资料包,或其他制作阶段需要品牌资料包而它尚未存在时,应使用此技能。它通过脚本进行数据测量,而由 Claude 进行判断,避免了直接读取原始 HTML/CSS 或全屏截图来寻找颜色。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/visalnaqvi/video-generator-skill/tree/HEAD/.claude/skills/brand-kit

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

品牌资料包

为每个客户在 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 步——收集来源

使用所有可用的信息,按以下优先级排序:

  1. 用户的指示(如“我们的蓝色是 #1F3C88”)——始终优先。
  2. 用户提供或放入视频 assets/ 目录的品牌指南 / Logo 文件。
  3. 网站。

如果缺少任何会影响结果的信息,只问一次——通常只需问:“您有 Logo 文件或品牌指南吗?如果没有,我会从网站上获取。”不要因此阻塞流程。

第 2 步——扫描网站

  1. 静态扫描(始终执行): node .claude/skills/brand-kit/scripts/site-extract.mjs <url> studio/brands/<slug>/source/site.json 输出 CSS 颜色(网站与框架的计数、CSS 变量)、字体、Logo 候选、元数据、联系信息和标题。
  2. 渲染探测(当内置浏览器可用时——结果更准确,因为它测量实际屏幕上的内容):打开网站,然后在 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、媒体报道
  1. 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。
  2. 查看一次联系表;使用 candidates.json 中的文本(名称、引用、说明)来识别主题。保留视频可能实际使用的图片;跳过占位图、其他品牌的素材以及高度重复的图片。
  3. 编写 assets.json(格式见架构参考):对每张保留的图片,记录其 candidate id、目标 file(<类别>/<描述性名称>.jpg)、kind、subject、一行 description、bakedText(如果图片上印有文字/价格为 true)、可选的 crop(用于去除内嵌的标签或边框)以及 source。在描述中备注任何有时效性的信息(价格、日期)。
  4. node .claude/skills/brand-kit/scripts/finalize-assets.mjs studio/brands/<slug> —— 将选中的文件复制/裁剪到 assets/ 目录,并记录尺寸和 quality(full ≥ 700 像素,card ≥ 300 像素,低于此的为 avatar-only),然后删除候选文件。
  5. 将匹配的文字事实添加到 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 中,并告知用户哪些阶段将使用它。保持结束语简短:资料包路径、主色/强调色十六进制值、字体。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能