Community图像github.com

rtaylor-talmark/ep-skills - EP 标识处理

从 URL 下载机构徽标/标识/徽章,去除背景,调整为 512x512 并保存为以 EP 客户前缀命名的 .png 和 .jpg 文件,然后上传到 EP 标识 S3 存储桶 (prod-ep-cmh-insignia)。适用于用户在 Essential Personnel (EP) 中添加、替换或更新客户/机构的标识、徽标、徽章或徽章图像。

ep-skills - EP 标识处理 是什么?

该技能用于在 Essential Personnel (EP) 系统中管理客户机构标识图像。它能够从 URL 或本地文件路径下载源图像,自动识别并去除背景(包括基于 AI 的图像分割或边缘联通颜色去除),将图像调整为 512x512 像素,并生成带透明背景的 PNG 文件和白色背景的 JPG 文件。文件命名遵循 EP 客户前缀(小写字母数字)的约定,然后上传到生产环境的 S3 存储桶。该技能提供上传前的预览功能,让用户检查去除背景效果是否正确,并在覆盖现有文件时进行备份和确认,确保操作安全。支持 Claude Code、Cursor 和 Codex 等 AI 代理平台,通过脚本 `process_insignia.py` 利用 `uv` 自动安装依赖运行。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rtaylor-talmark/ep-skills/tree/HEAD/skills/ep-insignia

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

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

文档

EP 标识

将源图像 URL 转换为 EP 期望的两个标识文件,并上传到 s3://prod-ep-cmh-insignia(EP AWS 账户 405995789491,区域 us-east-2)。

命名约定,与存储桶中已有的文件一致:

  • 键:<前缀>.png 和 <前缀>.jpg,位于存储桶根目录,其中 <前缀> 是 EP 客户前缀(小写字母,例如 audubonpd、alexanderncsheriff)。
  • 两者均为 512x512。标识会被裁剪、缩放以适应并居中显示,四周留有少量边距。
  • PNG 具有透明背景。JPG 具有白色背景。
  • 内容类型分别为 image/png 和 image/jpeg。该存储桶使用 BucketOwnerEnforced,因此不要设置 ACL。

输入

  1. 源 URL。 如果用户未提供,请询问。本地文件路径同样适用。
  2. 客户前缀。 如果未提供,请询问。不要根据机构名称猜测。将其标准化为小写,并拒绝任何除 a-z 0-9 - _ 以外的字符。

步骤

1. 处理图像

在草稿板中(或使用 mktemp -d)创建一个新的工作目录,然后运行:

uv run -q <skill_dir>/scripts/process_insignia.py "<url>" "<前缀>" "<工作目录>"

uv 会根据脚本的内联元数据安装依赖项。首次运行 AI 背景去除时,会下载约 180 MB 的模型到 ~/.u2net。

默认背景模式(--bg auto)的工作方式如下:

  • 如果源图像已经具有透明背景,则保持不变。
  • 如果边框是单一纯色(通常是白色),则仅去除与边缘连接的背景。徽章内部的白色文字或细节会被保留。
  • 否则使用 AI 图像分割(rembg 的 isnet-general-use)。

覆写选项:--bg ai、--bg flood 和 --bg none 强制指定模式。--margin N 设置内边距(以像素为单位,默认为 4)。

如果下载失败并返回 403 或 429 错误,或者 URL 是 SVG 或网页而不是图像,请告知用户并要求提供直接的图像链接。用户也可以自行下载文件并提供本地路径。

2. 上传前预览

在对比色背景上构建 PNG 预览,并与 JPG 并排显示:

convert \( <工作目录>/<前缀>.png -background '#c33' -flatten \) <工作目录>/<前缀>.jpg +append <工作目录>/preview.png

使用读取工具打开 preview.png 并检查:

  • 没有残留背景(红色侧没有光晕、方框或边缘残留)。
  • 标识的各个部分都没有缺失(内部白色被去除导致的空洞,或被裁剪掉的文字)。
  • 是正确的机构标识。

如果结果不正确,使用不同的 --bg 模式重新运行。向用户展示预览,同时告知脚本报告的背景方法以及任何关于源图像尺寸较小的警告。

3. 检查 AWS 访问权限和现有文件

aws sts get-caller-identity --query Account --output text   # 预期 405995789491
aws s3 ls s3://prod-ep-cmh-insignia/<前缀>.

如果 <前缀>.png 或 <前缀>.jpg 已存在,请告知用户。这是一个生产存储桶,因此在覆盖之前需要获得明确的确认。首先备份现有文件:

aws s3 cp s3://prod-ep-cmh-insignia/<前缀>.png <工作目录>/backup/<前缀>.png
aws s3 cp s3://prod-ep-cmh-insignia/<前缀>.jpg <工作目录>/backup/<前缀>.jpg

即使还没有任何文件存在,在向用户展示预览后也需确认上传。

4. 上传

aws s3 cp <工作目录>/<前缀>.png s3://prod-ep-cmh-insignia/<前缀>.png --content-type image/png
aws s3 cp <工作目录>/<前缀>.jpg s3://prod-ep-cmh-insignia/<前缀>.jpg --content-type image/jpeg

使用 aws s3 ls s3://prod-ep-cmh-insignia/<前缀>. 验证上传,然后报告两个 S3 密钥、它们的大小以及备份文件的保存位置。

相关技能