creator-teardown

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Creator Teardown

创作者拆解

Paths:
${CLAUDE_SKILL_DIR}
means the folder containing this SKILL.md. On Windows, use
py
wherever these commands say
python3
.
Every question to the user goes in the question box: call the AskUserQuestion tool (2-4 options, the recommended one first). Only in an agent without that tool, ask numbered questions in text.
路径:
${CLAUDE_SKILL_DIR}
表示包含此 SKILL.md 的文件夹。在 Windows 上,这些命令中出现
python3
的位置都应改用
py
。
向用户提出的每个问题都要放在问题框中:调用 AskUserQuestion 工具(提供 2-4 个选项,推荐项放在首位)。只有在没有该工具的 agent 中,才以文本形式提出编号问题。

Output

输出

creator-teardowns/<handle>/
:
teardown.md
(the analysis),
teardown.html
(the page the user looks at),
look.md
(what Claude reads),
style.json
(every measured number, for editing in this style), plus the per-video files listed in
${CLAUDE_SKILL_DIR}/references/outputs.md
. An edit plan goes to
edit-plans/<name>/
. Whether an edit in this style matches:
scripts/match.py
(
references/outputs.md
"Match check").
creator-teardowns/<handle>/
:
teardown.md
(分析报告)、
teardown.html
(供用户查看的页面)、
look.md
(供 Claude 读取)、
style.json
(所有实测数字,用于按此风格编辑),以及
${CLAUDE_SKILL_DIR}/references/outputs.md
中列出的各视频文件。剪辑方案写入
edit-plans/<name>/
。检查剪辑是否匹配此风格:使用
scripts/match.py
(见
references/outputs.md
中的 "Match check")。

First: doctor

第一步:doctor

bash
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor
Run it before the first teardown in a session.
Ready.
means go. If it prints
Not ready
, or the user asks to install or set up the skill, follow
${CLAUDE_SKILL_DIR}/references/setup.md
. The ElevenLabs and Gemini keys are optional. Never ask for either in the chat: the user saves them with
setkey
(
setkey --gemini
) in their own terminal.
VPY="${CLAUDE_SKILL_DIR}/scripts/run.py"
;
python3 "$VPY"
below (
py
on Windows) runs a script with the tool venv's Python wherever
AI_EDITOR_HOME
puts it.
bash
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" doctor
在每次会话首次拆解前运行它。输出
Ready.
表示可以继续。如果输出
Not ready
,或用户要求安装或设置此 skill,请遵循
${CLAUDE_SKILL_DIR}/references/setup.md
。ElevenLabs 和 Gemini key 均为可选。绝不要在聊天中索要它们:用户应在自己的终端中通过
setkey
(
setkey --gemini
)保存。
VPY="${CLAUDE_SKILL_DIR}/scripts/run.py"
;下文中的
python3 "$VPY"
(Windows 上使用
py
)会使用工具虚拟环境中的 Python,其位置由
AI_EDITOR_HOME
决定。

Pipeline

流程

Quick mode (called by ai-editor's start, setup or style-edit)

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

When another skill needs only the style.json, run exactly: Step 1
list
, Step 2's commands with
--top 5
(5 plus 2 control and 2 spares; pasted links: all), Step 3b's four, then Step 3c's four (a
gemini.py
that exits 2 with no key is skipped), then stop. The Step 0 parts question only if the caller has not asked it. Skip
metrics.py
, the Step 3 written passes and Steps 4-6. About 3 minutes per creator on a 14-core Mac (2-3 min measured; the spares add about 1 min at worst), twice that on an 8-core laptop. Say so first.
当另一个 skill 只需要 style.json 时,严格执行:步骤 1 的
list
、步骤 2 中带
--top 5
的命令(5 个主样本,外加 2 个对照视频和 2 个备用视频;粘贴链接时处理全部)、步骤 3b 的四个命令,然后是步骤 3c 的四个命令(无 key 时以状态码 2 退出的
gemini.py
跳过),随后停止。只有调用方尚未询问时,才执行步骤 0 中的问题。跳过
metrics.py
、步骤 3 的书面分析 pass 和步骤 4-6。在 14 核 Mac 上每位创作者约需 3 分钟(实测 2-3 分钟;最坏情况下备用视频会增加约 1 分钟),在 8 核笔记本上约为两倍。开始前先说明这一点。

Step 0: Ask, once

步骤 0:一次性询问

Skip what the message already answers. One question box call:
  1. Which creators? The handle or links they named (Recommended) / I'll paste more. Several is normal: people like one creator's captions and another's pace. Each creator's style is one format.
  2. With more than one: which part from whom? Not sure yet (Recommended): ask again after Step 3b, with each creator's
    look.md
    to compare; or captions, pace (cuts, zooms, motion), visuals (graphics, face framing, cards), sound.
跳过消息中已经回答的部分。仅调用一次问题框:
  1. 选择哪些创作者? 用户提供的账号或链接(推荐)/ 我会再粘贴一些。可以选择多个:这很常见,例如用户可能喜欢一位创作者的文案和另一位创作者的节奏。每位创作者的风格各是一种格式。
  2. 有多个创作者时:分别采用谁的哪些部分? 还不确定(推荐):在步骤 3b 后再次询问,届时可并排比较每位创作者的
    look.md
    ;也可以指定文案、节奏(剪辑、缩放、动效)、视觉(图形、人脸构图、卡片)或声音。

Step 1: Get the videos

步骤 1:获取视频

bash
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40   # or youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt   # pasted links, one a line
Prints a ranked table (views, x median) and writes
videos.json
;
*
marks 3x the median.
Instagram:
list <handle> --platform instagram
reads the newest reels with views through the user's instagram.com login in their browser (sent only to instagram.com). No login: it exits 1 with one sentence; say it, or put 6+ reel links in
picks.txt
for
--urls
(ranked by likes; say so).
bash
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <handle> --platform tiktok --limit 40   # or youtube
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" list <name> --urls picks.txt   # pasted links, one a line
输出按排名排列的表格(观看数、为中位数的
x
倍)并写入
videos.json
;
*
标记达到中位数 3 倍的视频。
Instagram:
list <handle> --platform instagram
会通过用户浏览器中的 instagram.com 登录状态读取最新 reels 的观看数(数据只发送到 instagram.com)。未登录时,脚本会以状态码 1 退出并输出一句话;将这句话告知用户,或在
picks.txt
中放入至少 6 个 reel 链接供
--urls
使用(按点赞数排名;需要说明这一点)。

Step 2: Download and transcribe the winners and a control group

步骤 2:下载并转录热门视频和对照组

bash
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>
--top N
downloads and transcribes N plus 2 control videos (the 2 closest to the median;
--control
changes the 2) plus 2 spares for the format check (
--spare
), all of the creator's usual length when enough are. Pasted links: every one. The default
--top 8
is 12 videos;
--top 5
, the fast run, is 9; pass it to both commands. Both print the count first.
--ids <id>,<id>
picks exact videos. The median ones are the control: a move that appears in the 500K video and the 3K video is that creator's habit, not the reason the 500K one worked. Keep at least 2.
Run
transcribe
and
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" look <handle> --no-merge
at the same time (two Bash calls in one message): the model watches while Whisper listens. Every measuring script works on several videos at once (
CT_JOBS=1
turns that off on a small laptop).
Say the time first (download plus transcription, about 10 s a video on a 14-core Mac). Whisper (free, local) is the default; with an ElevenLabs key
transcribe
uses Scribe, which keeps every filler ($0.22 an hour of audio; give the estimate before 10+ videos). If filler counts lean on Whisper transcripts, say so in the teardown.
bash
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/visual.py" download <handle>
python3 "${CLAUDE_SKILL_DIR}/scripts/fetch.py" transcribe <handle>
--top N
会下载并转录 N 个视频,外加 2 个对照视频(最接近中位数的 2 个;可用
--control
更换这 2 个)和 2 个用于格式检查的备用视频(
--spare
);只要视频数量足够,这些视频均采用该创作者惯常的长度。粘贴链接时:处理全部视频。默认
--top 8
对应 12 个视频;快速运行的
--top 5
对应 9 个;将该参数传给两条命令。两条命令都会先打印数量。
--ids <id>,<id>
可指定具体视频。中位数附近的视频是对照组:同时出现在 50 万观看视频和 3,000 观看视频中的某个手法,是该创作者的习惯,而不是 50 万观看视频取得成功的原因。至少保留 2 个。
同时运行
transcribe
和
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" look <handle> --no-merge
(在一条消息中发出两次 Bash 调用):模型负责观看,Whisper 负责收听。所有测量脚本都可一次处理多个视频(
CT_JOBS=1
可在小型笔记本上关闭并行处理)。
先说明预计耗时(下载加转录,在 14 核 Mac 上每个视频约 10 秒)。Whisper(免费、本地运行)是默认选项;配置 ElevenLabs key 后,
transcribe
会改用 Scribe,后者能保留所有填充词(每小时音频 $0.22;处理 10 个以上视频前先给出费用预估)。如果填充词计数依赖 Whisper 转录,请在 teardown 中说明。

Step 3: Measure, then analyse

步骤 3:测量,然后分析

bash
python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>
Writes
metrics.json
(WPM per third, pauses, fillers, sentence length, you/I/we, repeated phrases), all off the word timestamps.
Run Step 3b first, so the passes skip the videos
format.json
left out. Then load
${CLAUDE_SKILL_DIR}/references/analysis-framework.md
and run its passes. For pass 1, launch one
video-analyst
agent per video, all in one message (they run at once): give each the absolute
creator-teardowns/<handle>/
path and one id. Each returns a JSON beat map; merge them into the tables. Without an Agent tool, read
transcripts/<id>.timed.txt
yourself, one video at a time. Never read
transcripts/<id>.json
or
metrics.json
whole:
  1. Beat map + timings. Every video split into labelled beats with second-marks and word counts.
  2. Voice/vocab profile. Sentence length, person, commands, recurring phrases, and the moves the user would not say.
  3. Visual pass. Always: Step 3b. It is what lets the user edit their own video in this style.
  4. Card events, only when the ask covers the creator's cards and graphics, or an edit plan is coming. Writes
    events.json
    in the shape in
    ${CLAUDE_SKILL_DIR}/references/edit-plan.md
    .
    scripts/strip.py
    needs ffmpeg,
    numpy
    and
    pillow
    .
Do not skip the timings: "hook lands by 0:03 and runs 14 words, items are 8-11 s each" is a format someone can film; "hook, then list, then close" is not.
bash
python3 "${CLAUDE_SKILL_DIR}/scripts/metrics.py" <handle>
写入
metrics.json
(每三分之一视频的 WPM、停顿、填充词、句长、you/I/we 人称、重复短语),全部基于词级时间戳计算。
先运行步骤 3b,让后续 pass 跳过
format.json
中排除的视频。然后加载
${CLAUDE_SKILL_DIR}/references/analysis-framework.md
并执行其中的 pass。对于 pass 1,在一条消息中为每个视频启动一个
video-analyst
agent(它们会同时运行):向每个 agent 提供
creator-teardowns/<handle>/
的绝对路径和一个 id。每个 agent 返回一份 JSON 节拍图;将其合并到表格中。如果没有 Agent 工具,则自行逐个读取
transcripts/<id>.timed.txt
。绝不要完整读取
transcripts/<id>.json
或
metrics.json
:
  1. 节拍图与时间标记。 将每个视频拆分为带标签的节拍,并标出秒数和词数。
  2. 声音与词汇特征。 句长、人称、指令性表达、反复出现的短语,以及用户不会使用的表达方式。
  3. 视觉 pass。 始终执行:步骤 3b。它能让用户按此风格编辑自己的视频。
  4. 卡片事件,仅当用户需求涉及创作者的卡片和图形,或要制定剪辑方案时执行。按
    ${CLAUDE_SKILL_DIR}/references/edit-plan.md
    中的结构写入
    events.json
    。
    scripts/strip.py
    需要 ffmpeg、numpy 和 pillow。
不要省略时间信息:“钩子在 0:03 前落地,共 14 个词,每个要点持续 8-11 秒”才是他人可以照着拍摄的格式;“钩子,然后列清单,然后收尾”不是。

Step 3b: The visual pass (measured, no images for you to read)

步骤 3b:视觉 pass(基于测量,无须你读取图像)

bash
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>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" look <handle>
Run them after
transcribe
(
look.py
matches OCR text to the spoken words).
  1. visual.py
    : cuts and their kinds, shot lengths, zooms, pans and shake.
  2. look.py
    : OCR 3 frames a second and YuNet faces: the captions (place, size, words, case, colours, weight, entrance), face framing, graphics share, palette, motion personality. About 40 s a video.
  3. format_check.py
    : a style is ONE format, not a blend of all they post. It groups the videos by frame, face, captions, shot length and length; a majority group of 3+ is kept, the rest move to
    video/left-out/
    (
    format.json
    says why;
    references/look-pass.md
    ). Tell the user its first line when any differ ("Using 4 of 6: 2 look like a different format."); if mixed, ask for more videos of one kind.
  4. gemini.py look
    : merges what Gemini Flash-Lite said in Step 2 (it watches any video not done yet) about the 5 most-viewed: font, graphics style, transitions, what is not generic. Never a number.
Then read
look.md
(under 48 lines). Do not open frames or sheets.
Every field is in
${CLAUDE_SKILL_DIR}/references/look-pass.md
. Numbers in
style.json
come from code; never edit them by hand. Where
look.md
and the model's words disagree (say
motion: punchy
measured,
smooth
named), the measured one wins and the teardown says both.
No Gemini key (
gemini.py look
exits 2): offer the free key once (
references/setup.md
step 4). If the user skips it, run the fallback: one Agent call with
model: "haiku"
that reads
sheets/<id>.jpg
for each kept video (one 3 x 3 sheet each, made by
visual.py
) and writes
video/<id>.look-ai.json
per
gemini.py prompt
. Exact brief in
references/look-pass.md
. Then
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" merge <handle>
.
No OCR engine (doctor says optional):
captions
stays unmeasured and look.md says so. Install it (
doctor
prints the line) rather than reading sheets yourself.
bash
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>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" look <handle>
在
transcribe
之后运行这些命令(
look.py
会将 OCR 文本与口述内容匹配)。
  1. visual.py
    :剪辑点及其类型、镜头时长、缩放、平移和抖动。
  2. look.py
    :每秒对 3 帧执行 OCR,并使用 YuNet 做人脸检测:字幕(位置、尺寸、文本、大小写、颜色、字重、入场效果)、人脸取景、图形占比、配色、动效特征。每个视频约 40 秒。
  3. format_check.py
    :一种风格只对应一种格式(ONE),而不是其发布内容的混合体。它按构图、人脸、字幕、镜头时长和视频长度对视频分组;保留包含至少 3 个视频的多数组,其余移入
    video/left-out/
    (
    format.json
    会说明原因;参见
    references/look-pass.md
    )。存在差异时,将其第一行告知用户(“使用 6 个中的 4 个:有 2 个看起来属于不同格式。”);如果格式混杂,请用户再提供更多同类型视频。
  4. gemini.py look
    :合并 Gemini Flash-Lite 在步骤 2 中针对观看量最高的 5 个视频给出的结论(它会观看当时尚未处理的任何视频),包括字体、图形风格、转场,以及哪些内容并非通用设计。绝不包含数字。
然后读取
look.md
(不超过 48 行)。不要打开帧或图像拼表。
每个字段见
${CLAUDE_SKILL_DIR}/references/look-pass.md
。
style.json
中的数字来自代码;绝不要手动编辑。如果
look.md
与模型用词不一致(例如实测为
motion: punchy
,模型称为
smooth
),以实测结果为准,并在 teardown 中同时写出两者。
没有 Gemini key(
gemini.py look
以状态码 2 退出):提供一次免费 key(
references/setup.md
步骤 4)。如果用户跳过,则运行 fallback:进行一次 Agent 调用,使用
model: "haiku"
,读取每个保留视频的
sheets/<id>.jpg
(每个视频一张 3 x 3 拼表,由
visual.py
生成),并按照
gemini.py
prompt 写入
video/<id>.look-ai.json
。具体要求见
references/look-pass.md
。然后执行:
bash
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" merge <handle>
没有 OCR 引擎(doctor 提示为可选):
captions
保持未测量状态,
look.md
中也会注明。应按 doctor 打印的说明安装它,而不是自行读取图像拼表。

Step 3c: The deep pass and the page

步骤 3c:深度 pass 与页面

bash
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" kinds <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>
Each measure prints one summary line and the file it wrote (
--json
prints the full block; not needed: look.md has the numbers). Run them after Step 3b (graphics.py masks the speaker with look.py's faces). They add every graphic (cropped, its kind, where it sits, how it enters and exits as a fitted GSAP ease), cut kinds and camera moves (visual.py), sound effects and music, the first 3 seconds of each video, winners against the control group, and an AI-tell scan of the creator's own look. Fields, methods, ceilings and cost:
${CLAUDE_SKILL_DIR}/references/teardown-page.md
. No Gemini key:
gemini.py kinds
exits 2; the kinds stay the code's guess, or run the haiku fallback in that reference.
Then open
creator-teardowns/<handle>/teardown.html
for the user (
open
on a Mac,
start
on Windows,
xdg-open
on Linux) and offer to publish it as an artifact. Do not read the page or its images yourself: look.md has the numbers. Tell the user in two or three lines what the winners do differently (the
Winners:
lines in look.md, with n) and any BAN-level AI tell in their look.
Then ask in the question box (the page only shows the evidence; it has nothing to tick), one multi-select question: "Which parts of @<handle> should your edit copy?" Options: captions, pace, graphic kinds, entrance motion, layout, sound (at most 4 options a question: split into two questions if needed), each option's description one measured line from look.md (e.g. "slides in 0.25 s with overshoot"). If any BAN tell sits in a part they pick, say which before they confirm. Save the answer:
bash
python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
    --take captions,pace,graphics,entrances,layout,sound    # only the parts picked
style-edit reads
creator-teardowns/<handle>-mine/style.json
; a part left out uses its default.
report.py build
and
editplan.py blend
print the style's skill (
skill edit-like-<handle> -> <path>
, with ai-editor installed): tell the user its name. Feedback on that style edits that skill.
bash
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/graphics.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/gemini.py" kinds <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/sound.py" measure <handle>
python3 "$VPY" "${CLAUDE_SKILL_DIR}/scripts/report.py" build <handle>
每个 measure 命令都会打印一行摘要及其写入的文件(
--json
会打印完整数据块;不需要这样做:
look.md
已包含数字)。在步骤 3b 之后运行它们(
graphics.py
使用
look.py
检测到的人脸框遮罩说话人)。它们会补充所有图形(裁剪图、图形类型、位置,以及配合适配的 GSAP 缓动进场和退场的方式)、剪辑点类型和镜头移动(
visual.py
)、音效和音乐、每个视频的前 3 秒、热门视频与对照组的对比,以及对创作者自身风格的 AI 痕迹扫描。字段、方法、上限和成本参见
${CLAUDE_SKILL_DIR}/references/teardown-page.md
。
没有 Gemini key:
gemini.py kinds
会以状态码 2 退出;图形类型将保留代码的推测结果,或者按该参考文档运行 haiku fallback。
随后为用户打开
creator-teardowns/<handle>/teardown.html
(Mac 上使用
open
,Windows 上使用
start
,Linux 上使用
xdg-open
),并询问是否将其作为 artifact 发布。不要自行读取该页面或其中的图片:
look.md
已包含数字。用两到三行告诉用户热门视频有何不同(
look.md
中带 n 的
Winners:
行),以及其风格中是否存在 BAN 级 AI 痕迹。
然后在问题框中提出一个多选问题(页面只展示证据,不提供勾选控件):“你的剪辑要模仿 @<handle> 的哪些部分?”选项包括:字幕、节奏、图形类型、入场动效、布局、声音(每个问题最多 4 个选项;如需要则拆成两个问题),每个选项的说明取自
look.md
中的一行实测结果(例如“在 0.25 秒内以 overshoot 滑入”)。如果用户选择的任何部分存在 BAN 痕迹,在确认前指出具体是哪部分。然后保存回答:
bash
python3 "${CLAUDE_SKILL_DIR}/scripts/editplan.py" blend <handle>-mine --from <handle> \
    --take captions,pace,graphics,entrances,layout,sound    # only the parts picked
style-edit
读取
creator-teardowns/<handle>-mine/style.json
;未选中的部分使用其默认值。
report.py build
和
editplan.py blend
会输出该风格的 skill(
skill edit-like-<handle> -> <path>
,前提是已安装 ai-editor):将 skill 名称告知用户。用户对该风格剪辑的反馈也会更新这个 skill。

Step 3d: Several creators (when the user named more than one)

步骤 3d:多个创作者(用户指定了一个以上时)

Follow
${CLAUDE_SKILL_DIR}/references/blend.md
: Steps 1 to 3b per creator,
look.md
side by side, then
editplan.py blend
.
遵循
${CLAUDE_SKILL_DIR}/references/blend.md
:对每位创作者执行步骤 1 到 3b,并排查看
look.md
,然后执行
editplan.py blend
。

Step 4: Write the teardown

步骤 4:编写 teardown

Fill
${CLAUDE_SKILL_DIR}/references/teardown-template.md
into
creator-teardowns/<handle>/teardown.md
. Every video gets a stats line, verbatim transcript, beat table with timings, patterns to keep and patterns to reject.
按照
${CLAUDE_SKILL_DIR}/references/teardown-template.md
的模板填写
creator-teardowns/<handle>/teardown.md
。每个视频都要附上统计信息行、逐字转录、带时间标记的节拍表,以及应保留和应舍弃的模式。

Step 5 (optional): Turn it into a skill

步骤 5(可选):将其转化为 skill

Ask whether the format is worth keeping. If yes, follow
${CLAUDE_SKILL_DIR}/references/skill-handoff.md
(the format skill, beside the style's own skill).
询问是否值得保留该格式。如果是,则遵循
${CLAUDE_SKILL_DIR}/references/skill-handoff.md
(格式 skill 与该风格自身的 skill 并列)。

Step 6 (optional): Plan the user's video in the creator's style

步骤 6(可选):以创作者风格规划用户视频

When the user hands over their own video, follow
${CLAUDE_SKILL_DIR}/references/edit-plan.md
. It needs the creator's
events.json
from the visual pass; it does not render.
当用户交出自己的视频时,遵循
${CLAUDE_SKILL_DIR}/references/edit-plan.md
。它需要视觉 pass 生成的创作者
events.json
;只生成方案,不进行渲染。

If a script stops

如果脚本停止

messagedo
doctor
Not ready: ...
follow
references/setup.md
for each line it lists
yt-dlp returned nothing
/
parsed 0 videos
read the hint it prints: update yt-dlp (doctor shows how), or ask for single video links and use
--urls
Instagram profile failssay its sentence: log in to instagram.com in Chrome, or 6+ reel links (Step 1 "Instagram")
... Fix the key, then rerun
(transcribe)
the ElevenLabs key is wrong: the user re-saves it with
setkey
in their own terminal, or drop it and use Whisper
gemini.py
exits 2 (no key)
Step 3b "No Gemini key"
Gemini rejected the key
/
none of ... is available to this key
the user makes a new key at the link it prints; meanwhile the haiku fallback
no videos in ... Run download first
run
visual.py download <handle>
download
failed: <ids>
(exit 1)
rerun with the
--ids
it prints; if they fail again, say the sample is smaller and go on
Gemini is rate-limiting this key
wait a minute and rerun the same command (done videos are cached)
yt-dlp not found
run
fetch.py doctor
and fix what it lists
some videos fail to transcriberetry with
--ids
, then say which failed; never fill the gap
消息处理方式
doctor
Not ready: ...
按
references/setup.md
处理它列出的每一行。
yt-dlp returned nothing
/
parsed 0 videos
阅读它打印的提示:更新 yt-dlp(doctor 会显示方法),或请用户提供单个视频链接并使用
--urls
。
Instagram profile fails将它输出的那句话告知用户:在 Chrome 中登录 instagram.com,或提供至少 6 个 reel 链接(步骤 1“Instagram”)。
... Fix the key, then rerun
(transcribe)
ElevenLabs key 错误:用户需在自己的终端中通过
setkey
重新保存,或放弃使用并改用 Whisper。
gemini.py
exits 2(no key)
参见步骤 3b“没有 Gemini key”。
Gemini rejected the key
/
none of ... is available to this key
用户在脚本打印的链接处创建新 key;在此期间使用 haiku fallback。
no videos in ... Run download first
执行
visual.py download <handle>
。
download
failed: <ids>
(exit 1)
使用其打印的
--ids
重新运行;若仍失败,说明样本量较小并继续。
Gemini is rate-limiting this key
等待一分钟后重新运行同一命令(已完成视频已缓存)。
yt-dlp not found
运行
fetch.py doctor
并修复它列出的问题。
some videos fail to transcribe使用
--ids
重试,然后说明哪些视频失败;绝不要填补空缺。

Hard rules

硬性规则

  • Real numbers or nothing. Every claim about what works cites the view count next to it. Never say a video "went viral" without the number.
  • Verbatim transcripts only. Never summarise a video that was not transcribed.
  • Structure is copied, voice is not. Every teardown states what to reject.
  • Median control group. At least two mid-performers transcribed, or the analysis cannot separate the format from the creator's habits.
  • Never invent a transcript line, or a stat or quote for a card. If transcription failed, retry with
    --ids
    , then say it failed.
  • Never ask for the ElevenLabs or Gemini key in the chat.
  • Measured numbers only in style.json.
    pace
    and
    zoom
    come from
    visual.py
    ;
    captions
    ,
    face
    ,
    graphics
    and
    motion
    from
    look.py
    ; only words (
    look
    ,
    font_match
    ) from the model.
  • Read look.md, not frames. Open a frame only to settle a question look.md cannot answer, and say which one. The user gets teardown.html; Claude gets look.md.
  • Winners against control: say n. Never call a difference proven; "every winner" only means no overlap in this sample.
  • 只用真实数据,否则不用。 关于哪些做法有效的每个论断,都必须在旁边注明观看数。绝不在不提供数字的情况下说某个视频“火了”。
  • 只使用逐字转录。 绝不概括未转录的视频。
  • 复制结构,不复制声音。 每份 teardown 都要说明应舍弃什么。
  • 中位数对照组。 至少转录 2 个中等表现视频,否则分析无法区分格式与创作者习惯。
  • 绝不虚构转录内容、统计数据或卡片引语。 如果转录失败,使用
    --ids
    重试,然后说明转录失败。
  • 绝不在聊天中索要 ElevenLabs 或 Gemini key。
  • style.json 中只能包含实测数字。
    pace
    和
    zoom
    来自
    visual.py
    ;
    captions
    、
    face
    、
    graphics
    和
    motion
    来自
    look.py
    ;只有
    look
    和
    font_match
    这类文字描述来自模型。
  • 读取
    look.md
    ,不要读取帧。
    只有在
    look.md
    无法回答某个问题时才打开某一帧,并说明打开的是哪一帧。用户获得
    teardown.html
    ;Claude 读取
    look.md
    。
  • 热门视频与对照组对比:注明 n。 绝不把差异称为已证实;“所有热门视频都如此”只表示在当前样本中不存在重叠。