Customer Logo Wall — 客户Logo墙生成工具
技能概述
从 Excel 客户列表出发,自动完成:
- 读取公司英文名 → 搜索/确认中文名
- 按知名度分 Tier 排序
- 用百度图片 + Bing 备选自动下载公司 Logo
- Logo 格式标准化(JPEG/WEBP/SVG → 真正 PNG,防止 API 报错)
- 自动核验 Logo 准确性(无需用户手动校对)
- 生成专业 Logo 墙 PPT
工作流程
Step 1:读取 Excel
读取用户提供的 Excel 文件,提取公司英文名列(通常为 "Customer" 列)。同时读取中文名列(若已有)。
Step 2:确定中文名
若 Excel 中已有中文名列,直接使用。若没有,对每家公司进行网络搜索,获取官方中文名。
- 搜索策略:百度百科、企业官网、香港公司注册处
- 搜不到的公司保留英文名
Step 2.5:将中文名写回原 Excel
确定中文名后,必须将结果写回用户的原始 Excel 文件,而不是只保存在中间 JSON 中。
操作步骤:
- 在原 Excel 的 Customer 列(公司英文名)紧后面插入一列
- 新列表头设为"公司中文名"
- 按行匹配英文名,填入对应中文全称
- 匹配时注意处理标点差异(如单引号
' vs 撇号 ')
- 保存覆盖原文件,告知用户
⚠️ 这一步是必须的,用户需要中文名留在原始表格中。
Step 3:Tier 分级排序
按以下标准将公司分为 4 个 Tier:
| Tier | 标准 |
|---|
| 1 | 全球知名企业:世界500强、行业绝对龙头(如台积电、摩根士丹利、国泰航空) |
| 2 | 行业领先:知名上市公司、区域一线品牌(如海信、三井住友、香港电讯) |
| 3 | 区域知名:有一定规模的上市/知名企业(如联影医疗、太古地产、德勤) |
| 4 | 其他客户:规模较小或知名度较低的企业 |
Step 4:下载 Logo
使用 scripts/download_logos.py 自动下载 Logo。
关键配置(根据你的环境修改):
- 浏览器路径:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome(或系统 Chrome 路径)
- Node路径:
<你的Node路径>/bin/node
- Node模块:
<你的Node路径>/workspace/node_modules
- playwright 需用上述 Node 环境执行
💡 快速获取路径:which node 和 npm root -g
搜索策略(按优先级):
- 百度图片搜索:
{公司中文名} {英文名} logo
- 若百度失败,尝试访问公司官网抓取 header 中的 logo img
- 若仍失败,用 Bing 图片搜索(英文关键词,适合国际公司)
Step 4.5:Logo 格式标准化(新增 v1.2.0)
使用 scripts/normalize_logos.py 将所有下载的 Logo 统一为真正的 PNG 格式。
解决的问题:
- 搜索引擎返回的图片实际是 JPEG/WEBP/SVG,但扩展名为
.png
- SVG 伪装为 PNG → Anthropic API 报错
Could not process image
- WEBP 格式在部分系统和 PowerPoint 中不支持
转换策略(自动检测文件头):
| 实际格式 | 转换方式 |
|---|
| JPEG/WEBP | Pillow 转 RGBA → 保存 PNG |
| SVG | rsvg-convert → cairosvg → qlmanage(macOS)按优先级尝试 |
| 已是 PNG | 跳过,仅验证完整性 |
⚠️ build_ppt.py 也内置了运行时格式修复(ensure_real_png),但建议先跑一遍标准化脚本。
Step 5:自动核验 Logo 准确性
本步骤无需用户手动校对,使用 scripts/verify_logos.py 自动核验:
- OCR 文字识别:用
pytesseract 提取图片中的文字,检查是否包含公司名称关键词
- 图片质量检查:过滤纯色图、截图页面(非纯 logo)、文件过小的图
- 相似度评分:对识别出文字与公司名的匹配度打分(0-1),低于阈值(0.3)判定为错误
- 不确定的自动重搜:核验失败的公司自动换用其他搜索关键词重试(最多 3 次)
详见 references/logo-verification.md。
Step 6:生成 PPT
使用 scripts/build_ppt.py 生成 Logo 墙 PPT。
PPT 设计规范(详见 references/ppt-design.md):
- 幻灯片尺寸:10 × 5.625 英寸(16:9)
- 配色:深蓝主色 #1E2761,浅背景 #F5F7FA
- 每页最多 6 个公司(2列3行)
- 卡片结构:左侧 Tier 色条 + Logo 区(1×1英寸)+ 中文名 + 英文名
快速运行
# 设置环境变量(根据你的实际路径修改)
export NODE_PATH="<你的Node模块路径>"
export NODE_BIN="<你的Node可执行文件路径>"
export AGENT_BROWSER="<你的agent-browser路径>"
# 1. 下载 Logo(用 Node + playwright)
$NODE_BIN scripts/download_logos.js --output <输出目录> --companies <公司列表JSON>
# 2. Logo 格式标准化(确保全部是真正的 PNG)
python3 scripts/normalize_logos.py --logos-dir <logo目录> --companies <公司列表JSON>
# 3. 核验 Logo
python3 scripts/verify_logos.py --logos-dir <logo目录> --companies <公司列表JSON>
# 4. 生成 PPT
python3 scripts/build_ppt.py --logos-dir <logo目录> --companies <公司列表JSON> --output <输出路径>
脚本说明
| 脚本 | 作用 |
|---|
scripts/download_logos.js | 用 playwright + 百度/Bing 图片批量下载 Logo(Node.js) |
scripts/normalize_logos.py | Logo 格式标准化:JPEG/WEBP/SVG → 真正 PNG(Python) |
scripts/verify_logos.py | 自动核验 Logo 准确性(Python) |
scripts/build_ppt.py | 生成 Logo 墙 PPT,内置格式修复(Python + python-pptx) |
参考文档
references/logo-verification.md:Logo 自动核验的详细逻辑与阈值说明
references/ppt-design.md:PPT 设计规范与颜色定义
references/logo-format-issues.md:Logo 格式常见问题与解决方案
依赖环境
- Python 3.9+:
python-pptx, pillow, pytesseract(可选,用于 OCR 核验)
- Node 22.12.0(管理版本路径见上)
- playwright(安装在 Node 工作区)
- 系统 Chrome:
/Applications/Google Chrome.app(供 playwright 使用)