ig-reel

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ig-reel

ig-reel

Turns one raw idea into a Reel that somebody finishes.
Two tools live in this folder and they both actually run. Use them. Do not eyeball the hook and do not guess at the length.
bash
python3 hookscore.py hooks.txt              # rank your hook options
python3 hookscore.py --hook "one line"      # score a single one
python3 beats.py script.txt --target 30     # timed beat sheet before you shoot
把一个原始想法变成一条真正能拍完的 Reel。
这个文件夹中有两个工具,而且它们都能实际运行。请使用它们。不要凭感觉判断 hook,也不要猜测时长。
bash
python3 hookscore.py hooks.txt              # rank your hook options
python3 hookscore.py --hook "one line"      # score a single one
python3 beats.py script.txt --target 30     # timed beat sheet before you shoot

Before you write

开始写之前

  1. Read
    ~/.claude/instagram/voice.md
    if it exists. That is the user's voice profile: how they talk on camera, what they never say, who they are talking to. If it does not exist, ask for three of their own reels, transcribe or read them, infer the voice, and write the file. A script in the wrong voice is unusable, because they have to say it out loud.
  2. Read
    hooks.json
    in this folder. 26 formulas, each with a template, a filled example, the on-screen version, what it is for, and how it gets ruined. Four of them are in there because they kept turning up in real hooks, not because they completed a pattern.
  3. If the idea is thin, do not pad it. Ask one batched question: what happened, to whom, and what did it cost or return. A Reel needs one specific true thing. Get it before writing.
  4. If
    ~/.claude/instagram/swipe.md
    exists, read it.
    /ig-viral
    writes that file, and it is the user's own evidence about which formulas are working in their niche right now. It beats the defaults in this file.
  1. 如果存在
    ~/.claude/instagram/voice.md
    ,请阅读它。这是用户的 voice profile(语气档案):记录他们面对镜头时如何说话、从不说什么,以及是在对谁说话。如果该文件不存在,请用户提供他们自己的三条 Reels,转录或阅读这些内容,推断其语气,然后创建该文件。脚本的语气一旦不对就无法使用,因为用户必须亲口把它说出来。
  2. 阅读此文件夹中的
    hooks.json
    。其中包含 26 种公式,每种都有模板、填充后的示例、屏幕显示版本、适用场景以及容易毁掉效果的方式。其中有四种之所以被收录,是因为它们不断出现在真实的 hook 中,而不是为了补全某种模式。
  3. 如果想法还很单薄,不要硬凑内容。集中提出一个问题:发生了什么、发生在谁身上、付出了什么成本或获得了什么回报。一条 Reel 需要一个具体而真实的事。开始写之前先把它弄清楚。
  4. 如果存在
    ~/.claude/instagram/swipe.md
    ,请阅读它。
    /ig-viral
    会写入该文件,其中记录了用户自己的证据,说明目前在其细分领域哪些公式正在奏效。其效果优先于本文件中的默认设置。

The shape

基本结构

A Reel is decided in the first two seconds and kept by the next five.
0:00 - 0:02   HOOK        the claim. Spoken line and on-screen line, written
                          separately. Motion in the first frame, not a static face.
0:02 - 0:07   THE STAKE   why this matters to the person watching. One line.
0:07 - ...    THE BODY    one idea per beat, and the frame changes every beat.
LAST 3s       THE PAYOFF  deliver what the hook promised, then the single ask.
LAST LINE     THE LOOP    echo one word from the hook so the replay lands clean.
Length: 15 to 45 seconds is the working range. Reels run to 3 minutes and almost nobody should use it. Under 7 seconds the loop counts inflate and nothing else does.
一条 Reel 的去留在前两秒决定,并由接下来的五秒留住观众。
0:00 - 0:02   HOOK        the claim. Spoken line and on-screen line, written
                          separately. Motion in the first frame, not a static face.
0:02 - 0:07   THE STAKE   why this matters to the person watching. One line.
0:07 - ...    THE BODY    one idea per beat, and the frame changes every beat.
LAST 3s       THE PAYOFF  deliver what the hook promised, then the single ask.
LAST LINE     THE LOOP    echo one word from the hook so the replay lands clean.
时长:通常应控制在 15 至 45 秒。Reel 最长可以到 3 分钟,但几乎没人应该使用那么长的版本。低于 7 秒时,循环播放次数会虚高,但其他指标不会。

The loop

循环流程

1. Pick three hooks, not one. Run the idea through
hooks.json
, choose three formulas that genuinely fit it, and write the spoken line plus the on-screen line for each. Different formulas, not three rewrites of one.
2. Score them. Put the three spoken lines in a file, one per line, and run
hookscore.py
. Show the user the ranking. If the top one is under 50, you do not have the hook yet and no amount of editing fixes that.
3. Write the script on the winning hook. Plain spoken language, the way the user actually talks. Contractions. Short lines. No sentence they would have to rehearse.
4. Time it. Run
beats.py script.txt --target {length}
. Fix every flag: a hook past 3 seconds, any beat over 4 seconds, a run of beats with nothing concrete in them, no loop. Re-run until it is clean.
5. Humanize it. Run the script through
/ig-human
before showing it. A written-sounding line is obvious the moment someone says it out loud.
6. Print the block. The script in a fenced block, the on-screen text as a separate list with timings, and then:
REEL READY
hook:       #3 Nobody Tells You, scored 86 STRONG
length:     28.4s across 9 beats at 165 wpm
on-screen:  6 cards
humanizer:  4 artefacts stripped, human score 81 PASS
caption:    run /ig-caption next

Reply "yes" to log it, or tell me what to change.
7. Never publish. This skill produces a script. The user shoots it and posts it. On "yes", append to
~/.claude/instagram/log.md
with the date, the hook formula used and the first line, so
/ig-audit
has a history later.
1. 选择三个 hook,而不是一个。 将想法套用
hooks.json
,选出三种确实适合它的公式,并为每一种分别写出口播句和屏幕文字。使用不同的公式,而不是把同一句话改写成三个版本。
2. 对它们评分。 将三条口播句写入一个文件,每行一条,然后运行
hookscore.py
。向用户展示排名。如果最高分低于 50,说明还没有找到真正有效的 hook,再怎么编辑也解决不了。
3. 用胜出的 hook 写脚本。 使用用户平时真实的说话方式。保留口语中的缩略形式。句子要短。不要写任何需要用户刻意排练的句子。
4. 计时。 运行
beats.py script.txt --target {length}
。修复每一个告警项:hook 超过 3 秒、任一 beat 超过 4 秒、连续多个 beat 没有任何具体内容,或者缺少 loop。重新运行,直到全部通过。
5. 人性化处理。 在展示脚本前,将脚本交给
/ig-human
处理。一句听起来像书面语的话,在有人念出来时立刻就会露馅。
6. 输出区块。 将脚本放在 fenced block 中,将屏幕文字作为单独的列表列出并附上时间点,然后输出:
REEL READY
hook:       #3 Nobody Tells You, scored 86 STRONG
length:     28.4s across 9 beats at 165 wpm
on-screen:  6 cards
humanizer:  4 artefacts stripped, human score 81 PASS
caption:    run /ig-caption next

Reply "yes" to log it, or tell me what to change.
7. 绝不代替用户发布。 这个 skill 只生成脚本。用户自行拍摄和发布。收到“yes”后,将日期、所用 hook 公式和第一行追加到
~/.claude/instagram/log.md
,以便
/ig-audit
日后查看历史记录。

On-screen text is a separate script

屏幕文字是另一套独立脚本

Write it separately, every time. It is read before it is heard.
  • Six words or fewer per card. It is being read at arm's length by someone who is not listening yet.
  • The hook card is up at frame 1, not after a beat of silence.
  • Keep it inside the safe zone. On a 1080x1920 frame, nothing above y=230 or below y=1440, and keep the right 230 pixels clear. The interface sits on top of everything outside that box: the caption, the action rail, the audio strip.
  • Never put the hook where the caption sits. That is the bottom of the frame and it is covered.
  • Burn in captions for the body. Most people watch muted first.
每次都要单独撰写。观众会先读,再听。
  • 每张卡片最多六个单词。 观众此时还没有在听,而是隔着一臂距离阅读。
  • Hook 卡片在第 1 帧就出现,不能在沉默一拍之后才显示。
  • 保持在安全区内。 在 1080x1920 画面中,y=230 以上或 y=1440 以下的区域都不要放内容,右侧 230 像素也要留空。界面会覆盖这个盒子之外的所有内容:字幕、操作栏、音频栏。
  • 绝不要把 hook 放在字幕所在的位置。 字幕位于画面底部,会被遮住。
  • 正文部分要将字幕直接烧录到画面中。 大多数人首先静音观看。

Rules that make the difference

真正起作用的规则

  • One idea per Reel. If the script has two, you have two Reels. Say so.
  • Numbers over adjectives. "$4,200" beats "a lot". If the user has not given a number, ask for one rather than writing around the hole.
  • Cut the intro. No greeting, no "in this video", no name, no logo sting. The video starts at the sentence you would normally reach at second six.
  • Change the frame every beat. A static shot for 8 seconds is where people leave, and
    beats.py
    will flag it.
  • One ask at the end. Comment a keyword, save it, or follow. One.
  • Never fabricate. No invented metrics, clients, revenue or outcomes under the user's name, even as a placeholder. If a number is needed and unknown, leave
    {{your number}}
    in the script and flag it.
  • Do not write a script around a trending audio the user cannot use. If the idea needs the user's own voice, say so.
  • 一条 Reel 只讲一个想法。 如果脚本里有两个想法,就该拆成两条 Reel。直接说明这一点。
  • 用数字,不用形容词。 “$4,200”比“很多”更有说服力。如果用户没有提供数字,就询问数字,不要绕开这个缺口。
  • 删掉开头介绍。 不要问候,不要说“在这个视频里”,不要报名,不要用 Logo 音效开场。视频应从你通常会在第六秒才说出的那句话开始。
  • 每个 beat 都更换画面。 连续 8 秒保持静态画面,观众就会离开,
    beats.py
    也会将其标记出来。
  • 结尾只提出一个请求。 评论关键词、收藏或关注,只能选一个。
  • 绝不编造。 不要在用户名下虚构指标、客户、收入或结果,即使只是占位符也不允许。如果必须使用某个数字但目前未知,就在脚本中保留
    {{your number}}
    并加以标记。
  • 不要围绕用户无法使用的热门音频来写脚本。 如果这个想法必须使用用户自己的声音,就明确说明。

Example

示例

/ig-reel we cut proposal time from 5 hours to 20 minutes with one template
HOOKS  (scored)
  86  STRONG  #5  Time Collapse   "Proposals used to take me five hours. Twenty minutes now."
                                  on screen: 5 HOURS -> 20 MIN
  71  STRONG  #1  Cost Confession "I billed four hours a week for formatting. For two years."
                                  on screen: 2 YEARS WASTED
  54  OK      #9  The Steal       "Steal the proposal template that did it."
                                  on screen: STEAL THIS

Shooting #5: the ratio is believable, it reads in one glance on screen,
and the number is yours.
/ig-reel we cut proposal time from 5 hours to 20 minutes with one template
HOOKS  (scored)
  86  STRONG  #5  Time Collapse   "Proposals used to take me five hours. Twenty minutes now."
                                  on screen: 5 HOURS -> 20 MIN
  71  STRONG  #1  Cost Confession "I billed four hours a week for formatting. For two years."
                                  on screen: 2 YEARS WASTED
  54  OK      #9  The Steal       "Steal the proposal template that did it."
                                  on screen: STEAL THIS

Shooting #5: the ratio is believable, it reads in one glance on screen,
and the number is yours.