关于 ig-viral
ig-viral 是面向 Instagram 创作者的研究技能,按账号自身基准识别表现突出的 Reels,并生成带来源的素材文件,供原创内容规划使用。
主要功能
- 01按账号基准排名 Reels
- 02标注并评分开场公式
- 03比较高低表现内容
- 04支持以 YouTube Shorts 补充
- 05生成可复用的素材文件
适用场景
- 01寻找同类账号的高效形式
- 02分析抽样 Reels 的共同模式
- 03依据观察到的公式构思原创开场
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jakeschincariol/ instagram-agent-skill --skill ig-viral安装后在 Claude Code 中输入/ig-viral确认已加载。
附带文件swipe.py
详细介绍
ig-viral
研究技能包。其他所有内容都会写作,而这个技能包负责查找。每月运行一次,而不是每天运行。公式的生命力通常只持续一个季度。
此文件夹中有一个工具,运行方式如下:
python3 swipe.py captured.tsv --out ~/.claude/instagram/swipe.md
让这件事值得做的关键想法
原始播放量不是证据。 一个拥有 200 万粉丝的账号获得 40 万次播放量,只是安静地度过了一个星期二。一个拥有 4,000 名粉丝的账号获得 40 万次播放量,则是发现了某种规律,而这种规律可以借鉴。
因此,这里的所有排名都依据异常倍数:播放量除以该账号近期的中位数。超过 3 倍就是信号。低于 1.5 倍就是该账号的日常表现,无论数字看起来多大,都没什么可学的。
收集粉丝数大约在用户自身 10 倍范围内的账号。一套在拥有 200 万粉丝的账号上奏效的公式,往往正是因为账号有 200 万粉丝才奏效。
第 1 步:挑选账号
请用户提供 6 到 12 个账号,或者先提出账号名单并征得同意:
- 4 个直接竞品——同一细分领域、提供相同服务,发展略快。
- 4 个相邻领域账号——细分领域不同,但受众相同。细分领域里还没人采用的内容形式,往往会先从这里借鉴。
- 2 到 4 个规模悬殊的账号——规模大得多,只参考内容形式,绝不参考发布频率或语气。
还要请用户打开自己的收藏集。这是现有最快、最相关的素材库,而且已经按照用户的喜好筛选过。
第 2 步:查找
使用本次会话实际可用的任意浏览工具:应用内浏览器、连接到用户本人 Chrome 的浏览器扩展,或电脑操作工具。这里没有 API,也不需要 API,因为需要查看的内容量足够少,可以直接阅读。
以下规则不可妥协:
- 绝不代替用户登录 Instagram,也绝不索要密码。 如果页面需要登录,由用户使用已登录的账号。让用户在场时操作他们的浏览器,或者请他们粘贴内容。
- 这是阅读,不是抓取。 十个账号,每个账号十几条 Reels,以人工速度查看。大规模自动收集违反 Instagram 的使用条款,可能导致账号被限制操作。不要构建爬虫,不要使用抓取服务,也不要在后台循环运行。
- 只借鉴公式,绝不照搬视频。 包括开场方式、结构、时长和剪辑节奏,而不是他们的脚本、声音或剪辑。滑动文件中的每一行都要注明来源账号。
每条 Reels 要记录的内容,使用创作者自己的表述:
| 字段 | 备注 |
|---|---|
| account | 用户名 |
| followers | 从个人主页获取 |
| median | 查看最近 12 条 Reels,估算播放量中位数 |
| views | 这条 Reels 的播放量 |
| hook | 第一行内容,无论是口播还是屏幕文字,都要逐字记录,包括语法错误 |
| on-screen | 第一张文字卡片;若与 hook 不同则记录 |
| length | 秒数 |
| cta | 结尾处他们提出的要求 |
中位数很重要。没有它,你又会回到按粉丝数排名,而这正是这项技能要避免的做法。
如果 Instagram 显示的内容不够多: 同样的开场句式也会出现在 YouTube 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
# 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"
取出时间戳早于 3.0 秒的所有字幕词。这就是实际说出来的开场内容,而不是写下来的内容。
第 3 步:排名
填写一个带标题行的制表符分隔文件,然后运行脚本:
account followers median views hook
@someone 48000 11000 412000 nobody tells you your first 30 reels are supposed to flop
python3 swipe.py captured.tsv --out ~/.claude/instagram/swipe.md
它会计算异常倍数,使用与 /ig-reel 相同的 26 种公式为开场内容命名,使用 hookscore.py 为每条开场内容评分,并打印出排名前 1/3 与后 1/3 之间的差异。
第 4 步:谨慎说明结果的含义
只报告三件事,不要多说:
- 排名前三分之一中哪些公式占比过高,并给出次数。两个公式在 6 个账号中各出现 4 次,这就是一项发现。某个公式只出现 2 次,则不算。
- 排名前三分之一在结构上有哪些共同点,而排名后三分之一没有:钩子长度、回报是否具有视觉效果、第一帧是否在动,以及行动号召的位置。
- **未分类的行。**分类器无法命名的每个钩子,要么是噪声,要么是尚未添加到
hooks.json中的公式。逐条手动阅读。这是输出中最有价值的一列,也是脚本打印计数的原因。
然后用通俗的语言说明样本量和可信度。来自 6 个账号的 40 条 Reels 足以支撑一项结论;12 条则不够。坦承这一点,才是研究与算命的区别。
第 5 步:把结果变成可拍摄的内容
针对排名前三的公式,写出用户自己的版本:用他们自己的故事、自己的数字,套用有效的形式。为每个版本预先选好公式 ID,再交给 /ig-reel。
绝不要只交付“照着这个做一条 Reel”。要交付一句他们明天就能说出口的钩子。
输出
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."
...
将素材库写入 ~/.claude/instagram/swipe.md。/ig-reel 和 /ig-plan 都会读取它,这正是重点:运行一次后,整个工具包就会依据用户自己的证据运作,而非默认设置。
此技能不会发布内容、关注账号、点赞或发送消息,只会读取。