算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
lov-find-logo【设计与创意】Fetch a company/product logo from public sources (Clearbit, og:image, favicon) given a brand name or URL, score candidates (wide-aspect + transparent preferred), and archive the best + runner-ups to the configured logo collection directory. Trigger when the user says "find logo", "找 logo", "抓 logo", "收集 logo", "brand asset", "需要 <brand> 的 logo", or w…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Takes a brand name or URL, probes Clearbit + the site's own og:image /
<link rel=icon> / favicon, scores each candidate, and archives the best
one plus a couple of alternates into the configured collection directory.
Accept any mix of names and URLs. If the user gave only a name with no obvious
domain, ask — don't silently guess .com (script will guess, but for non-US or
ambiguous brands that fails).
Use AskUserQuestion when:
xAI → x.ai, not xai.com)python3 scripts/find_logo.py --name "Anthropic" --url https://anthropic.com --json
For a batch, loop; the script is idempotent per <slug>/ (re-runs overwrite).
0 → logo archived. The printed score is your quality signal:
≥ 60 — solid: SVG or transparent PNG with wide/square aspect20–60 — usable: probably a favicon or small PNG< 20 — weak: only ICO or tiny stub found2 / status: "no-candidates" → script found nothing.
Do NOT give up. Use WebSearch for "<brand> logo svg site:*.com" or the
brand's press-kit page, then re-invoke with --url <direct-image-url> is
not supported — if you have a direct image URL, save it into the configured
collection directory under <slug>/logo.<ext> and hand-write meta.json
using the existing layout as a template.Report back with the archive path and the primary's aspect + format. If the score is weak, tell the user and offer to retry with a specific press-kit URL or Wikipedia SVG.
| Argument | Default | Description |
|---|---|---|
--name | — | Brand/product name. Used for slug + meta. |
--url | — | Official URL or bare domain. Overrides the name-based domain guess. |
--slug | slugified name | Override the directory slug under the archive root. |
--out | SKILL_FIND_LOGO_OUTPUT_DIR or ~/.skill-publisher/logo-collection | Archive root. |
--keep-alts | 2 | How many runner-up candidates to keep as alt-N.<ext>. |
--json | off | Emit a JSON result to stdout (use this when chaining). |
At least one of --name or --url is required.
~/.skill-publisher/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
└── ...
+30 if alpha channel present (SVG always counts)+25 for wide (≥2:1), +10 for landscape (≥1.3:1),
-5 for square, -15 for tall/portrait+15 if ≥128px, +5 if ≥64px, -20 if <32px-30 if payload <400 bytes (almost certainly a stub)This matches the "prefer 长条形 + rgba" preference — wide transparent logos come out on top, square favicons land as alternates.
Stdlib only (urllib, html.parser, argparse). No pip install required.
Default archive files live under ~/.skill-publisher/logo-collection/. Override this
per run with --out, or set SKILL_FIND_LOGO_OUTPUT_DIR for the skill.
.com suffix. For
anything not on .com, pass --url explicitly.WebSearch fallback is Claude's responsibility, not the script's.运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。
required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:
task-specific(仅本次)还是 reusable(可跨任务复用)。task-specific 只修改当前任务,不改 Skill。reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。