← 返回
内容创作

video-remix

YouTube 视频处理助手 - Gemini 智能分析 + 下载 + 剪辑 + 配音 + 硬字幕合成 + 局域网 HTTP 分享
YouTube视频处理助手 - Gemini智能分析 + 下载 + 剪辑 + 配音 + 硬字幕合成 + 局域网HTTP分享
zhaoyta
内容创作 clawhub v1.0.7 2 版本 100000 Key: 无需
★ 2
Stars
📥 676
下载
💾 23
安装
2
版本
#latest

概述

🎬 Video Remix Skill (V6 - Browser 自动化完整版)

YouTube 视频处理技能,采用 Gemini First 流程:先用 Gemini 智能分析获取时间戳和文案,再精准下载、剪辑、配音、合成硬字幕,自动对齐音频时长,最后通过局域网 HTTP分享。

✨ 触发条件

当用户提到以下关键词时自动触发:

  • YouTube 视频处理
  • 视频剪辑
  • 自动配音
  • 视频转录
  • 下载 YouTube 视频
  • 制作视频解说
  • 视频文案生成
  • AI 配音视频
  • 硬字幕合成
  • 局域网分享视频

🧠 Gemini 提示词模板

可复制提示词

{VIDEO_URL} 替换为实际链接:

请分析这个 YouTube 视频:{VIDEO_URL}

我需要你帮我提取精彩片段并生成抖音风格的解说文案。

可选参数(如未提供则忽略):
- 期望总时长(秒):{TARGET_DURATION}

## 📋 任务要求

### 1. 片段提取
- 片段数量由你决定(以叙事完整、节奏顺畅为准;宁可少而精)
- 每个片段只讲**一个核心动作/场景**,不要堆砌多个事件
- 片段之间要有**逻辑连贯性**,形成完整的故事线(开头→发展→高潮→结尾)
- 若提供“期望总时长(秒)”,请使所有片段总时长 Σ(end - start) ≈ 该值(允许 ±10%)
- 若未提供期望总时长,则由你根据内容密度与节奏自行决定合理总时长(通常 20–60 秒),并据此规划片段

### 2. 文案创作
- 用**中文**写抖音风格解说(口语化、有情绪、有梗)
- 每段文案只说清楚:**"发生了什么 + 什么感受"**
- 开头要抓人(用"看好了!""家人们!"等吸引注意)
- 避免模糊描述(不要说"这个操作很厉害",要说清楚哪里厉害)

### 3. 时长匹配(重要!)
- 语速约 3 字/秒(舒适语速)
- 字数公式:`字数 ≈ (end - start) × 3`
- 参考:
  - 5 秒片段 → 约 15 字
  - 10 秒片段 → 约 30 字
  - 15 秒片段 → 约 45 字

### 4. 质量标准

  - 每个片段简单清晰,只讲一件事
  - 文案明确具体,一听就懂
  - 故事完整连贯,有起承转合
  - 字数匹配时长,语速舒适

### 5. 避免的问题

  - 一个片段里塞进太多信息
  - 文案模糊不清
  - 片段之间跳跃太大
  - 文案过长导致语速过快
  - **不要选择出现人脸的片段**(优先选择景物、动作、物体特写)
  - **不要选择有明显水印/Logo 的片段**(避免平台水印、品牌标识等)
  - **不要选择带字幕的片段**

## 📤 输出格式

请**严格**按以下 JSON 格式返回(不要多余的解释):

{
  "douyin_title": "抖音爆款标题(15-25 字,强钩子,口语化)",
  "douyin_tags": ["#爆款标签1", "#爆款标签2", "#爆款标签3", "#爆款标签4", "#爆款标签5"],
  "youtube_url": "视频 URL",
  "clips": [
    {
      "start": 0,
      "end": 5,
      "script": "文案内容(20-25 字)"
    },
    {
      "start": 5,
      "end": 12,
      "script": "文案内容(约 30 字)"
    }
  ]
}


将 Gemini 返回的 JSON 保存到 temp/gemini_result.json,然后运行脚本。

📋 使用示例

示例 1:DIY 手工视频

{
  "douyin_title": "几块钱的 PVC 管,居然能做出顶级钓鱼神器?看完我人傻了!",
  "douyin_tags": ["#钓鱼", "#DIY手工", "#硬核改造", "#生活妙招", "#涨知识"],
  "youtube_url": "https://www.youtube.com/shorts/KV-TLUADEs0",
  "clips": [
    {
      "start": 0,
      "end": 20,
      "script": "看好了!大神教你用几块钱的 PVC 管,手工打造顶级钓鱼神器,这骚操作简直太硬核了,钓友们赶紧集合围观!"
    },
    {
      "start": 21,
      "end": 45,
      "script": "第一步先给管子精准加热,千万别眨眼,看这手法多稳,通过火烤让塑料变软,这是制作钓鱼握把的关键一步。"
    },
    {
      "start": 46,
      "end": 75,
      "script": "接下来是细节处理,反复加热塑形,每一个弧度都得经过精雕细琢,这就是传说中的纯手工温度,新手一看就能学会。"
    },
    {
      "start": 76,
      "end": 105,
      "script": "开始组装核心部件,再次加热扩口处理,看这契合度,比买的还要强,这动手能力我只能说真心给跪了!"
    },
    {
      "start": 106,
      "end": 120,
      "script": "大功告成!超实用的 DIY 钓鱼装备新鲜出炉,拿着它去河边,你就是整条街最靓的仔,学会的家人们记得点赞收藏!"
    }
  ]
}

🚀 调用方式

流程总览(输入/输出一目了然)

阶段 0:依赖检查/安装
  输入:本机环境
  输出:ffmpeg、yt-dlp、edge-tts 就绪(含 libass)

阶段 1:片段规划(优先 Gemini,失败则离线)
  输入:YouTube URL(必填)、期望总时长秒数{TARGET_DURATION}(可选)
  输出:temp/gemini_result.json
        ├─ douyin_title(可选)
        ├─ douyin_tags(可选)
        └─ clips[]: { start, end, script }

阶段 2:视频处理脚本
  输入:temp/gemini_result.json
  输出:output/final_hardsub.mp4、output/full_voiceover.mp3、output/subtitles.srt、HTTP 分享地址

阶段 0:依赖检查与安装(先执行)

# 0.1 基础工具
command -v python3 >/dev/null || { echo "缺少 python3"; exit 1; }
command -v pip3 >/dev/null || { echo "缺少 pip3"; exit 1; }

# 0.2 平台依赖(macOS)
if [[ "$OSTYPE" == "darwin"* ]]; then
  command -v brew >/dev/null || {
    echo "未检测到 Homebrew,请先安装:https://brew.sh/";
    exit 1;
  }
  for pkg in ffmpeg-full yt-dlp libass; do
    brew list --versions "$pkg" >/dev/null 2>&1 || brew install "$pkg";
  done
  # 注意:包名是 ffmpeg-full,但安装后可执行文件仍然是 `ffmpeg`
fi

# 0.3 平台依赖(Ubuntu/Debian)
if command -v apt >/dev/null 2>&1; then
  sudo apt update -y
  sudo apt install -y ffmpeg yt-dlp libass-dev
fi

# 0.4 Python 依赖(幂等安装)
pip3 show edge-tts >/dev/null 2>&1 || pip3 install edge-tts
pip3 show yt-dlp   >/dev/null 2>&1 || pip3 install yt-dlp

# 0.5 FFmpeg 是否支持 libass(硬字幕需要)
if ! ffmpeg -version 2>&1 | grep -qi libass; then
  echo "⚠️ 当前 ffmpeg 不包含 libass,硬字幕可能失败。请安装包含 libass 的 ffmpeg。"
  echo "macOS 建议:brew install ffmpeg-full(并确保 libass 已安装:brew install libass)"
fi

顺序要求(强制):

  • 完成阶段 0 依赖检查后,必须立即执行阶段 1(片段规划) 产出 temp/gemini_result.json
  • 阶段 1 有两种路径:1A Gemini(优先)或 1B 离线(Gemini 不可用时)
  • 仅当 temp/gemini_result.json 存在且为有效 JSON 时,才允许进入阶段 2
  • 禁止在没有 temp/gemini_result.json 的情况下直接进入阶段 2

阶段 1A:Gemini 智能分析(浏览器自动化,强制)

触发时机: 用户提供 YouTube URL 后 立即执行

执行内容:

# 1. 启动浏览器
browser(action="start", profile="openclaw")

# 2. 打开 Gemini
browser(action="navigate", url="https://gemini.google.com/")

# 3. 捕获页面元素(获取输入框 ref)
snapshot = browser(action="snapshot", refs="aria")

# 4. 构建完整提示词(替换 {VIDEO_URL})
prompt = """请分析这个 YouTube 视频:{VIDEO_URL}
...(完整提示词)...
请严格按以下 JSON 格式返回(不要多余的解释):"""

# 5. 输入提示词
browser(action="act", kind="type", ref="e12", text=prompt)

# 6. 发送
browser(action="act", kind="press", key="Enter")

# 7. 等待生成(Gemini 通常需要 5-15 秒)
browser(action="act", kind="wait", timeMs=10000)

# 8. 再次捕获页面(获取响应)
snapshot = browser(action="snapshot", refs="aria")

# 9. 提取响应内容
json_text = browser(action="act", kind="evaluate", 
                    fn="() => document.querySelector('[aria-label*=\"Response\"]').innerText")

# 10. 解析并保存 JSON
import json
data = json.loads(json_text)
with open("temp/gemini_result.json", "w") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 11. 关闭浏览器
browser(action="close", targetId=snapshot["targetId"])
 

---

### 阶段 2:视频处理脚本

**触发时机:** 确认 `temp/gemini_result.json` 已生成后

**前置检查:**

检查 JSON 是否存在

if [ ! -f temp/gemini_result.json ]; then

echo "❌ 错误:gemini_result.json 不存在,请先执行阶段 1"

exit 1

fi

验证 JSON 格式

python3 -c "import json; json.load(open('temp/gemini_result.json'))" || \

{ echo "❌ 错误:JSON 格式无效"; exit 1; }

可选:快速依赖自检(确保阶段 0 已完成)

command -v ffmpeg >/dev/null || { echo "缺少 ffmpeg(请安装 ffmpeg-full 或确保 ffmpeg 含 libass)"; exit 1; }

command -v yt-dlp >/dev/null || { echo "缺少 yt-dlp"; exit 1; }

python3 -c "import edge_tts" 2>/dev/null || { echo "缺少 edge-tts(pip3 install edge-tts)"; exit 1; }


**执行脚本:**

cd /Users/admin/.openclaw/workspace/skills/video-remix

python3 scripts/gemini_first_remix.py


**脚本会自动完成:**
- 读取 `temp/gemini_result.json`
- 下载 YouTube 视频(完整原视频;视频很长也没关系,耐心等待即可)
- 剪辑片段
- 生成 TTS 配音
- 合成硬字幕
- 启动 HTTP 服务器

**输入:**
- `temp/gemini_result.json`

**输出:**
- `output/final_hardsub.mp4`
- `output/full_voiceover.mp3`
- `output/subtitles.srt`
- 局域网 HTTP 分享地址(端口 8888)

**✅ 阶段 2 完成标志:**
- `output/final_hardsub.mp4` 生成,HTTP 服务启动

### 支持的功能

1. **Gemini 智能分析** - 直接获取精彩片段时间戳 + 抖音风格文案
2. **文案时长估算** - 自动计算文案字数是否匹配片段时长(4.5 字/秒)
3. **下载** - 使用 yt-dlp 通过代理下载 YouTube 视频
4. **剪辑** - 根据时间戳精准裁剪片段
5. **配音** - 使用 Edge-TTS 生成中文配音(免费,无需 API)
6. **音频自动对齐** - 如果音频比视频长,自动加速匹配视频时长
7. **字幕** - 自动生成 SRT 字幕文件(基于视频时长)
8. **硬字幕合成** - FFmpeg 烧录硬字幕到视频
9. **局域网 HTTP 分享** - 自动启动 HTTP 服务器,生成可访问链接

## ⚙️ 配置说明

### 环境变量

输出目录

export VR_OUTPUT_DIR="./output"

临时文件目录

export VR_TEMP_DIR="./temp"

代理配置(YouTube 下载必需)

export HTTP_PROXY=http://127.0.0.1:10808

export HTTPS_PROXY=http://127.0.0.1:10808

TTS 声音 (xiaoxiao/yunxi/yunjian/xiaoyi/yunyang 等)

export VR_TTS_VOICE="xiaoxiao"


### Gemini 元数据格式

`temp/gemini_result.json` 示例:

{

"douyin_title": "这里填抖音爆款标题",

"douyin_tags": ["#标签1", "#标签2", "#标签3", "#标签4", "#标签5"],

"youtube_url": "https://youtube.com/watch?v=VIDEO_ID",

"clips": [

{

"start": 0,

"end": 5,

"script": "家人们谁懂啊!本来只想安安静静钓个鱼..."

},

{

"start": 5,

"end": 12,

"script": "好家伙,这哪是钓鱼,这是在喂祖宗啊!..."

}

]

}


**文案字数建议:**
- 5 秒片段 → 约 20-25 字
- 10 秒片段 → 约 40-50 字
- 公式:`字数 ≈ 时长 × 4.5`

## 🎤 可用声音

| 声音 | 描述 | 适用场景 |
|------|------|----------|
| xiaoxiao | 女声,温暖亲切 | 新闻、解说(最常用) |
| yunxi | 男声,平静稳重 | 正式内容 |
| yunjian | 男声,充满活力 | 体育、热血 |
| xiaoyi | 女声,活泼开朗 | 轻松内容 |
| yunyang | 男声,专业播报 | 新闻、正式 |

## 📝 输出说明

处理完成后输出:
- `final_hardsub.mp4` - 硬字幕版本(字幕烧录到视频)
- `full_voiceover.mp3` - 完整配音音频(已加速对齐)
- `subtitles.srt` - SRT 字幕文件

所有文件保存在 `output/` 目录。

**HTTP 访问地址:**

http://<局域网 IP>:8888/final_hardsub.mp4

http://<局域网 IP>:8888/ (浏览所有文件)


## ⚠️ 注意事项

- **执行顺序**:严格按 `## 🚀 调用方式` 的阶段 0 → 1 → 2 执行。
- **不要跳过 Gemini**:阶段 2 的剪辑与文案完全依赖 `temp/gemini_result.json`,不支持先下载再“随便剪”。
- **Browser 自动化**:
  - Gemini 输出可能需要等待(建议 `wait timeMs >= 10000`)。
  - 页面更新会导致 aria-ref 变化,需要重新 snapshot。
  - 结束后记得关闭标签页,避免残留会话。
- **代理**:YouTube 下载通常需要代理(`HTTP_PROXY/HTTPS_PROXY` 指向可用代理)。
- **硬字幕**:macOS 推荐安装 `ffmpeg-full`,并用 `ffmpeg -version | grep libass` 确认支持 libass。
- **HTTP 服务**:脚本会常驻运行 HTTP 服务,`Ctrl+C` 才会停止。

## 🎯 文案时长参考

| 片段时长 | 建议字数 | 示例 |
|---------|---------|------|
| 3 秒 | 10-15 字 | "这操作太秀了!" |
| 5 秒 | 20-25 字 | "家人们谁懂啊!本来只想钓个鱼..." |
| 10 秒 | 40-50 字 | "好家伙,这哪是钓鱼,这是在喂祖宗啊!..." |
| 15 秒 | 60-70 字 | 完整场景描述 + 情绪渲染 |

**超出建议字数的处理:**
- 脚本会自动检测并提示
- 后期会加速音频匹配视频时长
- 加速超过 2.0x 时可能影响音质,建议优化文案

---

## 🔧 故障排查

### ❌ 最常见错误:阶段 2 执行时 JSON 不存在

**症状:**

$ python3 scripts/gemini_first_remix.py

📖 加载 Gemini 元数据:temp/gemini_result.json

Traceback (most recent call last):

FileNotFoundError: [Errno 2] No such file or directory: 'temp/gemini_result.json'


**原因:** 阶段 1(Gemini 分析)未执行或未完成

**解决方案:**

1. 检查 JSON 是否存在

ls -la temp/gemini_result.json

2. 如不存在,先执行阶段 1(browser 访问 Gemini)

3. 确认 JSON 生成后,再运行脚本


**预防方法:** 在运行脚本前添加前置检查:

if [ ! -f temp/gemini_result.json ]; then

echo "❌ 错误:gemini_result.json 不存在,请先执行阶段 1(Gemini 分析)"

exit 1

fi

python3 scripts/gemini_first_remix.py


---

### Browser 自动化失败(阶段 1)

| 问题 | 解决方案 |
|------|----------|
| Gemini 页面无法打开 | 检查网络连接,确认 `browser(action=start)` 成功 |
| 输入框 ref 找不到 | 重新 `snapshot` 获取最新 aria-refs |
| 响应超时 | 增加 `wait timeMs` 到 15000 或更长 |
| 返回非 JSON 内容 | Gemini 可能拒绝分析,重试或更换 URL |
| 浏览器残留 | 手动 `browser(action=stop)` 清理会话 |

### 脚本执行失败(阶段 2)

| 问题 | 解决方案 |
|------|----------|
| `temp/gemini_result.json` 不存在 | **先执行阶段 1(Gemini 分析)** |
| JSON 格式无效 | 检查 Gemini 返回内容,确保是有效 JSON |
| clips 数组为空 | Gemini 未提取到片段,重试或更换视频 |
| yt-dlp 下载失败 | 检查代理配置 `HTTP_PROXY=http://127.0.0.1:10808` |
| FFmpeg libass 不支持 | 运行 `brew install libass` 或下载完整版 FFmpeg |
| 音频加速失真 | 优化文案减少字数,或接受 1.5x 以内加速 |
| HTTP 服务器无法启动 | 检查端口 8888 是否被占用 |

### 快速诊断命令

检查 FFmpeg libass 支持

ffmpeg -version 2>&1 | grep libass

检查代理

curl -x http://127.0.0.1:10808 https://www.youtube.com -I

检查 Python 依赖

pip3 list | grep -E "edge-tts|yt-dlp"

检查 temp 目录

ls -la temp/


版本历史

共 2 个版本

  • v1.0.7 当前
    2026-05-01 18:44 安全 安全
  • v1.0.0
    2026-03-20 06:41 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

content-creation

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 41,090
content-creation

Humanizer

biostartechnology
消除AI写作痕迹,使文本更自然真实。基于维基百科"AI写作特征"指南,识别并修正夸张象征、宣传用语、肤浅-ing分析、模糊归因、破折号滥用、三项排比、AI词汇、负面平行结构及冗长连接词等模式。
★ 860 📥 199,995
content-creation

Baidu Wenku AIPPT

ide-rea
使用百度文库 AI 智能生成 PPT,自动根据内容选择模板。
★ 66 📥 46,224