公司动态

短视频标题生成:从视频理解到文案策划的端到端工程

📅 2026/7/22 11:45:37
短视频标题生成:从视频理解到文案策划的端到端工程
短视频标题生成从视频理解到文案策划的端到端工程一、个性化深度引言视频平台的内容分发有一个残酷现实用户看标题的决策时间不超过 2 秒。我们做了一个实验——同一个视频配上 10 个不同的标题点击率从 2.1% 到 18.7% 不等。差距不是 2 倍是 9 倍。这意味着标题生成不是一个锦上添花的 NLP 小任务而是一个直接影响商业指标的工程问题。见证奇迹的时刻是我们把标题生成从“给视频起个名字”重新定义为“给视频找它的目标受众”之后。二、个性化原理剖析端到端标题生成架构关键技术环节1. 视频内容理解视频是一帧帧图像和一段段音频的序列。理解视频不是理解每一帧而是找到“关键帧”——包含核心信息的那个瞬间。我们采用的策略面部出现帧 → 人物身份识别文字出现帧 → OCR 提取标题/字幕场景转换帧 → 分段边界检测高分贝/情绪变化帧 → 高潮点定位2. 多模态信息融合视觉信息和听觉信息往往不一致。比如画面是讲课音频是吐槽。融合层的任务不是简单拼接而是识别“冲突”并判断哪个模态主导当前语义。3. 标题模板体系经过 10 万条爆款标题的分析总结出 6 类高频模板悬念式“XX 做了一件事结果出乎意料”数字式“3 个方法让你……”对比式“同样是 XX为什么 TA 能……你却……”反常识式“你以为的 XX其实是 XX”情绪式“看完这条视频我沉默了”问题式“XX 到底值不值得实测给你答案”三、个性化代码实践from typing import List, Dict, Optional from dataclasses import dataclass dataclass class VideoContent: 视频内容理解结果 ocr_texts: List[str] # OCR 提取的文字 scene_labels: List[str] # 场景标签 asr_text: str # 语音识别文本 emotion: str # 情绪分类 key_entities: List[str] # 关键实体 duration_seconds: int # 视频时长 class TitleGenerator: 短视频标题生成器 TITLE_TEMPLATES { suspense: [ 关于[{topic}][{entity}]做了一个实验结果意想不到, 当[{entity}]遇到[{topic}]发生了[{action}], ], number: [ [{number}]个关于[{topic}]的硬核知识, [{entity}]的[{number}]个秘密, ], contrast: [ 同样是[{topic}]为什么[{entity_a}]能[{result}]而[{entity_b}]却[{opposite}], ], counter_intuitive: [ 你以为的[{topic}]其实是[{reality}], 99%的人都不知道[{topic}]原来是这样, ], emotional: [ 关于[{topic}][{entity}]终于说出真相, ], question: [ [{topic}]到底值不值得深度拆解给你看, [{entity}]做[{topic}]真的靠谱吗, ], } def __init__(self): # 设计原因模板体系持续迭代支持 A/B 测试 self.ab_config {template_weight: uniform} def extract_key_info(self, content: VideoContent) - Dict: 从视频内容中提取标题所需的关键信息 # 设计原因信息提炼是质量瓶颈需要优先投入优化 info {} # 合并 OCR 和 ASR 文本进行关键词提取 all_text .join(content.ocr_texts) content.asr_text # 设计原因优先使用 OCR 中的标题文字它是创作者意图的直接表达 candidate_topics [] for ocr in content.ocr_texts: if len(ocr) 4: candidate_topics.append(ocr) info[topic] candidate_topics[0] if candidate_topics else 这个话题 info[entity] content.key_entities[0] if content.key_entities else 它 info[emotion] content.emotion return info def fill_template( self, template: str, info: Dict ) - str: 填充标题模板 # 设计原因模板填充是最基础的生成方式适合短文本场景 result template # 安全的占位符替换 for key, value in info.items(): result result.replace(f[{{{key}}}], str(value)) # 处理条件占位符如果值不存在则删除整段 import re result re.sub(r\[.*?\], , result) return result def generate_candidates( self, content: VideoContent, max_candidates: int 5 ) - List[str]: 生成候选标题列表 info self.extract_key_info(content) candidates [] # 设计原因遍历所有模板类型保证多样性 for template_type, templates in self.TITLE_TEMPLATES.items(): for template in templates: title self.fill_template(template, info) if title and len(title) 8: candidates.append(title) # 设计原因需要多于 max_candidates 用于 CTR 排序 return candidates[:max_candidates * 3] def apply_compliance_filter(self, titles: List[str]) - List[str]: 合规过滤 # 设计原因安全过滤必须在 CTR 排序之前 banned_patterns [ 震惊, 绝了, 不看后悔, # 标题党 免费, 赚钱, # 诱导性 ] safe_titles [] for title in titles: is_safe True for pattern in banned_patterns: if pattern in title: is_safe False break if is_safe: safe_titles.append(title) return safe_titles # 使用示例 content VideoContent( ocr_texts[GPT-4 最新评测, 准确率提升 15%], scene_labels[演讲, PPT展示], asr_text今天我们来看看 GPT-4 在代码生成方面的最新表现, emotionexcited, key_entities[GPT-4, 代码生成], duration_seconds180, ) generator TitleGenerator() candidates generator.generate_candidates(content) safe_candidates generator.apply_compliance_filter(candidates) for i, title in enumerate(safe_candidates[:5]): print(f候选 {i1}: {title})四、个性化边界权衡生成策略点击率提升内容匹配度新鲜度成本纯模板填充基准70%低极低模板LLM润色25%80%中低端到端 LLM 生成35%75%高中多模态大模型40%85%高高人工撰写最高90%—极高关键权衡匹配度 vs 点击率点击率最高的标题往往有轻度标题党嫌疑。需要在合规过滤中平衡两者——可以“吸引”但不能“欺骗”。新鲜度 vs 稳定性LLM 端到端生成的新颖度高但也可能出现“创意翻车”。模板方案虽然平庸但从不犯错。建议核心场景用模板兜底探索场景用 LLM。多模态成本完整的视频理解逐帧分析成本是文本生成的 50 倍以上。实际生产中通常做抽帧处理——每秒 1 帧替代 30 帧信息损失在可接受范围内。五、总结短视频标题生成是“视频理解 信息提炼 文案生成 CTR 排序”的端到端工程问题。视频理解环节通过抽帧策略和多模态融合在成本与精度间取得平衡信息提炼环节优先使用 OCR 标题文字作为创作者意图信号文案生成环节采用模板兜底与 LLM 探索的双轨策略CTR 预估排序通过 A/B 测试持续优化模板权重。工程上合规过滤必须前置在排序之前多模态成本需要通过抽帧和缓存策略控制。标题生成的最终目标是让对的人看到对的内容而不只是让所有人都点进来。