video-copy-analyzer
视频文案分析一站式工具。下载在线视频(B站/YouTube/抖音等)、使用FunASR进行高速中文语音转录、 自动校正文稿、并进行三维度综合分析(TextContent/Viral/Brainstorming)。 使用场景:当用户需要分析短视频文案、提取视频内容、学习爆款文案技巧时。 关键词:视频分析、文案分析、语音转文字、FunASR、爆款分析、视频下载
来源信息
- 仓库
- ALBEDO-TABAI/video-copy-analyzer
- 最近来源活动
- 2026年8月18日 09:29
- 检测到的 SKILL.md 语言
- 中文
- 星标
- 209
- 分支
- 15
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- video-copy-analyzer
- description
- 视频文案分析一站式工具。下载在线视频(B站/YouTube/抖音等)、使用FunASR进行高速中文语音转录、 自动校正文稿、并进行三维度综合分析(TextContent/Viral/Brainstorming)。 使用场景:当用户需要分析短视频文案、提取视频内容、学习爆款文案技巧时。 关键词:视频分析、文案分析、语音转文字、FunASR、爆款分析、视频下载
# 视频文案分析工具
一站式视频内容提取与文案分析,支持 B站、YouTube、抖音 等平台。
## 安装部署
### 系统要求
- Python 3.9+
- FFmpeg(用于音视频处理)
- 约 3GB 磁盘空间(FunASR 模型缓存)
### 一键安装
```bash
# 1. 基础工具
brew install ffmpeg # macOS
pip install yt-dlp requests pysrt python-dotenv
# 2. FunASR(核心 ASR 引擎,中文语音转录)
pip install funasr modelscope torch torchaudio
# 3. RapidOCR(烧录字幕识别,可选)
pip install rapidocr-onnxruntime
```
### ⚠️ FunASR 首次运行注意事项
FunASR 首次运行时会**自动下载约 2-3GB 模型文件**到 `~/.cache/modelscope/`:
| 模型 | 大小 | 用途 |
|------|------|------|
| paraformer-zh | ~1.05GB | 中文语音识别(ASR) |
| fsmn-vad | ~20MB | 语音活动检测(长音频分段) |
| ct-punc | ~1GB | 标点恢复 |
- **首次下载可能需要 1-5 分钟**(取决于网速),期间看起来像是卡住,请耐心等待
- 下载完成后会缓存到本地,后续运行秒级加载
- 如果下载失败,可手动从 ModelScope 下载模型放到 `~/.cache/modelscope/hub/models/iic/` 目录
### 环境验证
```bash
# 验证所有依赖
python scripts/check_environment.py
# 或手动检查关键组件
yt-dlp --version
ffmpeg -version
python -c "from funasr import AutoModel; print('FunASR OK')"
python -c "from rapidocr_onnxruntime import RapidOCR; print('RapidOCR OK')"
```
## 首次使用设置
首次使用时,询问用户:
> "请设置默认工作目录(用于保存下载的视频和分析报告):
>
> A. 使用默认目录:`~/video-analysis/`
> B. 每次手动指定目录
> C. 指定一个固定目录:[请输入路径]"
保存用户选择供后续使用。
---
## 工作流程(5 阶段)
> **重要:你必须严格按照以下 5 个阶段顺序执行,每个阶段完成后再进入下一个阶段。不要跳过任何阶段。**
### 阶段 1: 下载视频
**目标**:将用户提供的视频 URL 下载为本地 MP4 文件。
**执行步骤**:
1. 获取用户提供的视频 URL 和输出目录
2. 如果输出目录不存在,创建它:`mkdir -p <输出目录>`
3. **判断视频平台并选择下载方式**:
#### 抖音视频(URL 包含 `douyin.com` 或 `v.douyin.com`)
使用专用下载脚本:
```bash
python scripts/download_douyin.py "<抖音链接>" "<输出目录>/<文件名>.mp4"
```
支持的链接格式:`v.douyin.com/xxx`、`www.douyin.com/video/xxx`、`douyin.com/jingxuan?modal_id=xxx`
抖音网页已对纯 HTTP 解析做风控。脚本会先尝试分享页解析,失败后启动本机 Chrome/Edge/Chromium(无头)提取播放地址,再回退 yt-dlp。需要 Node.js 18+ 以及上述浏览器之一;也可设置 `DOUYIN_BROWSER` 指向浏览器可执行文件。
#### 其他平台(B站、YouTube 等)
使用 yt-dlp:
```bash
yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" \
--merge-output-format mp4 \
-o "<输出目录>/%(id)s.%(ext)s" \
"<视频URL>"
```
4. **确认下载成功**:检查 MP4 文件是否存在且大小 > 0
---
### 阶段 2: 字幕提取
**目标**:从视频中提取 SRT 格式字幕文件。
**执行步骤**:
**⚠️ 重要:不要调用 `extract_subtitle_funasr.py` 的 `main()` 函数或直接运行整个脚本(它包含 B站 API 调用会因 cookies 问题卡住)。直接调用 `extract_with_funasr` 函数。**
使用以下 Python 代码直接调用 FunASR 提取字幕:
```python
import sys, os
sys.path.insert(0, '<skill_scripts_目录的绝对路径>')
from extract_subtitle_funasr import extract_with_funasr
success = extract_with_funasr('<视频文件绝对路径>', '<输出SRT文件绝对路径>')
```
**执行方式**:将上述代码写入临时 Python 脚本文件(如 `/tmp/run_funasr.py`),然后运行:
```bash
python3 -u /tmp/run_funasr.py 2>&1 | tee /tmp/funasr_output.log
```
**注意事项**:
- 必须使用**绝对路径**,不要使用相对路径
- 首次运行需下载 2-3GB 模型,耐心等待(后续秒级加载)
- 转录速度极快:10 分钟音频约 22 秒完成
- 命令运行后需要等待 30-120 秒(取决于视频长度)
**确认成功**:检查 SRT 文件是否存在且大小 > 0
**字幕提取的内部逻辑(三层优先级,脚本自动处理)**:
| 优先级 | 方法 | 适用场景 | 准确度 | 速度 |
|--------|------|---------|--------|------|
| L1 | 内嵌字幕提取 | 视频自带字幕流 | ⭐⭐⭐⭐⭐ | ⚡ 极快 |
| L2 | RapidOCR 烧录字幕识别 | 字幕烧录在画面中 | ⭐⭐⭐⭐ | 🚀 快 |
| L3 | FunASR 语音转录 | 无字幕,纯语音 | ⭐⭐⭐⭐ | ⚡ 极快 |
---
### 阶段 3: 文稿校正
**目标**:将 SRT 字幕合并为连续文本,基于语义进行校正,输出 `<视频ID>_文字稿.md`。
**执行步骤**:
1. 读取 SRT 字幕文件
2. 提取所有文本行(跳过序号和时间戳行)
3. 合并为连续文本
4. 基于上下文语义进行智能校正:
- 修正 ASR 产生的同音字错误(如"旗下"→"棋下")
- 修正专业术语和人名
- 确保标点符号正确
5. 保存为 Markdown 文件
**输出文件**:`<输出目录>/<视频ID>_文字稿.md`
**输出格式**:
```markdown
# <视频ID> 原始文字稿
<校正后的完整文本>
```
---
### 阶段 4: 三维度综合分析
**目标**:对文字稿内容进行深度分析,应用三个分析框架,输出 `<视频ID>_分析报告.md`。
**执行步骤**:
1. 读取阶段 3 生成的文字稿内容
2. 依次应用以下三个分析框架
3. 将分析结果保存为 Markdown 文件
**三个分析框架**:
#### 4.1 TextContent Analysis 视角
你必须分析以下维度:
- **叙事结构分析**:开场、发展、高潮、转折、结尾的结构
- **叙事声音分析**:基调、节奏、独特金句
- **修辞手法识别**:比喻、反转、呼应、隐喻等
- **词库提取**:关键词列表
#### 4.2 Viral-Abstract-Script 视角
你必须分析以下维度:
- **Viral-5D 框架诊断**:对 Hook、Emotion、爆点、CTA、社交货币 分别给出⭐评分和分析
- **风格定位**:该视频的内容风格标签
- **爆款潜力评估**:完播率、互动率、转发率预期
- **优化建议**:1-3 条具体可执行的改进建议
#### 4.3 Brainstorming 视角
你必须分析以下维度:
- **核心价值拆解**:该文案的核心传播价值是什么
- **创意方向探索**:2-3 种衍生创意方向
- **增量验证点**:可测试的优化实验
**输出文件**:`<输出目录>/<视频ID>_分析报告.md`
**输出格式**:
```markdown
# 视频文案综合分析报告(三维度)
## 一、TextContent Analysis 视角
[叙事结构、修辞手法、词库]
## 二、Viral-Abstract-Script 视角
[Viral-5D诊断、风格定位、优化建议]
## 三、Brainstorming 视角
[价值拆解、创意方向、验证点]
```
---
### 阶段 5: 结构化文字稿
**目标**:基于阶段 3 的文字稿,按照视频内容的叙事逻辑重新分段整理,输出格式清晰、层次分明的 `<视频ID>_结构化文字稿.md`。
**执行步骤**:
1. 读取阶段 3 生成的文字稿,以及阶段 4 分析报告中的叙事结构分析
2. 按照视频内容的自然叙事段落进行切分
3. 为每个段落添加简洁的小标题(`## 一、xxx`、`## 二、xxx` 格式)
4. 在段落内部按语义进行合理分行(每段不宜过长,3-5 句为宜)
5. 修正 ASR 错误的同时保留口语化风格
6. 对关键金句或重点内容使用**加粗**标注
7. 保存为 Markdown 文件
**输出文件**:`<输出目录>/<视频ID>_结构化文字稿.md`
**输出格式**:
```markdown
# <视频标题或ID> 结构化文字稿
## 一、<第一段小标题>
<分行后的段落文本,3-5 句一段>
<继续...>
## 二、<第二段小标题>
<分行后的段落文本>
...
```
**注意事项**:
- 小标题应简洁有力,概括该段核心内容
- 保留视频原始的口语表达风格,不要过度书面化
- 关键金句或亮点用**加粗**突出
- 每个段落之间用空行分隔,提高可读性
---
## 完成后输出
完成所有 5 个阶段后,向用户播报:
```
✅ 视频文案分析完成!
📁 输出目录: <用户指定的目录>
📄 生成文件:
- <视频ID>.mp4 (原始视频)
- <视频ID>.srt (原始字幕)
- <视频ID>_文字稿.md (校正后纯文本文字稿)
- <视频ID>_分析报告.md (三维度分析报告)
- <视频ID>_结构化文字稿.md (按叙事逻辑分段的结构化文字稿)
🔗 快速打开:
[文字稿](<文字稿路径>)
[分析报告](<分析报告路径>)
[结构化文字稿](<结构化文字稿路径>)
```
---
## 参考文件
| 文件 | 说明 | 状态 |
|------|------|------|
| [download_douyin.py](scripts/download_douyin.py) | 抖音视频下载脚本 | ✅ 可用 |
| [douyin_browser.mjs](scripts/douyin_browser.mjs) | 本机浏览器提取抖音播放地址 | ✅ 可用 |
| [extract_subtitle_funasr.py](scripts/extract_subtitle_funasr.py) | 智能字幕提取(FunASR + RapidOCR) | ✅ 可用 |
| [check_environment.py](scripts/check_environment.py) | 环境依赖检测 | ✅ 可用 |
| [analysis-frameworks.md](references/analysis-frameworks.md) | 三个分析框架详解 | ✅ 参考 |
<!-- 以下脚本暂未启用,需要浏览器 cookies 支持,目前因 macOS 钥匙串加密问题暂不可用 -->
<!-- | [fetch_bilibili_subtitle.py](scripts/fetch_bilibili_subtitle.py) | B站API字幕获取(需cookies) | ⏸️ 暂停 | -->
<!-- | [extract_subtitle.py](scripts/extract_subtitle.py) | Whisper 字幕提取(已被 FunASR 替代) | ⏸️ 暂停 | -->
<!-- | [transcribe_audio.py](scripts/transcribe_audio.py) | Whisper 音频转录(已被 FunASR 替代) | ⏸️ 暂停 | -->
---
## FunASR 技术细节
本 skill 使用 FunASR 的 **Paraformer** 系列模型组合:
```python
from funasr import AutoModel
model = AutoModel(
model="paraformer-zh", # 中文 ASR(含 SeACo 增强)
vad_model="fsmn-vad", # 语音活动检测(自动分段长音频)
vad_kwargs={"max_single_segment_time": 60000}, # 每段最长 60 秒
punc_model="ct-punc", # 标点恢复
disable_update=True, # 禁用版本检查
)
result = model.generate(
input="audio.wav",
batch_size_s=300, # 动态 batch
cache={}, # 官方推荐参数
)
```
**性能参考**(MacBook Pro M 系列 CPU):
| 音频时长 | 转录耗时 | RTF | 字幕条数 |
|---------|---------|-----|---------|
| 42 秒 | 2 秒 | 0.049 | ~11 条 |
| 9 分钟 | 22 秒 | 0.036 | ~137 条 |
| 10 分钟 | 22 秒 | 0.035 | ~142 条 |
---
## 故障排除
### FunASR 首次运行很慢 / 看起来卡住
首次运行需下载约 2-3GB 模型文件,这是正常现象。在网速 30MB/s 的环境下约需 1-2 分钟。下载完成后后续运行秒级加载。
### FunASR 模型下载失败
如果 ModelScope 下载速度慢或中断,可手动从 [ModelScope](https://www.modelscope.cn/models) 下载以下模型到 `~/.cache/modelscope/hub/models/iic/` 目录:
- `speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch`
- `speech_fsmn_vad_zh-cn-16k-common-pytorch`
- `punc_ct-transformer_cn-en-common-vocab471067-large`
### torch 版本不兼容
FunASR 需要 PyTorch 2.0+,建议:
```bash
pip install torch torchaudio --upgrade
```
### 字幕提取脚本直接运行卡住
不要直接运行 `python extract_subtitle_funasr.py video.mp4 output.srt`(它会调用 B站 API 获取字幕并因 cookies 问题卡住)。请按照**阶段 2**的说明,直接调用 `extract_with_funasr()` 函数。
### 抖音下载失败 / 无法提取视频数据
`www.douyin.com` 对无浏览器会话的请求会返回风控页,旧的 `RENDER_DATA` 解析不再可用。确认:
- 已安装 Node.js(`node -v`)
- 本机有 Chrome、Edge 或 Chromium
- 若浏览器不在默认路径,设置 `DOUYIN_BROWSER=/path/to/chrome`
无浏览器时脚本会回退 yt-dlp,但 yt-dlp 同样需要有效游客 cookie,通常也会失败。
在 GitHub 查看