尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

AI自动化短视频变现:Claude+Python+FFmpeg+Whop全流程

发布时间:2026/9/7 3:58:43

资讯中心
01
ARTICLE

AI自动化短视频变现:Claude+Python+FFmpeg+Whop全流程

AI自动化短视频变现:Claude+Python+FFmpeg+Whop全流程
做 AI 自动化短视频变现最常用的组合是 Claude 负责创意生产Python FFmpeg 负责自动化剪辑Whop 负责数字商品交付。这里说的“自动化”不是指把剪辑师和运营全部替换掉而是把选题、文案、配音、字幕、合成视频、商品交付这些重复劳动尽量拆成脚本。爆款无法被一个公式保证但这套流水线能帮你稳定地产出候选内容再用数据筛选出真正值得继续投入的方向。文章面向已经会一点 Python、想尝试 AI 内容生产但还没有完整跑通过一条链路的开发者。读完以后你可以得到一条从 Claude 生成脚本、到 FFmpeg 合成竖屏视频、再到 Whop 发布数字商品的最小可运行流程也知道哪些环节必须保留人工审核。1. 先理解 Claude、FFmpeg 和 Whop 在短视频链路里的分工1.1 AI 短视频不是“一键爆款”而是一条可重复的生产流水线很多人在短视频变现上卡住的点不是不会剪辑而是生产节奏不稳定。今天想到一个选题写了两小时文案剪了一下午视频发布后数据不好又要重新找方向。这种模式很难持续。AI 自动化的价值是把“一次性创作”变成“批量测试”。同一个选题可以让 Claude 生成 5 个不同角度的脚本同一个脚本可以快速生成不同背景、不同字幕样式的视频同一批视频发布后哪条数据好就继续往那个方向迭代。自动化解决的不是灵感问题而是围绕灵感做快速验证的问题。所以这条链路的正确理解方式不是“AI 替我爆款”而是“AI 让我有更多可测试的素材”。1.2 Claude不是只写文案而是批量生成可执行脚本Claude 在短视频生产里的角色可以分成三层第一层是选题和角度。给定一个领域让它列出受众关心的问题。第二层是口播文案。把选题变成 60 到 90 秒的口播稿包含开头钩子、中间信息点、结尾行动提示。第三层是发布素材。把口播稿进一步转成标题、简介、话题标签避免每次发布前还要人工重新整理。实际使用中最重要的是让 Claude 输出稳定的 JSON 结构。这样后面的 Python 脚本才能自动解析不需要每次都清理 Markdown 代码块。1.3 Whop把模板和提示词变成可交付的数字商品Whop 是一个面向数字产品的交易和交付平台适合卖 Prompt 模板、Notion 模板、课程、付费社区、会员订阅这类虚拟商品。它和短视频生产的关系是当你积累了一套能跑通的剪辑模板、一套好用的小众 Prompt、一组脚本生成工作流就可以把这些东西封装成数字商品。举例来说你做了一个“用 Claude 批量生成短视频口播稿”的模板正常卖点不是“保证爆款”而是“帮你把脚本生产时间从 2 小时缩短到 10 分钟”。在短视频内容里介绍这个模板的使用过程观看者如果觉得有用就会通过 Whop 链接购买或订阅。换句话说短视频负责获取注意力Whop 负责承接需求。两者之间靠内容质量和交付体验连接。2. 环境准备API、Python、FFmpeg 和目录结构2.1 环境清单在开始之前先确认本机环境是否满足要求。下面的版本只是常见参考实际项目以你自己的系统版本为准。组件作用常见要求Python运行脚本、调用 API、调用 FFmpeg3.10 或更高pip安装依赖随 Python 安装anthropic 包调用 Claude API最新稳定版python-dotenv读取本地环境变量最新稳定版edge-tts生成中文语音和音频文件最新稳定版FFmpeg合成视频、处理音频和字幕6.0 或更高Claude API Key身份认证和计费在 Anthropic 控制台创建如果你不想安装 Claude Code也完全可以跑通本流程。Claude Code 在本方案里是可选项不是必需项。2.2 安装依赖建议先创建虚拟环境再安装 Python 依赖python -m venv .venv source .venv/bin/activateWindows 下激活命令是.venv\Scripts\activate然后安装依赖pip install anthropic python-dotenv edge-ttsFFmpeg 不是 Python 包需要单独安装。macOS 可以用 Homebrewbrew install ffmpegUbuntu/Debian 可以用 aptsudo apt update sudo apt install ffmpegWindows 推荐从 FFmpeg 官方站点下载可执行文件并把ffmpeg.exe、ffprobe.exe所在目录加入系统 PATH。安装完成后验证ffmpeg -version ffprobe -version只要能看到版本号就说明命令可用。2.3 准备 Claude API Key 和环境变量在项目根目录创建.env文件ANTHROPIC_API_KEY你的_API_Key CLAUDE_MODELclaude-sonnet-4-20250514注意CLAUDE_MODEL的值要以你当前账号实际可用的模型为准。如果指定的模型不存在API 会返回模型不可用错误届时改成账号控制台里看到的模型 ID 即可。Python 里用dotenv加载配置import os from dotenv import load_dotenv load_dotenv() ANTHROPIC_API_KEY os.getenv(ANTHROPIC_API_KEY) CLAUDE_MODEL os.getenv(CLAUDE_MODEL, claude-sonnet-4-20250514) if not ANTHROPIC_API_KEY: raise RuntimeError(缺少 ANTHROPIC_API_KEY请检查 .env 文件)不要在代码里硬编码 API Key也不要提交到 Git 仓库。.env文件应该加入.gitignore。2.4 目录设计建议把脚本生成、音频生成、视频合成分成不同目录避免一个目录塞满中间文件short_video_pipeline/ ├── .env ├── .gitignore ├── scripts/ │ ├── generate_script.py │ ├── synthesize_audio.py │ └── build_video.py ├── data/ │ ├── scripts/ │ ├── audio/ │ └── videos/ ├── assets/ │ └── background.jpg └── output/这样的好处是出问题时可以直接检查某个阶段的产品不用每次从头跑。3. 用 Claude 批量生成短视频脚本和发布素材3.1 为什么必须用结构化输出如果只用自然语言让 Claude 写文案返回结果里可能包含标题、解释、代码块标记后面的程序很难自动处理。更好的做法是明确要求返回 JSON并且在解析失败时重试一次。这里说的“结构化”就是把一条短视频拆成这些固定字段title视频标题hook前三秒的开场白lines口播稿的逐句列表caption发布时的简介hashtags话题标签列表固定字段的意义在于后续无论是生成音频、生成字幕还是生成发布文案都能基于同一份数据完成。3.2 调用 Claude API 生成脚本下面这段代码用于生成单个短视频脚本。实际项目中你可以把它放在循环里一次生成多个备选主题。import json import os from pathlib import Path import anthropic from dotenv import load_dotenv load_dotenv() client anthropic.Anthropic(api_keyos.getenv(ANTHROPIC_API_KEY)) MODEL_NAME os.getenv(CLAUDE_MODEL, claude-sonnet-4-20250514) def generate_script(topic: str) - dict: system_prompt 你是一名短视频内容策划。你擅长把复杂知识讲成口语化、有节奏感的短视频文案。 注意 1. 只输出 JSON不要输出 Markdown 代码块。 2. 口播稿控制在 60-90 秒。 3. 前三秒要有明确信息点不要用空洞的“大家好”。 4. 文案要适合中文配音避免过长从句。 user_prompt f 请为主题生成一条短视频脚本主题是{topic} 输出 JSON 格式如下 {{ title: 标题, hook: 开场三秒的话, lines: [第一句口播, 第二句口播, 第三句口播], caption: 发布简介, hashtags: [话题1, 话题2, 话题3] }} message client.messages.create( modelMODEL_NAME, max_tokens2000, temperature0.8, systemsystem_prompt, messages[ {role: user, content: user_prompt} ], ) content message.content[0].text data json.loads(content) required_keys {title, hook, lines, caption, hashtags} if not required_keys.issubset(data.keys()): raise ValueError(fClaude 返回的 JSON 缺少必要字段: {data}) return data if __name__ __main__: script generate_script(3 个让短视频不枯燥的剪辑习惯) output_dir Path(data/scripts) output_dir.mkdir(parentsTrue, exist_okTrue) output_path output_dir / script_001.json output_path.write_text(json.dumps(script, ensure_asciiFalse, indent2), encodingutf-8) print(f脚本已保存: {output_path})这里有几个关键点max_tokens是必填参数不填会直接报错。temperature0.8是偏保守的设置。如果发现文案太模板化可以提高到 1如果发现结构不稳定可以降到 0.6。json.loads要求模型输出纯 JSON。如果模型偶尔输出带 json 的代码块可以做一个清理函数去掉首尾的反引号。3.3 得到一份可供后续阶段使用的 JSON一次正常执行的产物类似这样{ title: 3 个让短视频不枯燥的剪辑习惯, hook: 为什么别人随手剪的视频能留住人, lines: [ 第一个习惯前 3 秒只放一个明确信息。, 第二个习惯字幕不要铺满全屏只保留关键信息。, 第三个习惯结尾一定要给一个行动提示。 ], caption: 3 个可以直接用的剪辑习惯尤其适合新手。, hashtags: [短视频剪辑, 效率工具, AI工具] }后面合成视频时程序可以把lines转成语义比较完整的一句话音频再根据每句话的长度生成字幕时间轴。3.4 人工审核是质量下限不要把 Claude 生成的内容直接发布。即使模型能力再强也仍然可能出现事实错误、表达过度夸张、信息过时等问题。建议在生成脚本后增加一个审核环节口播稿里有没有事实错误。有没有可能构成误导或夸大承诺。有没有涉及他人隐私或版权内容。标题和封面信息是否和正文一致。审核方式可以是在脚本目录里打开 JSON 文件逐条确认也可以做成一个简单的审核记录字段例如在 JSON 里追加reviewed: true。4. 用 Python FFmpeg 把脚本合成为竖屏视频4.1 这一阶段要做什么拿到 JSON 脚本后视频合成分为四步把lines里的每一句话生成独立音频。测量每段音频的时长生成字幕时间轴。用ffmpeg把所有音频拼成一条完整口播。把背景图、口播、字幕合成 1080x1920 的竖屏视频。这里的背景可以先使用自己制作的纯色底图或原创素材。不要直接使用未经授权的影视片段、音乐和他人作品。4.2 生成音频和字幕时间轴下面代码使用edge-tts生成中文语音并用ffprobe获取每段音频时长。edge-tts需要联网调用在线语音合成服务因此运行时要有正常的网络连接。import asyncio import json import subprocess from pathlib import Path import edge_tts VOICE zh-CN-XiaoxiaoNeural def srt_time(seconds: float) - str: hours int(seconds // 3600) minutes int(seconds % 3600 // 60) secs int(seconds % 60) millis int(round((seconds - int(seconds)) * 1000)) return f{hours:02d}:{minutes:02d}:{secs:02d},{millis:03d} async def tts_to_file(text: str, output_path: Path) - None: communicate edge_tts.Communicate(text, VOICE) await communicate.save(str(output_path)) def get_audio_duration(audio_path: Path) - float: result subprocess.check_output( [ ffprobe, -v, error, -show_entries, formatduration, -of, defaultnoprint_wrappers1:nokey1, str(audio_path), ], textTrue, ) return float(result.strip()) def build_audio_and_srt(script: dict, work_dir: Path) - None: work_dir.mkdir(parentsTrue, exist_okTrue) audio_paths [] srt_entries [] cursor 0.0 gap 0.15 for index, line in enumerate(script[lines]): audio_path work_dir / fline_{index:02d}.mp3 asyncio.run(tts_to_file(line, audio_path)) duration get_audio_duration(audio_path) start cursor end cursor duration audio_paths.append(audio_path) srt_entries.append((start, end, line)) cursor end gap concat_file work_dir / concat.txt concat_file.write_text( \n.join(ffile {path} for path in audio_paths), encodingutf-8, ) subprocess.run( [ ffmpeg, -y, -f, concat, -safe, 0, -i, str(concat_file), -c:a, aac, str(work_dir / voiceover.m4a), ], checkTrue, ) srt_path work_dir / subtitles.srt with srt_path.open(w, encodingutf-8) as f: for index, (start, end, line) in enumerate(srt_entries, 1): f.write(f{index}\n) f.write(f{srt_time(start)} -- {srt_time(end)}\n) f.write(f{line}\n\n) print(f音频已生成: {work_dir / voiceover.m4a}) print(f字幕已生成: {srt_path}) if __name__ __main__: script_path Path(data/scripts/script_001.json) script json.loads(script_path.read_text(encodingutf-8)) build_audio_and_srt(script, Path(data/audio/script_001))这段代码的关键点是每句话单独生成音频而不是整段生成。这样字幕时间可以精确对齐到句子。gap 0.15表示句间停顿避免整段音频听起来太赶。字幕文件按标准 SRT 格式写入FFmpeg 可以直接读取。4.3 用 FFmpeg 渲染竖屏视频音频和字幕准备好后用下面命令合成视频。这里假设background.jpg是一张 1080x1920 的原创背景图。ffmpeg -y \ -loop 1 -i assets/background.jpg \ -i data/audio/script_001/voiceover.m4a \ -vf scale1080:1920:force_original_aspect_ratiodecrease,pad1080:1920:(ow-iw)/2:(oh-ih)/2,subtitlesdata/audio/script_001/subtitles.srt:force_styleFontSize18,PrimaryColourH00FFFFFF,OutlineColourH00000000,Outline2 \ -c:v libx264 -tune stillimage \ -c:a aac -b:a 192k \ -pix_fmt yuv420p \ -shortest \ output/script_001.mp4参数含义-loop 1让背景图循环避免视频只有一帧。-vf scale确保画面适配 1080x1920 竖屏。subtitles把 SRT 字幕烧录进画面。-tune stillimage适合图片加音频这类场景。-pix_fmt yuv420p保证视频能在大多数播放器和平台正常播放。-shortest在音频结束时停止输出。如果背景素材是视频可以把第一行改成ffmpeg -y \ -stream_loop -1 -i assets/background.mp4 \ -i data/audio/script_001/voiceover.m4a \ ...4.4 验证合成结果视频生成后用ffprobe检查格式ffprobe -v error \ -show_entries streamcodec_type,width,height,duration \ -of defaultnoprint_wrappers1 \ output/script_001.mp4预期能看到视频流codec_typevideo音频流codec_typeaudio宽度1920高度1080也可以手动播放一遍重点检查字幕是否有明显错位、音频是否完整、人脸或文字是否被裁切。5. 用 Whop 搭建交付和收益闭环5.1 Whop 适合承接哪些数字商品当你的短视频内容开始有人观看后需要有一个地方承接流量。Whop 的典型使用方式是在视频简介或评论区放一个 Whop 商品链接用户点击后可以查看商品详情并完成支付支付后自动获得访问权。适合放在 Whop 上的商品包括商品类型示例特点一次性模板Claude 短视频脚本生成模板、Notion 选题库门槛低容易转化付费订阅每周脚本包、剪辑模板更新需要持续更新黏性更高素材包原创背景图、字幕样式文件制作一次可重复出售小课程从 0 搭建今天这套流水线的录屏价格可以更高但交付成本也更高这里不推荐卖“保证播放量”“保证涨粉”的服务因为结果不可控容易变成虚假承诺也会给自己带来售后压力。5.2 最小落地顺序第一次使用 Whop 时建议按下面顺序跑通在 Whop 注册账号并创建商品。商品类型选择“数字交付”不涉及实体物流。上传图片、定价、填写商品介绍。设置交付方式。常见方式是购买后获得一个包含模板文件或社区加入链接的页面。自己先下单一次确认支付、自动交付、客服通知全链路正常。把商品链接放进短视频简介、个人主页或内容评论区。重点不是“做一个看起来很大的店铺”而是先把一个最小商品跑通。一个能正常支付、正常交付的商品比十个只上架不维护的商品更有价值。5.3 不要把 Whop 当成“一夜暴富工具”短视频流量有波动商品转化也受价格、评价、内容热度影响。自动化能帮你提高生产效率但不能替你决定用户是否信任你。关于收益更稳妥的理解是短视频负责让用户知道“有这么一套方法”Whop 负责让用户付费获取“整理好的方法”。收益来自内容质量、交付体验和持续运营而不是来自某个关键词或某个平台的“自动分账”。6. 把流程编排成定时任务并区分测试和生产环境6.1 用一段 Python 编排完整流程前面几段是分散的脚本实际生产时建议用一个入口脚本把它们串起来。import json from pathlib import Path from generate_script import generate_script from synthesize_audio import build_audio_and_srt def run_pipeline(topic: str, work_id: str) - None: script generate_script(topic) script_dir Path(data/scripts) script_dir.mkdir(parentsTrue, exist_okTrue) script_path script_dir / f{work_id}.json script_path.write_text( json.dumps(script, ensure_asciiFalse, indent2), encodingutf-8, ) audio_dir Path(data/audio) / work_id build_audio_and_srt(script, audio_dir) print(f{work_id} 已完成可以检查后手动渲染视频) if __name__ __main__: run_pipeline(3 个让短视频不枯燥的剪辑习惯, script_001)这个入口脚本只做到音频和字幕视频渲染可以保留为手动命令。因为视频渲染参数多、背景素材经常要人工挑选完全无人工的链路不适合作为初始方案。6.2 定时执行常见配置如果你已经确定了选题池想让 Claude 每天自动生成几份候选脚本可以通过 cron 或系统计划任务定时执行。Linux/macOS 的 crontab 示例0 9 * * * cd /home/user/short_video_pipeline /home/user/short_video_pipeline/.venv/bin/python scripts/generate_script.py这里只定时生成脚本不建议定时自动发布。短视频平台的审核规则、内容规范、AI 内容标注要求都可能变化发布前必须有人工确认。6.3 生产环境必须补的保障学习环境里跑通一个视频和生产环境持续运行是两件事。生产环境至少要考虑关注点建议API Key 安全放到环境变量或密钥管理服务不要写到代码里成本控制给 Claude API 和语音合成设置月度预算或调用上限日志每个阶段输出日志至少记录生成了哪个文件、耗时多少幂等性每次运行使用独立work_id避免覆盖上次结果素材版权背景图、音乐、字体都要有合法授权平台规则发布前确认目标平台对 AI 生成内容的标注要求回滚保留脚本 JSON 和音频中间文件视频不满意可以只重新渲染7. 这条链路最常见的 6 个卡点7.1 现象、原因、排查和修复下面的表格整理了我实际使用中遇到比较多的问题。问题现象常见原因检查方式处理建议Claude API 返回模型不可用CLAUDE_MODEL填了账号不可用的模型打开模型列表接口或控制台确认可用模型换成账号显示的模型 ID.env不生效没有安装 python-dotenv或环境变量已存在打印os.getenv(ANTHROPIC_API_KEY)确认已load_dotenv()并重启终端edge-tts 生成空文件网络异常或文本包含特殊字符检查 mp3 文件大小是否接近 0增加重试逻辑过滤无效字符FFmpeg 找不到命令ffmpeg 未安装或未加入 PATH执行ffmpeg -version安装后重新打开终端字幕不显示SRT 编码不对或字体路径无法解析用播放器单独打开 SRT 文件确认文件是 UTF-8并检查subtitles滤镜路径Whop 下单后没有收到交付自动交付规则没有配置用测试账号下一笔小额订单检查商品交付方式、邮件通知和自动邀请链接7.2 排查顺序建议遇到问题时按下面顺序排查成本最低输入是否正确主题、JSON 字段、脚本目录是否存在。文件路径是否对相对路径和当前工作目录是否和预期一致。依赖版本是否匹配pip、Python、FFmpeg 版本是否异常。环境变量是否生效API Key、模型 ID 是否有拼写问题。中间文件是否生成音频、字幕、JSON 分别是否完整。日志和报错关键字往上翻异常堆栈定位到具体函数。最小化复现用一句固定文本跑 TTS用一条固定命令跑 FFmpeg排除业务代码干扰。这条链路最容易忽略的是中间产物。只要保留 JSON、音频、字幕这些中间文件大部分问题都能通过对比“哪一步没有输出”来定位。8. 最佳实践哪些能做哪些要克制8.1 内容与版权边界使用 Claude 和自动化剪辑不代表可以随意使用他人素材。背景图、音乐、影视片段、字体、他人肖像都可能涉及版权或肖像权。建议只使用自己拍摄或制作的素材。原创设计的背景图。明确可商用、有授权说明的字体和音乐。平台提供的天然无版权素材库。发布 AI 生成内容前还要确认目标平台是否有 AI 内容标注要求。不要隐瞒 AI 生成身份也不要发布未经审核的医疗、金融、法律建议类内容。8.2 工程化习惯把“能用的脚本”变成“能长期维护的脚本”建议做到Prompt 不要只写在代码里。可以抽成prompts/system.md这样的文件方便版本管理。每次生成的 JSON 保留原始版本不要覆盖。后续对比不同 Prompt 的效果时很有用。使用独立工作目录存放中间文件文件名包含日期或主题标识。高频函数做好异常处理和日志避免一条视频卡住整个流程。不要在高频循环里重复读取.env启动时加载一次即可。8.3 可持续迭代路径新手完成最小流程后下一步不要急着做复杂平台而是按这个顺序进阶先连续生成 10 个脚本检查哪类主题和表达方式更适合你的受众。再手工挑选其中 3 个生成视频对比字幕、语速、背景、时长的体验。发布后记录数据播放量、完播率、点击链接率、转化率。把数据好的脚本回填到 Prompt 里让后续生成更贴近已验证的风格。等一个月稳定运行后再考虑把商品打包成 Whop 订阅制。这套链路的关键不是找到一个“神秘提示词”而是把选题、文案、素材、剪辑、交付串成可重复跑的流程。Claude 的价值在批量生成候选Python 的价值在执行重复剪辑Whop 的价值在把积累的模板和经验变成可交付产品。真正决定内容能否获得收益的是对素材的判断、对受众的理解以及持续运营的耐心。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。