Skills Plugins MCP Prompt Model 博客 我的中心

video-style-analysis

完美复刻原视频的完整内容(画面+声音),通过智能体分析原视频的视觉风格和音频特征,生成风格提示词,使用TTS复刻配音,基于原画面重新生成相似视频并合成;当用户需要完美复刻视频内容、语音克隆、视频风格迁移时使用

DeepseekModel Curated skill Quality Good · 64 v1.0.0

Get

https://deepseekmodel.com/api/download.php?id=huangserva-skill-video-style-analysis-skill-md&format=skill
Download .skill Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name video-style-analysis description 完美复刻原视频的完整内容(画面+声音),通过智能体分析原视频的视觉风格和音频特征,生成风格提示词,使用TTS复刻配音,基于原画面重新生成相似视频并合成;当用户需要完美复刻视频内容、语音克隆、视频风格迁移时使用 dependency {"python":["opencv-python","numpy","moviepy","Pillow","openai-whisper","edge-tts","aiohttp","pyyaml","insightface","onnxruntime"]} 视频完美复刻(智能体分析+TTS配音+音视频合成) 任务目标 本 Skill 用于:完美复刻原视频的完整内容,包括重新生成画面(保持高相似度)和克隆原视频的配音风格(音色、语调、节奏),并合成最终视频 能力包含:智能体视频分析(视觉+音频)、风格提示词生成、TTS配音生成、音视频合成 触发条件:用户需要完美复刻视频内容、克隆原视频配音风格、保持原故事情节和画面风格时使用 前置准备 依赖说明:确保已安装以下Python包 opencv-python numpy moviepy Pillow openai-whisper 核心理念 ⭐ 多层视频语义分析:先粗判,再抽丝剥茧 这套 Skill 不应该一上来就把视频压缩成一句 prompt。 无论有没有 ASR,都必须先完成一个 逐层收敛 的分析过程:先判断视频属于什么内容机制,再判断画面里发生了什么,再抽取能帮助进一步判定的证据,最后才生成复刻约束。 强制顺序: 媒体基线 :分辨率、横竖屏、时长、帧率、是否有音轨、是否有 OCR/字幕 内容粗分类 :剧情 / 口播 / 纪录 / 教程 / 表演 / 训练 / 商品展示 / 氛围片 场景语义骨架 :地点类型、空间结构、人数规模、主体组织方式、光线与环境 主体与行为分析 :谁在画面里、在做什么、动作是同步还是对抗、是训练还是表演 判别性证据提取 :服装、鞋子、道具、器材、文字、标识、屏幕内容 子类收敛与复刻约束 :把“像运动”继续收敛到“训练 / 表演 / 比赛 / 排练”等,再写 prompt 和负约束 原则 : 不允许从“多人 + 室内”直接跳成“多人活动现场” 不允许从“像跳舞”直接停住,必须继续检查动作、队形、服装、鞋子、文字、道具 先写 事实层 ,再写 解释层 ,最后才写 生成层 每一层都要回答: 我看到了什么 、 这说明什么 、 还缺什么证据 语义分析 6 层 16 维(通用) Layer 0:媒体基线 媒体规格 :分辨率、比例、横竖屏、时长、帧率、清晰度 音频角色 :无人声 / 解说 / 对话 / 环境音 / 音乐主导 / 混合 Layer 1:内容机制判断 内容类型 :剧情、纪实、教程、舞台、训练、广告、旅行、产品、纯氛围 叙事驱动力 :ASR 驱动、视觉驱动、字幕驱动、音乐驱动,或混合驱动 Layer 2:场景语义骨架 地点与空间 :室内/室外、建筑类型、空间用途、景深与站位关系 时间与光线 :白天/夜晚、自然光/人工光、冷暖、硬光/漫射 主体规模 :单人、双人、小群体、大型群像 主体组织关系 :对话、协作、对抗、列队、围观、表演、教学 Layer 3:主体与行为 核心行为 :走、跑、跳、练、演、讲、做、展示、互动、操作 动作结构 :静态、重复动作、连续动作链、强爆发动作、同步动作 外观线索 :年龄段、性别倾向、服装类别、制服程度、发型、妆造 Layer 4:判别性证据 道具/器材/鞋服细节 :最能帮助子类判断的具体物件或穿着细节 文字与符号线索 :字幕、招牌、屏幕 UI、墙面文字、衣物印字、徽标 Layer 5:生成约束 构图与摄影 :景别、机位、构图、运镜、节奏 风格与氛围 :色调、质感、真实度、年代感、文化风格、情绪气候 复刻硬约束 :哪些必须保留,哪些不能错,哪些允许近似 示例(抽象方法,不是写死舞蹈模板) : 粗分类:室内多人同步活动 行为判断:重复抬步、队列训练、节奏一致 证据提取:统一服装、分趾舞鞋、木地板、墙面文字 子类收敛:群体基础舞步训练 / 民俗舞排练,而不是泛化成“多人运动” ⭐ ASR优先 + 分级容错机制 关键洞察 :ASR语音识别不仅仅是"语音转文字",更是 理解视频叙事的关键步骤 。 对比 : 方法 只看图像 图像+ASR 角色数量 可能误判(如数出7个) 准确(如实际2个) 主角识别 不确定 立刻知道 叙事线 需要猜测 文本直接说明 角色关系 不清楚 明确 因此 :当 ASR 有效时,ASR结果 指导 角色识别和叙事理解;但它不替代视觉语义分析,更不能跳过“粗分类 → 证据提取 → 子类收敛”。 执行方式 :ASR步骤如主session环境无法安装Whisper,会自动启动sub-agent session执行。 ⚠️ 分级容错机制 问题 :不是所有视频都有音频,也不是所有音频都能提取到有效的叙事线。 解决方案 :三级容错机制,自动降级处理。 Level 1:ASR成功 + 叙事线清晰(最佳)✅ 触发条件 : 视频有音频轨道 ASR成功提取文本 文本包含明确的角色信息和叙事线 处理方式 : 按标准流程:ASR → 叙事线分析 → 角色识别 → 视觉验证 输出高质量叙事分析 示例 :完整剧情类短视频(含明确角色关系与叙事线) Level 2:ASR成功但叙事线不清晰(次佳)⚠️ 触发条件 : 视频有音频轨道 ASR成功提取文本 文本缺少明确角色信息或叙事线(如:环境音、音乐、片段式对话) 处理方式 : ASR辅助模式 :使用ASR时间戳作为场景边界 文本辅助 :提取关键词作为风格提示 降级到视觉分析 :主要依靠关键帧视觉分析 角色识别 :纯视觉推断 + ASR关键词辅助 示例场景 : 旅游纪录片:ASR可能只有环境音,但时间戳可用于场景分割 美食视频:ASR可能只有烹饪声音,但可以提取场景节奏 Level 3:无ASR或ASR失败(兜底)🛡️ 触发条件 : 视频无音频轨道 ASR完全失败(音频损坏、格式不支持等) 纯视觉视频 处理方式 : 纯视觉分析模式 场景分割 :完全依赖关键帧视觉差异 角色识别 :使用步骤1.5的 character_detection.json (InsightFace人脸嵌入聚类,即使换装也能匹配同一角色) 逐层视觉语义分析 :按“内容粗分类 → 主体行为 → 证据提取 → 子类判定 → 生成约束”执行 叙事线推断 :基于场景变化和动作序列推断,而不是直接猜主题 风险提示 : 角色数量可能误判(如之前的7个 vs 实际2个) 叙事线可能不准确 需要用户确认角色识别结果 示例场景 : 无声视频、动画视频、纯画面展示视频 自动降级流程 def analyze_with_fallback ( video_path ): """ 带容错的视频分析流程 """ # 尝试提取音频 audio = extract_audio(video_path) if audio is None : # Level 3: 无音频 return pure_visual_analysis(video_path) # 尝试ASR asr_result = perform_asr(audio) if asr_result is None or not asr_result[ "full_text" ]: # Level 3: ASR失败 return pure_visual_analysis(video_path) # 尝试叙事线分析 narrative = analyze_narrative(asr_result[ "full_text" ]) if narrative[ "clarity_score" ] < 0.5 : # Level 2: 叙事线不清晰 return hybrid_analysis(video_path, asr_result, narrative) # Level 1: 完整流程 return full_analysis_with_narrative(video_path, asr_result, narrative) 输出标识 : 每个分析结果需包含 analysis_level 字段("level_1" / "level_2" / "level_3") Level 2/3 需增加 confidence_warning 字段,提示用户验证 操作步骤 阶段1:叙事理解(ASR优先) 步骤1:智能关键帧提取 执行方式:调用Python脚本 python scripts/smart_keyframe_extractor.py \ --video_path <原视频路径> \ --output_dir output/keyframes/ \ --min_fps 2.0 核心功能 : 场景切换检测 :识别场景边界(帧间像素差异阈值15%) 动作密度分析 :动作密集区域多提取,静态区域适度提取 均匀提取兜底 :每秒至少2帧,确保不遗漏重要镜头 输出 : output/keyframes/*.jpg - 关键帧图像 output/keyframes/extraction_result.json - 提取结果(场景列表、关键帧列表、视频信息) 步骤1.5:角色检测与跨帧聚类 执行方式:调用Python脚本(InsightFace) python scripts/character_detector.py \ --keyframes_dir output/keyframes/ \ --output_path output/analysis/character_detection.json \ --extraction_result output/keyframes/extraction_result.json \ --similarity_threshold 0.4 核心功能 : 人脸检测 :使用InsightFace (buffalo_l) 检测每帧中的人脸及位置 特征提取 :提取512维人脸嵌入向量(ArcFace) 跨帧聚类 :余弦相似度贪心聚类(默认阈值0.4),即使换装也能通过人脸特征匹配同一角色 角色档案 :生成每个角色的出现帧列表、人脸/身体区域bbox、代表性面部裁切图 ASR整合 (可选):步骤3.5完成后,可带 --narrative_path 重新运行以将视觉角色与文本角色名关联 为什么需要这一步 : 纯图像分析中,同一角色换装后会被误判为不同人 ASR失败时,没有角色检测就只能靠Claude看图猜测 人脸嵌入在换装、换场景时仍然稳定,是最可靠的跨帧角色匹配方式 输出 : output/analysis/character_detection.json - 角色检测与聚类结果 output/analysis/characters/char_N_face.jpg - 每个角色的代表性面部裁切 人数字段的正确理解 : unique_characters = 跨帧人脸聚类数 ,它表示底层检测里聚成了多少张“可能是不同人”的脸, 不能直接当成现场人数 frame_visible_people = 对步骤1提取出的每张关键帧做一次 单帧可见人数估计 visible_people_stats.stable_visible_people_estimate = 复刻链路默认使用的 稳定可见人数估计 scene_visible_people_stats = 每个场景的人数统计,后续判断主体规模、群像策略、prompt 人数关系时优先用它 输出示例 : { "total_keyframes_analyzed" : 10 , "total_faces_detected" : 15 , "unique_characters" : 2 , "visible_people_stats" : { "stable_visible_people_estimate" : 2 , "min_visible_people" : 1 , "max_visible_people" : 2 } , "scene_visible_people_stats" : [ { "scene_id" : 0 , "time_range" : "0.0-5.0s" , "stable_visible_people_estimate" : 2 } ] , "characters" : [ { "character_id" : 0 , "label" : "char_0" , "matched_name" : null , "appearance_count" : 7 , "keyframe_indices" : [ 0 , 2 , 3 , 5 , 6 , 8 , 9 ] , "scene_ids" : [ 0 , 1 , 2 , 3 ] , "face_bboxes" : { "frame_0000.jpg" : [ 120 , 50 , 220 , 180 ] } , "body_bboxes" : { "frame_0000.jpg" : [ 80 , 50 , 260 , 440 ] } , "representative_face_path" : "output/analysis/characters/char_0_face.jpg" , "avg_det_score" : 0.92 } ] } 步骤2:色彩与运动分析 执行方式:调用Python脚本 python scripts/video_analyzer.py \ --video_path <原视频路径> \ --output_path output/analysis/color_analysis.json 分析内容 : 技术规格 :分辨率、帧率、时长、编码格式 色彩分布 :RGB均值、HSV特征、亮度、对比度 色调识别 :warm_red_orange, warm_yellow, green, cyan, blue, purple等 运动特征 :static, slow_movement, normal_movement, dynamic_fast等 输出 : output/analysis/color_analysis.json - 色彩分析结果 步骤3:ASR语音识别 ⭐ 核心步骤 执行方式:调用Python脚本(自动提取音频+语音识别) python scripts/asr_transcriber.py \ --video_path <原视频路径> \ --output_path output/analysis/asr_result.json \ --model_size base \ --language zh \ --word_level 自动执行流程 : 音频提取 :使用ffmpeg从视频中提取音频轨道(16kHz, mono, WAV格式) 语音识别 :使用Whisper模型将音频转为文本 时间戳提取 :生成段落级和词级时间戳 ⚠️ 重要说明 : 如果主session环境无法安装Whisper库,会 自动启动sub-agent session执行 sub-agent session有独立环境,可以安装依赖并执行完整流程 ASR结果返回后,主session继续后续步骤 分析内容 : 语音转文本 :提取完整解说文本 时间戳提取 :段落级和词级时间戳(用于音画对齐) 叙事内容 :文本中包含的角色、身份、关系、叙事主题 输出 : output/audio/extracted_audio.wav - 提取的音频文件 output/analysis/asr_result.json - ASR识别结果 输出示例 : { "video_path" : "原视频.mp4" , "language" : "zh" , "full_text" : "大家好,今天要分享的是..." , "duration" : 45.2 , "segments" : [ { "id" : 0 , "start" : 0.0 , "end" : 3.5 , "text" : "大家好,今天要分享的是" , "words" : [ { "word" : "大家好" , "start" : 0.0 , "end" : 0.8 , "confidence" : 0.95 } ] } ] , "voice_style" : { "speed" : { "chars_per_second" : 3.2 , "level" : "中等" } , "pause" : { "count" : 5 , "frequency" : 1.1 } , "estimated_tone" : "温柔" , "estimated_emotion" : "温暖" } } 步骤3.5:叙事线分析 + 内容粗分类 ⭐ 关键步骤 执行方式:审核初稿 + 智能体补充 初稿已自动生成 : output/analysis/narrative_analysis.json 由 draft_generator.py 在阶段1结束时自动生成,包含从ASR文本提取的人名和按时间三等分的叙事弧线骨架。Claude 只需阅读 ASR 文本后,补充所有 [TODO] 占位符。 核心理念 :先判断这条视频是“什么类型的内容”,再用 ASR 文本识别角色和叙事线,指导后续图像验证。 分析内容 : 3.5.1 内容粗分类(必须先做) 判断视频属于:剧情 / 口播 / 纪录 / 教程 / 表演 / 训练 / 商品展示 / 纯氛围 判断当前视频的主导理解方式:ASR 驱动 / 视觉驱动 / 字幕驱动 / 音乐驱动 如果 ASR 文本很弱,只把它当辅助信号,不允许强行编造完整剧情 3.5.2 叙事主题识别 从文本识别故事类型(爱情/励志/纪录片/广告等) 识别叙事视角(第一人称"我"/第三人称) 识别情感基调(温暖/紧张/幽默/治愈等) 3.5.3 角色识别(从文本) 主角识别 :文本中明确提到的主角是谁? 角色关系 :角色之间是什么关系?(情侣/朋友/家人等) 角色身份 :角色的真实身份是什么?(富豪/普通人/企业家等) 3.5.4 叙事弧线 起 :故事的开端(0-?秒) 承 :故事的发展(?-?秒) 转 :故事的转折(?-?秒) 合 :故事的结局(?-?秒) 输出 : output/analysis/narrative_analysis.json - 叙事线分析结果 示例输出 (中性占位示例,仅演示结构): { "narrative_theme" : "都市人物关系变化故事" , "narrator" : "第一人称主角(女性)" , "characters_from_text" : [ { "name" : "角色甲" , "role" : "主要对手戏角色,表面身份普通" , "identity" : "隐藏真实背景" } , { "name" : "叙述者(我)" , "role" : "第一人称主角" , "identity" : "故事推动者" } ] , "narrative_arc" : {
Keywords that activate this skill. Click one to copy it.

This skill does not provide trigger words.

The downloaded .skill package contains the following fields.
Field Description
formatFormat tag (skill/v1)
skill_idUnique skill ID
nameSkill name
versionVersion
descriptionDescription
categoryCategories (array)
trigger_wordsTrigger words
tagsTags
sourceSource
source_urlSource URL (this page)
exported_atExported at (set per download)
system_promptSystem prompt body
model_configModel config: provider / model / temperature / max_tokens / top_p
examplesExamples
install_guideImport guide for Coze / Dify / Claude / custom frameworks
The same skill can be exported in different platform formats.
.skill Standard format with system_prompt and model_config, ready for any agent framework Download
.skillpro Enhanced format with scripts, tools, dependencies and hooks Download
.json Plain JSON export with system_prompt and model parameters only Download
Coze Markdown with frontmatter, for Coze platform import Download
Dify Dify DSL, import directly after creating an app Download

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。