npx claudepluginhub within-7/minto-plugin-tools --plugin brand-extractor# 品牌详情提取命令 v2.2
你是一个品牌信息提取专家。用户请求: **{args}**
## ⚠️ 强制要求
**你必须严格按照以下步骤执行,不允许跳过任何步骤,不允许使用其他方法。**
## 任务
从品牌案例PPT中提取品牌详情信息:
1. 品牌Logo(1张)- 从"品牌概览"页提取
2. 产品展示图(1张)- 从"产品定位"章节提取
3. 流量分布图(1张)- 从"品牌简介"章节提取
4. 品牌背景、产品信息、KPI数据(Markdown格式)
## PPT结构理解
### 横幅文本结构(v2.2新增)
每个slide顶部都有横幅,包含章节信息:
**通过横幅文本可以精准判断每个slide属于哪个章节!**
### PPT整体结构
## 执行步骤(必须按顺序执行)
### Step 1: 解析参数
解析用户输入:
- PPT文件路径(必需)
- 输出目录(可选,默认询问用户)
**如果输出目录未提供,必须先询问用户。**
### Step 2: 解包PPT文件
**必须执行:**
### Step 3: 定位目录页位置 + 横幅文本解析
**必须执行:**
1. 遍历 Slide 1-10,查找包含"报告目录"或"目录"的页面
2. 确认该页面包含章节编号(如 1. 2. 3.)
3. 记录目录页的 slide 编号...你是一个品牌信息提取专家。用户请求: {args}
你必须严格按照以下步骤执行,不允许跳过任何步骤,不允许使用其他方法。
从品牌案例PPT中提取品牌详情信息:
每个slide顶部都有横幅,包含章节信息:
┌─────────────────────────────────────────────────────┐
│ Within-7.com PARACHUTE 3. 用户定位 任小姐 │
│ [网站标识] [品牌名] [章节编号+名称] [来源] │
└─────────────────────────────────────────────────────┘
通过横幅文本可以精准判断每个slide属于哪个章节!
┌─────────────────────────────────────────────────────┐
│ 目录页之前 (Phase 1) │
│ ├── Slide 1: 品牌封面(大图) │
│ ├── Slide 2: 品牌概览 → Logo + 创立时间 + 销售额 │
│ └── Slide N: 其他介绍页 │
├─────────────────────────────────────────────────────┤
│ 目录页 (通常是Slide 4或5) │
├─────────────────────────────────────────────────────┤
│ 目录页之后 (Phase 2) │
│ ├── 1.品牌简介 → 独立站流量数据、网站基础数据 │ ← 横幅显示"1. 品牌简介"
│ ├── 2.产品定位 → 爆款产品展示图 + 产品特点 │ ← 横幅显示"2. 产品定位"
│ └── ─────── 截止到"用户定位"之前 ─────── │
├─────────────────────────────────────────────────────┤
│ 3.用户定位 ← 不包含(属于Analysis模式) │ ← 横幅显示"3. 用户定位"
└─────────────────────────────────────────────────────┘
解析用户输入:
如果输出目录未提供,必须先询问用户。
必须执行:
unzip "{ppt_path}" -d ./workspace/unpacked
必须执行:
【v2.2新增】横幅文本解析 - 精准定位章节:
每个内容页的顶部横幅包含章节信息,解析方法:
横幅格式:
┌─────────────────────────────────────────────────────┐
│ Within-7.com PARACHUTE 3. 用户定位 任小姐 │
│ [网站标识] [品牌名] [章节编号+名称] [来源] │
└─────────────────────────────────────────────────────┘
数字. 紧接着 章节名称(如 "3." + "用户定位")# 横幅解析示例
# Slide 13 文本前10个元素: ["Within-7.com", "PARACHUTE", "3.", "用户定位", ...]
# → 确认 Slide 13 属于 "3. 用户定位" 章节
# Slide 8 文本前10个元素: ["Within-7.com", "PARACHUTE", "2.", "产品定位", ...]
# → 确认 Slide 8 属于 "2. 产品定位" 章节
必须执行:
目标slides:Slide 2 到 TOC_NUM-1
提取品牌Logo:
提取品牌基础信息(从 Slide 2-3 文本中):
必须执行:
目标slides:TOC_NUM+1 开始,截止到"用户定位"章节之前
【v2.2新增】使用横幅文本精准定位章节:
# 横幅精准定位示例
banner_sections = parse_all_banners() # 解析所有slide的横幅
# 找到"用户定位"边界
user_position_slides = banner_sections.get_section_slides("用户定位")
boundary_slide = min(user_position_slides) # 第一个"用户定位"slide
# 提取边界之前的slides
brand_intro_slides = banner_sections.get_section_slides("品牌简介")
product_slides = banner_sections.get_section_slides("产品定位")
# 过滤:只保留边界之前的slides
brand_intro_slides = [s for s in brand_intro_slides if s < boundary_slide]
product_slides = [s for s in product_slides if s < boundary_slide]
提取"品牌简介"章节(独立站流量数据):
提取"产品定位"章节(爆款产品):
必须执行:为每个关键slide绘制布局结构
## Slide 2 (品牌概览) 布局结构
| 元素 | 位置 (x, y) | 尺寸 (w×h) | rId | 图片文件 | 用途 |
|------|-------------|------------|-----|----------|------|
| 图片1 | (635, 43) | 718×677 | rId1 | image3.png | 品牌形象图 |
| 图片2 | (40, 72) | 546×82 | rId2 | image9.png | **品牌Logo** ✓ |
| 图片3 | (7, 4) | 34×34 | rId3 | image2.png | 装饰图标 ⚠️忽略 |
## Slide X (产品定位) 布局结构
| 元素 | 位置 (x, y) | 尺寸 (w×h) | rId | 图片文件 | 用途 |
|------|-------------|------------|-----|----------|------|
| 图片1 | (259, 131) | 362×271 | rId1 | image13.png | **产品展示图** ✓ |
必须执行以下判断逻辑:
品牌Logo识别(Phase 1,Slide 2):
产品展示图识别(Phase 2,产品定位章节):
流量分布图识别(Phase 2,品牌简介章节):
必须执行:
cp "./workspace/unpacked/ppt/media/{logo图片}" "{output_dir}/assets/brand_details/{brand}_logo.png"
cp "./workspace/unpacked/ppt/media/{product图片}" "{output_dir}/assets/brand_details/{brand}_product.png"
cp "./workspace/unpacked/ppt/media/{traffic图片}" "{output_dir}/assets/brand_details/{brand}_traffic.png"
必须执行:
从对应的 slide XML 中提取:
必须执行:
在 {output_dir}/data/ 目录创建 Markdown 文件:
# 品牌详情:{BRAND_NAME}
品牌序号:{number}
## 品牌背景与定位
- 基本信息:...
- 用户画像:...
- 品牌使命:...
- 竞争优势:...
## 爆款产品
- 产品名称:...
- 产品价格:...
- 产品特点(7条):
1. ...
2. ...
## 流量来源分布
| 来源 | 占比 |
|-----|-----|
| Direct | ... |
| Search | ... |
| Social | ... |
| Referrals | ... |
| Mail | ... |
## 核心运营指标
| 指标 | 数值 |
|-----|-----|
| 日均活跃用户 | ... |
| 平均停留时长 | ... |
| 人均访问页面 | ... |
| 用户跳出率 | ... |
必须执行:
检查以下文件是否存在:
{output_dir}/assets/brand_details/{brand}_logo.png{output_dir}/assets/brand_details/{brand}_product.png{output_dir}/assets/brand_details/{brand}_traffic.png{output_dir}/data/brand_{brand}_detail.md输出完成确认信息。
{output_dir}/
├── assets/
│ └── brand_details/
│ ├── {brand}_logo.png # 品牌Logo(从品牌概览页提取)
│ ├── {brand}_product.png # 产品展示图(从产品定位章节提取)
│ └── {brand}_traffic.png # 流量分布图(从品牌简介章节提取)
└── data/
└── brand_{brand}_detail.md # 品牌详情Markdown
| 内容 | 来源 | Phase |
|---|---|---|
| 品牌Logo | 品牌概览页(目录页之前) | Phase 1 |
| 品牌基础信息 | 品牌概览/总体分析(目录页之前) | Phase 1 |
| 独立站流量数据 | 品牌简介章节(目录页之后) | Phase 2 |
| 爆款产品 | 产品定位章节(目录页之后) | Phase 2 |
重要:Detail 模式的数据截止到"用户定位"章节之前,"用户定位"及之后的内容属于 Analysis 模式。
如果遇到以下情况,必须停止并报告错误:
详见 rules/detail.json