# 解码工作流执行过程总结 ## 工作流概览 解码工作流是一个完整的视频分析流程,包含10个节点: 1. 视频上传 → 2. 灵感点提取 → 3. 目的点提取 → 4. 关键点提取 → 5. 选题理解 → 6. 段落划分 → 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_elements`和`form_final_elements` - 分别存储到`实质列表`和`形式列表`字段 **输出**: `实质列表`, `形式列表` --- ## 节点10: 结果汇总 **功能**: 将所有解构结果汇总为最终的JSON结构 **执行过程**: - 提取视频信息(URL、标题、正文) - 汇总三点解构结果(灵感点、目的点、关键点) - 汇总选题理解结果 - 汇总脚本理解结果(内容品类、段落列表、实质列表、形式列表) - 验证JSON格式 **输出**: `final_result` (包含视频信息、三点解构、选题理解、脚本理解) --- ## 总结 整个解码工作流通过10个节点完成视频的全面分析: 1. **视频上传**: 下载并上传视频到Gemini 2. **三点解构**: 提取灵感点、目的点、关键点 3. **选题理解**: 整合三点分析结果,理解选题策略 4. **脚本理解**: 段落划分、实质提取、形式提取 5. **结果汇总**: 将所有结果组装为最终JSON结构 每个节点都基于视频逐帧分析,确保提取的信息准确且全面。