AutoClip 分发流一条龙:自动挑高光 + 配字幕封面话题,抖音/B站/视频号直接发
【免费下载链接】autoclipAutoClip|一个链接,一键出片。开源 AI 视频剪辑桌面工具,将播客、访谈、课程等长视频自动剪成短视频,生成字幕、封面和发布文案,适配抖音、小红书、TikTok、Reels 与 YouTube Shorts。Open-source AI video clipping & content repurposing.项目地址: https://gitcode.com/GitHub_Trending/autoc/autoclip
长视频切短视频的工具这两年并不少,多数止步于"帮你找出几个高光片段、导出几段 MP4"。但内容生产真正吃时间的,其实是切片之后那一段苦活:给每条视频起标题、写描述、配话题标签、出一张能骗到点击的封面,再按每个平台的画幅和字数规则逐条适配上传。AutoClip 的开源思路恰恰是把这一段也自动化了——丢进一个直播回放或播客长视频,选好平台,它自动挑出高光、逐条生成字幕封面标题话题,最终交付的是"每个平台可直接发的成片 + 发布素材包"。本文结合仓库源码拆解这条分发流水线的三个关键环节:平台差异逻辑如何落地、AI 生成物如何被人工审核体系约束、批量多平台素材如何一次产出。
高光挑选:评分排序之后,每平台自动渲染 10 条
一条两小时的播客,AI 能找出三四十个候选高光,全部渲染成片既不经济也没必要——创作者最终会发布的往往就那么几条。AutoClip 的处理是"先评分,再截断",把数量与质量的控制分成了两层。
第一层在内容理解阶段。流水线把长视频按时间线拆成候选片段后,由 quality.py 的select_clips做兜底筛选:高于评分阈值的全留,候选不足时按分补齐到min_keep,超过上限则按final_score降序截断到max_clips。而这个上限是随素材总时长分档的——8 分钟内短素材最多 6 条,30 分钟内中长素材 10 条,长视频按小时数递增(max(12, int(16 * hours))),阈值之上的候选全部进入后续环节,防止"差片段混入、好片段被误杀"。
第二层在出片调度阶段。Studio 自动生成流程在 jobs.py 中定义了AUTO_RENDER_LIMIT = 10——每条导入素材默认只自动渲染评分最高的 10 条,其余候选保留为 on-demand 状态,用户点一下才渲染。实现上_automatic_drafts先剔除无评分的视觉高光(数量少、全量渲染),再对有评分的候选按_auto_score降序取前 10:
def _automatic_drafts(base_drafts): """Ids of the drafts rendered without asking: the highest-scored AUTO_RENDER_LIMIT.""" scored = [draft for draft in base_drafts if SCORE_KEY in draft] if len(scored) <= AUTO_RENDER_LIMIT: return {draft['id'] for draft in base_drafts} top = sorted(scored, key=lambda draft: draft[SCORE_KEY], reverse=True)[:AUTO_RENDER_LIMIT] return {draft['id'] for draft in top} | {draft['id'] for draft in base_drafts if SCORE_KEY not in draft}值得注意的一个工程细节:源码注释明确写道"平台资格判定必须先于评分截断"——否则 10 条短视频候选可能把唯一满足横屏长视频要求的片段挤掉,导致某个平台无片可出。调度时先按平台过滤_eligible_for_platform,再应用评分截断,保证每个选中平台至少有一条可渲染的完整内容。这是一处很典型的"产品逻辑长在代码注释里"的设计,比盲目调参更能说明这个项目的取舍。
平台差异:一套策略表,管住画幅、时长与字幕样式
"直接发"的前提是每个平台的硬性规则都有人管。AutoClip 没有把平台差异散落在各处业务代码里,而是收敛为一个不可变数据类PlatformStrategy(platform_strategy.py):一次定义传输方式、分辨率、画幅裁切策略、时长策略、字幕样式、标题动效与封面比例。
PlatformStrategy("douyin", "抖音 9:16", "download_only", None, 1080, 1920, "blur", "short", 15, None, "accent", "comic", True, "portrait", ("douyin",), 90, "interview_zh", "zh"), PlatformStrategy("youtube_shorts", "YouTube Shorts 9:16", "upload_post", "youtube", 1080, 1920, "crop", "short", 15, 180, "bold", "card", True, "portrait", ("shorts", "youtube_shorts"), 60, "podcast_en", "en"), PlatformStrategy("bilibili", "B站横屏", "bilibili_direct", "bilibili", 1920, 1080, "fit", "adaptive", 180, None, "clean", "editorial", False, "landscape", ("bilibili",), None, "landscape", "zh"),逐列拆解这行配置能看出不少用心:
- 传输方式三分:
download_only(抖音/小红书/视频号这类不便开放直传的平台,产出素材包由用户自行上传)、upload_post(TikTok/Reels/Shorts 经 Upload-Post 直发)、bilibili_direct(B 站直传); - 时长策略:
max_duration_sec是平台的硬性上限(如 YouTube Shorts 封顶 180 秒),超长片段在句边界裁断;recommended_max_duration_sec只是"表现更好"的引导值,注释明确"never enforced by trimming"——规则引擎不会为了数据好看而擅自截掉内容; - 包装模板:
template与audience_language决定该平台走访谈模板还是播客模板、字幕烧中文还是英文,让同一条高光在不同平台呈现不同的包装语言; - 封面比例:小红书 3:4 笔记封面、B 站 16:10 视频封面、抖音 9:16 竖版封面分别落在
AI_LAYOUT表中(publish_kit.py),连 AI 生图的构图提示都按平台定制。
这套策略表同时是 API/CLI 与桌面端共用的单一事实来源,export_spec()、public_summary()把配置序列化给前端和旧接口,避免同一规则在多个入口各自维护一份而失同步。
AI 生成物的人工审核微调:规则在模型之外,且永不阻塞出片
自动生成的标题、描述、话题和字幕,最大的风险是"看起来像那么回事但不可信"。AutoClip 的做法是把所有规则硬编码在模型调用之外——模型负责创作,代码负责执法,任何不合格输出都回退,但绝不阻塞出片。
以发布文案为例,post_copy.py 维护了一张按平台区分的规则表RULES:小红书标题上限 20 字、抖音 30 字、B 站 80 字,话题数量区间与文案风格各有定义。一次模型调用同时为选中平台的整条视频产出{平台id: {title, description, tags}},随后经过四道校验:
_fit超长截断到句读边界;- 无出处素材时,描述中出现"出自/来源/节目名"类句式会被整体清空(
SOURCE_ATTRIBUTION正则),禁止模型脑补出处; - 身份声明校验(
_unsupported_executive_role)——字幕里没明说是 CEO,生成文案就不许自称 CEO,且支持中英日韩西法俄多语言的角色正则; - 英文平台强制纯英文,中文标题直接判不合格并要求重试。
如果模型两轮仍不达标,fallback()兜底为切片标题截断后的{title, description: '', tags: []}——注释点明设计意图:"a post is never blocked on copy"。创作者拿到手的永远是一份可用的初稿,而不是一个报错。
字幕与包装走同样的路子(packaging.py):模型按时间轴把被 ASR 切碎的半句重组成完整句子、生成 1–2 行标题与重点强调行、识别说话人名牌与编辑点评标签;每一字段都过_validated校验——行区间必须连续且恰好覆盖全部行、标题不得超过平台字符上限、英文平台禁出中文、受保护专名不得被音译改名。翻译失败时还有最后防线:逐行直译或保留原文可读字幕,杜绝"英文访谈被翻译失败变成无字幕视频"。这套"模型创作 + 代码执法 + 兜底回退"的三段式,正是 AI 初稿需要人工审核微调、又不至于审核不动的最务实折中。
批量分发:一条高光,多平台素材一次产出
分发流水线最关键的设计是"内容与平台解耦":先产出内容草稿(draft),再按平台派生变体(variant),同一时刻可以在抖音、小红书、B 站、Shorts 各出一版成片。_auto_generate(jobs.py)按选中平台逐个对草稿做_fit_platform_limit时长适配、_apply_framing智能构图与_apply_packaging包装,最终落为output_variants列表并排队渲染;渲染线程池串行编码(CPU 密集任务互不抢资源),每条变体渲染完成后紧接着_design_covers出封面。
如果首轮选平台时漏了某个渠道,无需重新分析素材——append_platform_variants直接从已保存草稿派生新平台版本,按"内容时间签名 + 平台"去重,已存在的组合跳过,做到零重复分析。
出片产物则被打包成"可直接发"的素材包。_write_kit(publish_kit.py)把成片 MP4、设计封面 JPG、发布文案 TXT(含平台名、标题、描述、话题)压进一个 zip:
def caption_text(post): tags = ' '.join(f'#{tag}' for tag in post.get('tags') or []) return '\n\n'.join(part for part in (post.get('title', ''), post.get('description', ''), tags) if part)CLI 侧autoclip run video.mp4 --platform douyin --platform bilibili(cli.py)即可触发同一流程,status()支持export_kits参数按内容指纹缓存生成发布包;桌面端与 CLI 共用同一数据目录,跑完在应用首页即可看到每条成片对应的视频、封面与文案。B 站/TikTok/Reels/Shorts 平台可走直传,抖音、小红书以及视频号等渠道则拿到素材包后手动上传——分发链路上"能直发的直发、不能直发的给齐物料"。
从仓库docs/images/demos/manifest.json记录的已验收出片案例可以看到这套流程的真实产物:访谈类中文高光出成 540×960 竖版、带大字标题与中文字幕的成片(如 郭柯宇 × 鲁豫),英文播客类出成适配 TikTok/Shorts 的英文包装(如 Karpathy × Dwarkesh),长内容则输出 B 站横屏版本(鲁豫 × 佟丽娅)。同一批素材、同一套模型,按平台语言与画幅分别成片,正是"一次长视频、多平台分发"的最小落地形态。
小结:自动化不是省略人工,而是把人工从低价值环节挪走
回看 AutoClip 这条分发流,真正值得称道的地方不在"AI 多聪明",而在工程边界的克制:高光由评分排序而非模型拍板,平台规则收敛为单一策略表,AI 文案受硬编码规则约束且有兜底,渲染串行防资源抢占,产物以素材包形式交付人工环节。10 条的自动渲染上限、句边界的时长裁断、永不阻塞出片的回退设计,处处体现"AI 初稿 + 人工审核微调"的产品哲学。对团队或个人创作者而言,这套开源的思路比"全自动无人值守"的承诺更可落地——把高光挑选、字幕封面、标题话题这些确定性工作交给流水线,人只负责在审核时做最擅长的判断。
【免费下载链接】autoclipAutoClip|一个链接,一键出片。开源 AI 视频剪辑桌面工具,将播客、访谈、课程等长视频自动剪成短视频,生成字幕、封面和发布文案,适配抖音、小红书、TikTok、Reels 与 YouTube Shorts。Open-source AI video clipping & content repurposing.项目地址: https://gitcode.com/GitHub_Trending/autoc/autoclip
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考