From agi-super-team
Downloads videos from B站/抖音/YouTube, extracts audio via ffmpeg, transcribes with Whisper API, and analyzes video structure, hooks, and pacing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agi-super-team:video-content-analyzerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
自动下载视频并用AI分析内容,提取完整的语音文案,分析视频结构和节奏。
自动下载视频并用AI分析内容,提取完整的语音文案,分析视频结构和节奏。
# 安装 yt-dlp (视频下载)
pip3 install --break-system-packages yt-dlp
# 安装 ffmpeg (音频处理)
# Mac: brew install ffmpeg
# Ubuntu: sudo apt install ffmpeg
需要设置 OpenAI API Key(用于Whisper转写):
export OPENAI_API_KEY="your-api-key"
或在 ~/.openclaw/openclaw.json 中配置:
{
"skills": {
"openai-whisper-api": {
"apiKey": "your-api-key"
}
}
}
用户提供视频链接,例如:
https://www.bilibili.com/video/BV1xuPYzcEdohttps://www.douyin.com/video/xxxhttps://www.youtube.com/watch?v=xxx完整的分析报告,包括:
1. 输入视频链接
↓
2. yt-dlp 下载视频
↓
3. 获取视频时长,计算关键帧数量
↓
4. ffmpeg 提取关键帧(每30秒1帧)
↓
5. 获取弹幕数据(若有)
↓
6. Whisper API 转写(若有API)
↓
7. AI 分析画面+弹幕+文案
↓
8. 输出完整报告
# 视频时长 / 30 = 关键帧数量
# 例如:8分钟视频 → 16-17张关键帧
# 提取关键帧(每30秒1帧)
ffmpeg -ss 00:00:00 -i video.mp4 -vframes 1 -q:v 2 frame_001.jpg -y
ffmpeg -ss 00:00:30 -i video.mp4 -vframes 1 -q:v 2 frame_002.jpg -y
ffmpeg -ss 00:01:00 -i video.mp4 -vframes 1 -q:v 2 frame_003.jpg -y
# ... 以此类推
| 视频时长 | 建议帧数 | 间隔 |
|---|---|---|
| < 3 分钟 | 6-8 帧 | 每20-30秒 |
| 3-10 分钟 | 12-20 帧 | 每30秒 |
| 10-30 分钟 | 30-60 帧 | 每30秒 |
import subprocess
import os
def extract_frames(video_path, output_dir, interval=30):
"""提取视频关键帧
Args:
video_path: 视频文件路径
output_dir: 输出目录
interval: 帧间隔(秒),默认30秒
"""
# 获取视频时长
cmd = ['ffprobe', '-v', 'error', '-show_entries',
'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1',
video_path]
result = subprocess.run(cmd, capture_output=True, text=True)
duration = float(result.stdout.strip())
# 计算帧数
num_frames = int(duration // interval) + 1
os.makedirs(output_dir, exist_ok=True)
for i in range(num_frames):
seconds = i * interval
mins = seconds // 60
secs = seconds % 60
ts = f'{mins:02d}:{secs:02d}'
out = f'{output_dir}/frame_{i+1:03d}.jpg'
cmd = ['ffmpeg', '-ss', ts, '-i', video_path,
'-vframes', '1', '-q:v', '2', out, '-y']
subprocess.run(cmd, capture_output=True)
print(f'✓ Extracted {out}')
return num_frames
# 使用示例
extract_frames('/tmp/video.mp4', '/tmp/frames', interval=30)
# 下载B站视频(仅音频)
yt-dlp -x --audio-format mp3 -o "%(title)s.%(ext)s" "https://www.bilibili.com/video/BV1xuPYzcEdo"
# 下载视频(最佳画质)
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" -o "%(title)s.%(ext)s" "https://www.bilibili.com/video/BV1xuPYzcEdo"
# 仅下载字幕
yt-dlp --write-subs --skip-download -o "%(title)s" "https://www.bilibili.com/video/BV1xuPYzcEdo"
# 从视频提取音频
ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3
# 或直接用yt-dlp
yt-dlp -x --audio-format mp3 "https://www.bilibili.com/video/BV1xuPYzcEdo"
# 📹 视频内容分析报告
**视频**: [标题]
**链接**: [URL]
**时长**: [时长]
**平台**: [B站/抖音/YouTube]
**关键帧数**: [数量]
---
## 📝 完整文案
[Whisper转写的完整语音文案]
---
## 🎬 视频结构(基于关键帧)
| 时间 | 画面内容 | 阶段 |
|------|---------|------|
| 0:00 | [第1帧描述] | 钩子 |
| 0:30 | [第2帧描述] | 铺垫 |
| 1:00 | [第3帧描述] | 主题展开 |
| ... | ... | ... |
---
## 🪝 钩子分析
[开头画面的钩子设计分析]
---
## 🎯 内容分层
- **开头 (0-1分钟)**:
- **中段 (1-5分钟)**:
- **高潮 (5-7分钟)**:
- **结尾 (7-分钟)**:
---
## 💡 爆款元素
| 元素 | 分析 |
|------|------|
| 情感点 | [弹幕高频情感词] |
| 互动点 | [弹幕互动热点] |
| 记忆点 | [金句/名场面] |
---
## 📊 弹幕热点词
[从danmaku.xml提取的高频弹幕]
---
## 🔥 成功原因总结
1. [核心爆款因素]
2. [情感共鸣点]
3. [创新/独特之处]
---
## 总结
[视频的核心内容和亮点]
ffmpeg -versionbrew install ffmpegnpx claudepluginhub aaaaqwq/agi-super-team --plugin agi-super-teamAnalyzes YouTube videos using both transcript and visual frame extraction for step-by-step guides, especially useful for tutorials, demos, and how-to videos.
Extracts scene-aware keyframes and transcripts from video URLs or local files for summarization, analysis, or discussion. Enables Claude to 'watch' video content it cannot ingest directly.
Transcribes and analyzes any video (YouTube, Loom, Vimeo, Zoom, local files) with three depth modes: transcript, visual (with frame extraction and Claude vision), and multimodal (Gemini native video).