decode_workflow_process.md 36 KB

解码工作流执行过程总结

工作流概览

解码工作流是一个完整的视频分析流程,包含10个节点:

  1. 视频上传 → 2. 灵感点提取 → 3. 目的点提取 → 4. 关键点提取 → 5. 选题理解 →
  2. 段落划分 → 7. 实质提取 → 8. 形式提取 → 9. 分离结果 → 10. 结果汇总

节点1: 视频上传

功能: 下载视频到本地并上传至Gemini,保存上传链接

执行过程:

  • 检查examples/videos目录下是否有现有文件
  • 如无则从URL下载视频到examples/videos目录
  • 上传视频到Gemini File API
  • 保存文件URI和名称到state

输出: video_uploaded_uri, video_file_name


节点2: 灵感点提取

功能: 从创作者视角提取触发创作的深层刺激源

执行流程: 6步提取流程

Step 1: 识别候选灵感点(逐帧分析视频)

Prompt:

# 任务:识别候选灵感点(逐帧分析视频)

## 当前视频
请对视频进行逐帧或关键帧分析。

**重要**:你需要对视频进行逐帧或关键帧分析,捕捉以下维度的信息:
- 画面内容:场景、物体、人物、环境等视觉元素
- 动作变化:人物的动作、物体的运动、场景的转换
- 时间线索:视频的时间顺序、节奏变化、关键时间点
- 视觉细节:颜色、光影、构图、视觉焦点等
- 音频信息(如有):对话、音效、背景音乐等

## 核心概念(统一说明,避免重复)

### 字段定义
**分类**(维度):创作者接收外界信息刺激的角度或通道
- 格式:2-4个字,简洁直观,避免抽象表述

**灵感点**:创作前遇到的、触发创作冲动的客观刺激源(作者被动接收的信息:看到的、听说的、发现的、观察到的、感知到的)
- 格式:不超过15个字,使用自然、通俗、口语化的表达方式
- 本质:刺激源的内容本身(讲什么、做什么、说什么),而非表达手段(如何呈现、如何表达)
- 表达要求:
  * 使用日常生活中的自然语言,避免学术化、抽象化的词汇堆砌
  * 优先使用"的"字短语结构(如"夏日的热闹景象")或动宾短语(如"观察到的自然互动")
  * 禁止使用多个抽象名词连用(如"具象化动态互动自然拟人")
  * 表达要让普通人一看就懂,不需要"翻译"

**描述**:对刺激源本身是什么的详细说明,讲清楚这个灵感点具体指的是什么
- 内容要求:描述刺激源的具体特征、形态、场景、内容等客观信息,让读者能清晰理解"这个灵感点到底是什么东西"
- 注意区分:刺激源内容本身 vs 呈现方式/表现形式

**推理**:说明这个灵感点是如何得出来的,解释从视频内容推导出这个灵感点的过程
- 内容要求:连贯的描述性文字,说明基于视频的哪些画面/动作/场景/对话等线索,推导出创作者接收到了这个刺激源

### 严格禁止(适用于灵感点和描述)
- 不描述创作者如何运用/展现/表达这个刺激,不使用推理性词汇
- 不能是创作形式、表现手法、表达方式、呈现方式、风格、格式等创作应用层面的东西
- 必须是被动接收的刺激,不能是主动创造的内容
- 不解释创作者为什么被触发、如何使用这个刺激
- 不进行主观推理和价值判断
- 禁止词汇堆砌,避免多个抽象概念连用

### 反思验证(识别每个灵感点后必须进行)
- 这个灵感点描述的是内容本身,还是仅仅描述表达手段?
- 如果仅描述表达手段(如呈现方式、创作形式、风格、格式等),应重新提炼真正的刺激源内容
- 这个表达是否符合日常口语习惯?是否通俗易懂?
- 如果描述的是内容本身且表达自然 → 保留

### 识别要求
- **独立性**: 不同灵感点必须是不同的刺激源,本质相同的只保留一个
- **完整性**: 分类→灵感点→描述应形成从刺激通道到刺激内容的完整表达
- **真实性**: 从"作者接收到了什么刺激"(被动接收)而非"作者如何创作"(主动输出)的角度出发
- **视频特性**: 需要关注视频的动态特性,包括画面变化、动作序列、时间线索等

## 输出格式(JSON)
{
  "候选灵感点列表": [
      {
        "候选编号": 1,
        "分类": "...",
        "灵感点": "...",
        "描述": "...",
        "推理": "..."
      }
  ]
}

**重要提醒**:
- 推理必须是连贯的描述性文字,说明为什么这个灵感点能刺激创作
- 候选编号全局唯一(连续编号:1, 2, 3...)
- 必须基于视频的实际内容进行分析,不能凭空想象

Step 2: 逆向推导验证

Prompt:

# 任务:逆向推导验证

## 当前视频
请对视频进行逐帧或关键帧分析。

## 候选灵感点
{candidates_text}

## 验证要求
对每个候选灵感点进行逆向推导验证:

**验证问题**:
- 从这个灵感点出发,能否推导出整个视频的内容?
- 这个刺激源是创作前的触发,而不是创作目的?
- 这个灵感点是否真正捕捉到了深层动机?

**验证规则**:
- 能推导出 → 验证通过(true)
- 不能推导出或逻辑不通 → 验证失败(false)

## 输出格式(JSON - 简化版)
{
  "验证结果列表": [
    {
      "候选编号": 1,
      "验证结果": true,
      "推导说明": "从这个灵感点可以推导出..."
    }
  ]
}

Step 3: 去重检查

Prompt:

# 任务:灵感点去重

## 候选灵感点列表
{candidates_text}

## 核心判断标准

**唯一标准:是否指向同一个刺激源?**

- 如果两个灵感点描述的是**同一个事物/现象/刺激**,只是从不同角度、不同层面、不同粒度来表达 → 重复,去重

## 判断方法

1. **识别刺激源本质**:每个灵感点背后的刺激源到底是什么?
2. **对比刺激源**:是同一个刺激源的不同表述?还是两个不同的刺激源?
3. **忽略表述差异**:不要被具体用词、分类标签、角度差异迷惑,抓住本质

## 保留规则(重复时选择)

从重复组中选择**最能直接反映刺激源本身**的那一个:
- 优先保留描述刺激源本身的(客体)
- 其次保留最具体、最精准的

## 输出(JSON)
{
  "去重分析": [{"重复组": [2, 3], "重复原因": "两者都在描述同一个刺激源:[具体说明]", "保留编号": 2, "保留理由": "[原因]"}],
  "保留的候选编号列表": [1, 2]
}

Step 4: 三维度评分

Prompt:

# 任务:评估灵感点

## 待评分的灵感点
{points_text}

## 评分标准

对每个灵感点从三个维度评分(每个维度1-10分):

### 1. 人设契合度(默认先都给5分)
- 因没有历史视频信息无法推算人设,先都给5分

### 2. 触发可能性(1-10分)
- 评估这个刺激点触发创作的可能性有多大
- 考虑刺激点的吸引力强度
- 考虑创作者遇到这个刺激时产生创作冲动的概率

### 3. 内容解释力(1-10分)
- 评估这个刺激点能否解释视频的核心内容
- 判断从这个刺激点能否推导出视频的主要内容
- 考虑刺激点与视频内容的关联强度

**总分 = 人设契合度 + 触发可能性 + 内容解释力(范围:3-30分)**

## 评分原则
- 客观评分,不要预设分数高低
- 如果与视频内容不符,触发可能性也会很低
- 如果是视频核心特征,触发可能性反而很高

## 输出格式(JSON)
{
  "评分结果列表": [
    {
      "候选编号": 1,
      "人设契合度": 8,
      "触发可能性": 7,
      "内容解释力": 9,
      "总分": 24,
      "评分说明": "详细说明评分理由:为什么这个刺激点符合人设、触发创作的可能性如何、能否解释视频内容"
    }
  ]
}

Step 5: 排序筛选

  • 按总分降序排序,筛选总分>=15分的灵感点,最多保留2个

Step 6: 组装最终输出

  • 从原始候选点中提取完整字段,合并验证信息和评分信息

输出: inspiration_points (列表格式)


节点3: 目的点提取

功能: 从创作者视角分析创作目的和动机

Prompt:

# 任务:提取创作目的(视频逐帧分析)

## 视频内容
请对视频进行逐帧或关键帧分析。

**重要**:你需要对视频进行逐帧或关键帧分析,捕捉以下维度的信息:
- **画面内容**:场景、物体、人物、环境等视觉元素
- **动作变化**:人物的动作、物体的运动、场景的转换
- **时间线索**:视频的时间顺序、节奏变化、关键时间点
- **视觉细节**:颜色、光影、构图、视觉焦点等
- **音频信息**(如有):对话、音效、背景音乐等

## 分析步骤
1. **逐帧分析**:观察视频的每一帧或关键帧,理解视频的整体内容和结构
2. **识别意图**:从视频的画面、动作、场景、对话等维度,推断创作者想让受众产生什么反应/影响(Why)
3. **维度归类**:从标准分类体系中选择最匹配的维度(优先二级分类)
4. **提炼目的点**:在维度下提炼具体目标(≤15字,聚焦最终效果,不写手段)

## 重要约束
- **每个二级分类最多1个目的点**(例如不能同时有2个"记录"维度的目的点)
- **宁缺毋滥**:如果某个维度的目的不明确,不要强行生成
- **总数控制**:最终输出1-3个目的点,不要为了凑数而硬造
- **证据支撑**:每个目的点都必须有足够的视频内容支撑,不能臆测
- **基于视频**:所有目的点必须基于视频的实际内容,不能凭空想象

## 输出格式(JSON)
{
    "目的点列表": [
        {
            "维度": {
                "一级分类": "",
                "二级分类": ""
            },
            "目的点": "",
            "描述": "",
            "推理": "说明基于视频的哪些画面/动作/场景/对话等线索,推导出创作者的这个目的"
        }
    ]
}

输出: purpose_point (包含perspective, purposes, total_count)


节点4: 关键点提取

功能: 从消费者视角提取核心吸引点

执行流程: 5步提取流程

Step 1: 识别候选关键点

Prompt:

# 任务:识别候选关键点(视频逐帧分析,扁平化列表)

## 视频内容
请对视频进行逐帧或关键帧分析。

**重要**:你需要对视频进行逐帧或关键帧分析,从以下维度捕捉吸引点:
- **画面内容**:场景、物体、人物、环境等视觉元素中的吸引点
- **动作变化**:人物的动作、物体的运动、场景的转换等动态吸引点
- **时间线索**:视频的时间顺序、节奏变化、关键时间点等时序吸引点
- **视觉细节**:颜色、光影、构图、视觉焦点等视觉吸引点
- **音频信息**(如有):对话、音效、背景音乐等听觉吸引点

## 字段定义

### 维度大类
只能是"形式"或"实质"

### 维度细分
- 形式类:只能是"风格"或"关系"
- 实质类:只能是"元素"或"分类"

### 关键点
≤15字核心发现(只写"是什么",不写"如何呈现")

### 描述
- **本质**: 讲清楚这个关键点是什么(吸引点的具体特征、形态、内容等客观信息)
- **内容要求**:
  - 描述吸引点本身的客观特征
  - 说明这个吸引点的完整上下文
  - 让读者能清晰理解"这个关键点到底是什么"
- **严格禁止**:
  - 不解释为什么吸引
  - 不进行价值判断和主观评价
  - 不分析效果和影响

## 维度分类要求(二级分类体系)

**维度大类:形式**
- **风格**:关注内容的整体呈现方式、结构、格式等外在特征
- **关系**:关注内容中各个实质要素之间的关联、逻辑关系

**维度大类:实质**
- **元素**:关注内容中的具体实体、对象、要素等
- **分类**:关注对具体元素的抽象、总结、归纳

## 输出(JSON)
{
  "候选关键点列表": [
    {
      "候选编号": 1,
      "维度大类": "形式|实质",
      "维度细分": "风格|关系|元素|分类",
      "关键点": "核心发现",
      "描述": "充分说明"
    }
  ]
}

要求:
- 广泛收集:从视频的各个维度(画面、动作、场景、对话等)广泛收集吸引点
- 客观陈述:只陈述事实,不做主观判断
- 严格按照二级维度体系归类:必须明确标注维度大类(形式/实质)和维度细分(风格/关系/元素/分类)
- 编号连续:候选编号从1开始连续编号
- 基于视频:所有关键点必须基于视频的实际内容,不能凭空想象

注意:此步骤输出扁平化列表,后续会构建层级关系

Step 2: 第一轮去重(与灵感点、目的点去重)

  • 移除与灵感点/目的点重复的关键点

Step 3: 第二轮去重(关键点之间去重)

  • 移除本质相同的关键点,只保留一个

Step 4: 构建层级关系

Prompt:

# 任务:构建关键点层级关系

## 关键点列表(扁平化)
{points_text}

## 层级判断标准

**层级关系定义**:
- **大类 → 小类**:一个关键点是另一个关键点的具体类别
- **抽象 → 具体**:一个关键点是另一个关键点的具体表现
- **整体 → 局部**:一个关键点是另一个关键点的组成部分

**判断方法**:
1. 识别父子关系:子关键点是父关键点的细分、具体化或局部
2. 构建树形结构:父节点可以有多个子节点,子节点也可以继续有子节点
3. 确保无循环:不能出现A→B→A的情况

**层级原则**:
- 同一层级的关键点应该是并列关系(不存在包含、细分关系)
- 不同层级的关键点应该是从属关系(父→子)
- 一级关键点(根节点)应该是最抽象、最整体的关键点
- 如果两个关键点没有明确的层级关系,则保持在同一层级

## 输出(JSON)
{
  "层级分析": [
    {
      "父编号": 1,
      "子编号列表": [2, 3],
      "层级关系": "大类→小类|抽象→具体|整体→局部",
      "关系说明": "说明为什么存在这个层级关系",
      "子节点原因": {
        "2": "说明编号2作为子节点的具体原因",
        "3": "说明编号3作为子节点的具体原因"
      }
    }
  ],
  "一级关键点编号列表": [1, 4, 5]
}

Step 5: 组装最终输出

  • 构建树形结构的关键点列表

输出: key_points (包含key_points树形列表, total_count, root_count)


节点5: 选题理解

功能: 整合视频内容和三点分析结果,理解选题策略

Prompt:

# 输入数据

## 视频内容 
请对视频进行逐帧或关键帧分析。

**重要**:你需要对视频进行逐帧或关键帧分析,从以下维度理解视频内容:
- **画面内容**:场景、物体、人物、环境等视觉元素
- **动作变化**:人物的动作、物体的运动、场景的转换
- **时间线索**:视频的时间顺序、节奏变化、关键时间点
- **视觉细节**:颜色、光影、构图、视觉焦点等
- **音频信息**(如有):对话、音效、背景音乐等

基于视频的实际内容,结合以下三点分析结果,理解选题策略。

## 灵感点分析
{inspiration_section}

## 目的点分析
{purpose_section}

## 关键点分析
{key_points_section}

---

# 执行指令

基于以上数据,输出选题策略分析。

## 质量要求
- **描述**: 必须是完整流畅的1-2句话,清晰展现完整逻辑链"灵感来源→关键手法→呈现效果→创作目的"
  - **必须包含目的点**: 明确说明创作者的目的,不能只描述内容本身
  - **必须体现三点内在关联**: 分析三点的有机融合逻辑,而非简单罗列
  - **基于视频内容**: 所有分析必须基于视频的实际内容,不能凭空想象
  - 拒绝笼统概念,要具体到本质特征
  - 删除非核心修饰词,只保留最本质的词
  - 禁用空洞词汇: "精心"、"独特"、"全面"、"旨在"、"充分"、"深度"、"夸张的"、"强烈的"、"明显的"

**重要提醒**:
- 不需要输出 `explicit_elements` 字段,系统会自动从三点数据中提取
- 所有分析必须基于视频的实际内容和三点分析结果

输出: topic_selection_understanding (包含主题、描述、覆盖情况、explicit_elements)


节点6: 段落划分

功能: 分析视频的分段结构,理解创作者如何组织内容

Prompt:

# 任务

从**创作者视角**分析这个视频是如何组织内容的。

## Section切分流程

**第一步:识别主题显著变化位置**
扫描整个视频,识别**主题发生显著变化**的位置:

- **判断标准**:
  * 语义跃迁: 讨论对象发生根本性改变
  * 逻辑转换: 从"是什么"转向"为什么"或"怎么办"
  * 功能变化: 从"问题陈述"转向"解决方案"
  * 场景切换: 画面、场景、动作发生明显变化
  * 对话转换: 话题、语气、情绪发生明显变化

- **划分原则**:
  * 避免过度细分(每个小变化都成为顶层段落)
  * 避免过度粗放(将所有内容合并为1个顶层段落)
  * 以"主题板块"而非"内容单元"为划分粒度

**第二步:初步划分**
- 基于主题显著变化位置进行划分
- 支持主Section和子Section的层级结构
- 需要对视频进行逐帧或关键帧分析,捕捉画面、动作、场景、对话等维度的结构变化

**第三步:顺序验证与反思**
- 检查每个Section内的视频片段是否保持时间顺序的连续性
- 验证同一Section内的内容是否有语义关联
- 确认段落之间的过渡是否自然合理

## 层级要求

**段落必须至少保留2层结构**:
1. **第1层(抽象层)**:从具象中聚合出的共性维度
2. **第2层(具象层)**:具体的内容细节

**层级关系说明**:
- 抽象层是对多个具象内容的归纳和提炼
- 具象层是抽象层的具体展开
- 每个抽象层下必须有至少1个具象层子项

### 整体情绪价值(Emotion Value)
**内容背后的情绪钩子或社会价值**。仅在有明显的升维价值时提取(如:民族自信、致青春、趋吉避凶、鞠躬尽瘁),否则留空。
** 输出案例: "致青春", "友谊长存", "猎奇", "颠覆认知"等 6字以内的词语,可输出多个,用逗号分隔**

## Section字段

- 描述: 段落描述(共性维度名称;具体内容概括)
- 内容范围: **列表格式,包含具体视频片段**
  - 格式:["0:00-0:30", "0:30-1:15"] 或 ["片段1: 开场介绍", "片段2: 问题阐述"]
  - 要求:必须包含具体的时间戳范围或视频片段描述,清晰标识该Section涵盖的视频内容
- 推理依据: 为什么这样划分
- 子项: 子Section列表(树状结构)

# 输出(JSON)- 树状结构

{
  "内容品类": "内容品类",
  "整体情绪分析": ["整体情绪分析1(6个字以内)", "整体情绪分析2(6个字以内)"],
  "段落衔接机制": [
    {
      "from": "段落1",
      "to": "段落2",
      "衔接方式": "如何过渡到下一个段落",
      "衔接语/画面特征": "衔接语或画面特征",
      "设计意图": "设计意图"
    }
  ],
  "段落列表": [
    {
      "描述": "共性维度名称",
      "内容范围": ["0:00-0:30", "0:30-1:15"],
      "推理依据": "为什么这样划分这个抽象层",
      "子项": [
        {
          "描述": "具体内容概括",
          "内容范围": ["0:00-0:30"],
          "推理依据": "这个具象内容如何支撑上层抽象",
          "子项": []
        }
      ]
    }
  ]
}

输出: 内容品类, 段落列表 (树状结构)


节点7: 实质提取

功能: 从视频内容中提取实质元素(具体元素、具象概念、抽象概念)

执行流程: 8步提取流程

Step 1: 提取具体元素

Prompt:

# 任务
从视频中提取"具体元素"

# 核心定义

## 具体元素
- **定义**:
  -- 1.从视频画面中直接观察到的、可独立存在的**单一视觉实体对象**
  -- 2.视频的背景音乐、音效等非口播内容的声音
- **判断标准**:
  -- 1.可以指着画面说"这是一个X"(单一、具体、可见的实体)
  -- 2.有背景音乐、音效等非口播内容的声音,直接用"背景音乐/音效声"作为名称即可,不要重复提取
- **示例**:
  -- 1.胡萝卜、青椒、西兰花(每个都是单独的实体)
  -- 2.背景音乐/音效声
- **禁止**:
  - 归类词(蔬菜、水果)
  - 概念性名词(食物、植物、人)
  - 文字内容(只关注视觉实体)

## 提取原则(仅针对画面中的视觉实体对象)
- 只从视频画面中提取,不关注文字
- 每个元素必须是单一的、具体的视觉实体
- 使用"剥离测试":去掉表达方式后,这个实体仍然存在

# 命名规范
- 原子性:单一原子名词,不可再拆分
- 名词性:纯名词,严禁形容词、动词、副词
- 具体性:直接指向可观察的实体

# 输出json结构
[
    {
      "id": "从1开始的自增序列",
      "名称": "单一原子名词",
      "描述": "说明这个元素是什么,外观特征",
      "维度": {"一级": "实质", "二级": "具体元素"},
      "来源": ["视频画面"],
      "推理": "为什么识别这个具体元素"
    }
]

Step 2: 提取具象概念

Prompt:

# 任务
从视频中提取"具象概念"

# 核心定义
## 具象概念
- **定义**:视频画面内的文字或者口播内容中明确提到的完整名词

## 排除的名称(来自第一步,仅用于排除)
**禁止提取的名称**:{element_names_text}

## 判断标准
- **视频画面内的文字或者口播内容**中实际出现的**完整名词**
- **不能是视频画面中出现的元素的名称等归类词**
- 去掉表达方式后,这个概念仍然存在

# 约束
- 禁止通过语义推导、联想、理解得出的名词
- **禁止归类词(蔬菜、水果、人等)**
- **禁止使用第一步中已提取的具体元素名称**
- 禁止拆分复合词
- 禁止提取形容词、动词
- 禁止提取谓语、定语、状语、补语
- 禁止提取副词

## 提取原则
- **词语完整性**:必须提取完整的**名词**,不允许拆分复合词
- **严格约束**:必须是**画面文字或者口播内容中实际出现**的完整名词
- **严格的名词验证**(必须同时满足以下两个条件):
   - 条件1:词性是名词(词典意义上的名词)
   - 条件2:在当前上下文中作为名词使用(语境判断)

   **验证方法**:
   - 找到该词在视频画面内的文字或者口播内容中的具体位置
   - 分析该词在句子中的语法成分和实际作用
   - 判断:该词是否在这个语境中充当"事物/对象/概念"的角色?

# 输出json结构
[
    {
      "id": "从1开始的自增序列",
      "名称": "字面原词(完整名词)",
      "描述": "说明这个概念是什么",
      "维度": {"一级": "实质", "二级": "具象概念"},
      "来源": "HH:MM:SS",
      "上下文验证": {
        "原文位置": "该词在原视频画面内的文字或者口播内容中的具体句子",
        "语法成分": "该词在句子中的语法成分(主语/宾语/定语中心语等)",
        "语境判断": "说明该词在此语境中确实作为名词使用的理由"
      },
      "推理": "为什么这个名词被认为是具象概念"
    }
]

Step 3: 总结抽象概念

Prompt:

# 任务
基于已提取的具体元素和具象概念,总结新的"抽象概念"

# 已提取的具体元素
{elements_text}

# 已提取的具象概念
{concepts_text}

# 核心定义

# 定义与分类
**抽象概念**分两类:

**类型1-上位抽象**:对具体元素/具象概念的归类
**类型2-引申含义**:具体元素/具象概念无法直接表达的深层含义

# 提取原则
- 对具体元素/具象概念的归类
- 具体元素和具象概念无法直接表达的深层含义
- 基于归纳:基于已提取的具体元素/具象概念
- 来源追溯:准确标明所有来源ID(具体元素ID、具象概念ID),必须完整可追溯

# 命名规范
- 有完整独立语义的概念
- 单一原子名词,不可拆分
- 纯名词,禁止形容词、动词、副词
- 精准描述概念,不做修饰

# 判断标准
- 去掉表达方式后,概念仍存在

# 输出json结构
[
    {
      "id": "从1开始的自增序列",
      "名称": "单一名词或短语",
      "描述": "说明这个抽象概念是什么",
      "维度": {"一级": "实质", "二级": "抽象概念"},
      "类型": "上位抽象 | 引申含义",
        "来源": {
        "具体元素": [{"id":"具体元素-X", "名称":"具体元素-X的名称"}, {"id":"具体元素-Y", "名称":"具体元素-Y的名称"}],
        "具象概念": [{"id":"具象概念-A", "名称":"具象概念-A的名称"}, {"id":"具象概念-B", "名称":"具象概念-B的名称"}]
      },
      "推理过程": "明确说明如何从上述来源(具体哪些元素ID和概念ID)推导出这个抽象概念",
    }
]

Step 4: 共性分析

  • 统计每个实质元素在视频中的出现频次和段落覆盖率

Step 5: 多维度评分

  • 已废弃相似度计算逻辑,仅返回空结果

Step 5.1: 意图支撑评估

  • 评估实质元素对灵感点/目的点/关键点的支撑关系(基于视频画面和文字语境)

Step 6: 筛选

  • 筛选条件:出现频次>1 且 有意图支撑关系 且 段落覆盖率>30%(声音类型元素豁免)

Step 7: 分类

  • 按二级维度(具体元素/具象概念/抽象概念)分别进行分类

Step 8: 合并信息

  • 合并所有中间信息到最终元素

输出: substance_final_elements (列表格式)


节点8: 形式提取

功能: 从视频内容中提取形式元素(具象概念形式、具体元素形式、整体形式)

执行流程: 8步提取流程

Step 1: 提取具象概念形式

Prompt:

# 任务
从视频中提取"具象概念形式"元素(关注画面中的文字呈现方式和口播表达方式)

# 已提取的具象概念(供参考,不允许从中直接抄写内容)
{concepts_text}

# 核心定义

## 具象概念形式
- 定义:对具象概念的描述、修饰、表达方式(包括画面文字呈现方式 + 口播表达方式)
- 特征:表达方式本身,而不是概念内容
- 包含:
  - 对概念的强调方式(如:反复重复、放大字号、加重语气)
  - 画面文字呈现方式(如:字体、颜色、大小、位置、动画等)
  - 口播语气特性(如:教学口吻、科普式表达、聊天式口吻、语气特征、语速、停顿等)
  - 口播内容的修饰手法(如:夸张、比喻、反问、排比)
  - 口播内容的叙述方式(如:第一人称、第二人称、对话体)
  - 口播内容的节奏特征(如:语速快慢、停顿设计、重音、语气变化等)

## 提取原则
1. 只提取画面文字展示方式和口播表达方式,不涉及视觉呈现
2. 必须依附于已提取的具象概念
3. 使用"剥离测试":去掉表达手法后,概念本身仍存在
4. **原子化命名**:形式名称必须是最原子的,不包含实质内容
5. **建立关联关系**:通过"支撑"字段建立形式与实质的关联边
6. **段落级别**:形式作用域至少是整个段落,不能仅针对单句

## 作用域约束(重要)
1. **段落级别作用域**(核心约束):
   - 形式的作用域至少是**整个段落级别**,不能仅针对段落中的某一句话
   - 必须是该段落的整体画面文字呈现方式和口播表达方式,而非局部单句的特征
2. **同段落作用域**:形式必须与其支撑的具象概念在同一段落中
3. **事实对应关系**:形式对概念的支撑必须在视频中有明确的对应关系
   - 不能仅凭推测建立支撑关系,必须实际看到这种支撑

# 输出json结构
[
  {
    "id": "从1开始的自增序列",
    "名称": "单一名词或短语(必须是原子化的形式名称)",
    "描述": "说明形式的本质是什么,以及在视频中的具体定义",
    "维度": {"一级": "形式", "二级": "具象概念形式"},
    "支撑": [{"id":"具象概念id", "名称":"具象概念名称"}],
    "推理": "在文字中的具体体现方式(引用视频中的说法或呈现方式)",
    "段落来源": ["段落ID1", "段落ID2"]
  }
]

Step 2: 提取具体元素形式

Prompt:

# 任务
从视频中提取"具体元素形式"元素

# 已提取的具体元素
{elements_text}

# 已提取的具象概念
{concepts_text}

# 核心定义

## 具体元素形式
- **定义**:视觉画面的形式,支撑具体元素、具象概念的视觉呈现以及背景音乐、音效等非口播内容的声音呈现方式
- **特征**:图像的视觉表现手法、外观特征或者背景音乐和音效的类别、风格、节奏等
- **范围**:构图、色彩、光影、质感、视觉技巧等图片层面的特征或者声音方面的特征
- **重要**:不关注画面里的文字以及口播内容说了什么,只关注视觉呈现以及声音呈现方式

## 提取原则
1. **视觉性**:必须是画面层面或者背景音乐音效层面的形式,而非文字层面或者口播内容层面
2. **边界明确**:不关注画面里的文字以及口播内容,只关注视觉呈现手法或者声音呈现方式
3. **支撑性**:可以支撑具体元素,也可以支撑具象概念
4. **语义完整性**:必须提取具有完整独立语义的形式特征
5. 使用"剥离测试":去掉表达方式后,元素本身仍存在
6. **段落级别**:形式作用域至少是整个段落,不能仅针对单个元素

## 作用域约束(重要)
1. **段落级别作用域**(核心约束):
   - 形式的作用域至少是**整个段落级别**,不能仅针对段落中的某一句话
   - 必须是该段落的整体呈现方式,而非局部单个元素的特征
2. **同段落作用域**:形式必须与其支撑的实质元素/概念在同一段落中
3. **事实对应关系**:形式对实质的支撑必须在视频中有明确的视觉对应关系
   - 不能仅凭推测建立支撑关系,必须在画面中实际看到这种支撑

# 命名与关联分离原则(重要)

## 核心规则
- **名称**:只描述形式手法本身(纯形式词汇)
- **支撑**:说明这个形式手法应用在哪些实质内容上(通过id关联具体元素/具象概念)
- **推理**:说明具体如何体现(在图像中的呈现细节或者声音方面的呈现方式)
- **段落来源**:记录形式来自哪个段落

## 关键要求
1. **名称的纯粹性**:名称中不能包含任何实质内容(具体元素名称、具象概念名称等)
2. **通过支撑建立关联**:实质内容通过"支撑"字段的id关联,而非写在名称中
3. **推理的具体性**:在推理中详细说明这个形式手法如何应用在支撑的实质内容上
4. **来源的准确性**:图片来源和段落来源必须与支撑的实质元素/概念一致

# 输出json结构
[
    {
      "id": "从1开始的自增序列",
      "名称": "单一名词或短语(必须是原子化的纯形式词汇)",
      "描述": "说明形式的本质及在帖子中的具体定义",
      "维度": {"一级": "形式", "二级": "具体元素形式"},
      "支撑": {
        "具体元素": [{"id":"元素id", "名称":"元素名称"}],
        "具象概念": [{"id":"概念id", "名称":"概念名称"}]
      },
      "推理": "在画面中或者声音方面的具体体现(说明这个形式手法如何应用在支撑的实质内容上)",
      "段落来源": ["段落ID1", "段落ID2"]
    }
]

Step 3: 提取整体形式

Prompt:

# 任务
从视频中提取"整体形式"元素

# 已提取的具体元素
{elements_text}

# 已提取的具象概念
{concepts_text}

# 已提取的抽象概念
{abstracts_text}

# 核心定义

## 整体形式
- 定义:多模态内容的组合方式、结构特征、整体呈现策略
- 特点:不针对单个元素/概念,而是整体组织方式

## 提取原则
1. 整体性:必须是整体层面的特征,不是局部细节
2. 形式性:使用"剥离测试" - 去掉表达方式后内容失去结构
3. 可命名性:能用简洁的名词/短语概括
4. 避免重复:与具体元素形式、具象概念形式区分开
7. **宏观层面**:作用范围至少是整个段落或多段落,不能是单句或局部内容

## 作用域约束(重要)
1. **段落级别作用域**(核心约束):
   - 形式的作用域至少是**整个段落级别**,不能仅针对段落中的局部内容
   - 整体形式通常作用于整个帖子或多个段落,必须是宏观层面的特征
2. **支撑关系**:整体形式支撑特定实质元素时,必须记录这些元素所在的段落
3. **来源标注**:标注整体形式主要体现在哪些段落中

## 常见维度参考(不限于此)
- 多模态组合:画面+口播+字幕的配比、关系、时序、模态切换
- 结构方式:内容组织逻辑(并列/递进/对比/因果/总分/时间/空间顺序等)
- 呈现策略:整体表达风格(教程式/故事式/问答式/列表式/对话式等)
- 节奏控制:信息密度、镜头节奏、高潮设计
- 视角设计:叙述视角(第一人称/第二人称/第三人称)
- 互动方式:对观众的提问、召回、引导

# 输出json结构
[
  {
    "id": "从1开始的自增序列",
    "名称": "单一名词或短语(简洁准确)",
    "描述": "说明形式的本质是什么,以及在视频中的具体定义",
    "维度": {"一级": "形式", "二级": "整体形式"},
    "支撑": {
      "具体元素": [{"id":"元素id1", "名称":"元素名称1"}, {"id":"元素id2", "名称":"元素名称2"}],
      "具象概念": [{"id":"概念id1", "名称":"概念名称1"}, {"id":"概念id2", "名称":"概念名称2"}]
    },
    "推理": "在视频中的具体体现(结合镜头、节奏、结构说明)",
    "段落来源": ["段落ID1", "段落ID2"]
  }
]

Step 4: 共性分析

  • 统计每个形式元素在视频中的出现频次

Step 5: 支撑判断

  • 评估形式元素对灵感点/目的点/关键点的支撑关系(按维度分别评估)

Step 6: 权重计算

  • 纯代码实现,不调用LLM。动态自适应权重策略(总分100分):共性维度50分(频次40% + 覆盖段落数30% + 覆盖率30%)+ 支撑维度50分(灵感点20分 + 目的点15分 + 关键点15分)

Step 7: 筛选

  • 筛选条件:权重分>=40

Step 8: 分类

  • 按二级维度(具象概念形式/具体元素形式/整体形式)分别进行分类

输出: form_final_elements (列表格式)


节点9: 分离结果

功能: 将实质和形式结果分离到独立字段

执行过程:

  • 从state中获取substance_final_elementsform_final_elements
  • 分别存储到实质列表形式列表字段

输出: 实质列表, 形式列表


节点10: 结果汇总

功能: 将所有解构结果汇总为最终的JSON结构

执行过程:

  • 提取视频信息(URL、标题、正文)
  • 汇总三点解构结果(灵感点、目的点、关键点)
  • 汇总选题理解结果
  • 汇总脚本理解结果(内容品类、段落列表、实质列表、形式列表)
  • 验证JSON格式

输出: final_result (包含视频信息、三点解构、选题理解、脚本理解)


总结

整个解码工作流通过10个节点完成视频的全面分析:

  1. 视频上传: 下载并上传视频到Gemini
  2. 三点解构: 提取灵感点、目的点、关键点
  3. 选题理解: 整合三点分析结果,理解选题策略
  4. 脚本理解: 段落划分、实质提取、形式提取
  5. 结果汇总: 将所有结果组装为最终JSON结构

每个节点都基于视频逐帧分析,确保提取的信息准确且全面。