Communitygithub.com

Analyzer(短视频拆解与重构工具)

分析用户喜欢的短视频(Reels、TikTok或Shorts)的钩子、结构、节奏和剪辑,然后复用相同结构,围绕用户自己的主题编写新脚本,并将其拍摄的素材剪辑为粗剪片段。

Analyzer(短视频拆解与重构工具) 是什么?

此技能专为AI Agent设计,用于深度分析短视频并辅助内容再创作。当用户粘贴视频链接或拖入文件时,技能会自动下载、转录并逐帧分析视频,生成包含钩子、结构、节奏、剪辑手法和可复用模板的详细拆解文档(breakdown.md)。随后,它询问用户的主题和目标受众,基于原视频的结构和节奏(每段字数偏差控制在10%以内)生成新脚本(remake.md),包括逐字对白、拍摄计划和剪辑要点。最后,如果用户提供了拍摄素材,技能能自动转录、挑选最优镜头,并将它们剪辑为9:16格式、带逐字字幕的粗剪MP4文件。该技能支持Instagram、TikTok、YouTube Shorts、X等平台,所有处理均在本地完成,依赖`ffmpeg`和独立的Python虚拟环境。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/corbinsylk/analyzer-skill/tree/HEAD/skills/analyzer

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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 中写入以下章节,每个论断必须关联到具体时间或镜头编号:

  1. 钩子(0-3秒)。精确的对白,画面上有什么(构图、屏幕文字及其位置、运动),有多少次剪辑,以及为什么它能阻止用户滑动:好奇心缺口、承诺、模式打破。
  2. 结构。按顺序列出各节拍及其时间:钩子、铺垫或问题、转折、高潮、行动号召。针对每个节拍:其作用、持续秒数和字数、实现该作用的具体台词。
  3. 节奏。来自 pacing.md 的数据(镜头数量、平均和中位镜头长度、前3秒的剪辑次数、每分钟字数)及其含义。要统计某个节拍的字数:PY AN/words.py "<工作文件夹>" <开始> <结束>(秒或分:秒);它会输出字数、节奏和具体单词:哪里加速、哪里停顿、剪辑率如何跟随故事情节。
  4. 剪辑手法。构图与摄影(脸部在画面中占据的比例、推近镜头、角度变化:通过帧画面目测估算),屏幕文字(风格、大小、位置、出现时机),字幕(风格、每次显示多少词),B-roll素材,屏幕录制,图形,转场效果。
  5. 公式。一种任何人都能复用的填空式模板:每个节拍写成 [此处填充内容],并附上目标时长、字数以及剪辑动作。

然后用几句话告诉用户钩子、公式以及使其成功的三个关键点,并指出 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素材)。

相关技能