---
name: jiujiang-shuangzheng-product-material-organizer
description: 为九江双蒸把客户提供的产品素材文件夹或 zip 压缩包整理入 Obsidian 产品素材库。用于“整理产品素材包”“导入九江双蒸 01.4_产品素材库”“按图片、视频、文档分类产品素材”“把图片分到产品实拍、好评截图、用户晒单、用户咨询”等任务；支持中文 zip 路径修复、素材盘点、按文件类型和产品生成预案、确认后复制入库和维护统一素材入库总表。不用于生成卖点卡、产品资料卡、朋友圈文案、合规审查、删除素材、覆盖原文件或低置信强制分类。
---

# 九江双蒸产品素材入库分类

## 核心原则

把素材整理到：

```text
九江双蒸知识库v1.0/一、私域库/01_产品库/01.4_产品素材库/
```

目录主结构固定为：

```text
01.4_产品素材库/
├── 图片类素材/
│   └── <产品名>/
│       ├── 00_待人工确认/
│       ├── 01_产品实拍/
│       ├── 02_好评截图/
│       ├── 03_用户晒单/
│       └── 04_用户咨询/
├── 视频类素材/
│   └── <产品名>/
├── 文档类素材/
│   └── <产品名>/
├── 00_待人工确认/
└── 99_入库索引/
```

先判断文件类型，再判断产品。只有图片类素材继续细分 `产品实拍 / 好评截图 / 用户晒单 / 用户咨询`；视频类和文档类不做这些用户场景细分。

`99_入库索引/素材入库总表.md` 是唯一共享总表。图片、视频、文档每次入库都追加到同一份总表；不要按文件类型另建索引表。

## 必读资源

- 分类前读取 [references/category-rules.md](references/category-rules.md)。
- 生成目录或路径前读取 [references/target-structure.md](references/target-structure.md)。
- 识别产品名或处理别名时读取 [references/product-name-map.md](references/product-name-map.md)。

## 工作流

### 1. 盘点输入

输入可以是文件夹或 zip。先运行只读盘点：

```bash
python3 scripts/inspect_materials.py <输入路径> --output-dir <本次运行目录>
```

盘点脚本会生成：

- `manifest.json`：素材清单、原始路径、文件类型、大小、文件类型建议、路径建议产品和图片路径建议分类；
- `summary.md`：人类可读统计；
- 不修改输入素材，不写入 Obsidian。

若 zip 中文目录乱码，脚本会尝试从 `cp437` 修复为 `gb18030`。若仍无法修复，保留原始名并在摘要中提示。

### 2. 判断文件类型

先按扩展名划分：

- 图片类素材：jpg、jpeg、png、webp、heic、gif、bmp、tif、tiff
- 视频类素材：mp4、mov、m4v、avi、mkv、webm、wmv
- 文档类素材：pdf、doc、docx、xls、xlsx、csv、ppt、pptx、pages、numbers、key、txt、md

无法识别文件类型时，进入根目录 `00_待人工确认`，不要硬塞进图片、视频或文档。

### 3. 判断产品

产品通常来自人工标注、原始文件夹名或文件名。优先按路径识别产品；若产品不明确，放到该文件类型下的 `00_产品待确认`。

示例：

```text
图片类素材/菠萝酒/...
视频类素材/玫瑰酒/...
文档类素材/三华李酒/...
文档类素材/00_产品待确认/...
```

### 4. 仅图片类素材判断图片分类

图片类素材允许四个正式图片分类：

- `01_产品实拍`
- `02_好评截图`
- `03_用户晒单`
- `04_用户咨询`

无法达到高置信时使用：

- `00_待人工确认`

判定优先级固定为：

```text
用户咨询 > 好评截图 > 用户晒单 > 产品实拍 > 待人工确认
```

视频类素材和文档类素材不进入这个优先级，不区分产品实拍、好评截图、用户晒单、用户咨询。

### 5. 生成入库预案

用脚本生成预案。没有人工决策表时，脚本只用路径高置信规则；人工或 Codex 视觉判断后的决策可写入 CSV 再传入。

```bash
python3 scripts/plan_import.py <manifest.json> \
  --target-root "九江双蒸知识库v1.0/一、私域库/01_产品库/01.4_产品素材库" \
  --output-dir <本次运行目录>
```

如有人工决策表：

```bash
python3 scripts/plan_import.py <manifest.json> \
  --target-root "九江双蒸知识库v1.0/一、私域库/01_产品库/01.4_产品素材库" \
  --decisions <decisions.csv> \
  --output-dir <本次运行目录>
```

决策表字段：

```text
id,product,category,confidence,note
```

`category` 只对图片类素材生效；视频类和文档类会忽略该字段。

预案输出：

- `import_plan.json`
- `import_preview.md`

写入前必须把 `import_preview.md` 给用户确认。没有明确确认时，不运行正式复制。

### 6. 确认后复制入库

用户确认预案后才执行：

```bash
python3 scripts/import_materials.py <import_plan.json> --execute
```

执行规则：

- 只复制，不移动；
- 不删除原始素材；
- 不覆盖已有文件；
- 同名冲突时自动追加短 hash；
- 统一追加 `素材入库总表.md`、`待人工确认清单.md`、`异常清单.md`。

## 高风险停止点

遇到以下情况必须停止或放入待人工确认：

- 用户要求删除、移动、覆盖或改名原始素材；
- 目标路径不是九江双蒸项目内的 Obsidian 产品素材库，且用户没有明确确认；
- 文件类型无法判断；
- 产品归属与原始目录明显冲突；
- 图片同时像“好评截图”和“用户咨询”；
- 图片聊天文字看不清；
- 视频或文档被要求继续细分成产品实拍、好评截图、用户晒单、用户咨询；
- 素材可能包含隐私，用户要求直接公开发布；
- 用户要求从素材推断功效、疗效、用户身份、购买动机或合规结论。

## 输出要求

最终答复要包含：

- 输入素材数量和文件类型；
- 自动入库数量、待人工确认数量、异常数量；
- 每个文件类型和产品的数量；
- 图片类素材的图片分类数量；
- 是否执行了复制；
- 索引文件位置；
- 准确率策略说明：自动分类只对高置信素材执行，低置信素材已进入待人工确认。

不要声称“准确率已达 98%”除非有真实抽检记录支持；没有抽检时只能说“按 98% 目标策略执行”。
