Communitygithub.com

创作者拆解(Creator Teardown)

从真实数据反向工程创作者短视频格式。拉取 TikTok、YouTube Shorts 或 Instagram Reels 的个人资料(或粘贴链接),获取观看、点赞和收藏数,逐字转录热门视频,测量节奏、停顿和填充词,将每个视频映射为计时节拍,并写出 teardown.md、teardown.html 和 style.json,用于后续的风格编辑。

创作者拆解(Creator Teardown) 是什么?

创作者拆解是一个 AI 技能,用于系统性地分析短视频创作者(如 TikTok、YouTube Shorts、Instagram Reels)的内容格式,通过真实数据而非主观印象来揭示其成功模式。该技能会拉取创作者的个人资料(默认最多 40 个视频),根据播放量排名,下载并转录表现最佳的候选视频(以及 2 个中位数对照组和 2 个备用视频,确保格式识别准确),并测量多项指标:包括节奏(每分钟字数、停顿、填充词)、视觉元素(镜头切换、缩放、摇镜、字幕样式、人脸构图、图形个数)、声音特效和音乐。所有测量数据汇总到 style.json,用于与风格编辑技能配合,将样式应用到用户自己的视频上。该技能还输出 teardown.md(详细分析报告)和 teardown.html(可视化页面),并通过格式检查步骤确保每个创作者只对应一个格式,避免混入偶然发布的异类内容。此技能支持 TikTok、YouTube Shorts 和 Instagram Reels,需要本地运行 Python 脚本(可通过 pip 安装依赖),且依赖于 ElevenLabs 或 Whisper 进行逐字转录。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Conz-Wilts/ai-editor/tree/HEAD/.claude/skills/creator-teardown

在你喜欢的 AI 中提问

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

文档

创作者拆解

路径:${CLAUDE_SKILL_DIR} 表示包含本 SKILL.md 的文件夹。在 Windows 上,使用 py 替代命令中的 python3。

所有向用户提出的问题都通过对话框发起:调用 AskUserQuestion 工具(2-4 个选项,推荐选项放第一个)。仅在没有该工具的代理中,在文本中通过编号问题询问。

输出

creator-teardowns/<handle>/:teardown.md(分析报告)、teardown.html(用户查看的页面)、look.md(Claude 读取的内容)、style.json(所有测量数据,用于以此风格编辑),以及 ${CLAUDE_SKILL_DIR}/references/outputs.md 中列出的每个视频的单独文件。编辑计划输出到 edit-plants/<name>/。判断某个编辑是否符合此风格:scripts/match.py(references/outputs.md 中的“匹配检查”)。

第一步:检查环境

python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor

在会话中首次拆解前运行。输出 Ready. 表示就绪。如果输出 Not ready,或用户要求安装/配置此技能,请遵循 ${CLAUDE_SKILL_DIR}/references/setup.md。ElevenLabs 密钥为可选项。切勿在聊天中询问:用户应在其终端中使用 setkey 保存。

VPY="${CLAUDE_SKILL_DIR}/scripts/run.py";下面的 python3 "$VPY"(Windows 上为 py)会使用 AI_EDITOR_HOME 指定的工具虚拟环境中的 Python 运行脚本。

流程

快速模式(由 ai-editor 的 start、setup 或 style-edit 调用)

当其他技能仅需要 style.json 时,运行以下命令:第一步 list,第二步的命令加上 --top 5(5 个视频加 2 个对照组和 2 个备用视频;对于粘贴的链接:全部),接着第三步的 3b 四个命令,再运行第三步的 3c 四个命令,然后停止。第三步 0 的问题仅在调用方尚未询问时才发问。跳过 metrics.py、第三步的文字分析阶段以及第四至第六步。每个创作者约需 3 分钟(14 核 Mac;实测 2-3 分钟;备用视频在最坏情况下增加约 1 分钟),8 核笔记本所需时间翻倍。先告知用户此预估时间。

第三步 0:询问(仅一次)

跳过消息中已回答的内容。调用一次问题框:

  1. 哪些创作者? 用户提到的用户名或链接(推荐)/ 我将粘贴更多。多个创作者是正常的:用户可能喜欢一个创作者的标题和另一个的节奏。每个创作者的风格是一种格式。
  2. 多于一个时:从谁那里借鉴哪些部分? 暂时不确定(推荐):在第三步 3b 之后,结合每位创作者的 look.md 再次询问;或指定:标题、节奏(剪辑、缩放、运动)、视觉(图形、人脸构图、卡片)、声音。

第一步:获取视频

python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40   # 或 youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt   # 粘贴的链接,每行一个

输出一个排名表格(播放量,中位数的倍数),并写入 videos.json;* 标记播放量达到中位数 3 倍以上的视频。

Instagram: list <handle> --platform instagram 通过用户在浏览器中登录 instagram.com 读取最新的 Reels(数据仅发送至 instagram.com)。若未登录,则退出并返回一条错误信息;告知用户,或在 picks.txt 中放入至少 6 个 Reel 链接并使用 --urls(按点赞数排序;需告知用户)。

第二步:下载并转录优胜视频及对照组

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>

--top N 下载并转录 N 个视频加上 2 个对照组视频(播放量最接近中位数的两个;--control 可更改为其他视频)再加上 2 个备用视频(用于格式检查;--spare),全部为创作者通常时长(若数量足够)。粘贴的链接:每个都处理。默认 --top 8 为 12 个视频;快速模式 --top 5 为 9 个;将参数同时传给两个命令。两者均会先输出计数。--ids <id>,<id> 选择指定视频。中位数视频作为对照:一个出现在 500K 播放量和 3K 播放量视频中的动作,是创作者的习惯,而非 500K 视频成功的原因。保留至少 2 个。

每个测量脚本都可同时处理多个视频(CT_JOBS=1 可在小笔记本上关闭并行)。

先告知预计时间(下载加转录,14 核 Mac 上约每视频 10 秒)。Whisper(免费、本地)为默认引擎;若配置了 ElevenLabs 密钥,transcribe 会使用 Scribe,后者保留所有填充词(每小时音频 $0.22;在转录超过 10 个视频前给出费用估算)。如果 Whisper 转录的填充词计数偏低,需在拆解报告中说明。

第三步:测量,然后分析

python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>

写入 metrics.json(每三分之一段的每分钟字数、停顿、填充词、句子长度、人称代词“你/我/我们”、重复短语),全部基于单词时间戳。

先运行第三步 3b,以便后续阶段跳过 format.json 排除的视频。然后加载 ${CLAUDE_SKILL_DIR}/references/analysis-framework.md 并按阶段顺序运行。对于第一阶段,为每个视频启动一个 video-analyst 代理,所有代理在同一消息中发送(它们同时运行):为每个代理提供 creator-teardowns/<handle>/ 的绝对路径和一个视频 ID。每个代理返回一个 JSON 节拍图;将其合并到表格中。若没有 Agent 工具,则自行阅读 transcripts/<id>.timed.txt,一次处理一个视频。切勿整体读取 transcripts/<id>.json 或 metrics.json:

  1. 节拍图 + 时间线。 每个视频拆分为带标签的节拍,附带秒标记和单词数。
  2. 语音/词汇特征。 句子长度、人称、命令句、重复短语,以及用户通常不会使用的表达方式。
  3. 视觉分析。 始终执行:第三步 3b。这是让用户能够以此风格编辑自己视频的基础。
  4. 卡片事件, 仅当任务要求分析创作者的卡片和图形,或即将生成编辑计划时执行。写入 events.json,格式如 ${CLAUDE_SKILL_DIR}/references/edit-plan.md 所示。scripts/strip.py 需要 ffmpeg、numpy 和 pillow。

不要省略时间信息:“钩子(hook)在 0:03 处落地,持续 14 个单词,每个条目持续 8-11 秒”才是可拍摄的格式;而“钩子、列表、结尾”则不够具体。

第三步 3b:视觉分析阶段(基于测量,无需你查看图像)

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/look.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/format_check.py" check <handle>

然后运行视图合并阶段(下方第 4 步),接着运行 python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/lookpass.py" merge <handle>。

在 transcribe 之后执行它们(look.py 将 OCR 文本与语音单词匹配)。

  1. visual.py:剪辑的类型和次数、镜头长度、缩放、摇摄和抖动。
  2. look.py:每秒 3 帧的 OCR 和人脸检测(YuNet):字幕(位置、大小、单词、大小写、颜色、粗细、入场方式)、人脸构图、图形占比、调色板、运动特征。每视频约 40 秒。
  3. format_check.py:一种风格是一种格式,而非所有发布内容的混合体。它将视频按帧、人脸、字幕、镜头长度和时长分组;保留多数分组(3 个及以上),其余移至 video/left-out/(format.json 说明原因;参见 references/look-pass.md)。当有视频不同时,告知用户其第一行(“4 个视频使用中,2 个看起来是不同的格式”);如果混合,请用户提供更多同一种视频。
  4. 视图合并阶段:一个 Agent 调用,模型为 "haiku",读取每个保留视频的 sheets/<id>.jpg(每个视频的 3x3 缩略图,由 visual.py 生成),并按照 lookpass.py 的提示写入 video/<id>.look-ai.json:字体、图形风格、转场、非通用元素。不包含数字。具体说明见 references/look-pass.md。lookpass.py merge 将其融入 style.json。

然后阅读 look.md(不超过 48 行)。不要打开帧或缩略图。 所有字段见 ${CLAUDE_SKILL_DIR}/references/look-pass.md。style.json 中的数字来自代码;切勿手动编辑。当 look.md 和模型的文字不一致时(例如测量值为 motion: punchy,模型称为 smooth),以测量值为准,并在拆解报告中同时提及两者。

没有 OCR 引擎(doctor 会说明可选): captions 保持未测量状态,look.md 中会注明。与其自行阅读缩略图,不如安装 OCR 引擎(doctor 会打印安装命令)。

第三步 3c:深度分析及页面生成

python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>

每个 measure 命令打印一行摘要和写入的文件(--json 打印完整 JSON 块;不需要,因为 look.md 包含数字)。在第三步 3b 之后运行它们(graphics.py 使用 look.py 的人脸数据来遮盖说话人)。它们添加每个图形(裁剪后、类型、位置、入场出场方式,拟合为 GSAP 缓动)、剪辑类型和摄影机运动(visual.py)、音效和音乐、每个视频的前 3 秒、优胜视频与对照组的对比,以及创作者自身形象的 AI 痕迹扫描。字段、方法、上限和成本:见 ${CLAUDE_SKILL_DIR}/references/teardown-page.md。graphics.py measure 之后,运行该参考文档中的 haiku 分类阶段(否则分类仍为代码的猜测),然后运行 sound.py 和 report.py。

然后为用户打开 creator-teardowns/<handle>/teardown.html(Mac 上使用 open,Windows 上使用 start,Linux 上使用 xdg-open),并提供将其发布为 artifact 的选项。不要阅读页面或其图像:look.md 已包含数字。用两三行告诉用户优胜视频的不同之处(参见 look.md 中的 Winners: 行,附样本数量)以及其形象中任何 BAN 级别的 AI 痕迹。

然后在问题框中(页面仅展示证据,没有勾选选项)提出一个多选问题:“你的视频应复制 @ 的哪些部分?”选项:标题、节奏、图形类型、入场运动、布局、声音(每个问题最多 4 个选项;必要时拆分为两个问题)。每个选项的描述来自 look.md 中的一行测量数据(例如“0.25 秒带过冲的滑入”)。如果用户选择的某个部分包含 BAN 痕迹,在确认前告知用户。保存答案:

python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
    --take captions,pace,graphics,entrances,layout,sound    # 仅用户选中的部分

style-edit 读取 creator-teardowns/<handle>-mine/style.json;未选中的部分使用默认值。report.py build 和 editplan.py blend 会打印该风格的技能名称(如 skill edit-like-<handle> -> <path>,前提是已安装 ai-editor):告知用户其名称。对该风格编辑的反馈即针对该技能。

第三步 3d:多个创作者(当用户命名了多个时)

遵循 ${CLAUDE_SKILL_DIR}/references/blend.md:每位创作者执行第一步至第三步 3b,将 look.md 并排展示,然后运行 editplan.py blend。

第四步:撰写拆解报告

将 ${CLAUDE_SKILL_DIR}/references/teardown-template.md 填充至 creator-teardowns/<handle>/teardown.md。每个视频包含统计行、逐字转录、带时间的节拍表、应保留的模式和应拒绝的模式。

第五步(可选):转化为技能

询问用户该格式是否值得保留。若为肯定,遵循 ${CLAUDE_SKILL_DIR}/references/skill-handoff.md(格式技能,与该风格的技能并列)。

第六步(可选):按创作者风格规划用户的视频

当用户提供自己的视频时,遵循 ${CLAUDE_SKILL_DIR}/references/edit-plan.md。此步需要创作者的 events.json(来自视觉分析阶段);不进行渲染。

如果脚本停止

消息操作
doctor Not ready: ...按照 references/setup.md 处理它列出的每一行
yt-dlp returned nothing / parsed 0 videos阅读提示的线索:更新 yt-dlp(doctor 会显示方法),或要求用户提供单个视频链接并使用 --urls
Instagram 个人资料获取失败提示用户登录 Chrome 中的 instagram.com,或提供至少 6 个 Reel 链接(第一步中的“Instagram”)
... Fix the key, then rerun(转录)ElevenLabs 密钥错误:用户在其终端中重新使用 setkey 保存,或放弃密钥使用 Whisper
no videos in ... Run download first运行 visual.py download <handle>
download failed: <ids>(退出码 1)使用其输出的 --ids 重新运行;如果仍然失败,告知用户样本更小并继续
yt-dlp not found运行 fetch.py doctor 并修复它列出的问题
部分视频转录失败使用 --ids 重试,然后告知哪些失败;切勿手动填补转录

硬性规则

  • 只有真实数据。 每个关于“成功”的论断都必须附上播放量数据。永远不要在没有数据的情况下说某个视频“爆红”。
  • 仅使用逐字转录。 永远不要总结未转录的视频。
  • 复制结构,不复制声音。 每个拆解报告都必须明确指出哪些要拒绝。
  • 中位数对照组。 至少转录两个中等表现视频,否则无法区分格式与创作者的习惯。
  • 永远不要编造转录行、统计数字或卡片引用。 如果转录失败,使用 --ids 重试,然后明确说明失败。
  • 绝不在聊天中询问 ElevenLabs 密钥。
  • style.json 中只包含测量数字。 pace 和 zoom 来自 visual.py;captions、face、graphics 和 motion 来自 look.py;只有文字(look、font_match)来自模型。
  • 阅读 look.md,不要打开帧。 仅在 look.md 无法回答的问题时打开一帧,并说明是哪一帧。用户获得 teardown.html;Claude 获得 look.md。
  • 优胜视频与对照组对比:说明样本数量。 永远不要声称差异已被“证明”;“所有优胜视频都...”仅表示在此样本中没有例外。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Conz-Wilts/ai-editor

Turns one long video or podcast (a local file or a YouTube link) into the best 3-5 short vertical clips, each cut and styled in the user's profile style. Transcribes once, splits the talk into candidate clips at sentence boundaries inside the chosen length, scores every candidate in code (speech rate, loudness, laughter, numbers and names said), shows the shortlist on one page with a preview of each, then trims, cuts and style-edits each pick as its own edit. Use when the user says "clip this video", "make shorts from my podcast", "find the best clips", "cut this into TikToks", "turn this YouTube video into reels", "repurpose this long video", or drops a long video (over about 3 minutes) or a YouTube link and wants short clips. Not for editing one short take (that is start or cut), and not for measuring someone else's style (that is creator-teardown).

Conz-Wilts/ai-editor

Cuts raw talking-head footage into a clean jump cut. Takes one take or several joined (mp4 or mov, any aspect, 4K phone footage is fine), transcribes it word by word, removes retakes, false starts, fillers and dead pauses, and renders cut.mp4 at the source resolution plus words.json timed to the cut. The user approves the cut on a page with the whole transcript and every removed word struck through. Use when the user says "cut my video", "just cut it", "remove my mistakes", "cut out the retakes", "remove the pauses", "clean up this take", "jump cut this", "tighten this clip", or asks only for the cut of a raw take; start calls it for a full edit. Runs before style-edit. Not for a general request to edit a video or to make it look like a creator (that is start), not for adding captions, zooms or cards (style-edit), and not for analysing someone else's videos (creator-teardown).

Conz-Wilts/ai-editor

Generates new footage with Higgsfield and puts it on the edit's timeline. Prices every generation first, asks the user with the dollar amount (and, for their own footage, whether it may be uploaded to Higgsfield), then submits, waits, downloads into the edit's generated/ folder and adds the result to the timeline's Generated track. Covers motion transfer on a clip of the user's video (their moves onto a character or styled look), b-roll from a sentence (text to video), a still brought to life (image to video) and stills for cards (text to image). Use when the user says "generate b-roll", "make a shot of", "AI b-roll", "generate a clip", "use Higgsfield", "motion transfer", "put my moves on", "restyle this part with AI", or asks for footage they did not film. Not for animated diagrams or motion graphics (motion), not for real screenshots and logos (overlays, logo-pack), and not for the cut (cut).

Conz-Wilts/ai-editor

For the editor's maintainers. Turns what users corrected into lasting fixes in this repo, for every user, enforced by code and tests rather than notes. Reads the suggestions users marked "would help everyone" (~/.ai-video-editor/suggestions.jsonl), taste rules said twice (taste.py report), preview corrections (edits/*/corrections.jsonl), review-page notes (*/review.json) and open GitHub issues labelled feedback; groups repeats; for each item the maintainer accepts, writes the general rule into PRINCIPLES.md and the skill that owns it, adds or tightens the check that enforces it, adds a test that fails before and passes after, and runs the full test set. Use when the maintainer says "improve the editor", "turn feedback into fixes", "process suggestions", "what are users complaining about", "go through the feedback issues". Not for one user's own preferences (that is taste), and not for editing a video.

相关技能