AgentSkillsCN

media-hub

交通安全宣传素材中枢。支持自然语言搜索素材库、为新素材自动标引标签、统计素材库概况。当用户提到"找素材""搜索素材""查找素材""素材标签""标引素材""素材统计""有什么素材"时激活。

中文原作
SKILL.md
--- frontmatter
name: media-hub
description: 交通安全宣传素材中枢。支持自然语言搜索素材库、为新素材自动标引标签、统计素材库概况。当用户提到"找素材""搜索素材""查找素材""素材标签""标引素材""素材统计""有什么素材"时激活。
user-invocable: true

素材中枢(Media Hub)

功能概述

本 Skill 管理交通安全宣传教育的本地素材库,提供三大核心能力:

  1. 自然语言素材搜索:用户用自然语言描述需求,Agent 语义匹配素材库元数据,返回最相关的素材列表
  2. 自动标签标引:为新入库的素材自动生成多维度标签(事故类型、违法种类、路段、天气、场景等)
  3. 素材库统计:汇总素材总量、类型分布、热门标签等概况信息

触发条件(When to Use)

当用户的输入匹配以下意图时激活本 Skill:

  • 要求搜索或查找交通安全宣传素材
  • 提到"找素材""搜索素材""查找素材""有没有……的素材""找一些……的视频/图片"
  • 要求为素材添加标签或进行标引
  • 提到"素材标签""标引素材""给素材打标签""添加素材"
  • 要求查看素材库概况
  • 提到"素材统计""素材库有多少""素材概况"

不激活的情况:用户要求生成文案内容(由 content-producer 处理)、审核内容(由 content-reviewer 处理)。

工作流程(Instructions)

模式一:素材搜索

步骤 1:解析搜索意图

分析用户的自然语言查询,提取搜索维度:

维度说明示例
场景关键词事故类型、场景描述"追尾事故""行人闯红灯"
天气条件天气相关"雨天""雾天""冰雪"
道路类型道路环境"高速公路""城区路口""农村道路"
素材类型文件格式偏好"视频""图片"
时间范围拍摄时间"去年冬季""2025年"
来源素材来源"执法记录仪""道路监控"

步骤 2:读取素材索引

读取 data/materials/index.json 获取全量素材元数据列表。

步骤 3:语义匹配

对用户查询词与每条素材的 title、tags、description 进行语义匹配:

  • 直接关键词匹配:查询词与标签完全匹配
  • 语义近似匹配:查询"暴雨"可匹配标签含"雨天"的素材;查询"交通事故"可匹配"追尾""碰撞"等
  • 多维度交叉匹配:多个查询条件取交集

按相关度排序返回结果。

步骤 4:返回搜索结果

为每条匹配的素材返回以下信息:

  • 素材 ID 和标题
  • 素材类型(视频/图片)
  • 标签列表
  • 描述信息
  • 文件路径(相对路径)
  • 使用次数

如需查看某条素材的完整元数据,读取 data/materials/items/{id}.json

步骤 5:提供使用建议

根据搜索结果,建议用户:

  • 可以将哪些素材用于 content-producer 生成文案
  • 哪些素材适合制作海报或视频
  • 如果搜索结果不理想,建议调整搜索关键词

模式二:素材标引

步骤 1:获取素材信息

用户提供新素材的基本信息:

  • 文件名(必填)
  • 素材类型(视频/图片,必填)
  • 简要描述(必填,1-2句话说明素材内容)
  • 来源(可选,如"执法记录仪""道路监控")
  • 拍摄地点(可选)
  • 拍摄日期(可选)

步骤 2:生成多维度标签

基于素材信息,使用 LLM 自动生成以下维度的标签:

维度示例
事故类型追尾、侧翻、碾压、单车事故
违法种类酒驾、超速、闯红灯、逆行
道路类型高速公路、城区道路、农村道路、山区公路
天气条件晴天、雨天、雾天、冰雪
时间特征夜间、早高峰、晚高峰
涉及对象货车、电动车、行人、学生、老年人
宣传用途安全教育、警示教育、正能量、节日宣传

步骤 3:生成元数据并保存

生成完整的素材元数据 JSON 文件:

json
{
  "id": "mat-{新序号}",
  "title": "{标题}",
  "type": "{video/image}",
  "filename": "{文件名}",
  "tags": ["标签1", "标签2", ...],
  "source": "{来源}",
  "description": "{描述}",
  "location": "{地点}",
  "date": "{日期}",
  "usageCount": 0
}

保存到 data/materials/items/mat-{序号}.json,并更新 data/materials/index.json 索引文件。

模式三:素材统计

读取 data/materials/index.json,汇总以下统计信息:

  • 素材总数
  • 按类型分布(视频/图片各多少条)
  • 热门标签 Top 10(出现频率最高的标签)
  • 最近入库的素材列表
  • 使用频率最高的素材列表

数据引用

文件路径用途
data/materials/index.json素材索引(全量素材概要,含 ID、标题、类型、标签)
data/materials/items/mat-{序号}.json单条素材完整元数据

输出格式

搜索结果格式

markdown
## 搜索结果:"{查询关键词}"

共找到 {N} 条相关素材:

### 1. {素材标题}
- **ID**: {mat-XXX}
- **类型**: {视频/图片}
- **标签**: {标签1}, {标签2}, ...
- **描述**: {描述}
- **已使用**: {N} 次

### 2. ...

标引结果格式

markdown
## 素材标引完成

- **素材ID**: {mat-XXX}
- **标题**: {标题}
- **生成标签**: {标签列表}
- **保存路径**: data/materials/items/{id}.json
- **索引已更新**: 是

统计报告格式

markdown
## 素材库概况

- **素材总数**: {N} 条
- **视频素材**: {N} 条
- **图片素材**: {N} 条

### 热门标签 Top 10
| 排名 | 标签 | 出现次数 |
|------|------|---------|
| 1 | {标签} | {次数} |

约束规则

搜索规则

  • 搜索结果按相关度排序,最多返回 10 条
  • 如果没有匹配结果,告知用户并建议调整搜索词
  • 语义匹配时要考虑同义词和近义词(如"暴雨"与"雨天"、"事故"与"碰撞/追尾")
  • 不返回与查询完全不相关的素材

标引规则

  • 每条素材至少生成 3 个标签,最多 8 个
  • 标签使用中文短词(2-4个字)
  • 标签必须基于素材的实际内容,不臆造
  • 新素材 ID 必须按顺序递增(检查现有最大 ID 后 +1)
  • 更新 index.json 时保持数据结构一致

数据完整性

  • 不修改已有素材的元数据(除非用户明确要求更新标签)
  • index.json 和单条 JSON 文件中的信息必须保持一致
  • usageCount 字段由其他 Skill 更新,本 Skill 不主动修改

使用示例

示例 1:语义搜索

code
用户: 找一些雨天高速公路事故的视频素材

Agent 执行流程:
1. 提取搜索维度: 天气=雨天, 道路=高速公路, 场景=事故, 类型=视频
2. 读取 data/materials/index.json
3. 匹配标签含 "雨天/暴雨" + "高速公路" + "追尾/事故" + type=video 的素材
4. 返回排序后的匹配结果列表

示例 2:模糊搜索

code
用户: 有没有跟学生安全教育相关的素材?

Agent 执行流程:
1. 提取搜索维度: 场景=学生安全教育
2. 匹配标签含 "学生/学校/安全教育/校园" 的素材
3. 返回匹配结果

示例 3:素材标引

code
用户: 新入库一个视频素材,文件名 drunk-driving-case-20260201.mp4,内容是2月1日城区查获的一起醉驾案件现场记录

Agent 执行流程:
1. 收集素材信息
2. 生成标签: ["酒驾", "醉驾", "城区", "查处", "夜间", "执法"]
3. 生成 mat-021.json 并保存
4. 更新 index.json

示例 4:查看素材概况

code
用户: 素材库现在有多少素材?各类型分布怎样?

Agent 执行流程:
1. 读取 index.json
2. 统计总数、类型分布、热门标签
3. 输出统计报告