ig-viral
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseig-viral
ig-viral
The research skill. Everything else in this pack writes; this one goes and
looks. Run it monthly, not daily. Formulas last a season.
One tool lives in this folder and it runs:
bash
python3 swipe.py captured.tsv --out ~/.claude/instagram/swipe.md这是用于研究的 skill。这个套件中的其他部分负责创作;这个 skill 负责实地查找。每月运行一次,不要每天运行。Hook 公式通常能有效一个季度。
The one idea that makes this worth doing
值得做这件事的唯一核心理念
Raw views are not evidence. An account with two million followers doing
400,000 views had a quiet Tuesday. An account with four thousand followers
doing 400,000 views found something, and that something is copyable.
So everything here ranks on the outlier multiple: views divided by that
account's own recent median. Anything above 3x is a signal. Anything below 1.5x
is that account's normal day and it teaches you nothing, no matter how big the
number looks.
Collect accounts within about 10x of the user's own size. A formula that
works at 2M followers often works because it is at 2M followers.
原始播放量并不是证据。 一个拥有 200 万粉丝、单条播放量达到 40 万的账号,只是度过了一个平淡的周二;一个只有 4,000 名粉丝、单条播放量同样达到 40 万的账号,则找到了某种有效模式,而这种模式是可以复制的。
因此,这里的所有内容都按 异常值倍数(outlier multiple) 排名:播放量除以该账号自身近期的中位播放量。高于 3 倍属于有效信号;低于 1.5 倍只是该账号的正常水平,无论数字看起来多大,都无法提供任何可借鉴的信息。
只收集规模在用户自身账号约 10 倍以内的账号。一个在 200 万粉丝量级有效的公式,往往正是因为依赖了 200 万粉丝量级才有效。
Step 1: pick the accounts
第 1 步:选择账号
Ask the user for 6 to 12 accounts, or propose them and get approval:
- 4 direct - same niche, same offer, slightly ahead.
- 4 adjacent - different niche, same audience. This is where formats get borrowed from before anybody in the niche has them.
- 2 to 4 outsized - much bigger accounts, for format only, never for cadence or tone.
Also ask them to open their own Saved collection. It is the fastest and
most relevant corpus that exists and it is already filtered by their taste.
向用户询问 6 至 12 个账号,或者先提出候选账号并获得批准:
- 4 个直接对标账号 - 同一细分领域、同一产品或服务、规模略领先。
- 4 个相邻账号 - 不同细分领域,但受众相同。这里往往会出现一种情况:某些内容形式尚未进入本领域,就先被相邻领域借鉴采用。
- 2 至 4 个超大账号 - 粉丝量远高于用户。只参考内容形式,绝不照搬发布频率或语气。
此外,还要请用户打开他们自己的 Saved 合集。这是现有语料库中最快、最相关的一批内容,而且已经按用户自己的品味筛选过。
Step 2: go and look
第 2 步:实地查找
Use whatever browsing tool this session actually has: an in-app browser, a
browser extension connected to the user's own Chrome, or a computer-use tool.
There is no API for this and there does not need to be, because the volume is
small enough to read.
Rules that are not negotiable:
- Never log into Instagram on the user's behalf and never ask for a password. If a page needs a login, the user is the one who is already logged in. Drive their browser with them present, or ask them to paste.
- This is reading, not scraping. Ten accounts, a dozen reels each, at human speed. Automated collection at volume violates Instagram's Terms of Use and gets accounts action-blocked. Do not build a crawler, do not use a scraping service, and do not loop this in the background.
- Copy the formula, never the video. The hook shape, the structure, the length, the pattern of cuts. Not their script, not their voice, not their edit. Attribute every row in the swipe file to the account it came from.
What to capture per reel, in the creator's own words:
| field | notes |
|---|---|
| account | handle |
| followers | from the profile |
| median | eyeball the last 12 reels and take the middle view count |
| views | this reel |
| hook | the first line, spoken or on screen, verbatim including bad grammar |
| on-screen | the first text card, if different |
| length | seconds |
| cta | what they asked for at the end |
Median is the important one. Without it you are back to ranking by follower
count, which is the thing this skill exists to stop.
When Instagram will not show you enough: the same hook grammar runs on
YouTube Shorts, where view counts and transcripts are public and no login is
involved. It is a legitimate second corpus, and the spoken hook is easier to
get:
bash
undefined使用当前会话实际具备的任意浏览工具,例如应用内浏览器、连接到用户本人 Chrome 的浏览器扩展,或 computer-use 工具。
Instagram 没有可用于此目的的 API,但也不需要,因为数据量小到可以人工阅读。
不可协商的规则:
- 绝不代替用户登录 Instagram,也绝不索要密码。 如果页面要求登录,应由已经登录的用户本人操作。可以在用户在场时操作其浏览器,也可以请用户粘贴内容。
- 这是阅读,不是 scraping。 以人工速度查看 10 个账号、每个账号十几条 Reels。大规模自动采集违反 Instagram 的使用条款(Terms of Use),并会导致账号被限制操作或封禁。不要构建 crawler,不要使用 scraping 服务,也不要在后台循环执行此任务。
- 只复制公式,绝不复制视频。 可以复制 Hook 的形态、结构、时长和剪辑切换规律;不要复制他们的脚本、声音或具体剪辑。Swipe File 中的每一行都要标注其来源账号。
每条 Reel 需要记录的内容,均使用创作者的原话:
| 字段 | 说明 |
|---|---|
| account | 用户名(handle) |
| followers | 来自个人主页的粉丝数 |
| median | 查看最近 12 条 Reels,目测其播放量并取中间值 |
| views | 这条 Reel 的播放量 |
| hook | 第一句话,无论口播还是屏幕文字;逐字记录,包括原有的语法错误 |
| on-screen | 首张文字卡的内容(如果与 Hook 不同) |
| length | 时长(秒) |
| cta | 结尾要求用户采取的行动 |
中位播放量 是最重要的一项。没有它,你就又回到了按粉丝量排名,而这正是这个 skill 要避免的事情。
Instagram 无法提供足够内容时: 同样的 Hook 语法也出现在 YouTube Shorts 上。在那里,播放量和字幕都是公开的,无需登录。它是合规的第二语料库,而且更容易获取口播 Hook:
bash
undefinedview counts for a channel's shorts
view counts for a channel's shorts
python3 -m yt_dlp --flat-playlist --playlist-end 40 -J
"https://www.youtube.com/@HANDLE/shorts" > channel.json
"https://www.youtube.com/@HANDLE/shorts" > channel.json
python3 -m yt_dlp --flat-playlist --playlist-end 40 -J
"https://www.youtube.com/@HANDLE/shorts" > channel.json
"https://www.youtube.com/@HANDLE/shorts" > channel.json
the spoken first line of one short, from its auto-captions
the spoken first line of one short, from its auto-captions
python3 -m yt_dlp --skip-download --write-auto-subs --sub-langs "en.*"
--sub-format json3 -o hook "https://www.youtube.com/watch?v=VIDEO_ID"
--sub-format json3 -o hook "https://www.youtube.com/watch?v=VIDEO_ID"
Take every caption word with a timestamp under 3.0 seconds. That is the hook,
as said, not as written.python3 -m yt_dlp --skip-download --write-auto-subs --sub-langs "en.*"
--sub-format json3 -o hook "https://www.youtube.com/watch?v=VIDEO_ID"
--sub-format json3 -o hook "https://www.youtube.com/watch?v=VIDEO_ID"
提取字幕中时间戳早于 3.0 秒的所有词语。那才是实际说出口的 Hook,而不是写在屏幕上的内容。Step 3: rank it
第 3 步:进行排名
Fill a tab-separated file with a header row and run the script:
account followers median views hook
@someone 48000 11000 412000 nobody tells you your first 30 reels are supposed to flopbash
python3 swipe.py captured.tsv --out ~/.claude/instagram/swipe.mdIt computes the outlier multiple, names the hook formula using the same 26
formulas writes from, scores each hook with , and
prints what separates the top third from the bottom third.
/ig-reelhookscore.py填写一个带表头的制表符分隔文件,然后运行脚本:
account followers median views hook
@someone 48000 11000 412000 nobody tells you your first 30 reels are supposed to flopbash
python3 swipe.py captured.tsv --out ~/.claude/instagram/swipe.md它会计算异常值倍数,依据 使用的同一套 26 个公式识别 Hook 公式,使用 对每个 Hook 进行评分,并打印前三分之一与后三分之一之间的差异。
/ig-reelhookscore.pyStep 4: say what it means, carefully
第 4 步:谨慎解读结果
Report three things and no more:
- Which formulas over-index in the top third, with counts. Two formulas appearing four times each across six accounts is a finding. One appearing twice is not.
- What the top third have in common structurally that the bottom third do not: hook length, whether the payoff is visual, whether the first frame moves, where the ask is.
- The unclassified rows. Every hook the classifier could not name is
either noise or a formula that is not in yet. Read them by hand. This is the most valuable column in the output and it is the reason the script prints the count.
hooks.json
Then state the sample size and the confidence in plain words. Forty reels
across six accounts supports a claim. Twelve does not, and saying so is the
difference between research and horoscopes.
只报告以下三项,不多不少:
- 哪些公式在前三分之一中过度集中,并附上计数。在 6 个账号的样本中,两个公式各自出现 4 次,才算一项发现;只出现 2 次则不算。
- 前三分之一在结构上有哪些共同点,而后三分之一没有哪些共同点:Hook 长度、payoff 是否为视觉呈现、第一帧是否有动作,以及 CTA 出现的位置。
- 未分类的行。 每个无法被分类器识别的 Hook,要么是噪声,要么是尚未收录在 中的公式。必须人工逐一阅读。这一列最有价值,也正是脚本会打印其数量的原因。
hooks.json
然后用直白的话说明样本量和置信度。6 个账号共 40 条 Reels 可以支撑一项结论;12 条则不行。明确说出这一点,就是研究与占卜式臆测之间的区别。
Step 5: turn it into something to shoot
第 5 步:转化为可以开拍的内容
For the top three formulas, write the user's version: their own story,
their own number, in the shape that is working. Hand each one to
with the formula id already chosen.
/ig-reelNever hand back "make a reel like this one". Hand back a hook line they could
say tomorrow.
为排名前三的公式撰写 用户的版本:用他们自己的故事、自己的数字,套用正在奏效的结构。将每一个版本连同已选定的 formula id 交给 。
/ig-reel绝不能只交回一句“做一条像这条一样的 Reels”。必须给出一条用户明天就能直接说的 Hook 文案。
Output
输出
SWIPE · 38 reels · 7 accounts · baseline: account median
OUTLIERS (above 3x)
38.4x hook 86 #3 Nobody Tells You @acct_a 412,000 (median 10,700)
11.2x hook 79 #9 The Steal @acct_c 180,000 (median 16,100)
...
WHAT IS OVER-INDEXING
#3 Nobody Tells You x5 in the top third, 0 in the bottom
#2 Negative Command x4
median hook length 8 words up top, 19 at the bottom
UNCLASSIFIED (6)
Two of these are the same shape and it is not in hooks.json: a hook that
opens on someone else's comment read out loud. Worth adding.
YOUR VERSION
#3 "Nobody tells you the first 20 proposals are supposed to lose."
...Write the swipe file to . and
both read it, which is the point: after this runs once, the rest of
the pack is working from the user's own evidence instead of from defaults.
~/.claude/instagram/swipe.md/ig-reel/ig-planNothing is posted, followed, liked or messaged by this skill. It reads.
SWIPE · 38 reels · 7 accounts · baseline: account median
OUTLIERS (above 3x)
38.4x hook 86 #3 Nobody Tells You @acct_a 412,000 (median 10,700)
11.2x hook 79 #9 The Steal @acct_c 180,000 (median 16,100)
...
WHAT IS OVER-INDEXING
#3 Nobody Tells You x5 in the top third, 0 in the bottom
#2 Negative Command x4
median hook length 8 words up top, 19 at the bottom
UNCLASSIFIED (6)
Two of these are the same shape and it is not in hooks.json: a hook that
opens on someone else's comment read out loud. Worth adding.
YOUR VERSION
#3 "Nobody tells you the first 20 proposals are supposed to lose."
...将 Swipe File 写入 。 和 都会读取它,这正是重点:这一步运行一次后,套件中的其余部分就会基于用户自己的证据,而不是默认值开展工作。
~/.claude/instagram/swipe.md/ig-reel/ig-plan这个 skill 不会发布、关注、点赞或发送私信。它只负责阅读。