소스 정보
- 저장소
- hwj123hwj/custom-skills
- 최근 소스 활동
- 2026년 6월 4일 12:23
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 4
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/hwj123hwj/custom-skills --skill video-analyze명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | video-analyze |
| description | 当你需要分析视频内容(抽取关键帧、识别语音)时使用本技能。输出结构化素材,供 Agent 理解视频内容,并可与 content-adapt 配合生成发布文案。 |
| tags | ["Video","Media","ASR"] |
| aliases | ["视频分析","分析视频","抽帧"] |
并发提取视频的视觉特征(关键帧截图)和音频特征(语音转文本),输出结构化 JSON,供 Agent 理解视频内容。
| 能力 | 说明 |
|---|---|
| 自适应关键帧提取 | 根据视频时长自动决定帧数(5–12 帧),均匀分布在 10%–90% 区间,避开片头片尾 |
| 语音转文本 | 使用本地 Whisper tiny 模型(约 75MB),离线运行,无需 API Key |
| 静音检测 | 当视频无音频或 ASR 无结果时,标记 audio_empty: true |
VA_DIR=skills/video-analyze/scripts/video-analyzer
| 依赖 | 说明 |
|---|---|
| Python | >=3.10, <3.13 |
| uv | Python 包管理器;如果系统未安装,在国内服务器上优先使用国内镜像安装 |
| ffmpeg | 提取关键帧、提取音频,必须在系统 PATH 中 |
| ffprobe | 获取视频时长,通常随 ffmpeg 一起安装 |
| torch(CPU-only) | Whisper 所需;国内服务器按镜像优先安装,允许安装到可在 CPU 上运行的 torch 版本 |
| openai-whisper | 本地 Whisper ASR 依赖 |
本技能在你的项目中默认用于普通服务器 / 无 GPU 场景。国内服务器要求所有 uv 相关依赖优先走国内镜像,包括 uv sync、torch、openai-whisper。
推荐流程:
uv,先安装它;国内服务器优先用国内镜像,例如:
sudo apt install -y pipx
PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple pipx install uv
domestic / overseas
domesticoverseasuv run va doctor --region auto 观察 CLI 自动判断结果,必要时由用户明确指定UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple uv run va doctor --region domestic;国外服务器执行 uv run va doctor --region overseasuv run va bootstrap --region <domestic|overseas>ffmpeg 缺失,Agent 可直接用无密码 sudo 安装,然后重新执行 bootstrapcd skills/video-analyze/scripts/video-analyzer
UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple uv run va doctor --region domestic
uv run va bootstrap --region domestic
cd skills/video-analyze/scripts/video-analyzer
uv run va doctor --region overseas
uv run va bootstrap --region overseas
1. domestic:`UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple uv sync`
2. overseas:`uv sync`
3. domestic:`uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch`
4. overseas:`uv pip install --index-url https://download.pytorch.org/whl/cpu torch`
5. domestic:`uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openai-whisper`
6. overseas:`uv pip install openai-whisper`
7. uv run va setup
说明:
uv sync 时,优先通过 UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple 使用国内镜像pipx install uv 配了国内镜像,但 uv sync 仍然走默认 pypi.org,导致重依赖下载很慢;因此这里必须同时显式配置 uv sync 的镜像源uv 及其后续依赖安装统一镜像优先,包含 torch 与 openai-whisperuv sync 现在应该是快的,因为重依赖不再隐式装入torch 可在 CPU 上正常运行,则视为可接受结果⛔ 在 bootstrap 结束前,不要执行 va extract
⛔ uv run va setup 只需执行一次,模型下载后会被缓存复用
Agent 在执行 va doctor / va bootstrap 前,必须先判断当前服务器属于 domestic 还是 overseas。
判断原则:
overseas,不能因为看起来像阿里云机器就误判为 domestic--region auto 让 CLI 按时区 / 语言环境做自动判断,再根据实际情况确认推荐规则:
domesticoverseas⛔ 错误选择 region 会导致后续依赖安装链路全部走错源。
uv run va doctor 会直接报告 ffmpeg 和 ffprobe 是否存在。
如果你只是想手动检查,也可以执行:
which ffmpeg && echo "OK" || echo "NOT FOUND"
which ffprobe && echo "OK" || echo "NOT FOUND"
如果缺失,Agent 可直接执行:
sudo apt install -y ffmpeg
torch 只要能在当前机器上正常完成转写流程即可uv run va doctor [--region domestic|overseas]
输出 JSON,主要关注:
ffmpegffprobeuvtorch_installedtorch_versiontorch_cuda_availablewhisper_installedwhisper_model_readyuv run va bootstrap --region domestic
uv run va bootstrap --region overseas
uv run va extract --file <视频绝对路径> [--output-dir <输出目录>] [--language zh]
| 参数 | 是否必需 | 说明 |
|---|---|---|
--file | 是 | 视频文件绝对路径 |
--output-dir | 否 | 关键帧输出目录,默认自动创建临时目录 |
--language | 否 | ASR 语言代码,默认 zh |
输出示例(stdout,JSON):
{
"frames": [
"/tmp/va_frames_xxx/frame_01_10pct.jpg",
"/tmp/va_frames_xxx/frame_02_30pct.jpg",
"/tmp/va_frames_xxx/frame_03_50pct.jpg",
"/tmp/va_frames_xxx/frame_04_70pct.jpg",
"/tmp/va_frames_xxx/frame_05_90pct.jpg"
],
"transcript": "这里是识别出的语音文本...",
"duration": 45.2,
"audio_empty": false
}
本技能只负责:
后续如何生成平台文案、是否上传、何时清理临时文件,由其他技能和上层流程决定。
cd skills/video-analyze/scripts/video-analyzer
uv run va doctor --region auto
判断方式:
region 字段;如果 CLI 已判断出 domestic / overseas,默认按该结果继续ffmpeg: false → 先执行 sudo apt install -y ffmpegtorch_installed: false / whisper_installed: false / whisper_model_ready: false → 执行 uv run va bootstrap --region <domestic|overseas>torch_cuda_available: true → 对当前项目来说不一定是错误;只要后续转写流程可正常运行即可cd skills/video-analyze/scripts/video-analyzer
uv run va extract --file <视频路径>
命令标准输出是 JSON,核心字段:
frames:关键帧图片路径列表transcript:识别出的语音文本(可能为空)duration:视频时长(秒)audio_empty:是否无音频或无有效语音使用图片读取能力查看关键帧,理解视频视觉内容。 如果帧数较多,可挑几张代表性图片重点分析。
必须先做场景分类,再做细节分析。
先回答:这个视频属于什么类型?
常见类型:
分类标准以画面主体、出现频率、占比、文本信息为主。
在已确定场景的前提下,区分:
不要把背景插画、转场动画、偶发元素误判成视频主体。
audio_empty = true → 纯视觉分析audio_empty = false 但文本明显是歌词 / BGM → 忽略音频,仅按视觉分析audio_empty = false 且是正常旁白 → 视觉 + 音频结合分析输出格式建议:
[场景类型]:知识分享
[视频主体]:围绕考研规划收费问题展开,核心观点是低成本也能讲清逻辑,不必迷信高价辅导
[音频]:正常旁白
[忽略噪音]:背景装饰、转场动画
这个总结将作为 content-adapt 的输入。
关键帧会输出到 --output-dir 指定目录,或系统临时目录。
何时清理由调用方决定。
rm -rf /tmp/va_frames_xxx/
⛔ 在用户确认发布信息之前,不要提前删除临时帧图。用户可能要求重新分析或调整。
| 现象 | 原因 | 处理方式 |
|---|---|---|
uv: command not found | 系统未安装 uv | 国内服务器优先执行 sudo apt install -y pipx && PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple pipx install uv,然后回到标准 bootstrap 流程 |
ffmpeg not found | 系统未安装 ffmpeg | 直接执行 sudo apt install -y ffmpeg |
Cannot determine video duration | ffprobe 不可用或视频损坏 | 检查 ffprobe 是否存在;检查视频是否可播放 |
whisper 模块不存在 | openai-whisper 未安装 | 先 uv run va doctor,再执行 `uv run va bootstrap --region <domestic |
| Whisper 模型下载卡住 | 网络问题 | 重试 uv run va setup,必要时重新执行 bootstrap |
torch 国内镜像安装失败 | 镜像缺包、同步延迟或网络异常 | 可重试国内镜像;若仍失败,再根据实际环境决定是否临时改用其他源 |
ASR failed (non-fatal) | Whisper 或 torch 未正确安装 | 先 uv run va doctor,必要时重新执行 bootstrap |
安装过程中出现 triton / CUDA 大包 | 镜像解析到了不同 torch 变体 | 只要当前机器上转写可正常运行即可;若影响安装稳定性,再调整镜像策略 |
| 抽帧失败 | ffmpeg 解码失败 | 视频编码可能不兼容,建议转成 mp4 (H.264) 再试 |
| 不可用项 | 影响 | 降级方式 |
|---|---|---|
| Whisper 不可用 | 无法转写语音 | CLI 输出 setup guide,并将 audio_empty: true,只做视觉分析 |
| ffmpeg 不可用 | 无法抽帧 | 无法降级,先安装 ffmpeg |
| ffprobe 不可用 | 无法获取时长 | 降级为固定抽取 5 帧 |
| 视频文件本身损坏 | 无法分析 | 停止分析并提示用户转码或更换文件 |
| 字段 | 来源 | 说明 |
|---|---|---|
| 视频文件路径 | 用户提供 | 必须是绝对路径 |
| language | 可选 | ASR 语言代码,默认 zh |
本技能结束后,Agent 至少应掌握以下数据,并可直接传给 content-adapt:
{
"frames": ["<关键帧绝对路径1>", "<关键帧绝对路径2>", "..."],
"transcript": "<ASR 文本,可为空>",
"duration": 45.2,
"audio_empty": false,
"scene_type": "<commercial_ad|tutorial|lifestyle|knowledge_sharing|other>",
"summary": "<Agent 对视频内容的一句话总结>"
}
其中:
frames / transcript / duration / audio_empty 由脚本输出scene_type / summary 由 Agent 根据分析结果补充