竖版视频生成免费版
从Markdown脚本一键生成9:16竖版短视频,支持TTS配音、字幕烧录与画面同步,适合个人内容创作者。Use when 需要视频处理、音频编辑、媒体转换、配音生成时使用。不适用于版权受保护的媒体内容处理。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。
天轰穿
@thcjp
What This Skill Does
Generates 9:16 vertical short videos from a Markdown script. Parses script segments into TTS voiceover, subtitle card images, and synchronizes audio with visuals using FFmpeg.
Replaces manual video editing workflows by automating the entire pipeline from script to MP4 output with synchronized audio and subtitles.
When to Use It
- Create knowledge-based short videos from structured Markdown scripts
- Produce product introduction videos with custom TTS voice and speed
- Generate video content using pre-designed images to skip screenshot steps
- Rapidly prototype social media clips for personal content channels
- Convert educational notes or blog posts into vertical video format
Install
$ openclaw skills install @thcjp/lh-video-gen-tool-free功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。
竖版视频生成免费版
概述
竖版视频生成免费版帮助个人内容创作者从Markdown脚本一键生成9:16竖版短视频。工具采用"以图定音"的核心思路:每段脚本的画面说明生成字幕卡片图,每段口播文案生成TTS配音,每张图展示时长等于对应音频时长,实现音画天然同步。
本版本面向个人用户,提供基础的单视频生成能力,适合短视频平台内容创作。
核心能力
脚本解析
- 支持Markdown格式脚本,用
---分隔各段 - 每段包含
画面、口播、字幕三个字段 - 自动提取分段内容并按顺序处理
输出: 返回脚本解析的执行结果,包含操作状态和输出数据。
TTS配音
- 默认使用
zh-CN-YunxiNeural音色 - 支持自定义语速(如+10%、-10%)
- 可替换为任意TTS工具(通过命令模板)
输出: 返回TTS配音的执行结果,包含操作状态和输出数据。
画面生成
- 自动将字幕内容渲染为9:16图片
- 支持使用预制图片跳过截图步骤
- 图片命名规则:
slide_01.png、slide_02.png...
输出: 返回画面生成的执行结果,包含操作状态和输出数据。
视频合成
- 使用FFmpeg合成视频片段
- 支持字幕烧录
- 输出标准MP4格式
输出: 返回视频合成的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:脚本一键生成、竖版短视频、字幕烧录与画面同、适合个人内容创作、竖版视频生成免费、版帮助个人内容创、作者从、以图定音、核心思路、画面说明生成字幕、卡片图、口播文案生成、音画天然同步、Use、when、需要视频处理、音频编辑、媒体转换、配音生成时使用、不适用于版权受保、护的媒体内容处理、适用于独立开发者、企业团队和自动化、工作流场景等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
使用场景
场景一:知识科普短视频
需求:教育博主需要将知识点制作成竖版短视频。
# 编写脚本 script.md
# ---
# ## 开场
# **画面**:知识标题卡片
# **口播**:大家好,今天我们来学习一个有趣的知识点。
# **字幕**:今日知识点\n一分钟速览
# 生成视频
python3 generate.py script.md -o output.mp4
场景二:产品介绍视频
需求:独立开发者为一款应用制作介绍视频。
# 使用自定义TTS音色与语速
python3 generate.py product-intro.md \
-o product.mp4 \
-v zh-CN-XiaoxiaoNeural \
-r +5%
场景三:使用预制图片
需求:已有设计好的图片,只需配音与合成。
# 使用预制图片(跳过Chrome截图)
python3 generate.py script.md \
--images-dir ./my-slides \
-o output.mp4
快速开始
依赖详情
# 系统依赖
# FFmpeg:视频合成
brew install ffmpeg # macOS
# 或
sudo apt install ffmpeg # Linux
# Chrome:HTML截图(使用预制图片时可跳过)
# 自动检测系统Chrome路径,或设置环境变量:
export CHROME_PATH="/path/to/chrome"
Step 2:编写脚本
创建 script.md 文件:
开场
画面:欢迎页面,显示标题 口播:大家好,欢迎来到今天的分享。 字幕:欢迎观看\n今日主题
内容
画面:知识点卡片 口播:今天我们要学习的核心内容是这个重要概念。 字幕:核心概念详解
结尾
画面:感谢页面 口播:感谢观看,我们下期再见。 字幕:感谢观看\n下期再见
# 请参考上方使用说明进行配置和调用
result = "ready"
```bash
python3 generate.py script.md -o output.mp4
请参考上方使用说明进行配置和调用
result = "ready"
python3 generate.py <脚本路径> [选项]
选项:
-o, --output 输出MP4路径(默认:tmp/video-output.mp4)
-v, --voice TTS音色(默认:zh-CN-YunxiNeural)
-r, --rate 语速(默认:+0%,如+10%、-10%)
-w, --width 视频宽度(默认:1080)
--height 视频高度(默认:1920,9:16)
--images-dir 使用已有图片目录,跳过Chrome截图
--tts-command 自定义TTS命令模板
--keep-temp 保留临时文件
--no-subs 不烧录字幕
请参考上方使用说明进行配置和调用
result = "ready"
# 替换为任意TTS工具
python3 generate.py script.md \
--tts-command "my-tts {text} -o {output} -v {voice} -r {rate}"
占位符说明:
{text}:口播文案{output}:输出路径{voice}:音色{rate}:语速
视频参数配置
# 默认配置
video_config = {
"width": 1080,
"height": 1920, # 9:16竖版
"voice": "zh-CN-YunxiNeural",
"rate": "+0%",
"output": "tmp/video-output.mp4",
"burn_subs": True,
"keep_temp": False
}
优选实践
脚本编写技巧
| 技巧 | 说明 | 示例 |
|---|---|---|
| 分段清晰 | 每段聚焦一个要点 | 用---明确分隔 |
| 口播简洁 | 单段口播不超过30秒 | 避免过长导致图片展示过久 |
| 字幕精炼 | 字幕比口播更简短 | 提取关键词而非完整句子 |
| 画面描述具体 | 明确画面应展示什么 | "标题卡片+渐变背景" |
音色选择建议
# 中文音色推荐
-v zh-CN-YunxiNeural # 男声,沉稳(默认)
-v zh-CN-XiaoxiaoNeural # 女声,活泼
-v zh-CN-YunyangNeural # 男声,专业
-v zh-CN-XiaoyiNeural # 女声,温柔
# 语速调整
-r +10% # 稍快,适合节奏明快的内容
-r -10% # 稍慢,适合教学讲解
工作流程
- 编写Markdown脚本,规划分段
- 运行生成命令
- 脚本解析:提取各分段内容
- TTS生成:每段口播生成MP3
- 图片生成:每段字幕生成9:16图片
- 视频合成:每张图+对应音频合成片段
- 拼接输出:合并所有片段为最终MP4
常见问题
Q1: 生成视频时Chrome截图失败?
A: 检查Chrome是否已安装,或通过CHROME_PATH环境变量指定路径。也可使用预制图片(--images-dir)跳过截图步骤。
Q2: TTS配音不正常?
A: 默认TTS需要网络连接。检查网络是否正常。也可通过--tts-command替换为本地TTS工具。
Q3: 视频画面与音频不同步?
A: 本工具采用"以图定音"设计,每张图展示时长等于对应音频时长,天然同步。如遇不同步,检查是否有手动修改过临时文件。
已知限制
A: 免费版支持单视频生成,默认配置。不支持批量生成、自定义模板、多语言混排等高级功能。如需批量处理请使用PRO版。
Q5: 如何保留临时文件用于调试?
A: 使用--keep-temp参数,生成过程中的图片、音频、片段将保留在临时目录中,便于排查问题。
- 当前为免费版本,如需完整功能请升级到付费版获取全部能力
依赖说明
运行环境
- Agent平台: 支持SKILL.md规范的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
- 操作系统: Windows / macOS / Linux
- Python: 3.8+
第三方依赖
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| FFmpeg | 系统工具 | 必需 | brew/apt安装 |
| Chrome | 浏览器 | 截图必需 | 系统自带或下载 |
| TTS服务 | 服务 | 必需 | 默认Edge TTS或自定义 |
API Key 配置
- 本skill基于Markdown指令规范驱动,无需额外API Key
- TTS服务如使用云端API,需按对应服务商文档配置
- 可通过
--tts-command替换为本地TTS工具,无需API Key
可用性分类
- 分类: MD+execute(纯Markdown指令+脚本执行能力)
- 说明: 基于Markdown指令驱动Agent执行视频生成任务,通过Python脚本与FFmpeg实现视频合成
- 免费版限制: 单视频生成、默认配置、无批量处理、无自定义模板
错误处理
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
安全注意事项
| 风险类型 | 防范措施 |
|---|---|
| API密钥泄露 | 通过环境变量配置,禁止硬编码到代码或配置文件中 |
| 命令执行风险 | 仅执行白名单命令,避免拼接用户输入到命令行参数中 |
| 网络通信安全 | 使用HTTPS协议,验证SSL证书有效性 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。
效率量化分析
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
差异化对比
| 对比维度 | 本技能 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 核心功能 | 通用场景 | 通用场景 |
核心功能
- 自动化执行: 基于指令驱动的自动化流程
- 文件处理: 支持多种文件格式的读取、解析和写入操作
- API集成: 通过标准化接口调用外部服务并处理响应
- 命令执行: 在安全沙箱中执行系统命令并收集结果
Top skills in this category
Nano Banana Pro
@steipeteGenerate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
AdMapix
@fly0pantsAdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
SuperDesign
@mpociotExpert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.
Video Frames
@steipeteExtract frames or short clips from videos using ffmpeg.