Analyzer(短视频拆解与重构工具) 是做什么的?
提供你喜欢的一条短视频,它会拆解其钩子、节奏和剪辑手法。然后复用相同的结构,围绕你自己的主题构建一条新视频。
一切都在本机上运行。工具位于 ~/.claude/skills/analyzer/scripts/,并使用技能自带的Python环境:~/.claude/skills/analyzer/.venv/bin/python(下文:PY 代表该路径,AN 代表 ~/.claude/skills/analyzer/scripts)。
0. 检查安装(每次运行)
test -x ~/.claude/skills/analyzer/.venv/bin/python && command -v ffmpeg
如果其中任何一项缺失,用一句话告知用户,然后运行安装程序:bash ~/analyzer-skill/install.sh,或先克隆仓库:git clone https://github.com/corbinsylk/analyzer-skill ~/analyzer-skill && bash ~/analyzer-skill/install.sh。
1. 获取短视频
可以是链接(Instagram、TikTok、YouTube Shorts、X)或本地文件。然后运行:
PY AN/fetch.py "<链接或文件>"
该脚本最后一行会输出视频的路径(下载的文件保存在 ~/Movies/Analyzer/ 目录)。公开帖子无需登录即可下载。如果下载失败(私密、年龄限制、已删除),请告知用户自行下载或录屏,然后将文件拖入。
2. 测量与分析
PY AN/transcribe.py "<视频>"
PY AN/shots.py "<视频>"
两个脚本都使用视频文件旁边生成的 <视频名称>-analysis/ 文件夹。transcribe.py 生成 transcript.md 和 words.json(每个单词带时间戳;首次运行时会提示“mps”速度信息,可忽略)。shots.py 生成 pacing.md(包含下文所有数字,以及一个镜头级表格,列出每个镜头期间的对白)、sheet-N.jpg 缩略图接触表(小图、带编号,用于概览)和 shots/NN.jpg(每个镜头一帧,宽度720像素,足够阅读屏幕上的文字;长镜头会额外生成 NN-a/NN-b,分别对应开头和末尾帧)。如果 shots.py 检测到的镜头数明显少于视频实际应有的数量,请添加参数 --threshold 0.18 重新运行;如果它把一个镜头错误地分为多个(如快速运动或闪光),则使用 --threshold 0.4。
3. 查看并撰写拆解文档
阅读 transcript.md 和 pacing.md。打开所有接触表查看概览,然后打开前3秒镜头的 shots/NN.jpg 帧,以及任何画面发生变化(出现文字、缩放、图形、新场景)的镜头帧:无需打开所有帧。你无法听到视频原声:除转录内容外,不要对音乐或音效做任何描述。转录可能会误解专有名词(运动项目、品牌、菜品等):请对照屏幕上的文字进行核实,并在撰写时使用正确的拼写。
在 <工作文件夹>/breakdown.md 中写入以下章节,每个论断必须关联到具体时间或镜头编号:
- 钩子(0-3秒)。精确的对白,画面上有什么(构图、屏幕文字及其位置、运动),有多少次剪辑,以及为什么它能阻止用户滑动:好奇心缺口、承诺、模式打破。
- 结构。按顺序列出各节拍及其时间:钩子、铺垫或问题、转折、高潮、行动号召。针对每个节拍:其作用、持续秒数和字数、实现该作用的具体台词。
- 节奏。来自
pacing.md的数据(镜头数量、平均和中位镜头长度、前3秒的剪辑次数、每分钟字数)及其含义。要统计某个节拍的字数:PY AN/words.py "<工作文件夹>" <开始> <结束>(秒或分:秒);它会输出字数、节奏和具体单词:哪里加速、哪里停顿、剪辑率如何跟随故事情节。 - 剪辑手法。构图与摄影(脸部在画面中占据的比例、推近镜头、角度变化:通过帧画面目测估算),屏幕文字(风格、大小、位置、出现时机),字幕(风格、每次显示多少词),B-roll素材,屏幕录制,图形,转场效果。
- 公式。一种任何人都能复用的填空式模板:每个节拍写成
[此处填充内容],并附上目标时长、字数以及剪辑动作。
然后用几句话告诉用户钩子、公式以及使其成功的三个关键点,并指出 breakdown.md 的路径。
4. 用用户的主题重新制作
如果用户尚未说明主题,问一个问题:“新视频应该围绕什么主题(以及目标受众是谁)?”
然后在 <工作文件夹>/remake.md 中写入:
- 逐字对白脚本,按节拍组织,使用相同的结构,每个节拍的字数与参考视频(来自
words.py)相差不超过10%,以确保时长和节奏一致。钩子使用与参考视频相同的机制(同类的承诺、数字、问题或模式打破),但绝不能重复其具体词语。如果用户告诉过你他们说话的方式(语音文件、品牌文件、之前的脚本、或自己的说明),请采用那种语调;否则保持平实、直接、口语化,就像对着镜头说话的样子。 - 拍摄计划:针对每个节拍,需要拍摄什么(构图、视线方向、手势、道具或地点),以及从参考视频中提炼出的该时刻的剪辑动作(剪切、推近、屏幕文字及其精确词语、需要展示的B-roll素材)。
- 屏幕文字:单独列出,并注明出现时间。
- 拍摄备注:每句台词说两遍以便挑选最佳素材;每句台词之间停顿一秒。
5. 粗剪(当用户拍摄完成后)
当用户拖入重新制作的拍摄素材时:
PY AN/transcribe.py "<素材>"
阅读该素材的 transcript.md 和 words.json。对于脚本中的每一句台词,挑选出最干净、完整的段落(没有结巴,通常是最后一遍录制的),然后在 <素材工作文件夹>/keep.json 中按脚本顺序写入:
[{"line": "脚本台词", "start": 12.40, "end": 15.92}]
start 取自 words.json 中该段第一个单词的 s 值,end 取自最后一个单词的 e 值。然后运行:
PY AN/rough_cut.py "<素材>" "<素材工作文件夹>"
该脚本会将每个片段精确裁剪到单词边界,在最靠近脸部的区域按9:16比例构图,按顺序拼接,并生成逐字字幕,最后输出 rough-cut.mp4 和 rough-cut.jpg(一张横跨8帧的缩略图)。打开 jpg 检查脸部是否位于画面中以及字幕是否清晰可读。告知用户粗剪片段中包含了什么内容,以及拍摄计划中哪些剪辑动作还需要在他们自己的编辑器里添加(文字、缩放、B-roll素材)。