关于 brand-search
brand-search 是指导 Agent 使用品牌搜索工具的设计技能,可按自然语言查询寻找网站参考,也可从已提取的网站寻找视觉相近品牌。它规定查询构建、结果检查和品牌提取的流程。
主要功能
- 01按自然语言查询搜索品牌
- 02根据提取结果查找相似品牌
- 03依据原始意图构建查询
- 04检查全部结果的元数据与截图
- 05按需提取品牌并轮询结果
适用场景
- 01为设计方向搜集网站参考
- 02从指定网站扩展视觉参考
- 03比较搜索结果并筛选设计参考
- 04提取网站的设计属性供后续使用
MCP 相关
该技能指导使用 `search_brands`、`search_similar_brands`、`extract_brand`、`poll_brand_extraction` 和 `get_brand_extraction_result` 等工具。它涵盖搜索、提取品牌信息及查询提取状态的操作流程。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ taste-ai/ skills --skill brand-search安装后在 Claude Code 中输入/brand-search确认已加载。
详细介绍
品牌搜索
1. 选择合适的搜索工具
这两个工具返回的内容相同:网站参考,每个参考都包含品牌元数据摘要和截图。它们的输入内容不同。
search_brands:输入自然语言查询。用户或 Agent 的需求就是查询内容。例如:search_brands("dark brutalist developer tools")、search_brands("warm pastel skincare landing pages")。
search_similar_brands:输入已完成提取的 submission_id,返回该网站最相似的视觉邻居。例如,你提取了 linear.app,获得其 submission_id,然后传入该 ID。
search_brands
构建每个查询时,都要明确要寻找的内容——风格、布局、配色、动效、调性——并遵循以下指南。
- 始终遵循用户或 Agent 提示词的原始意图。不要添加用户未要求的内容,也不要改写其表达。如果提示词说的是“单色”,查询就应是单色,而不是“黑白”。
- 在选择参考之前,按照第 3 步所述检查每个返回结果。
如果提示词只有一种氛围,查询也只写这种氛围:search_brands("dreamy editorial skincare, calm and warm", top_k=6)。
当用户提到一种风格或流派时,原样保留其用词。搜索会负责解读风格术语,包括那些没有正式标签的术语——换成你自己的同义词,就等于替搜索做了它本应做的判断。search_brands("vintage feeling clothing brand site") 保留了“vintage”,尽管语料库中这一风格的官方标签是“Retro”:用户说的是 vintage,搜索的也应是 vintage。同样的原则也适用于 search_brands("y2k web aesthetic for a music label") 和 search_brands("swiss international style studio portfolio")。
当提示词以颜色或色调为线索时,应按颜色所扮演的角色来筛选,而不是按色相:有用的聚类依据是色调在网站中承担相同的结构性作用——底色、文字色或强调色,而不是作用不同但色相相近的网站。search_brands("cream ground with a terracotta accent") 就是按这种方式构建的。
带有参照对象的查询,应将参照对象直接写入查询,让它引导搜索,而不是将其作为参考:search_brands("like Notion but for restaurants")。还要单独运行网站到网站的搜索路径,具体见下文。
当提示词已经跨越行业类别时——例如“活泼多彩的消费金融科技品牌”或“具有游戏灵感的 B2B SaaS 品牌”——直接将这种组合写入查询,无须另作发挥:search_brands("playful colorful consumer fintech")、search_brands("B2B SaaS brand that feels gaming inspired")。
search_similar_brands
当你已有一个品牌,并想寻找风格相似的其他品牌时,使用此工具——无论是想追随该品牌的灵感,还是以它为参照探索不同方向。它读取的是已完成的提取结果,而不是 URL,因此先获取锚点:
- 你已经有提取结果——来自本次运行或更早的运行——直接将其
submission_id传给search_similar_brands。 - 你只有一个 URL——来自
search_brands卡片或用户提供的网站——先提取:extract_brand(url)→ 轮询 →search_similar_brands(submission_id)。第 4 步详细说明了这个循环。
对于未明确限定的网站——“像我们的网站”“acme.com 的竞争对手”“像 patagonia.com 的网站”——需要同时采用两种视角:对提取结果使用 search_similar_brands(submission_id),追随其外观(整体视觉上相近的网站);围绕锚点深入使用 search_brands,追随其含义(文化上的关联领域)——例如针对 patagonia.com,使用 search_brands("outdoor apparel brand with rugged environmental storytelling")。分别检查两组结果,并保留各组内部的排名。
如果用户已经指定了参照——“采用 linear.app 的布局和 ramp.com 的配色”——直接提取这些网站,因为它们就是参照:extract_brand("https://linear.app")、extract_brand("https://ramp.com")。只有在设计板需要更多此类风格时,才对其中任一提取结果使用 search_similar_brands(submission_id);这些网站未涵盖的特征则交给 search_brands。
如果网站需求包含转向方向,则在搜索的同时执行第二条路径:提取锚点并获取其相近网站——对于“像 Notion,但面向餐厅”这一提示词,对 Notion 的提取结果使用 search_similar_brands(submission_id)。将两组结果分开:搜索体现转向方向,相近网站只用于呈现锚点的视觉关联领域。
还有一种值得挖掘的优选结果,并非提示词模式,而是该工具的另一种用途——对已有结果集进行第二次审视。对排名第一的结果使用 search_similar_brands(submission_id),详见第 3 步。
2. 编写查询时不要预先决定风格
根据提示词的实际内容构建每条查询:行业、页面类型、受众、内容、指定的参照,以及用户提到的任何风格、布局或配色词。你自己的假设绝不能变成审美搜索筛选条件。如果提示词没有指定风格,就不要加入风格描述,让返回的参照展示可能的方向。
不要给查询添加提示词中从未出现过的形容词——“大胆复古”“令人垂涎”“街区活力”。每个臆造的描述词都会预先决定本该由语料库决定的内容,结果也会回来附和你的判断。表现力强的描述词应留到之后的查询中:等它们对应到你在结果里看到的内容后,再用来寻找更多佐证。
提示词也可能包含并非事实的形容词。“一个完全定制、独一无二的个人网站”没有指定行业、风格或参照。“定制”和“独一无二”可以形容任何提示词,却无法用于筛选任何内容——search_brands("completely custom and unique personal website") 只会返回语料库标记为与众不同的内容,但这并不等于用户真正想要的内容。去掉这些空洞的形容词,搜索唯一剩下的真实信息(search_brands("personal portfolio website")),让结果给出可能的方向。
top_k 默认值为 6,服务端最多接受 30。若提示词需要广泛的情绪板,可将其提高到 12。
3. 查看结果,不要重新排序
结果会按相关性排序:排名靠前的结果是搜索判断与你的查询最接近的内容;标记为 discovery 的结果也是搜索认为符合该风格的网站,纳入其中是为了让结果集更多样。
discovery 结果展示了与该风格相关的灵感,体现了它的不同侧面,例如你可能从未想过要写进查询的配色、布局结构、插画或字体处理。
每个查询的所有结果,包括每个 discovery 结果,都是必须参考的依据。对于每个结果,请阅读其元数据和描述,并查看其截图。请按照返回顺序检查结果,再选择参考对象。如果你要描述动态效果或交互,请在实际网站上验证。当某个结果的设计与你的提示不符时,可以将其搁置;请说明具体不符之处。
如果某个结果值得进一步查看,请对其运行 extract_brand。提取完成后,对其运行 search_similar_brands,即可通过该品牌的视觉关联拓展结果集。
4. 获取源信息
只有在确实需要卡片以外的信息时才进行提取。元数据、描述和截图通常足以判断参考对象,而且往往也足以用于设计。只有在你要直接基于该来源进行构建并需要其实际参数——字体、间距、配色、布局结构——或需要 submission_id 传给 search_similar_brands 时,才使用 extract_brand。不要默认对整个结果集进行提取。
确实需要时,将来源传给 extract_brand 并轮询,直到提取完成:
extract_brand(url) → submission_id
poll_brand_extraction(submission_id) # accepted → extracting → ... → completed or failed
get_brand_extraction_result(submission_id)
批次运行期间,先研究已有来源,再回来查看队列。通过 get_brand_extraction_result 阅读每个已完成的结果。记录失败项,并用同一查询中排名靠后的结果替换。