# Archive Materials

> 活动素材归档流程：把一个或多个本地素材文件夹批量上传到百度网盘学年目录下按月份分类的子文件夹（如「8月」，没有则创建），创建永久分享链接（带提取码），并在腾讯文档汇总表中按月份登记链接、时间、活动名称、拍摄人员等信息。网盘目录、表格链接、默认归档人等均在 references/config.md 中配置。当用户提到归档素材、素材上传网盘、登记网盘素材、素材汇总表，或给出一个/多个本地素材文件夹路径要求归档时触发。

- Skill: `alicifia/archive-materials` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add alicifia/archive-materials`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alicifia/archive-materials/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Alicifia (https://skillmd.com/u/alicifia)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/alicifia/archive-materials

---


# 素材自动归档

把一个（或一批）活动的素材文件夹从本地归档到百度网盘，并登记到腾讯文档汇总表。单个文件夹走完整四步；批量时对每个文件夹依次执行第 1~3 步，最后统一汇报。每步验证后再进入下一步。

> License: MIT © 2026 Alicifia

## 第 -1 步：读取配置

**先读 `references/config.md`**，获取：网盘学年根目录、腾讯文档表格链接与工作表名、默认归档人、文件夹命名约定。

- 若 config.md 中仍有 `【待填写】` 占位符：引导用户先完成配置再继续，不要猜。
- 若用户还没有汇总表（`sheet_url` 未填）：**主动提议由你代建**——经用户同意后，用 WebBridge 在腾讯文档新建在线表格，按 `references/table-format.md` 的格式规范建好标题行、表头、月份分隔行和下拉验证（表名、下拉选项等先与用户确认），建好后把新表格链接（带 tab 参数）和工作表名写回 config.md，再继续归档流程。

## 输入

用户给出**一个或多个**本地素材文件夹路径（批量归档时会一次列举多个），可能顺带说明拍摄时间、活动名称、拍摄人员、上传到网盘的具体位置等。文件夹名约定见 config.md，默认形如 `20260826新生大礼包（张三）`：

- 开头 8 位数字 `YYYYMMDD` → 拍摄日期
- 中间文字 → 活动主题
- 括号内 → 拍摄人员

**批量模式**：用户给多个文件夹时，第 0 步对**所有**文件夹统一解析、统一确认，然后对每个文件夹依次执行第 1~3 步（上传 → 分享链接 → 登记表格），全部完成后统一汇报。同月份文件夹共用一个月份目录，检查/创建一次即可。

## 第 0 步：解析信息并与用户确认

1. 列出每个本地文件夹内容，统计文件数量和类型（jpg/png/heic 等 → 图片；mp4/mov 等 → 视频；两者都有 → 图片+视频）。
2. 从每个文件夹名解析：拍摄日期、活动名称（默认 = 文件夹名）、拍摄人员。
3. 确定每个文件夹的网盘目标月份文件夹：按拍摄日期的月份，命名为 `M月`（如 `8月`，**不补零**）。
4. **批量时用一张汇总表向用户确认**（文件夹名 → 拍摄日期 / 目标月份 / 活动名称 / 拍摄人员 / 文件数），所有疑问一次性问完。以下情况**必须问用户**，不要猜：
   - 文件夹名中没有可解析的日期，或月份不确定
   - 解析出的拍摄人员、活动名称存疑
   - 用户在上传时直接指定了目标位置，以用户说的为准

## 第 1 步：上传到百度网盘

网盘根目录：config.md 中的 `pan_root_dir`（先用 `file_keyword_search` 或 `file_list` 根目录确认确切路径，不要硬编码假设；批量时确认一次即可）。

1. `file_list` 查看学年根目录（`dir` 参数需 URL 编码），确认目标月份子文件夹（如 `8月`）是否存在；不存在用 `make_dir` 创建（**path 传原始中文路径，不要 URL 编码**，编码会建成字面乱码文件夹，见 references/baidu-pan.md）。批量时同月份只检查/创建一次。
2. 在月份文件夹下用 `make_dir` 创建**与本地素材文件夹同名**的活动子文件夹，素材上传到该子文件夹内。**注意：MCP 的 `file_upload_by_content` 只支持文本内容（≤2万字），不能传照片/视频二进制文件。** 二进制文件走 WebBridge 浏览器上传（用户浏览器已登录网盘网页版），详细步骤见 references/baidu-pan.md；若浏览器上传失败，请用户用百度网盘客户端手动上传到目标文件夹，然后继续。
3. **验证**：`file_list` 活动子文件夹，逐一比对文件名和数量与本地文件夹一致。不一致则补齐后再继续。

## 第 2 步：创建永久分享链接

1. 从第 1 步 `file_list` 结果中取活动子文件夹的 `fsid`（或用 `file_meta` 查询）。
2. 调 `file_sharelink_set`：`fsid_list` 为字符串元素的 JSON 数组（如 `["123"]`），`period=0`（永久），`pwd` 自生成 4 位（数字+小写字母）。
3. 拼出完整链接，格式必须是：`https://pan.baidu.com/s/<短链>?pwd=<提取码>`，例如 `https://pan.baidu.com/s/1ppHvrl7M_zoqO3Hcgmzf6Q?pwd=3wmc`。
4. 单个归档时把链接展示给用户确认；批量时不必逐个停下确认，收集好统一在第 4 步汇报。

## 第 3 步：填写腾讯文档汇总表

表格地址与工作表名：见 config.md 的 `sheet_url` / `sheet_name`（建议用带 tab 参数的直链，打开即为目标工作表）。用 WebBridge 操作用户浏览器（已登录态），详细操作技巧和 Windows 中文输入注意事项见 references/tencent-docs.md；表格完整格式说明见 references/table-format.md。

1. 打开表格，确认当前工作表是 config 中的目标工作表，不对则点底部工作表标签切换。
2. 找到拍摄日期对应的**月份分隔行**（整行彩色，如 `8月`），在该月份区块内的**第一行空行**填写；区块内按日期顺序插入。若该月份区块不存在，先问用户再决定是否在表尾新增。批量时同月份的多个文件夹按日期升序填连续的空行，每填一行重新确认下一空行行号。
3. 按列填写（没有的信息留空，不要编造）。**下拉选项列一律留空**，填完后统一列出请用户手动选择（实测下拉点选耗时耗 token，默认由用户自己选）：

| 列 | 类型 | 内容 |
|---|---|---|
| 活动时间（举办时间） | 文本 | 拍摄日期，`M.D` 格式（如 `8.26`） |
| 拍摄时间 | 文本 | 同上 |
| 拍摄负责人 | **下拉，留空** | 汇报时给出解析出的人员名，请用户手选 |
| 活动类目 | **下拉，留空** | 即使用户提供了类目也留给用户手选，汇报中说明 |
| 活动名称（时间+主题+主讲人） | 文本 | 与素材文件夹名一致 |
| 素材类型 | **下拉，留空** | 汇报时给出统计结果（图片/视频/图片+视频），请用户手选 |
| 网盘链接 | 文本 | 第 2 步带提取码的完整链接 |
| 备注 | 文本 | 一般不填 |
| 是否已归档 | **下拉，留空** | 提示用户选 `是` |
| 素材归档负责人 | 先按文本试填，填不进则留空 | 归档人姓名（默认取 config 的 `default_archiver`，用户另行说明时以用户为准） |

> 列结构以 references/table-format.md 为准；若用户的表格列结构不同，以实际表格为准并在首次使用时更新 config。

4. **验证**：填完后截图回读该行，确认每个文本单元格内容正确、行位于正确月份区块内，然后截图发给用户，并列出所有留空的下拉列及建议值，请用户手动选择。

## 第 4 步：汇报

向用户汇报：网盘目标路径、上传文件数、分享链接（带提取码）、表格登记行位置和内容。批量时用一张汇总表汇报（每个文件夹一行：活动名称 / 网盘路径 / 文件数 / 分享链接 / 表格行号 / 待用户手选的下拉列及建议值）。

## 失败处理

- 网盘工具报错（鉴权/超时/限频）：把原始错误展示给用户，不要伪装成功；限频则等待后重试。
- 任何一步验证不通过：停下来修复或问用户，**不要带着未验证的状态进入下一步**。

