用途
find-logo 用于收集品牌 Logo:给出品牌名称或网址后,它会探测公共来源的候选图片,评分后把最佳一张及若干备选归档到配置的收集目录中。适合的场景包括:为幻灯片/海报/网站的合作方或媒体展示条收集一个或多个品牌 Logo;用户点名若干公司希望放入 partners/press 条;用户给出一个网址,希望干净地把它的 Logo 拉取下来。
主要能力
- 按品牌名称或 URL 探测候选 Logo,来源包括 Clearbit、目标网站自身的 og:image、<link rel=icon> 与 favicon。
- 对每个候选打分,选出最高分作为主图,并保留若干备选(默认 2 个)。
- 归档目录中包含 primary、alt-N 以及记录来源、评分、尺寸、抓取时间的 meta.json。
- 单品牌单次调用;批量时循环调用即可,脚本对同一 <slug> 目录是幂等的(重复运行会覆盖)。
- 仅使用标准库,无需 pip 安装。
使用方式
基本调用(每次一个品牌):
python3 scripts/find_logo.py --name "Anthropic" --url https://anthropic.com --json
命令行参数:
| 参数 | 默认 | 说明 |
|---|---|---|
| --name | — | 品牌/产品名称,用于 slug 与 meta。 |
| --url | — | 官方 URL 或裸域名,优先于基于名称推测的域名。 |
| --slug | 名称的 slug 化结果 | 覆盖归档根下的目录 slug。 |
| --out | LOVSTUDIO_FIND_LOGO_OUTPUT_DIR 或 ~/.lovstudio/logo-collection | 归档根目录。 |
| --keep-alts | 2 | 保留多少个次优候选为 alt-N.<ext>。 |
| --json | 关闭 | 向 stdout 输出 JSON 结果(用于链式调用)。 |
--name 与 --url 至少提供一个。
工作流程(按要求执行):
- 识别每个品牌:接受名称与 URL 任意组合;若只给名称且域名不明显,应先询问,不要静默猜测 .com。名称有歧义(例如 "Apple" 指水果还是公司)、无 URL 且域名难以推测、或用户给了不含 URL 的列表时,使用 AskUserQuestion。
- 抓取:每次调用一个品牌。
- 检查评分,必要时回退到 WebSearch:退出码 0 表示已归档,打印的分数是质量信号。
评分参考:≥60 为可靠(SVG 或透明 PNG,宽/方形比例);20–60 为可用(可能是 favicon 或小 PNG);<20 为较弱(仅 ICO 或极小占位图)。退出码 2 / status: "no-candidates" 表示脚本没找到任何候选;此时不要放弃,可用 WebSearch 搜索 "<brand> logo svg site:*.com" 或该品牌新闻资料包页面,但注意脚本不支持 --url <直接图片地址>,如果已获得直接图片 URL,需手工保存到配置的收集目录下的 <slug>/logo.<ext>,并参照现有布局手写 meta.json。 4. 汇报:给出归档路径,以及主图的宽高比与格式;若分数较弱,告知用户并可提议用指定 press-kit URL 或 Wikipedia SVG 重试。
归档结构
~/.lovstudio/logo-collection/
├── anthropic/
│ ├── logo.png # primary (highest score)
│ ├── alt-1.png # runner-ups
│ ├── alt-2.png
│ └── meta.json # sources, scores, dimensions, fetched_at
├── vercel/
│ ├── logo.png # 1200x628 transparent banner
│ └── ...
└── stripe/
├── logo.svg
└── ...
评分规则(候选为何胜出)
- 格式:SVG (+40) > PNG (+20) > WebP (+10) > JPG (-10) > ICO (-20)
- 透明度:存在 alpha 通道 +30(SVG 始终计入)
- 宽高比:宽(≥2:1)+25,横向(≥1.3:1)+10,方形 -5,高/竖版 -15
- 短边:≥128px +15,≥64px +5,<32px -20
- 体积合理性:payload <400 字节 -30(几乎肯定是占位图)
该规则对应「偏好长条形 + rgba」的取向:宽幅透明 Logo 得分最高,方形 favicon 通常落为备选。
依赖与配置
- 依赖:仅标准库(urllib、html.parser、argparse),无需 pip install。
- 配置:默认归档文件位于 ~/.lovstudio/logo-collection/;每次运行可用 --out 覆盖,或为该技能设置 LOVSTUDIO_FIND_LOGO_OUTPUT_DIR。
已知限制
- 名称到域名的猜测只是简单的转小写加 .com 后缀;任何不在 .com 的品牌应显式传入 --url。
- 不使用 Clearbit API key,访问的是未认证端点,覆盖多数大品牌但并非全部。
- WebSearch 回退由调用方(Claude)负责,脚本本身不提供。