ig-caption
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseig-caption
ig-caption
One tool lives in this folder and it runs:
bash
python3 caption.py caption.txt
python3 caption.py caption.txt --keywords "client proposals,agency pricing"It prints the caption the way the feed prints it: the first 125 characters in a
box, everything else behind the tap. Read that box before you read anything
else you wrote.
本目录中只有一个工具,运行方式如下:
bash
python3 caption.py caption.txt
python3 caption.py caption.txt --keywords "client proposals,agency pricing"它会按照信息流中的实际显示方式输出配文:前 125 个字符显示在方框中,其余内容放在“展开”之后。阅读你写的其他任何内容之前,先读这个方框。
First, decide which job this caption has
首先确定这条配文承担的任务
This is the decision that ruins captions when it is skipped.
Job A: the video already hooked them. A Reel carries its own hook in the
first two seconds, spoken and on screen. The caption is not a second hook and
competing with the video is how you lose both. Its job is the ask, the context
that makes the ask make sense, and the words people search.
Job B: the caption is the content. A photo, a single image, a carousel
cover that opens a loop. Here line one is the hook and it works exactly like a
Reel hook: concrete, short, and cut off at a cliff rather than mid-clause.
Ask which one you are writing. If the user has a Reel with a strong hook,
write A and say why.
跳过这一步,正是最容易毁掉配文的决定。
任务 A:视频本身已经抓住了受众。 Reel 在前两秒通过口播和画面自带 hook。配文不应再充当第二个 hook 与视频争夺注意力;两边都因此受影响,是配文失败的原因。它的任务是提出行动号召、补充能让行动号召成立的语境,以及写入用户会搜索的词语。
任务 B:配文就是内容本身。 适用于照片、单张图片,或者能够打开叙事循环的轮播封面。这里的首行就是 hook,其效果与 Reel 的 hook 完全相同:具体、简短,并停在悬念最高处,而不是句子中途。
先确定正在写哪一种。如果用户提供的 Reel 已经有很强的 hook,就按 A 写,并说明原因。
The shape
结构
Line 1 125 characters of visible space. Job A: the ask, plainly.
Job B: the hook.
Never a greeting, never a hashtag, never an emoji as the first
character.
Body short paragraphs, one line of white space between each. Two to six
of them. This is where the search terms live.
The ask one. Comment a keyword, save it, or DM. One.
Hashtags up to five, on their own line at the bottom, or none.Limit is 2,200 characters and almost nothing needs 2,200. A caption that earns
the tap and then delivers 600 characters beats one that delivers 1,800.
Line 1 125 characters of visible space. Job A: the ask, plainly.
Job B: the hook.
Never a greeting, never a hashtag, never an emoji as the first
character.
Body short paragraphs, one line of white space between each. Two to six
of them. This is where the search terms live.
The ask one. Comment a keyword, save it, or DM. One.
Hashtags up to five, on their own line at the bottom, or none.上限为 2,200 个字符,几乎没有什么内容需要写满 2,200 个字符。一条既能赢得“展开”点击、又在展开后只提供 600 个字符高质量内容的配文,胜过一上来就塞入 1,800 个字符的配文。
Hashtags, honestly
坦白说,hashtag
Hashtags are not a reach lever any more, and the platform has now said so with
a product change. Instagram capped hashtags at five per post on 18 December
2025, down from thirty, telling creators that "using fewer (up to 5) more
targeted hashtags, rather than many generic ones" performs better. Adam Mosseri
had already said in February 2025 that hashtags do not work to increase reach
and are a label, not a distribution lever.
So: up to five, specific, as topic labels. If the user has a block of twenty
saved in their notes app, that block is now dead weight and the linter will
fail it.
#viral#fyp#explorepage#foryouhashtag 已经不再是提升触达率的杠杆,平台也已通过一次产品调整明确说明了这一点。Instagram 于 2025 年 12 月 18 日将每条帖子的 hashtag 上限设为 5 个,此前上限为 30 个,并告知创作者,“使用更少但更有针对性的 hashtag(最多 5 个),而不是大量泛化标签”,效果会更好。Adam Mosseri 早在 2025 年 2 月就表示,hashtag 无法用于扩大触达范围;它只是一个标签,而不是分发杠杆。
因此:最多使用 5 个,而且要足够具体,将其当作主题标签。如果用户在备忘录应用里保存了一整块 20 个 hashtag,那么现在这些内容只是累赘,linter 会将其判定为不合格。
#viral#fyp#explorepage#foryouSearch terms matter more than hashtags now
现在,搜索词比 hashtag 更重要
Instagram search reads the caption text. So the phrase the user wants to be
found for goes in the caption as a phrase a human would type, in a sentence
that reads normally. "Client proposals" as words in line three, not
"#clientproposals" in a block at the bottom.
Ask for two or three of those terms, then pass them to the linter:
bash
python3 caption.py draft.txt --keywords "client proposals,agency pricing"Instagram 搜索会读取配文文本。因此,把用户希望被找到的短语,以真实用户会输入的自然措辞放进配文,并放在读起来通顺的句子中。将“client proposals”作为第三行中的普通词语,而不是放在底部标签块中的“#clientproposals”。
先向用户询问两三个这类搜索词,再将它们传给 linter:
bash
python3 caption.py draft.txt --keywords "client proposals,agency pricing"Rules
规则
- No link in the caption. Captions are not clickable. A URL in the body is dead text that says "I do not use this platform". Bio or DM.
- One ask. Two asks is the same as none. counts them.
caption.py - The keyword ask needs a keyword people can type. One word, no spaces, no
emoji, and say it out loud in the video too. works.
Comment CONTRACTdoes not.Comment "the contract guide" - Write the first comment separately if there is a link. Say so in the receipt.
- Emoji as punctuation, not decoration. The linter flags anything over 4 per 100 characters.
- Alt text is worth 20 seconds. For carousels and photos, write it. It is read by screen readers and by Instagram.
- 配文中不放链接。 配文无法点击。正文中的 URL 是一段无法发挥作用的文字,表达的也无非是“我不使用这个平台”。将链接放在个人简介中,或通过 DM 发送。
- 只设置一个行动号召。 两个行动号召等于没有。会统计行动号召的数量。
caption.py - 关键词式行动号召需要一个用户能够输入的关键词。 只用一个词,不含空格和 emoji,并且也要在视频中把它念出来。可以,
Comment CONTRACT不行。Comment "the contract guide" - 如果有链接,第一条评论要单独撰写。 在回执中明确说明这一点。
- Emoji 用作标点,而不是装饰。 linter 会标记每 100 个字符中超过 4 个 emoji 的情况。
- Alt text 值得花 20 秒撰写。 轮播图和照片都应编写 Alt text。屏幕阅读器和 Instagram 都会读取它。
The loop
流程
- Decide Job A or Job B and say which.
- Draft it.
- Run on it. Captions are short, so slop is louder here than anywhere else in the pack.
/ig-human - Run with the user's search terms. Fix every FAIL. Decide on every WARN out loud rather than silently.
caption.py - Print the copy-ready block, then the receipt:
CAPTION READY
job: A - the reel carries the hook
visible: 118 of 125 characters used before the cut
ask: one, comment CONTRACT
hashtags: 3
search: "client proposals" in line 3, "agency pricing" in line 5
linter: READYNothing is posted. The user pastes it.
- 确定使用任务 A 还是任务 B,并明确说明。
- 起草配文。
- 对它运行 。配文很短,因此敷衍的内容在这里比整套内容中的任何其他地方都更显眼。
/ig-human - 使用用户的搜索词运行 。修复每一个 FAIL。对每一个 WARN 都要明确作出决定,不要默默略过。
caption.py - 输出可以直接复制的文案块,然后给出回执:
CAPTION READY
job: A - the reel carries the hook
visible: 118 of 125 characters used before the cut
ask: one, comment CONTRACT
hashtags: 3
search: "client proposals" in line 3, "agency pricing" in line 5
linter: READY工具不会代为发布,配文由用户自行粘贴。