一键导入
extract-video
提取视频文件的基本信息、音频轨道、关键帧截图,或将其转换为可分析的格式。 当用户提供视频路径并需要了解内容、提取字幕、获取关键帧时使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
提取视频文件的基本信息、音频轨道、关键帧截图,或将其转换为可分析的格式。 当用户提供视频路径并需要了解内容、提取字幕、获取关键帧时使用。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
电影级视频分镜头提示词生成器,专为 Seedance 2.x 系列模型设计。当用户需要生成视频、制作分镜脚本、描述影像画面、进行镜头调度、输出 AI 视频提示词(prompt)时触发。默认输出适合直接复制给模型的轻量成品提示词,优先贴近长镜头、多分镜、蒙太奇三类实用模板。动作戏默认采用事件链长镜头逻辑;变身、异变、强烈招式前摇等场景采用阶段推进逻辑。仅当用户明确要求工业版、完整版、分镜表或后期说明时,才输出重型结构化版本。
视频视觉风格定调与 GPT image2 风格预设提示词顾问。针对用户的视频项目需求(宣传片、短片、广告、MV、纪录片、动画、短视频、综艺片头等), 推荐合适的视觉风格方向,并为每个风格生成一段纯风格层的、可复用的 GPT image2 中文自然语言提示词(风格预设)。 风格预设只描述"怎么拍"——色彩体系、光线质感、构图逻辑、质感媒介、对比与饱和度——不包含任何具体人物、场景、物品内容, 用户可将其与任意内容描述自由组合使用。 当用户提到以下任何场景时立即触发:要拍视频但不知道用什么风格、需要风格定调、需要风格参考、需要 mood board、 帮我推荐视频风格、这个视频适合什么视觉调性、帮我出 GPT image2 提示词、gpt image 2 提示词、 视频风格方向、视觉调性推荐、画面风格推荐、风格预设、style preset、look reference、visual style。 即使用户只是描述了一个视频想法并隐约想要"定个视觉调性",也应主动以视频风格顾问身份介入。
美术资产设计师——专为剧本/故事内容拆解人物与场景美术资产,并为每个资产生成可直接用于 AI 图像生成工具的提示词。当用户提到剧本、故事、脚本、分镜、需要美术资产、出图提示词、角色设计、场景设计等内容时,立即触发此技能。即使用户只是说"帮我拆一下剧本里的角色"或"我需要生成场景图",也应立即以美术资产设计师身份介入。覆盖从剧本解析 → 资产清单整理 → 风格确认(必须向用户询问,禁止自行推断)→ 分类提示词生成的完整流程。
双核顾问助手——结构化思考 × 同理心引擎。当用户带来任何个人困惑、决策难题、工作问题、情绪困扰、创意探讨时,立即启用此技能。它能自动感知用户的情绪状态,决定先共情还是先分析,并根据问题严肃程度在"智慧老友"和"专业顾问"之间切换风格。触发词包括但不限于:我不知道怎么办、帮我分析、我很纠结、我有个想法、最近遇到一件事、你觉得我应该……即使用户只是随口倾诉,也应主动以双核顾问身份介入,而不是泛泛回应。
爬取网络小说并保存为本地 txt 文件。当用户想要下载小说、抓取网页小说、保存在线小说到本地、从小说网站提取内容时触发。支持通用小说网站适配,自动分析章节结构,单线程稳定爬取,合并输出为单个 txt 文件。
国际级宣传片创意启发大师(Promo Film Creative Master)——专精城市/国家形象片、品牌宣传片、产品发布片、公益/社会议题片的创意开发。融合 Cannes Lions、D&AD、One Show、Clio Awards、戛纳/Sundance 等国际顶级奖项的获奖逻辑,提供创意概念、叙事结构、视听语言、获奖案例拆解四位一体的创意启发服务。支持两种模式:/generate 直出完整创意方案,/deepen 苏格拉底式引导深化创意。当用户提到宣传片、形象片、品牌片、城市片、公益片、社会议题视频、产品发布视频、TVC、viral video、创意提案、创意启发、国际获奖片参考、大创意(Big Idea)等词汇时,立即触发此技能。即使用户只是说"帮我想想这个宣传片怎么拍"或"有什么好的参考方向",也应主动以国际级创意导师身份介入。
| name | extract-video |
| slash_command | extract-video |
| description | 提取视频文件的基本信息、音频轨道、关键帧截图,或将其转换为可分析的格式。 当用户提供视频路径并需要了解内容、提取字幕、获取关键帧时使用。 |
| usage | /extract-video <视频路径> [操作类型] 操作类型(可选,默认为 info): - info 显示视频基本信息(分辨率、时长、码率、编码格式等) - frames 提取关键帧截图到临时目录 - audio 提取音频为 WAV/MP3 - subtitle 尝试提取内嵌字幕或生成音频转文字(需要 Whisper) |
用户输入 /extract-video <路径> 时,本 skill 生效。
在 Windows 系统上,按以下优先级自动检测 FFmpeg:
Winget 安装路径(默认):
%LOCALAPPDATA%\Microsoft\WinGet\Packages\Gyan.FFmpeg_*
Chocolatey 安装路径:
C:\ProgramData\chocolatey\bin\ffmpeg.exe
官方安装程序路径:
C:\Program Files\FFmpeg\bin\ffmpeg.exe
C:\ffmpeg\bin\ffmpeg.exe
系统 PATH:直接调用 ffmpeg / ffprobe
检测逻辑(Bash):
# 尝试找到 ffmpeg
FFMPEG_PATH=""
PROBE_PATHS=(
"$LOCALAPPDATA/Microsoft/WinGet/Packages/Gyan.FFmpeg_*/ffmpeg-*/bin/ffmpeg.exe"
"/c/ProgramData/chocolatey/bin/ffmpeg.exe"
"/c/Program Files/FFmpeg/bin/ffmpeg.exe"
"/c/ffmpeg/bin/ffmpeg.exe"
)
for path in "${PROBE_PATHS[@]}"; do
found=$(ls $path 2>/dev/null | head -1)
if [ -n "$found" ]; then
FFMPEG_PATH="$found"
FFPROBE_PATH="${found/ffmpeg/ffprobe}"
break
fi
done
# 如果都没找到,尝试系统 PATH
if [ -z "$FFMPEG_PATH" ]; then
if command -v ffmpeg &> /dev/null; then
FFMPEG_PATH="ffmpeg"
FFPROBE_PATH="ffprobe"
fi
fi
if [ -z "$FFMPEG_PATH" ]; then
echo "❌ FFmpeg 未找到。请安装:"
echo " winget install Gyan.FFmpeg"
echo " 或: choco install ffmpeg"
exit 1
fi
确认路径存在且为视频文件:
if [ ! -f "$VIDEO_PATH" ]; then
echo "❌ 文件不存在: $VIDEO_PATH"
exit 1
fi
运行:
"$FFPROBE_PATH" -v quiet -print_format json -show_streams -show_format "$VIDEO_PATH"
将 JSON 结果整理为易读的摘要(分辨率、时长、帧率、编码器、音频轨道数等)。
运行:
# 创建输出目录
OUTPUT_DIR="${TEMP:-/tmp}/extract-video-frames-$(date +%s)"
mkdir -p "$OUTPUT_DIR"
# 按时间间隔提取(每2秒一帧,480px宽度)
"$FFMPEG_PATH" -i "$VIDEO_PATH" -vf "fps=1/2,scale=480:-1" -q:v 2 "$OUTPUT_DIR/frame_%04d.jpg"
# 或按场景变化提取(需要更多计算)
# "$FFMPEG_PATH" -i "$VIDEO_PATH" -vf "select='gt(scene,0.3)',showinfo" -vsync vfr -q:v 2 -f image2 "$OUTPUT_DIR/scene_%04d.jpg"
生成完成后,列出提取的帧文件路径,供后续分析使用。
运行:
OUTPUT_AUDIO="${VIDEO_PATH%.*}.mp3"
"$FFMPEG_PATH" -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$OUTPUT_AUDIO"
输出音频文件路径。
"$FFMPEG_PATH" -i "$VIDEO_PATH" -map 0:s:0 "${VIDEO_PATH%.*}.srt" 2>/dev/null
#!/bin/bash
VIDEO_PATH="$1"
ACTION="${2:-info}"
# 自动检测 FFmpeg
find_ffmpeg() {
local paths=(
"$LOCALAPPDATA/Microsoft/WinGet/Packages/Gyan.FFmpeg_*/ffmpeg-*/bin/ffmpeg.exe"
"/c/ProgramData/chocolatey/bin/ffmpeg.exe"
"/c/Program Files/FFmpeg/bin/ffmpeg.exe"
"/c/ffmpeg/bin/ffmpeg.exe"
)
for pattern in "${paths[@]}"; do
local found=$(ls $pattern 2>/dev/null | head -1)
if [ -n "$found" ] && [ -f "$found" ]; then
echo "$found"
return 0
fi
done
# 尝试 PATH
if command -v ffmpeg &> /dev/null; then
echo "ffmpeg"
return 0
fi
return 1
}
FFMPEG=$(find_ffmpeg)
if [ -z "$FFMPEG" ]; then
echo "❌ FFmpeg 未找到"
echo "请安装: winget install Gyan.FFmpeg"
exit 1
fi
FFPROBE="${FFMPEG/ffmpeg/ffprobe}"
# 验证文件
if [ ! -f "$VIDEO_PATH" ]; then
echo "❌ 文件不存在: $VIDEO_PATH"
exit 1
fi
# 执行操作
case "$ACTION" in
info)
"$FFPROBE" -v quiet -print_format json -show_streams -show_format "$VIDEO_PATH" | \
python3 -c "
import sys, json
d = json.load(sys.stdin)
fmt = d.get('format', {})
streams = d.get('streams', [])
video = next((s for s in streams if s.get('codec_type') == 'video'), {})
audio = next((s for s in streams if s.get('codec_type') == 'audio'), {})
print('📹 视频信息')
print('=' * 40)
print(f'时长: {float(fmt.get(\"duration\", 0)):.2f} 秒')
print(f'大小: {int(fmt.get(\"size\", 0)) / 1024 / 1024:.2f} MB')
print(f'码率: {int(fmt.get(\"bit_rate\", 0)) / 1000:.0f} kbps')
print(f'格式: {fmt.get(\"format_name\", \"unknown\")}')
if video:
print(f'分辨率: {video.get(\"width\", \"?\")}x{video.get(\"height\", \"?\")}')
print(f'帧率: {eval(video.get(\"r_frame_rate\", \"0/1\")):.2f} fps')
print(f'编码: {video.get(\"codec_name\", \"unknown\")}')
if audio:
print(f'音频: {audio.get(\"codec_name\", \"unknown\")}, {audio.get(\"sample_rate\", \"?\")} Hz')
"
;;
frames)
OUTPUT_DIR="${TEMP:-/tmp}/extract-video-frames-$(date +%s)"
mkdir -p "$OUTPUT_DIR"
echo "🎬 正在提取关键帧..."
"$FFMPEG" -i "$VIDEO_PATH" -vf "fps=1/2,scale=480:-1" -q:v 2 "$OUTPUT_DIR/frame_%04d.jpg" 2>/dev/null
echo "✅ 已提取到: $OUTPUT_DIR"
ls -la "$OUTPUT_DIR"
;;
audio)
OUTPUT="${VIDEO_PATH%.*}.mp3"
echo "🎵 正在提取音频..."
"$FFMPEG" -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$OUTPUT" 2>/dev/null
echo "✅ 已保存: $OUTPUT"
;;
subtitle)
OUTPUT="${VIDEO_PATH%.*}.srt"
if "$FFMPEG" -i "$VIDEO_PATH" -map 0:s:0 "$OUTPUT" 2>/dev/null; then
echo "✅ 字幕已提取: $OUTPUT"
else
echo "⚠️ 未找到内嵌字幕,尝试音频转写需要 Whisper"
fi
;;
*)
echo "未知操作: $ACTION"
echo "可用: info, frames, audio, subtitle"
exit 1
;;
esac
info 操作,输出结构化的视频参数摘要。frames/audio/subtitle 操作,明确告知输出文件的路径,并总结内容。